128 files · 3.7 MB at 05eecdc Download ZIP
.dockerignore 72 B
.gitignore 170 B
CLAUDE.md 11.0 KB
Dockerfile 3.2 KB
fp-lib-table 152 B
pyproject.toml 497 B
QFP58-feed-RHCP-drc.rpt 553 B
QFP58-feed-RHCP.kicad_pcb 108 KB
QFP58-feed-RHCP.kicad_pro 9.6 KB
README.md 15.5 KB
run.sh 4.2 KB
uv.lock 189 KB
docs/
design_report.json 5.3 KB
preview_LHCP.png 195 KB
preview_RHCP.png 195 KB
docs/svg/
QFP58-feed-LHCP-B_Cu.svg 134 KB
QFP58-feed-LHCP-Edge_Cuts.svg 11.5 KB
QFP58-feed-LHCP-F_Cu.svg 61.9 KB
QFP58-feed-RHCP-B_Cu.svg 131 KB
QFP58-feed-RHCP-Edge_Cuts.svg 11.6 KB
QFP58-feed-RHCP-F_Cu.svg 61.9 KB
QFP58-patch-B_Cu.svg 37.2 KB
QFP58-patch-Edge_Cuts.svg 11.9 KB
QFP58-patch-F_Cu.svg 16.3 KB
gerbers/
QFP58-feed-LHCP-fab.zip 31.5 KB
QFP58-feed-RHCP-fab.zip 31.6 KB
QFP58-patch-d23.06-fab.zip 12.0 KB
QFP58-patch-d23.36-fab.zip 12.0 KB
QFP58-patch-fab.zip 11.7 KB
gerbers/QFP58-feed-LHCP/
QFP58-feed-LHCP-B_Cu.gbl 4.2 KB
QFP58-feed-LHCP-B_Mask.gbs 1.6 KB
QFP58-feed-LHCP-B_Silkscreen.gbo 41.5 KB
QFP58-feed-LHCP-Edge_Cuts.gm1 17.0 KB
QFP58-feed-LHCP-F_Cu.gtl 47.5 KB
QFP58-feed-LHCP-F_Mask.gts 1.2 KB
QFP58-feed-LHCP-F_Silkscreen.gto 1.2 KB
QFP58-feed-LHCP-job.gbrjob 2.4 KB
QFP58-feed-LHCP-NPTH.drl 383 B
QFP58-feed-LHCP-PTH.drl 530 B
gerbers/QFP58-feed-RHCP/
QFP58-feed-RHCP-B_Cu.gbl 4.2 KB
QFP58-feed-RHCP-B_Mask.gbs 1.6 KB
QFP58-feed-RHCP-B_Silkscreen.gbo 40.6 KB
QFP58-feed-RHCP-Edge_Cuts.gm1 17.0 KB
QFP58-feed-RHCP-F_Cu.gtl 47.5 KB
QFP58-feed-RHCP-F_Mask.gts 1.2 KB
QFP58-feed-RHCP-F_Silkscreen.gto 1.2 KB
QFP58-feed-RHCP-job.gbrjob 2.4 KB
QFP58-feed-RHCP-NPTH.drl 383 B
QFP58-feed-RHCP-PTH.drl 536 B
gerbers/QFP58-patch/
QFP58-patch-B_Cu.gbl 21.0 KB
QFP58-patch-B_Mask.gbs 653 B
QFP58-patch-B_Silkscreen.gbo 663 B
QFP58-patch-Edge_Cuts.gm1 640 B
QFP58-patch-F_Cu.gtl 937 B
QFP58-patch-F_Mask.gts 810 B
QFP58-patch-F_Silkscreen.gto 9.4 KB
QFP58-patch-job.gbrjob 2.4 KB
QFP58-patch-NPTH.drl 264 B
QFP58-patch-PTH.drl 375 B
gerbers/QFP58-patch-d23.06/
QFP58-patch-d23.06-B_Cu.gbl 21.0 KB
QFP58-patch-d23.06-B_Mask.gbs 660 B
QFP58-patch-d23.06-B_Silkscreen.gbo 670 B
QFP58-patch-d23.06-Edge_Cuts.gm1 647 B
QFP58-patch-d23.06-F_Cu.gtl 944 B
QFP58-patch-d23.06-F_Mask.gts 817 B
QFP58-patch-d23.06-F_Silkscreen.gto 10.5 KB
QFP58-patch-d23.06-job.gbrjob 2.4 KB
gerbers/QFP58-patch-d23.36/
QFP58-patch-d23.36-B_Cu.gbl 21.1 KB
QFP58-patch-d23.36-B_Mask.gbs 660 B
QFP58-patch-d23.36-B_Silkscreen.gbo 670 B
QFP58-patch-d23.36-Edge_Cuts.gm1 647 B
QFP58-patch-d23.36-F_Cu.gtl 944 B
QFP58-patch-d23.36-F_Mask.gts 817 B
QFP58-patch-d23.36-F_Silkscreen.gto 10.1 KB
QFP58-patch-d23.36-job.gbrjob 2.4 KB
kicad/QFP58-feed-LHCP/
fp-lib-table 149 B
QFP58-feed-LHCP-drc.rpt 553 B
QFP58-feed-LHCP.kicad_pcb 108 KB
QFP58-feed-LHCP.kicad_pro 9.6 KB
kicad/QFP58-patch/
fp-lib-table 149 B
QFP58-patch-drc.rpt 576 B
QFP58-patch.kicad_pcb 36.3 KB
QFP58-patch.kicad_pro 9.6 KB
kicad/QFP58-patch-d23.06/
fp-lib-table 149 B
QFP58-patch-d23.06-drc.rpt 528 B
QFP58-patch-d23.06.kicad_pcb 36.3 KB
QFP58-patch-d23.06.kicad_pro 9.5 KB
kicad/QFP58-patch-d23.36/
fp-lib-table 149 B
QFP58-patch-d23.36-drc.rpt 528 B
QFP58-patch-d23.36.kicad_pcb 36.4 KB
QFP58-patch-d23.36.kicad_pro 9.5 KB
kicad/QFP58.pretty/
CouplingDisk_3.6mm.kicad_mod 1.2 KB
FeedPin_1.1mm.kicad_mod 1.0 KB
MountingHole_2.2mm_M2.kicad_mod 1.0 KB
R_0603_Wilkinson.kicad_mod 1.2 KB
SMA_EdgeLaunch_1.0mm_generic.kicad_mod 1.7 KB
sim/full/
full_cuts_5.65GHz.png 86.6 KB
full_cuts_5.80GHz.png 87.0 KB
full_cuts_5.95GHz.png 88.6 KB
full_farfield_5.65GHz.npz 147 KB
full_farfield_5.80GHz.npz 147 KB
full_farfield_5.95GHz.npz 147 KB
full_pattern_5.65GHz.png 79.2 KB
full_pattern_5.80GHz.png 80.5 KB
full_pattern_5.95GHz.png 83.6 KB
full_pattern3d_5.65GHz.png 154 KB
full_pattern3d_5.80GHz.png 156 KB
full_pattern3d_5.95GHz.png 155 KB
full_sparams.csv 3.2 KB
full_sparams.png 30.3 KB
summary.json 1.5 KB
sim/network/
network_sparams.csv 12.9 KB
network_sparams.png 45.0 KB
summary.json 286 B
sim/patch/
patch_ideal_feed_pattern_5.65GHz.png 69.2 KB
patch_ideal_feed_pattern_5.80GHz.png 69.5 KB
patch_ideal_feed_pattern_5.95GHz.png 70.5 KB
patch_sparams.png 48.0 KB
summary.json 1.4 KB
src/
generate.py 1.9 KB
kicad_build.py 13.9 KB
qfp_geom.py 11.6 KB
qfp_layers.py 6.9 KB
qfp_sim.py 27.4 KB
{
"parameters": {
"f0": 5800000000.0,
"sub_er": 4.4,
"sub_tand": 0.02,
"sub_h": 1.0,
"cu_t": 0.035,
"board_d": 60.0,
"flat_r": 29.0,
"edge_pullback": 0.25,
"gap_air": 4.0,
"patch_d": 22.76,
"patch_margin": 0.6,
"patch_variants": [
23.06,
23.36
],
"rp": 4.0,
"pin_drill": 1.1,
"pin_pad": 1.8,
"gnd_antipad": 2.6,
"patch_pin_ring": 1.4,
"patch_antipad": 2.2,
"disk_d": 3.6,
"z_in": 50.0,
"z_br": 60.0,
"z_out": 50.0,
"z_match": 100.0,
"match_len": 2.0,
"r1": 9.0,
"res": "0603",
"res_pitch": 1.65,
"res_pad": [
0.8,
0.95
],
"lead_off": 0.15,
"lead_len": 1.0,
"lead_len2": 1.6,
"lead_off2": 0.35,
"min_res_gap": 0.4,
"branch_clear": 2.0,
"junction_comp": true,
"phase_corr2": 1.074,
"phase_corr1": 0.972,
"sma_sig_len": 2.8,
"sma_gnd_off": 2.9,
"sma_gnd_w": 1.6,
"sma_gnd_len": 3.2,
"via_drill": 0.4,
"via_pad": 0.8,
"mh_r": 26.0,
"mh_drill": 2.2,
"mh_clear": 3.2
},
"RHCP": {
"Z": {
"z_in": 50.0,
"z_br": 60.0,
"z_out": 50.0,
"z_match": 100.0,
"z_w1": 77.45966692414834,
"z_w2": 77.45966692414834
},
"microstrip": {
"z_in": {
"z": 50.0,
"w": 1.883,
"eeff": 3.3799,
"lam": 28.1152,
"loss": 0.02
},
"z_br": {
"z": 60.0,
"w": 1.3567,
"eeff": 3.2718,
"lam": 28.5759,
"loss": 0.0197
},
"z_out": {
"z": 50.0,
"w": 1.883,
"eeff": 3.3799,
"lam": 28.1152,
"loss": 0.02
},
"z_match": {
"z": 100.0,
"w": 0.4027,
"eeff": 2.9818,
"lam": 29.9333,
"loss": 0.0201
},
"z_w1": {
"z": 77.4597,
"w": 0.7942,
"eeff": 3.1226,
"lam": 29.2507,
"loss": 0.0196
},
"z_w2": {
"z": 77.4597,
"w": 0.7942,
"eeff": 3.1226,
"lam": 29.2507,
"loss": 0.0196
}
},
"Rw1": 2.8831522581166777,
"Rw2": 2.7989845831676265,
"r1": 9.0,
"rb2": 8.199675066677267,
"r2": 14.597969166335254,
"rb1": 17.673394738215357,
"rg1": 18.30027017920751,
"thA_deg": 18.62570751129272,
"thB_deg": 198.62570751129272,
"th1_deg": -48.86256289896428,
"lengths": {
"input": 3.283425304559139,
"w1_arm": 8.254161333618423,
"w2_arm": 7.990987730230549,
"branchA_arc": 19.13270274162839,
"branchB_arc": 33.020590703381245,
"spur": 3.4725259169240363,
"out_short_arc": 0.327630389272383,
"out_long_arc": 7.8765504095167325,
"pin_stub": 2.1996750666772673,
"lead1": 1.0,
"lead2": 1.6
},
"resistors": {
"R2": "100 ohm",
"R3": "100 ohm",
"R1": "120 ohm"
},
"paths": {
"P0": {
"length_mm": 49.26110848291019,
"loss_dB": 0.9712886440629881,
"phase_deg": -616.2592207361744,
"rel_phase_deg": 0.0
},
"P1": {
"length_mm": 56.81002850315454,
"loss_dB": 1.1220846591194786,
"phase_deg": -712.9192207361743,
"rel_phase_deg": -96.65999999999997
},
"P2": {
"length_mm": 63.14899644466304,
"loss_dB": 1.2449391568211408,
"phase_deg": -791.2192207361743,
"rel_phase_deg": -174.95999999999992
},
"P3": {
"length_mm": 70.6979164649074,
"loss_dB": 1.3957351718776314,
"phase_deg": -887.8792207361743,
"rel_phase_deg": 88.38000000000011
}
}
},
"LHCP": {
"Z": {
"z_in": 50.0,
"z_br": 60.0,
"z_out": 50.0,
"z_match": 100.0,
"z_w1": 77.45966692414834,
"z_w2": 77.45966692414834
},
"microstrip": {
"z_in": {
"z": 50.0,
"w": 1.883,
"eeff": 3.3799,
"lam": 28.1152,
"loss": 0.02
},
"z_br": {
"z": 60.0,
"w": 1.3567,
"eeff": 3.2718,
"lam": 28.5759,
"loss": 0.0197
},
"z_out": {
"z": 50.0,
"w": 1.883,
"eeff": 3.3799,
"lam": 28.1152,
"loss": 0.02
},
"z_match": {
"z": 100.0,
"w": 0.4027,
"eeff": 2.9818,
"lam": 29.9333,
"loss": 0.0201
},
"z_w1": {
"z": 77.4597,
"w": 0.7942,
"eeff": 3.1226,
"lam": 29.2507,
"loss": 0.0196
},
"z_w2": {
"z": 77.4597,
"w": 0.7942,
"eeff": 3.1226,
"lam": 29.2507,
"loss": 0.0196
}
},
"Rw1": 2.8831522581166777,
"Rw2": 2.7989845831676265,
"r1": 9.0,
"rb2": 8.199675066677267,
"r2": 14.597969166335254,
"rb1": 17.673394738215357,
"rg1": 18.30027017920751,
"thA_deg": 18.62570751129272,
"thB_deg": 198.62570751129272,
"th1_deg": -48.86256289896428,
"lengths": {
"input": 3.283425304559139,
"w1_arm": 8.254161333618423,
"w2_arm": 7.990987730230549,
"branchA_arc": 19.13270274162839,
"branchB_arc": 33.020590703381245,
"spur": 3.4725259169240363,
"out_short_arc": 0.327630389272383,
"out_long_arc": 7.8765504095167325,
"pin_stub": 2.1996750666772673,
"lead1": 1.0,
"lead2": 1.6
},
"resistors": {
"R2": "100 ohm",
"R3": "100 ohm",
"R1": "120 ohm"
},
"paths": {
"P0": {
"length_mm": 49.26110848291019,
"loss_dB": 0.9712886440629881,
"phase_deg": -616.2592207361744,
"rel_phase_deg": 0.0
},
"P1": {
"length_mm": 56.81002850315454,
"loss_dB": 1.1220846591194786,
"phase_deg": -712.9192207361743,
"rel_phase_deg": -96.65999999999997
},
"P2": {
"length_mm": 63.14899644466304,
"loss_dB": 1.2449391568211408,
"phase_deg": -791.2192207361743,
"rel_phase_deg": -174.95999999999992
},
"P3": {
"length_mm": 70.6979164649074,
"loss_dB": 1.3957351718776314,
"phase_deg": -887.8792207361743,
"rel_phase_deg": 88.38000000000011
}
}
}
}