runpatrick/sa-sim-pcb

This code defines PCB footprints for various electronic modules, including BG95 cellular modem, BNO086 sensor, BQ25180 battery charger, and BQ27220 power management IC, detailing their physical pad layouts and key external features.

Version
1.0.6
License
unset
Stars
0

sim/pdn.spice

* SA-SIM v1 — PDN Impedance Analysis
* Target: Z(VBAT rail at BG95 VBAT pin) < 50mΩ from DC to 100MHz
* Methodology: inject 1A AC current at modem_vbat node;
*              V(modem_vbat) in AC analysis = Z(f) in Ohms.
* FAB_REPORT.md risk #6: added 100µF tantalum per BG95 HW Design Guide §3.3.
*
* Signal path:
*   bat_pos → R_batt_int → batt_node
*           → R_jst      → jst_out
*           → L_wire     → fet_in
*           → R_fet      → rail_mid
*           → R_trace    → rail_int
*           → L_trace    → modem_vbat   ← observation / injection node
*
* All caps hang off modem_vbat to GND.

* --- Battery source ---
* Ideal 3.7V DC, AC=0: in AC analysis this is a short to GND (ideal V source)
V_BAT bat_pos 0 DC 3.7 AC 0

* Li-ion internal resistance ~50mΩ
R_batt_int bat_pos batt_node 0.050

* --- JST connector + wire parasitics ---
R_jst  batt_node jst_out 0.030
L_wire jst_out   fet_in  5n

* --- Reverse-polarity FET (series protection) ---
* Rds_on = 25mΩ; parasitic Cds = 5pF (referenced to drain/source nodes)
R_fet     fet_in  rail_mid 0.025
C_fet_par fet_in  0        5p

* --- PCB trace BAT_P → modem VBAT rail ---
* 5mm, 0.5mm width, 2-layer FR4: R≈5mΩ, L≈2nH
R_trace rail_mid rail_int 0.005
L_trace rail_int modem_vbat 2n

* =============================================================
* Decoupling network at modem_vbat node (all caps to GND)
* =============================================================

* Bulk caps on BG95 VBAT (3× 10µF X5R 0603, LCSC C19702)
* Model: series ESR + ESL to GND
C_BG95_BAT1 modem_vbat c1_n 10u
R_C1        c1_n       c1_r 0.010
L_C1        c1_r       0    1n

C_BG95_BAT2 modem_vbat c2_n 10u
R_C2        c2_n       c2_r 0.010
L_C2        c2_r       0    1n

C_BG95_BAT3 modem_vbat c3_n 10u
R_C3        c3_n       c3_r 0.010
L_C3        c3_r       0    1n

* Decoupling caps close to BG95 VBAT pins (4× 100nF 0402, LCSC C1525)
* Model: series ESR + ESL to GND
C_d1 modem_vbat cd1_n 100n
R_d1 cd1_n      cd1_r 0.020
L_d1 cd1_r      0     0.5n

C_d2 modem_vbat cd2_n 100n
R_d2 cd2_n      cd2_r 0.020
L_d2 cd2_r      0     0.5n

C_d3 modem_vbat cd3_n 100n
R_d3 cd3_n      cd3_r 0.020
L_d3 cd3_r      0     0.5n

C_d4 modem_vbat cd4_n 100n
R_d4 cd4_n      cd4_r 0.020
L_d4 cd4_r      0     0.5n

* Tantalum bulk 100µF / 10V — FAB_REPORT.md risk #6 recommended fix
* LCSC C7171 (TAJB107K010RNJ), ESR=200mΩ, ESL=2nH
C_bulk modem_vbat cb_n 100u
R_bulk cb_n       cb_r 0.200
L_bulk cb_r       0    2n

* =============================================================
* AC test stimulus: 1A AC current source at modem_vbat
* I=1A → V(modem_vbat) = Z(f)  [Ohm's law, AC analysis]
* =============================================================
I_test 0 modem_vbat AC 1

* AC decade sweep: 1Hz to 100MHz, 20 points per decade
.ac dec 20 1 100MEG

* --- Impedance measurements at key PDN frequencies ---
* vm() = magnitude of voltage phasor = |Z(f)| in Ohms
.meas ac z_dc      FIND vm(modem_vbat) AT=1
.meas ac z_1k      FIND vm(modem_vbat) AT=1k
.meas ac z_100k    FIND vm(modem_vbat) AT=100k
.meas ac z_10meg   FIND vm(modem_vbat) AT=10MEG
.meas ac z_100meg  FIND vm(modem_vbat) AT=100MEG
.meas ac z_max     MAX vm(modem_vbat) FROM=1 TO=100MEG

* Print full impedance sweep to output file
.print ac vm(modem_vbat)

.end