circuit module#
XCVP1002 wrapped with the circuit boundary a board designer consumes.
- Pattern
The standard JITX FPGA-wrapper shape: one
Powerport per supply rail, named power nets, distinct ground domains, and GT transceiver quads exposed as bundle ports wired through the>>topology operator.One deliberate discipline: wrapper code in the wild often resolves component pins with
getattrname composition (f"GTM_TXP{lane}_{bank}"); this repo’s conventions forbid reflection, so the wiring here consumes the generated structuralgtm_quad_pins()groupings instead — every pin reference is an explicit attribute.- Scope (JS1 · Part 3)
Power/ground and the six GTM quads only. XPIO / PS-MIO bank bundles, GPIO mass-
Providepin assignment, and per-net via fanout are board- level concerns deferred to JS2. Unwrapped pins remain reachable viaself.fpga.- Ground domains (three, kept distinct)
main
GND— all 689GNDballs, bothRSVDGNDballs, and every main rail’sVn.GND_SMON— the system-monitor analog ground:pwr_vccaux_smon.Vnand theGND_SMONball only.GND_SENSE— theVCCINTKelvin sense return:pwr_vccint_sense.Vnand theGND_SENSEball only.
- Rail roster
XCVP1002Circuit.rail_ties()— taken verbatim from the generated component’s rail inventory (the AMD pinout file is the ground truth); no rail invented, none dropped. The roster is a method returning fresh records because aPortmay have only one home in the design tree.
- class GroundDomain(*values)[source]#
Bases:
Enum- MAIN = 'GND'#
- SMON = 'GND_SMON'#
- SENSE = 'GND_SENSE'#
- class RailTie(label, port, pins, domain=GroundDomain.MAIN)[source]#
Bases:
objectOne supply rail: boundary port, component pins, ground domain.
- Parameters:
label (str)
port (Power)
domain (GroundDomain)
- domain: GroundDomain = 'GND'#
- class XCVP1002Circuit[source]#
Bases:
CircuitVP1002 with power/ground and GTM transceiver boundary ports.
- pwr_vccint = Power()#
- pwr_vcc_soc = Power()#
- pwr_vccaux = Power()#
- pwr_vcc_ram = Power()#
- pwr_vcc_io = Power()#
- pwr_vcc_psfp = Power()#
- pwr_vcc_pslp = Power()#
- pwr_vcc_pmc = Power()#
- pwr_vccaux_pmc = Power()#
- pwr_vcco_500 = Power()#
- pwr_vcco_501 = Power()#
- pwr_vcco_502 = Power()#
- pwr_vcco_503 = Power()#
- pwr_vcco_700 = Power()#
- pwr_vcco_701 = Power()#
- pwr_vcco_702 = Power()#
- pwr_gtm_avcc_l = Power()#
- pwr_gtm_avcc_rn = Power()#
- pwr_gtm_avccaux_l = Power()#
- pwr_gtm_avccaux_rn = Power()#
- pwr_gtm_avtt_l = Power()#
- pwr_gtm_avtt_rn = Power()#
- pwr_gty_avcc_rs = Power()#
- pwr_gty_avccaux_rs = Power()#
- pwr_gty_avtt_rs = Power()#
- pwr_vccint_gt_l = Power()#
- pwr_vccint_gt_r = Power()#
- pwr_vcc_batt = Power()#
- pwr_vcc_fuse = Power()#
- pwr_vccaux_smon = Power()#
- pwr_vccint_sense = Power()#
- VP_500 = Port()#
- VN_500 = Port()#
- VREFP_500 = Port()#
- VREFN_500 = Port()#
- GTM_AVTTRCAL_L = Port()#
- GTM_RREF_L = Port()#
- GTM_AVTTRCAL_RN = Port()#
- GTM_RREF_RN = Port()#
- GTY_AVTTRCAL_RS = Port()#
- GTY_RREF_RS = Port()#