@@ -121,7 +121,7 @@ module carfield_top_xilinx
121121 `elsif USE_RESETN
122122 logic cpu_reset;
123123 assign cpu_reset = ~ cpu_resetn;
124- `endif
124+ `endif // USE_RESET
125125 logic sys_rst;
126126
127127 wire clk_100, clk_50, clk_20;
@@ -140,17 +140,17 @@ module carfield_top_xilinx
140140 assign testmode_i = '0 ;
141141 assign boot_mode_i = 2'b00 ;
142142 assign boot_mode_safety_i = 2'b00 ;
143- `endif
143+ `endif // USE_SWITCHES
144144
145145 // Give VDD and GND to JTAG
146146`ifdef USE_JTAG_VDDGND
147147 assign jtag_vdd_o = '1 ;
148148 assign jtag_gnd_o = '0 ;
149- `endif
149+ `endif // USE_JTAG_VDDGND
150150`ifndef USE_JTAG_TRSTN
151151 logic jtag_trst_ni;
152152 assign jtag_trst_ni = '1 ;
153- `endif
153+ `endif // USE_JTAG_TRSTN
154154`ifndef USE_JTAG
155155 logic jtag_tck_i;
156156 logic jtag_tms_i;
@@ -159,7 +159,7 @@ module carfield_top_xilinx
159159 assign jtag_tck_i = '0 ;
160160 assign jtag_tms_i = '0 ;
161161 assign jtag_tdi_i = '0 ;
162- `endif
162+ `endif // USE_JTAG
163163
164164 // ////////////////
165165 // Clock Wizard //
@@ -227,11 +227,11 @@ module carfield_top_xilinx
227227 assign sys_rst = cpu_reset | vio_reset;
228228 assign boot_mode = boot_mode_i | vio_boot_mode;
229229 assign boot_mode_safety = boot_mode_safety_i | vio_boot_mode_safety;
230- `else
230+ `else // USE_VIO
231231 assign sys_rst = cpu_reset;
232232 assign boot_mode = boot_mode_i;
233233 assign boot_mode_safety = boot_mode_safety_i;
234- `endif
234+ `endif // USE_VIO
235235
236236 // ////////////////
237237 // I2C Adaption //
@@ -275,7 +275,7 @@ module carfield_top_xilinx
275275 .I ( i2c_sda_soc_out ),
276276 .T ( ~ i2c_sda_en )
277277 );
278- `endif
278+ `endif // USE_I2C
279279
280280
281281 // ////////////////
@@ -403,7 +403,7 @@ module carfield_top_xilinx
403403 .pwm_setting_i ( fan_sw ),
404404 .fan_pwm_o ( fan_pwm )
405405 );
406- `endif
406+ `endif // USE_FAN
407407
408408 // ////////////////
409409 // Carfield Cfg //
@@ -417,6 +417,7 @@ module carfield_top_xilinx
417417 // /////////////////
418418
419419`ifdef GEN_NO_HYPERBUS // bender-xilinx.mk
420+
420421 localparam axi_in_t AxiIn = gen_axi_in (Cfg);
421422 localparam int unsigned LlcIdWidth = Cfg.AxiMstIdWidth+ $clog2 (AxiIn.num_in)+ Cfg.LlcNotBypass;
422423 localparam int unsigned LlcArWidth = (2 ** LogDepth)* axi_pkg :: ar_width (Cfg.AddrWidth,LlcIdWidth,Cfg.AxiUserWidth);
@@ -475,6 +476,82 @@ module carfield_top_xilinx
475476 .dst_req_o ( llc_req ),
476477 .dst_resp_i ( llc_rsp )
477478);
479+ `endif // GEN_NO_HYPERBUS
480+
481+ // /////////////////
482+ // Hyperram PADS //
483+ // /////////////////
484+
485+ `ifndef GEN_NO_HYPERBUS
486+
487+ logic [`HypNumPhys - 1 : 0 ][`HypNumChips - 1 : 0 ] hyper_cs_no;
488+ logic [`HypNumPhys - 1 : 0 ] hyper_ck_o;
489+ logic [`HypNumPhys - 1 : 0 ] hyper_ck_no;
490+ logic [`HypNumPhys - 1 : 0 ] hyper_rwds_o;
491+ logic [`HypNumPhys - 1 : 0 ] hyper_rwds_i;
492+ logic [`HypNumPhys - 1 : 0 ] hyper_rwds_oe_o;
493+ logic [`HypNumPhys - 1 : 0 ][7 : 0 ] hyper_dq_i;
494+ logic [`HypNumPhys - 1 : 0 ][7 : 0 ] hyper_dq_o;
495+ logic [`HypNumPhys - 1 : 0 ] hyper_dq_oe_o;
496+ logic [`HypNumPhys - 1 : 0 ] hyper_reset_no;
497+
498+ for (genvar i = 0 ; i < `HypNumPhys ; i++ ) begin : gen_hyper_phy
499+
500+ for (genvar j = 0 ; j < `HypNumChips ; j++ ) begin : gen_hyper_cs
501+ pad_functional_pd padinst_hyper_csno (
502+ .OEN ( 1'b0 ),
503+ .I ( hyper_cs_no[i][j] ),
504+ .O ( ),
505+ .PEN ( ),
506+ .PAD ( pad_hyper_csn[i][j] )
507+ );
508+ end // gen_hyper_cs
509+
510+ pad_functional_pd padinst_hyper_ck (
511+ .OEN ( 1'b0 ),
512+ .I ( hyper_ck_o[i] ),
513+ .O ( ),
514+ .PEN ( ),
515+ .PAD ( pad_hyper_ck[i] )
516+ );
517+ pad_functional_pd padinst_hyper_ckno (
518+ .OEN ( 1'b0 ),
519+ .I ( hyper_ck_no[i] ),
520+ .O ( ),
521+ .PEN ( ),
522+ .PAD ( pad_hyper_ckn[i] )
523+ );
524+ pad_functional_pd padinst_hyper_rwds0 (
525+ .OEN ( ~ hyper_rwds_oe_o[i] ),
526+ .I ( hyper_rwds_o[i] ),
527+ .O ( hyper_rwds_i[i] ),
528+ .PEN ( ),
529+ .PAD ( pad_hyper_rwds[i] )
530+ );
531+
532+ for (genvar j = 0 ; j < 8 ; j++ ) begin : gen_hyper_dq
533+ pad_functional_pd padinst_hyper_dqio0 (
534+ .OEN ( ~ hyper_dq_oe_o[i] ),
535+ .I ( hyper_dq_o[i][j] ),
536+ .O ( hyper_dq_i[i][j] ),
537+ .PEN ( ),
538+ .PAD ( pad_hyper_dq[i][j] )
539+ );
540+ end // gen_hyper_dq
541+
542+ end // gen_hyper_phy
543+
544+ `ila (ila_hyper_cs_n , hyper_cs_no )
545+ `ila (ila_hyper_ck , hyper_ck_o )
546+ `ila (ila_hyper_ck_n , hyper_ck_no )
547+ `ila (ila_hyper_rwds_o , hyper_rwds_o )
548+ `ila (ila_hyper_rwds_i , hyper_rwds_i )
549+ `ila (ila_hyper_rwds_oe_o , hyper_rwds_oe_o )
550+ `ila (ila_hyper_dq_i , hyper_dq_i )
551+ `ila (ila_hyper_dq_o , hyper_dq_o )
552+ `ila (ila_hyper_dq_oe , hyper_dq_oe_o )
553+ `ila (ila_hyper_reset_n , hyper_reset_no )
554+
478555`endif // GEN_NO_HYPERBUS
479556
480557 // ////////////////
@@ -494,7 +571,7 @@ module carfield_top_xilinx
494571 .LlcBWidth ( LlcBWidth ),
495572 .LlcRWidth ( LlcRWidth ),
496573 .LlcWWidth ( LlcWWidth ),
497- `endif
574+ `endif // GEN_NO_HYPERBUS
498575 .HypNumPhys (`HypNumPhys ),
499576 .HypNumChips (`HypNumChips )
500577 ) i_carfield (
@@ -576,7 +653,18 @@ module carfield_top_xilinx
576653 .llc_w_data,
577654 .llc_w_wptr,
578655 .llc_w_rptr,
579- `endif
656+ `else // GEN_NO_HYPERBUS
657+ .hyper_cs_no,
658+ .hyper_ck_o,
659+ .hyper_ck_no,
660+ .hyper_rwds_o,
661+ .hyper_rwds_i,
662+ .hyper_rwds_oe_o,
663+ .hyper_dq_i,
664+ .hyper_dq_o,
665+ .hyper_dq_oe_o,
666+ .hyper_reset_no,
667+ `endif // GEN_NO_HYPERBUS
580668 // Serial link interface
581669 .slink_rcv_clk_i (),
582670 .slink_rcv_clk_o (),
@@ -610,6 +698,6 @@ module carfield_top_xilinx
610698 // Phy
611699 .*
612700 );
613- `endif
701+ `endif // USE_DDR
614702
615703endmodule
0 commit comments