Skip to content

Commit

Permalink
update the scan chain jtag ports to be non-configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
mo-hosni committed Mar 13, 2024
1 parent e2ae293 commit b69abe7
Show file tree
Hide file tree
Showing 2 changed files with 450 additions and 2 deletions.
163 changes: 161 additions & 2 deletions verilog/rtl/caravel_core.v
Original file line number Diff line number Diff line change
Expand Up @@ -1321,8 +1321,167 @@ module caravel_core (
.pad_gpio_in(mprj_io_in[(`MPRJ_IO_PADS-1):(`MPRJ_IO_PADS-3)])
);

/* Section 2 GPIOs (GPIO 19 to 34) */

/* Section 2 GPIOs (GPIO 19 to 26) */

gpio_control_block gpio_control_in_2 [7:0] (
`ifdef USE_POWER_PINS
.vccd(vccd),
.vssd(vssd),
.vccd1(vccd1),
.vssd1(vssd1),
`endif
.gpio_defaults(gpio_defaults[(27*13-1):(19*13)]),

// Management Soc-facing signals

.resetn(gpio_resetn_2_shifted[(7):0]),
.serial_clock(gpio_clock_2_shifted[(7):0]),
.serial_load(gpio_load_2_shifted[(7):0]),

.resetn_out(gpio_resetn_2[(7):0]),
.serial_clock_out(gpio_clock_2[(7):0]),
.serial_load_out(gpio_load_2[(7):0]),

.mgmt_gpio_in(mgmt_io_in[(26):(19)]),
.mgmt_gpio_out(mgmt_io_out[(26):(19)]),
.mgmt_gpio_oeb(mprj_io_one[(26):(19)]),


.one(mprj_io_one[(26):(19)]),
.zero(),

// Serial data chain for pad configuration
.serial_data_in(gpio_serial_link_2_shifted[(7):0]),
.serial_data_out(gpio_serial_link_2[(7):0]),

// User-facing signals
.user_gpio_out(user_io_out[(26):(19)]),
.user_gpio_oeb(user_io_oeb[(26):(19)]),
.user_gpio_in(user_io_in[(26):(19)]),

// Pad-facing signals (Pad GPIOv2)
.pad_gpio_inenb(mprj_io_inp_dis[(26):(19)]),
.pad_gpio_ib_mode_sel(mprj_io_ib_mode_sel[(26):(19)]),
.pad_gpio_vtrip_sel(mprj_io_vtrip_sel[(26):(19)]),
.pad_gpio_slow_sel(mprj_io_slow_sel[(26):(19)]),
.pad_gpio_holdover(mprj_io_holdover[(26):(19)]),
.pad_gpio_ana_en(mprj_io_analog_en[(26):(19)]),
.pad_gpio_ana_sel(mprj_io_analog_sel[(26):(19)]),
.pad_gpio_ana_pol(mprj_io_analog_pol[(26):(19)]),
.pad_gpio_dm(mprj_io_dm[(27*3-1):(19*3)]),
.pad_gpio_outenb(mprj_io_oeb[(26):(19)]),
.pad_gpio_out(mprj_io_out[(26):(19)]),
.pad_gpio_in(mprj_io_in[(26):(19)])
);

/* Section 2 GPIOs (GPIO 27 to 31) DFT jtag */

gpio_control_block_mgmt gpio_control_in_2 [12:8] (
`ifdef USE_POWER_PINS
.vccd(vccd),
.vssd(vssd),
.vccd1(vccd1),
.vssd1(vssd1),
`endif
.gpio_defaults(gpio_defaults[(32*13-1):(27*13)]),

// Management Soc-facing signals

.resetn(gpio_resetn_2_shifted[(12):(8)]),
.serial_clock(gpio_clock_2_shifted[(12):(8)]),
.serial_load(gpio_load_2_shifted[(12):(8)]),

.resetn_out(gpio_resetn_2[(12):(8)]),
.serial_clock_out(gpio_clock_2[(12):(8)]),
.serial_load_out(gpio_load_2[(12):(8)]),

.mgmt_gpio_in(mgmt_io_in[(31):(27)]),
.mgmt_gpio_out(mgmt_io_out[(31):(27)]),
.mgmt_gpio_oeb(mprj_io_one[(31):(27)]),


.one(mprj_io_one[(31):(27)]),
.zero(),

// Serial data chain for pad configuration
.serial_data_in(gpio_serial_link_2_shifted[(12):(8)]),
.serial_data_out(gpio_serial_link_2[(12):(8)]),

// User-facing signals
.user_gpio_out(user_io_out[(31):(27)]),
.user_gpio_oeb(user_io_oeb[(31):(27)]),
.user_gpio_in(user_io_in[(31):(27)]),

// Pad-facing signals (Pad GPIOv2)
.pad_gpio_inenb(mprj_io_inp_dis[(31):(27)]),
.pad_gpio_ib_mode_sel(mprj_io_ib_mode_sel[(31):(27)]),
.pad_gpio_vtrip_sel(mprj_io_vtrip_sel[(31):(27)]),
.pad_gpio_slow_sel(mprj_io_slow_sel[(31):(27)]),
.pad_gpio_holdover(mprj_io_holdover[(31):(27)]),
.pad_gpio_ana_en(mprj_io_analog_en[(31):(27)]),
.pad_gpio_ana_sel(mprj_io_analog_sel[(31):(27)]),
.pad_gpio_ana_pol(mprj_io_analog_pol[(31):(27)]),
.pad_gpio_dm(mprj_io_dm[(32*3-1):(27*3)]),
.pad_gpio_outenb(mprj_io_oeb[(31):(27)]),
.pad_gpio_out(mprj_io_out[(31):(27)]),
.pad_gpio_in(mprj_io_in[(31):(27)])
);
/* Section 2 GPIOs (GPIO 32 to 34) */

gpio_control_block_mgmt gpio_control_in_2 [15:13] (
`ifdef USE_POWER_PINS
.vccd(vccd),
.vssd(vssd),
.vccd1(vccd1),
.vssd1(vssd1),
`endif
.gpio_defaults(gpio_defaults[(35*13-1):(32*13)]),

// Management Soc-facing signals

.resetn(gpio_resetn_2_shifted[(15):(13)]),
.serial_clock(gpio_clock_2_shifted[(15):(13)]),
.serial_load(gpio_load_2_shifted[(15):(13)]),

.resetn_out(gpio_resetn_2[(15):(13)]),
.serial_clock_out(gpio_clock_2[(15):(13)]),
.serial_load_out(gpio_load_2[(15):(13)]),

.mgmt_gpio_in(mgmt_io_in[(34):(32)]),
.mgmt_gpio_out(mgmt_io_out[(34):(32)]),
.mgmt_gpio_oeb(mprj_io_one[(34):(32)]),


.one(mprj_io_one[(34):(32)]),
.zero(),

// Serial data chain for pad configuration
.serial_data_in(gpio_serial_link_2_shifted[(15):(13)]),
.serial_data_out(gpio_serial_link_2[(15):(13)]),

// User-facing signals
.user_gpio_out(user_io_out[(34):(32)]),
.user_gpio_oeb(user_io_oeb[(34):(32)]),
.user_gpio_in(user_io_in[(34):(32)]),

// Pad-facing signals (Pad GPIOv2)
.pad_gpio_inenb(mprj_io_inp_dis[(34):(32)]),
.pad_gpio_ib_mode_sel(mprj_io_ib_mode_sel[(34):(32)]),
.pad_gpio_vtrip_sel(mprj_io_vtrip_sel[(34):(32)]),
.pad_gpio_slow_sel(mprj_io_slow_sel[(34):(32)]),
.pad_gpio_holdover(mprj_io_holdover[(34):(32)]),
.pad_gpio_ana_en(mprj_io_analog_en[(34):(32)]),
.pad_gpio_ana_sel(mprj_io_analog_sel[(34):(32)]),
.pad_gpio_ana_pol(mprj_io_analog_pol[(34):(32)]),
.pad_gpio_dm(mprj_io_dm[(35*3-1):(32*3)]),
.pad_gpio_outenb(mprj_io_oeb[(34):(32)]),
.pad_gpio_out(mprj_io_out[(34):(32)]),
.pad_gpio_in(mprj_io_in[(34):(32)])
);

/* Section 2 GPIOs (GPIO 19 to 34) */
/*
gpio_control_block gpio_control_in_2 [`MPRJ_IO_PADS_2-4:0] (
`ifdef USE_POWER_PINS
.vccd(vccd),
Expand Down Expand Up @@ -1374,7 +1533,7 @@ module caravel_core (
.pad_gpio_out(mprj_io_out[(`MPRJ_IO_PADS-4):(`MPRJ_IO_PADS_1)]),
.pad_gpio_in(mprj_io_in[(`MPRJ_IO_PADS-4):(`MPRJ_IO_PADS_1)])
);

*/
user_id_programming #(
.USER_PROJECT_ID(USER_PROJECT_ID)
) user_id_value (
Expand Down
Loading

0 comments on commit b69abe7

Please sign in to comment.