blob: b91ffb74637499949a88a620277cae4bed797ed8 [file] [log] [blame]
lowRISC Contributors802543a2019-08-31 12:12:56 +01001// Copyright lowRISC contributors.
2// Licensed under the Apache License, Version 2.0, see LICENSE for details.
3// SPDX-License-Identifier: Apache-2.0
Michael Schaffner40b6bd22020-10-27 19:52:23 -07004//
5// ------------------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------------------//
6// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED WITH THE FOLLOWING COMMAND:
7//
8// util/topgen.py -t hw/top_earlgrey/data/top_earlgrey.hjson \
Michael Schaffner40b6bd22020-10-27 19:52:23 -07009// -o hw/top_earlgrey/ \
10// --rnd_cnst_seed 4881560218908238235
lowRISC Contributors802543a2019-08-31 12:12:56 +010011
Timothy Chen7ff53122019-09-19 15:20:43 -070012module top_earlgrey #(
Pirmin Vogel15e1b912020-09-16 14:43:22 +020013 // Auto-inferred parameters
Michael Schaffner20972a62021-02-24 18:53:46 -080014 parameter OtpCtrlMemInitFile = "",
Michael Schaffner5f545872021-03-05 17:54:28 -080015 parameter pinmux_pkg::target_cfg_t PinmuxAonTargetCfg = pinmux_pkg::DefaultTargetCfg,
Timothy Chen15d98b72021-02-10 20:58:34 -080016 parameter bit SramCtrlRetAonInstrExec = 1,
Timothy Chen20ae79e2020-11-03 16:25:03 -080017 parameter bit AesMasking = 1'b1,
Pirmin Vogele6ca8722021-01-31 11:36:47 +010018 parameter aes_pkg::sbox_impl_e AesSBoxImpl = aes_pkg::SBoxImplDom,
Pirmin Vogel15e1b912020-09-16 14:43:22 +020019 parameter int unsigned SecAesStartTriggerDelay = 0,
Pirmin Vogel4429c362020-10-02 17:54:11 +020020 parameter bit SecAesAllowForcingMasks = 1'b0,
Pirmin Vogel95cea452021-03-02 08:54:01 +010021 parameter bit SecAesSkipPRNGReseeding = 1'b0,
Eunchan Kimf7ed1842020-12-29 12:59:39 -080022 parameter bit KmacEnMasking = 0,
Eunchan Kime5d33b72020-11-03 14:34:16 -080023 parameter int KmacReuseShare = 0,
Pirmin Vogelf8394762021-02-19 11:32:39 +010024 parameter aes_pkg::sbox_impl_e CsrngSBoxImpl = aes_pkg::SBoxImplCanright,
Timothy Chen15d98b72021-02-10 20:58:34 -080025 parameter bit SramCtrlMainInstrExec = 1,
Pirmin Vogel69b55a82020-10-01 09:54:39 +020026 parameter otbn_pkg::regfile_e OtbnRegFile = otbn_pkg::RegFileFF,
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +000027 parameter RomCtrlBootRomInitFile = "",
Pirmin Vogel15e1b912020-09-16 14:43:22 +020028
29 // Manually defined parameters
Pirmin Vogel4eb25022020-08-27 15:27:33 +020030 parameter ibex_pkg::regfile_e IbexRegFile = ibex_pkg::RegFileFF,
Tom Roberts7824ccc2020-11-05 11:34:03 +000031 parameter bit IbexICache = 1,
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +000032 parameter bit IbexPipeLine = 0
Timothy Chen7ff53122019-09-19 15:20:43 -070033) (
Timothy Chen371c94d2020-06-30 17:18:14 -070034 // Reset, clocks defined as part of intermodule
lowRISC Contributors802543a2019-08-31 12:12:56 +010035 input rst_ni,
36
Eunchan Kim769065e2019-10-29 17:29:26 -070037 // Multiplexed I/O
Michael Schaffnerb5b8eba2021-02-09 20:07:04 -080038 input [43:0] mio_in_i,
39 output logic [43:0] mio_out_o,
40 output logic [43:0] mio_oe_o,
Eunchan Kim769065e2019-10-29 17:29:26 -070041 // Dedicated I/O
Michael Schaffnerdbd087e2021-02-12 17:58:30 -080042 input [20:0] dio_in_i,
43 output logic [20:0] dio_out_o,
44 output logic [20:0] dio_oe_o,
lowRISC Contributors802543a2019-08-31 12:12:56 +010045
Michael Schaffner79eb65f2020-05-01 19:12:47 -070046 // pad attributes to padring
Michael Schaffner74c4ff22021-03-30 15:43:46 -070047 output prim_pad_wrapper_pkg::pad_attr_t [pinmux_reg_pkg::NMioPads-1:0] mio_attr_o,
48 output prim_pad_wrapper_pkg::pad_attr_t [pinmux_reg_pkg::NDioPads-1:0] dio_attr_o,
Michael Schaffner79eb65f2020-05-01 19:12:47 -070049
Timothy Chen371c94d2020-06-30 17:18:14 -070050
51 // Inter-module Signal External type
Timothy Chen6f98f352021-03-10 16:27:29 -080052 output ast_pkg::adc_ast_req_t adc_req_o,
53 input ast_pkg::adc_ast_rsp_t adc_rsp_i,
Timothy Chen685d6492021-03-09 21:28:39 -080054 input edn_pkg::edn_req_t ast_edn_req_i,
55 output edn_pkg::edn_rsp_t ast_edn_rsp_o,
56 output lc_ctrl_pkg::lc_tx_t ast_lc_dft_en_o,
57 input prim_ram_1p_pkg::ram_1p_cfg_t ram_1p_cfg_i,
58 input prim_ram_2p_pkg::ram_2p_cfg_t ram_2p_cfg_i,
59 input prim_rom_pkg::rom_cfg_t rom_cfg_i,
Eunchan Kim5511bbe2020-08-07 14:04:20 -070060 input logic clk_main_i,
61 input logic clk_io_i,
62 input logic clk_usb_i,
63 input logic clk_aon_i,
Timothy Chene38c4702021-02-08 18:38:03 -080064 output logic clk_main_jitter_en_o,
Timothy Chenfa60a602021-03-23 14:29:40 -070065 output lc_ctrl_pkg::lc_tx_t ast_clk_byp_req_o,
66 input lc_ctrl_pkg::lc_tx_t ast_clk_byp_ack_i,
Timothy Chend39fd392021-01-15 21:29:36 -080067 input lc_ctrl_pkg::lc_tx_t flash_bist_enable_i,
Timothy Chen2422a6c2020-11-19 16:06:14 -080068 input logic flash_power_down_h_i,
69 input logic flash_power_ready_h_i,
Timothy Chenea59ad32021-02-03 17:51:38 -080070 output entropy_src_pkg::entropy_src_rng_req_t es_rng_req_o,
71 input entropy_src_pkg::entropy_src_rng_rsp_t es_rng_rsp_i,
Timothy Chen5270b7c2021-03-17 17:38:30 -070072 output logic es_rng_fips_o,
Timothy Chen685d6492021-03-09 21:28:39 -080073 output tlul_pkg::tl_h2d_t ast_tl_req_o,
74 input tlul_pkg::tl_d2h_t ast_tl_rsp_i,
75 output pinmux_pkg::dft_strap_test_req_t dft_strap_test_o,
76 output pwrmgr_pkg::pwr_ast_req_t pwrmgr_ast_req_o,
77 input pwrmgr_pkg::pwr_ast_rsp_t pwrmgr_ast_rsp_i,
78 output otp_ctrl_pkg::otp_ast_req_t otp_ctrl_otp_ast_pwr_seq_o,
79 input otp_ctrl_pkg::otp_ast_rsp_t otp_ctrl_otp_ast_pwr_seq_h_i,
80 input ast_pkg::ast_alert_req_t sensor_ctrl_ast_alert_req_i,
81 output ast_pkg::ast_alert_rsp_t sensor_ctrl_ast_alert_rsp_o,
82 input ast_pkg::ast_status_t sensor_ctrl_ast_status_i,
83 output logic [9:0] pinmux2ast_o,
84 input logic [9:0] ast2pinmux_i,
85 output logic usbdev_usb_ref_val_o,
86 output logic usbdev_usb_ref_pulse_o,
Timothy Chen437fd9a2020-08-26 12:48:40 -070087 output clkmgr_pkg::clkmgr_ast_out_t clks_ast_o,
88 output rstmgr_pkg::rstmgr_ast_out_t rsts_ast_o,
Timothy Chen5270b7c2021-03-17 17:38:30 -070089
90 // Flash specific voltages
91 inout [3:0] flash_test_mode_a_io,
92 inout flash_test_voltage_h_io,
93
Timothy Chene38c4702021-02-08 18:38:03 -080094 input scan_rst_ni, // reset used for test mode
95 input scan_en_i,
Michael Schaffner8bf4fe62021-02-18 12:56:08 -080096 input lc_ctrl_pkg::lc_tx_t scanmode_i // lc_ctrl_pkg::On for Scan
lowRISC Contributors802543a2019-08-31 12:12:56 +010097);
98
Philipp Wagner086b7032019-10-25 17:06:15 +010099 // JTAG IDCODE for development versions of this code.
100 // Manufacturers of OpenTitan chips must replace this code with one of their
101 // own IDs.
102 // Field structure as defined in the IEEE 1149.1 (JTAG) specification,
103 // section 12.1.1.
Michael Schaffnerd4d5d2f2020-04-17 15:45:55 -0700104 localparam logic [31:0] JTAG_IDCODE = {
Philipp Wagner086b7032019-10-25 17:06:15 +0100105 4'h0, // Version
106 16'h4F54, // Part Number: "OT"
Philipp Wagnerf57964e2019-11-04 17:57:06 +0000107 11'h426, // Manufacturer Identity: Google
Philipp Wagner086b7032019-10-25 17:06:15 +0100108 1'b1 // (fixed)
109 };
110
lowRISC Contributors802543a2019-08-31 12:12:56 +0100111 import tlul_pkg::*;
112 import top_pkg::*;
113 import tl_main_pkg::*;
Michael Schaffner74c4ff22021-03-30 15:43:46 -0700114 import top_earlgrey_pkg::*;
Michael Schaffner40b6bd22020-10-27 19:52:23 -0700115 // Compile-time random constants
116 import top_earlgrey_rnd_cnst_pkg::*;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100117
Eunchan Kim769065e2019-10-29 17:29:26 -0700118 // Signals
Timothy Chen685d6492021-03-09 21:28:39 -0800119 logic [58:0] mio_p2d;
120 logic [62:0] mio_d2p;
Michael Schaffner74c4ff22021-03-30 15:43:46 -0700121 logic [62:0] mio_en_d2p;
Michael Schaffnerdbd087e2021-02-12 17:58:30 -0800122 logic [20:0] dio_p2d;
123 logic [20:0] dio_d2p;
Michael Schaffner74c4ff22021-03-30 15:43:46 -0700124 logic [20:0] dio_en_d2p;
Timothy Chen2971a1e2021-01-21 16:00:01 -0800125 // uart0
126 logic cio_uart0_rx_p2d;
127 logic cio_uart0_tx_d2p;
128 logic cio_uart0_tx_en_d2p;
129 // uart1
130 logic cio_uart1_rx_p2d;
131 logic cio_uart1_tx_d2p;
132 logic cio_uart1_tx_en_d2p;
133 // uart2
134 logic cio_uart2_rx_p2d;
135 logic cio_uart2_tx_d2p;
136 logic cio_uart2_tx_en_d2p;
137 // uart3
138 logic cio_uart3_rx_p2d;
139 logic cio_uart3_tx_d2p;
140 logic cio_uart3_tx_en_d2p;
Eunchan Kim769065e2019-10-29 17:29:26 -0700141 // gpio
142 logic [31:0] cio_gpio_gpio_p2d;
143 logic [31:0] cio_gpio_gpio_d2p;
144 logic [31:0] cio_gpio_gpio_en_d2p;
145 // spi_device
146 logic cio_spi_device_sck_p2d;
147 logic cio_spi_device_csb_p2d;
Michael Schaffnerdbd087e2021-02-12 17:58:30 -0800148 logic [3:0] cio_spi_device_sd_p2d;
149 logic [3:0] cio_spi_device_sd_d2p;
150 logic [3:0] cio_spi_device_sd_en_d2p;
151 // spi_host0
152 logic [3:0] cio_spi_host0_sd_p2d;
153 logic cio_spi_host0_sck_d2p;
154 logic cio_spi_host0_sck_en_d2p;
155 logic cio_spi_host0_csb_d2p;
156 logic cio_spi_host0_csb_en_d2p;
157 logic [3:0] cio_spi_host0_sd_d2p;
158 logic [3:0] cio_spi_host0_sd_en_d2p;
159 // spi_host1
160 logic [3:0] cio_spi_host1_sd_p2d;
161 logic cio_spi_host1_sck_d2p;
162 logic cio_spi_host1_sck_en_d2p;
163 logic cio_spi_host1_csb_d2p;
164 logic cio_spi_host1_csb_en_d2p;
165 logic [3:0] cio_spi_host1_sd_d2p;
166 logic [3:0] cio_spi_host1_sd_en_d2p;
Timothy Chen469a3032021-02-01 15:44:09 -0800167 // i2c0
168 logic cio_i2c0_sda_p2d;
169 logic cio_i2c0_scl_p2d;
170 logic cio_i2c0_sda_d2p;
171 logic cio_i2c0_sda_en_d2p;
172 logic cio_i2c0_scl_d2p;
173 logic cio_i2c0_scl_en_d2p;
174 // i2c1
175 logic cio_i2c1_sda_p2d;
176 logic cio_i2c1_scl_p2d;
177 logic cio_i2c1_sda_d2p;
178 logic cio_i2c1_sda_en_d2p;
179 logic cio_i2c1_scl_d2p;
180 logic cio_i2c1_scl_en_d2p;
181 // i2c2
182 logic cio_i2c2_sda_p2d;
183 logic cio_i2c2_scl_p2d;
184 logic cio_i2c2_sda_d2p;
185 logic cio_i2c2_sda_en_d2p;
186 logic cio_i2c2_scl_d2p;
187 logic cio_i2c2_scl_en_d2p;
188 // pattgen
189 logic cio_pattgen_pda0_tx_d2p;
190 logic cio_pattgen_pda0_tx_en_d2p;
191 logic cio_pattgen_pcl0_tx_d2p;
192 logic cio_pattgen_pcl0_tx_en_d2p;
193 logic cio_pattgen_pda1_tx_d2p;
194 logic cio_pattgen_pda1_tx_en_d2p;
195 logic cio_pattgen_pcl1_tx_d2p;
196 logic cio_pattgen_pcl1_tx_en_d2p;
Eunchan Kim769065e2019-10-29 17:29:26 -0700197 // rv_timer
Pirmin Vogelea91b302020-01-14 18:53:01 +0000198 // usbdev
199 logic cio_usbdev_sense_p2d;
Pirmin Vogelb054fc02020-03-11 11:23:03 +0100200 logic cio_usbdev_d_p2d;
Pirmin Vogelea91b302020-01-14 18:53:01 +0000201 logic cio_usbdev_dp_p2d;
202 logic cio_usbdev_dn_p2d;
Pirmin Vogelb054fc02020-03-11 11:23:03 +0100203 logic cio_usbdev_se0_d2p;
204 logic cio_usbdev_se0_en_d2p;
Pirmin Vogelfe6863b2020-05-11 17:30:54 +0200205 logic cio_usbdev_dp_pullup_d2p;
206 logic cio_usbdev_dp_pullup_en_d2p;
207 logic cio_usbdev_dn_pullup_d2p;
208 logic cio_usbdev_dn_pullup_en_d2p;
Pirmin Vogelb054fc02020-03-11 11:23:03 +0100209 logic cio_usbdev_tx_mode_se_d2p;
210 logic cio_usbdev_tx_mode_se_en_d2p;
211 logic cio_usbdev_suspend_d2p;
212 logic cio_usbdev_suspend_en_d2p;
213 logic cio_usbdev_d_d2p;
214 logic cio_usbdev_d_en_d2p;
Pirmin Vogelea91b302020-01-14 18:53:01 +0000215 logic cio_usbdev_dp_d2p;
216 logic cio_usbdev_dp_en_d2p;
217 logic cio_usbdev_dn_d2p;
218 logic cio_usbdev_dn_en_d2p;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800219 // otp_ctrl
220 // lc_ctrl
221 // alert_handler
Timothy Chen8aeeb492021-02-01 21:25:17 -0800222 // pwrmgr_aon
223 // rstmgr_aon
224 // clkmgr_aon
Timothy Chen6f98f352021-03-10 16:27:29 -0800225 // adc_ctrl_aon
Timothy Chen8aeeb492021-02-01 21:25:17 -0800226 // pinmux_aon
Timothy Chen2b8ef762021-02-16 14:44:55 -0800227 // aon_timer_aon
Timothy Chen8aeeb492021-02-01 21:25:17 -0800228 // sensor_ctrl_aon
Timothy Chen685d6492021-03-09 21:28:39 -0800229 logic [9:0] cio_sensor_ctrl_aon_ast_debug_in_p2d;
230 logic [9:0] cio_sensor_ctrl_aon_ast_debug_out_d2p;
231 logic [9:0] cio_sensor_ctrl_aon_ast_debug_out_en_d2p;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800232 // sram_ctrl_ret_aon
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -0800233 // flash_ctrl
Timothy Chen6a34b6e2021-02-22 11:33:11 -0800234 logic cio_flash_ctrl_tck_p2d;
235 logic cio_flash_ctrl_tms_p2d;
236 logic cio_flash_ctrl_tdi_p2d;
237 logic cio_flash_ctrl_tdo_d2p;
238 logic cio_flash_ctrl_tdo_en_d2p;
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -0800239 // rv_plic
240 // aes
241 // hmac
242 // kmac
Timothy Chen94953722020-09-18 16:15:12 -0700243 // keymgr
Mark Branstadff807362020-11-16 07:56:15 -0800244 // csrng
245 // entropy_src
246 // edn0
247 // edn1
Michael Schaffner9da4db82020-12-21 15:35:24 -0800248 // sram_ctrl_main
Philipp Wagnera4a9e402020-06-22 12:06:56 +0100249 // otbn
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +0000250 // rom_ctrl
Eunchan Kim769065e2019-10-29 17:29:26 -0700251
252
Timothy Chenaad796e2021-03-24 17:21:33 -0700253 logic [177:0] intr_vector;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100254 // Interrupt source list
Timothy Chen2971a1e2021-01-21 16:00:01 -0800255 logic intr_uart0_tx_watermark;
256 logic intr_uart0_rx_watermark;
257 logic intr_uart0_tx_empty;
258 logic intr_uart0_rx_overflow;
259 logic intr_uart0_rx_frame_err;
260 logic intr_uart0_rx_break_err;
261 logic intr_uart0_rx_timeout;
262 logic intr_uart0_rx_parity_err;
263 logic intr_uart1_tx_watermark;
264 logic intr_uart1_rx_watermark;
265 logic intr_uart1_tx_empty;
266 logic intr_uart1_rx_overflow;
267 logic intr_uart1_rx_frame_err;
268 logic intr_uart1_rx_break_err;
269 logic intr_uart1_rx_timeout;
270 logic intr_uart1_rx_parity_err;
271 logic intr_uart2_tx_watermark;
272 logic intr_uart2_rx_watermark;
273 logic intr_uart2_tx_empty;
274 logic intr_uart2_rx_overflow;
275 logic intr_uart2_rx_frame_err;
276 logic intr_uart2_rx_break_err;
277 logic intr_uart2_rx_timeout;
278 logic intr_uart2_rx_parity_err;
279 logic intr_uart3_tx_watermark;
280 logic intr_uart3_rx_watermark;
281 logic intr_uart3_tx_empty;
282 logic intr_uart3_rx_overflow;
283 logic intr_uart3_rx_frame_err;
284 logic intr_uart3_rx_break_err;
285 logic intr_uart3_rx_timeout;
286 logic intr_uart3_rx_parity_err;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100287 logic [31:0] intr_gpio_gpio;
Eunchan Kim8c57fe32019-09-02 21:14:24 -0700288 logic intr_spi_device_rxf;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100289 logic intr_spi_device_rxlvl;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100290 logic intr_spi_device_txlvl;
291 logic intr_spi_device_rxerr;
Eunchan Kim546c0d42019-09-24 15:07:06 -0700292 logic intr_spi_device_rxoverflow;
293 logic intr_spi_device_txunderflow;
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -0800294 logic intr_spi_host0_error;
295 logic intr_spi_host0_spi_event;
296 logic intr_spi_host1_error;
297 logic intr_spi_host1_spi_event;
Timothy Chen469a3032021-02-01 15:44:09 -0800298 logic intr_i2c0_fmt_watermark;
299 logic intr_i2c0_rx_watermark;
300 logic intr_i2c0_fmt_overflow;
301 logic intr_i2c0_rx_overflow;
302 logic intr_i2c0_nak;
303 logic intr_i2c0_scl_interference;
304 logic intr_i2c0_sda_interference;
305 logic intr_i2c0_stretch_timeout;
306 logic intr_i2c0_sda_unstable;
307 logic intr_i2c0_trans_complete;
308 logic intr_i2c0_tx_empty;
309 logic intr_i2c0_tx_nonempty;
310 logic intr_i2c0_tx_overflow;
311 logic intr_i2c0_acq_overflow;
312 logic intr_i2c0_ack_stop;
313 logic intr_i2c0_host_timeout;
314 logic intr_i2c1_fmt_watermark;
315 logic intr_i2c1_rx_watermark;
316 logic intr_i2c1_fmt_overflow;
317 logic intr_i2c1_rx_overflow;
318 logic intr_i2c1_nak;
319 logic intr_i2c1_scl_interference;
320 logic intr_i2c1_sda_interference;
321 logic intr_i2c1_stretch_timeout;
322 logic intr_i2c1_sda_unstable;
323 logic intr_i2c1_trans_complete;
324 logic intr_i2c1_tx_empty;
325 logic intr_i2c1_tx_nonempty;
326 logic intr_i2c1_tx_overflow;
327 logic intr_i2c1_acq_overflow;
328 logic intr_i2c1_ack_stop;
329 logic intr_i2c1_host_timeout;
330 logic intr_i2c2_fmt_watermark;
331 logic intr_i2c2_rx_watermark;
332 logic intr_i2c2_fmt_overflow;
333 logic intr_i2c2_rx_overflow;
334 logic intr_i2c2_nak;
335 logic intr_i2c2_scl_interference;
336 logic intr_i2c2_sda_interference;
337 logic intr_i2c2_stretch_timeout;
338 logic intr_i2c2_sda_unstable;
339 logic intr_i2c2_trans_complete;
340 logic intr_i2c2_tx_empty;
341 logic intr_i2c2_tx_nonempty;
342 logic intr_i2c2_tx_overflow;
343 logic intr_i2c2_acq_overflow;
344 logic intr_i2c2_ack_stop;
345 logic intr_i2c2_host_timeout;
346 logic intr_pattgen_done_ch0;
347 logic intr_pattgen_done_ch1;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100348 logic intr_rv_timer_timer_expired_0_0;
Pirmin Vogelea91b302020-01-14 18:53:01 +0000349 logic intr_usbdev_pkt_received;
350 logic intr_usbdev_pkt_sent;
351 logic intr_usbdev_disconnected;
352 logic intr_usbdev_host_lost;
353 logic intr_usbdev_link_reset;
354 logic intr_usbdev_link_suspend;
355 logic intr_usbdev_link_resume;
356 logic intr_usbdev_av_empty;
357 logic intr_usbdev_rx_full;
358 logic intr_usbdev_av_overflow;
359 logic intr_usbdev_link_in_err;
360 logic intr_usbdev_rx_crc_err;
361 logic intr_usbdev_rx_pid_err;
362 logic intr_usbdev_rx_bitstuff_err;
363 logic intr_usbdev_frame;
364 logic intr_usbdev_connected;
Stefan Lippuner207b1a62020-11-10 09:25:53 +0100365 logic intr_usbdev_link_out_err;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800366 logic intr_otp_ctrl_otp_operation_done;
367 logic intr_otp_ctrl_otp_error;
368 logic intr_alert_handler_classa;
369 logic intr_alert_handler_classb;
370 logic intr_alert_handler_classc;
371 logic intr_alert_handler_classd;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800372 logic intr_pwrmgr_aon_wakeup;
Timothy Chen6f98f352021-03-10 16:27:29 -0800373 logic intr_adc_ctrl_aon_debug_cable;
Timothy Chen2b8ef762021-02-16 14:44:55 -0800374 logic intr_aon_timer_aon_wkup_timer_expired;
375 logic intr_aon_timer_aon_wdog_timer_bark;
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -0800376 logic intr_flash_ctrl_prog_empty;
377 logic intr_flash_ctrl_prog_lvl;
378 logic intr_flash_ctrl_rd_full;
379 logic intr_flash_ctrl_rd_lvl;
380 logic intr_flash_ctrl_op_done;
Timothy Chenaad796e2021-03-24 17:21:33 -0700381 logic intr_flash_ctrl_err;
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -0800382 logic intr_hmac_hmac_done;
383 logic intr_hmac_fifo_empty;
384 logic intr_hmac_hmac_err;
385 logic intr_kmac_kmac_done;
386 logic intr_kmac_fifo_empty;
387 logic intr_kmac_kmac_err;
Timothy Chen94953722020-09-18 16:15:12 -0700388 logic intr_keymgr_op_done;
Mark Branstadff807362020-11-16 07:56:15 -0800389 logic intr_csrng_cs_cmd_req_done;
390 logic intr_csrng_cs_entropy_req;
391 logic intr_csrng_cs_hw_inst_exc;
Mark Branstadd65d1392021-02-10 13:15:39 -0800392 logic intr_csrng_cs_fatal_err;
Mark Branstadff807362020-11-16 07:56:15 -0800393 logic intr_entropy_src_es_entropy_valid;
394 logic intr_entropy_src_es_health_test_failed;
Mark Branstad789ea022021-02-12 14:35:42 -0800395 logic intr_entropy_src_es_fatal_err;
Mark Branstadff807362020-11-16 07:56:15 -0800396 logic intr_edn0_edn_cmd_req_done;
Mark Branstad1e7fa2e2021-02-18 08:41:37 -0800397 logic intr_edn0_edn_fatal_err;
Mark Branstadff807362020-11-16 07:56:15 -0800398 logic intr_edn1_edn_cmd_req_done;
Mark Branstad1e7fa2e2021-02-18 08:41:37 -0800399 logic intr_edn1_edn_fatal_err;
Philipp Wagnera4a9e402020-06-22 12:06:56 +0100400 logic intr_otbn_done;
Michael Schaffner666dde12019-10-25 11:57:54 -0700401
lowRISC Contributors802543a2019-08-31 12:12:56 +0100402
Michael Schaffnerd4d5d2f2020-04-17 15:45:55 -0700403
Michael Schaffner1ba89b82019-11-03 14:25:54 -0800404 logic [0:0] irq_plic;
405 logic [0:0] msip;
Timothy Chen469a3032021-02-01 15:44:09 -0800406 logic [7:0] irq_id[1];
407 logic [7:0] unused_irq_id[1];
lowRISC Contributors802543a2019-08-31 12:12:56 +0100408
Michael Schaffner1ba89b82019-11-03 14:25:54 -0800409 // this avoids lint errors
410 assign unused_irq_id = irq_id;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100411
Michael Schaffner666dde12019-10-25 11:57:54 -0700412 // Alert list
Philipp Wagner79725e12020-03-03 23:34:38 +0000413 prim_alert_pkg::alert_tx_t [alert_pkg::NAlerts-1:0] alert_tx;
414 prim_alert_pkg::alert_rx_t [alert_pkg::NAlerts-1:0] alert_rx;
Michael Schaffner666dde12019-10-25 11:57:54 -0700415
416
Eunchan Kim40098a92020-04-17 12:22:36 -0700417 // define inter-module signals
Timothy Chen685d6492021-03-09 21:28:39 -0800418 prim_ram_1p_pkg::ram_1p_cfg_t ast_ram_1p_cfg;
419 prim_ram_2p_pkg::ram_2p_cfg_t ast_ram_2p_cfg;
420 prim_rom_pkg::rom_cfg_t ast_rom_cfg;
Timothy Chenccf343d2020-12-04 20:38:15 -0800421 alert_pkg::alert_crashdump_t alert_handler_crashdump;
Timothy Chenc0d32d92020-12-16 18:01:22 -0800422 prim_esc_pkg::esc_rx_t [3:0] alert_handler_esc_rx;
423 prim_esc_pkg::esc_tx_t [3:0] alert_handler_esc_tx;
Mark Branstadff807362020-11-16 07:56:15 -0800424 csrng_pkg::csrng_req_t [1:0] csrng_csrng_cmd_req;
425 csrng_pkg::csrng_rsp_t [1:0] csrng_csrng_cmd_rsp;
Timothy Chenccf343d2020-12-04 20:38:15 -0800426 entropy_src_pkg::entropy_src_hw_if_req_t csrng_entropy_src_hw_if_req;
427 entropy_src_pkg::entropy_src_hw_if_rsp_t csrng_entropy_src_hw_if_rsp;
Mark Branstadde7eba32021-03-22 14:18:38 -0700428 entropy_src_pkg::cs_aes_halt_req_t csrng_cs_aes_halt_req;
429 entropy_src_pkg::cs_aes_halt_rsp_t csrng_cs_aes_halt_rsp;
Eunchan Kim40098a92020-04-17 12:22:36 -0700430 flash_ctrl_pkg::flash_req_t flash_ctrl_flash_req;
431 flash_ctrl_pkg::flash_rsp_t flash_ctrl_flash_rsp;
Timothy Chenccf343d2020-12-04 20:38:15 -0800432 flash_ctrl_pkg::keymgr_flash_t flash_ctrl_keymgr;
433 otp_ctrl_pkg::flash_otp_key_req_t flash_ctrl_otp_req;
434 otp_ctrl_pkg::flash_otp_key_rsp_t flash_ctrl_otp_rsp;
Timothy Chen3cb138f2020-12-15 20:35:03 -0800435 lc_ctrl_pkg::lc_tx_t flash_ctrl_rma_req;
436 lc_ctrl_pkg::lc_tx_t flash_ctrl_rma_ack;
437 lc_ctrl_pkg::lc_flash_rma_seed_t flash_ctrl_rma_seed;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800438 sram_ctrl_pkg::sram_scr_req_t sram_ctrl_main_sram_scr_req;
439 sram_ctrl_pkg::sram_scr_rsp_t sram_ctrl_main_sram_scr_rsp;
Timothy Chen95d23d92021-03-11 17:44:59 -0800440 sram_ctrl_pkg::sram_scr_init_req_t sram_ctrl_main_sram_scr_init_req;
441 sram_ctrl_pkg::sram_scr_init_rsp_t sram_ctrl_main_sram_scr_init_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800442 sram_ctrl_pkg::sram_scr_req_t sram_ctrl_ret_aon_sram_scr_req;
443 sram_ctrl_pkg::sram_scr_rsp_t sram_ctrl_ret_aon_sram_scr_rsp;
Timothy Chen95d23d92021-03-11 17:44:59 -0800444 sram_ctrl_pkg::sram_scr_init_req_t sram_ctrl_ret_aon_sram_scr_init_req;
445 sram_ctrl_pkg::sram_scr_init_rsp_t sram_ctrl_ret_aon_sram_scr_init_rsp;
Timothy Chen15d98b72021-02-10 20:58:34 -0800446 tlul_pkg::tl_instr_en_t sram_ctrl_main_en_ifetch;
447 tlul_pkg::tl_instr_en_t sram_ctrl_ret_aon_en_ifetch;
Timothy Chen12cce142021-03-02 18:11:01 -0800448 logic ram_main_intg_error;
449 logic ram_ret_aon_intg_error;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800450 otp_ctrl_pkg::sram_otp_key_req_t [1:0] otp_ctrl_sram_otp_key_req;
451 otp_ctrl_pkg::sram_otp_key_rsp_t [1:0] otp_ctrl_sram_otp_key_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800452 pwrmgr_pkg::pwr_flash_req_t pwrmgr_aon_pwr_flash_req;
453 pwrmgr_pkg::pwr_flash_rsp_t pwrmgr_aon_pwr_flash_rsp;
454 pwrmgr_pkg::pwr_rst_req_t pwrmgr_aon_pwr_rst_req;
455 pwrmgr_pkg::pwr_rst_rsp_t pwrmgr_aon_pwr_rst_rsp;
456 pwrmgr_pkg::pwr_clk_req_t pwrmgr_aon_pwr_clk_req;
457 pwrmgr_pkg::pwr_clk_rsp_t pwrmgr_aon_pwr_clk_rsp;
458 pwrmgr_pkg::pwr_otp_req_t pwrmgr_aon_pwr_otp_req;
459 pwrmgr_pkg::pwr_otp_rsp_t pwrmgr_aon_pwr_otp_rsp;
460 pwrmgr_pkg::pwr_lc_req_t pwrmgr_aon_pwr_lc_req;
461 pwrmgr_pkg::pwr_lc_rsp_t pwrmgr_aon_pwr_lc_rsp;
Timothy Chen383afb82021-02-23 13:18:53 -0800462 logic pwrmgr_aon_strap;
463 logic pwrmgr_aon_low_power;
Tom Robertsc88e97f2021-03-04 13:38:20 +0000464 ibex_pkg::crash_dump_t rv_core_ibex_crash_dump;
Timothy Chenc2b279a2021-01-14 18:53:34 -0800465 logic usbdev_usb_out_of_rst;
466 logic usbdev_usb_aon_wake_en;
467 logic usbdev_usb_aon_wake_ack;
468 logic usbdev_usb_suspend;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800469 usbdev_pkg::awk_state_t pinmux_aon_usb_state_debug;
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +0000470 edn_pkg::edn_req_t [6:0] edn0_edn_req;
471 edn_pkg::edn_rsp_t [6:0] edn0_edn_rsp;
472 edn_pkg::edn_req_t [6:0] edn1_edn_req;
473 edn_pkg::edn_rsp_t [6:0] edn1_edn_rsp;
Timothy Chen77cc8b92020-12-05 09:19:14 -0800474 otp_ctrl_pkg::otp_keymgr_key_t otp_ctrl_otp_keymgr_key;
Eunchan Kime5d33b72020-11-03 14:34:16 -0800475 keymgr_pkg::hw_key_req_t keymgr_kmac_key;
Eunchan Kim4af433f2021-03-25 17:11:41 -0700476 kmac_pkg::app_req_t [2:0] kmac_app_req;
477 kmac_pkg::app_rsp_t [2:0] kmac_app_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800478 logic [3:0] clkmgr_aon_idle;
Michael Schaffnera7063802021-02-18 18:06:03 -0800479 jtag_pkg::jtag_req_t pinmux_aon_lc_jtag_req;
480 jtag_pkg::jtag_rsp_t pinmux_aon_lc_jtag_rsp;
Michael Schaffner5f545872021-03-05 17:54:28 -0800481 jtag_pkg::jtag_req_t pinmux_aon_rv_jtag_req;
482 jtag_pkg::jtag_rsp_t pinmux_aon_rv_jtag_rsp;
Michael Schaffner6d3d6a02020-12-11 13:52:51 -0800483 otp_ctrl_pkg::otp_lc_data_t otp_ctrl_otp_lc_data;
484 otp_ctrl_pkg::lc_otp_program_req_t lc_ctrl_lc_otp_program_req;
485 otp_ctrl_pkg::lc_otp_program_rsp_t lc_ctrl_lc_otp_program_rsp;
486 otp_ctrl_pkg::lc_otp_token_req_t lc_ctrl_lc_otp_token_req;
487 otp_ctrl_pkg::lc_otp_token_rsp_t lc_ctrl_lc_otp_token_rsp;
488 otp_ctrl_part_pkg::otp_hw_cfg_t otp_ctrl_otp_hw_cfg;
489 lc_ctrl_pkg::lc_keymgr_div_t lc_ctrl_lc_keymgr_div;
490 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_dft_en;
491 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_nvm_debug_en;
492 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_hw_debug_en;
493 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_cpu_en;
Michael Schaffnerdc0c1e92021-03-02 14:41:31 -0800494 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_keymgr_en;
Michael Schaffner6d3d6a02020-12-11 13:52:51 -0800495 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_escalate_en;
Michael Schaffnerc506dc52020-12-22 21:07:17 -0800496 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_check_byp_en;
Timothy Chenfa60a602021-03-23 14:29:40 -0700497 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_clk_byp_req;
Timothy Chen33c90782021-01-06 17:38:48 -0800498 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_clk_byp_ack;
Michael Schaffner6d3d6a02020-12-11 13:52:51 -0800499 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_creator_seed_sw_rw_en;
500 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_owner_seed_sw_rw_en;
501 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_iso_part_sw_rd_en;
502 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_iso_part_sw_wr_en;
503 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_seed_hw_rd_en;
Timothy Chen6f98f352021-03-10 16:27:29 -0800504 logic [3:0] pwrmgr_aon_wakeups;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800505 logic pwrmgr_aon_rstreqs;
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +0000506 tlul_pkg::tl_h2d_t rom_ctrl_rom_tl_req;
507 tlul_pkg::tl_d2h_t rom_ctrl_rom_tl_rsp;
508 tlul_pkg::tl_h2d_t rom_ctrl_regs_tl_req;
509 tlul_pkg::tl_d2h_t rom_ctrl_regs_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700510 tlul_pkg::tl_h2d_t ram_main_tl_req;
511 tlul_pkg::tl_d2h_t ram_main_tl_rsp;
512 tlul_pkg::tl_h2d_t eflash_tl_req;
513 tlul_pkg::tl_d2h_t eflash_tl_rsp;
514 tlul_pkg::tl_h2d_t main_tl_peri_req;
515 tlul_pkg::tl_d2h_t main_tl_peri_rsp;
Timothy Chen76eb8832021-03-25 16:49:58 -0700516 tlul_pkg::tl_h2d_t flash_ctrl_core_tl_req;
517 tlul_pkg::tl_d2h_t flash_ctrl_core_tl_rsp;
518 tlul_pkg::tl_h2d_t flash_ctrl_prim_tl_req;
519 tlul_pkg::tl_d2h_t flash_ctrl_prim_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700520 tlul_pkg::tl_h2d_t hmac_tl_req;
521 tlul_pkg::tl_d2h_t hmac_tl_rsp;
Eunchan Kime5d33b72020-11-03 14:34:16 -0800522 tlul_pkg::tl_h2d_t kmac_tl_req;
523 tlul_pkg::tl_d2h_t kmac_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700524 tlul_pkg::tl_h2d_t aes_tl_req;
525 tlul_pkg::tl_d2h_t aes_tl_rsp;
Mark Branstadff807362020-11-16 07:56:15 -0800526 tlul_pkg::tl_h2d_t entropy_src_tl_req;
527 tlul_pkg::tl_d2h_t entropy_src_tl_rsp;
528 tlul_pkg::tl_h2d_t csrng_tl_req;
529 tlul_pkg::tl_d2h_t csrng_tl_rsp;
530 tlul_pkg::tl_h2d_t edn0_tl_req;
531 tlul_pkg::tl_d2h_t edn0_tl_rsp;
532 tlul_pkg::tl_h2d_t edn1_tl_req;
533 tlul_pkg::tl_d2h_t edn1_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700534 tlul_pkg::tl_h2d_t rv_plic_tl_req;
535 tlul_pkg::tl_d2h_t rv_plic_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700536 tlul_pkg::tl_h2d_t otbn_tl_req;
537 tlul_pkg::tl_d2h_t otbn_tl_rsp;
Timothy Chen94953722020-09-18 16:15:12 -0700538 tlul_pkg::tl_h2d_t keymgr_tl_req;
539 tlul_pkg::tl_d2h_t keymgr_tl_rsp;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800540 tlul_pkg::tl_h2d_t sram_ctrl_main_tl_req;
541 tlul_pkg::tl_d2h_t sram_ctrl_main_tl_rsp;
Timothy Chen2971a1e2021-01-21 16:00:01 -0800542 tlul_pkg::tl_h2d_t uart0_tl_req;
543 tlul_pkg::tl_d2h_t uart0_tl_rsp;
544 tlul_pkg::tl_h2d_t uart1_tl_req;
545 tlul_pkg::tl_d2h_t uart1_tl_rsp;
546 tlul_pkg::tl_h2d_t uart2_tl_req;
547 tlul_pkg::tl_d2h_t uart2_tl_rsp;
548 tlul_pkg::tl_h2d_t uart3_tl_req;
549 tlul_pkg::tl_d2h_t uart3_tl_rsp;
Timothy Chen469a3032021-02-01 15:44:09 -0800550 tlul_pkg::tl_h2d_t i2c0_tl_req;
551 tlul_pkg::tl_d2h_t i2c0_tl_rsp;
552 tlul_pkg::tl_h2d_t i2c1_tl_req;
553 tlul_pkg::tl_d2h_t i2c1_tl_rsp;
554 tlul_pkg::tl_h2d_t i2c2_tl_req;
555 tlul_pkg::tl_d2h_t i2c2_tl_rsp;
556 tlul_pkg::tl_h2d_t pattgen_tl_req;
557 tlul_pkg::tl_d2h_t pattgen_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700558 tlul_pkg::tl_h2d_t gpio_tl_req;
559 tlul_pkg::tl_d2h_t gpio_tl_rsp;
560 tlul_pkg::tl_h2d_t spi_device_tl_req;
561 tlul_pkg::tl_d2h_t spi_device_tl_rsp;
Michael Schaffnerdbd087e2021-02-12 17:58:30 -0800562 tlul_pkg::tl_h2d_t spi_host0_tl_req;
563 tlul_pkg::tl_d2h_t spi_host0_tl_rsp;
564 tlul_pkg::tl_h2d_t spi_host1_tl_req;
565 tlul_pkg::tl_d2h_t spi_host1_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700566 tlul_pkg::tl_h2d_t rv_timer_tl_req;
567 tlul_pkg::tl_d2h_t rv_timer_tl_rsp;
568 tlul_pkg::tl_h2d_t usbdev_tl_req;
569 tlul_pkg::tl_d2h_t usbdev_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800570 tlul_pkg::tl_h2d_t pwrmgr_aon_tl_req;
571 tlul_pkg::tl_d2h_t pwrmgr_aon_tl_rsp;
572 tlul_pkg::tl_h2d_t rstmgr_aon_tl_req;
573 tlul_pkg::tl_d2h_t rstmgr_aon_tl_rsp;
574 tlul_pkg::tl_h2d_t clkmgr_aon_tl_req;
575 tlul_pkg::tl_d2h_t clkmgr_aon_tl_rsp;
576 tlul_pkg::tl_h2d_t pinmux_aon_tl_req;
577 tlul_pkg::tl_d2h_t pinmux_aon_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800578 tlul_pkg::tl_h2d_t ram_ret_aon_tl_req;
579 tlul_pkg::tl_d2h_t ram_ret_aon_tl_rsp;
Michael Schaffnera3045602020-10-06 19:19:46 -0700580 tlul_pkg::tl_h2d_t otp_ctrl_tl_req;
581 tlul_pkg::tl_d2h_t otp_ctrl_tl_rsp;
Michael Schaffner6d3d6a02020-12-11 13:52:51 -0800582 tlul_pkg::tl_h2d_t lc_ctrl_tl_req;
583 tlul_pkg::tl_d2h_t lc_ctrl_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800584 tlul_pkg::tl_h2d_t sensor_ctrl_aon_tl_req;
585 tlul_pkg::tl_d2h_t sensor_ctrl_aon_tl_rsp;
Michael Schaffnerd1fc7d12020-12-21 12:52:23 -0800586 tlul_pkg::tl_h2d_t alert_handler_tl_req;
587 tlul_pkg::tl_d2h_t alert_handler_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800588 tlul_pkg::tl_h2d_t sram_ctrl_ret_aon_tl_req;
589 tlul_pkg::tl_d2h_t sram_ctrl_ret_aon_tl_rsp;
Timothy Chen2b8ef762021-02-16 14:44:55 -0800590 tlul_pkg::tl_h2d_t aon_timer_aon_tl_req;
591 tlul_pkg::tl_d2h_t aon_timer_aon_tl_rsp;
Timothy Chen6f98f352021-03-10 16:27:29 -0800592 tlul_pkg::tl_h2d_t adc_ctrl_aon_tl_req;
593 tlul_pkg::tl_d2h_t adc_ctrl_aon_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800594 rstmgr_pkg::rstmgr_out_t rstmgr_aon_resets;
595 rstmgr_pkg::rstmgr_cpu_t rstmgr_aon_cpu;
596 pwrmgr_pkg::pwr_cpu_t pwrmgr_aon_pwr_cpu;
597 clkmgr_pkg::clkmgr_out_t clkmgr_aon_clocks;
Eunchan Kim0f549542020-08-04 10:40:11 -0700598 tlul_pkg::tl_h2d_t main_tl_corei_req;
599 tlul_pkg::tl_d2h_t main_tl_corei_rsp;
600 tlul_pkg::tl_h2d_t main_tl_cored_req;
601 tlul_pkg::tl_d2h_t main_tl_cored_rsp;
602 tlul_pkg::tl_h2d_t main_tl_dm_sba_req;
603 tlul_pkg::tl_d2h_t main_tl_dm_sba_rsp;
604 tlul_pkg::tl_h2d_t main_tl_debug_mem_req;
605 tlul_pkg::tl_d2h_t main_tl_debug_mem_rsp;
Pirmin Vogela2d411d2020-07-13 17:33:42 +0200606
Timothy Chen075ed372021-02-04 14:42:29 -0800607 // define mixed connection to port
Timothy Chen685d6492021-03-09 21:28:39 -0800608 assign edn0_edn_req[2] = ast_edn_req_i;
609 assign ast_edn_rsp_o = edn0_edn_rsp[2];
610 assign ast_lc_dft_en_o = lc_ctrl_lc_dft_en;
611 assign ast_ram_1p_cfg = ram_1p_cfg_i;
612 assign ast_ram_2p_cfg = ram_2p_cfg_i;
613 assign ast_rom_cfg = rom_cfg_i;
Timothy Chen075ed372021-02-04 14:42:29 -0800614
Timothy Chen90b82422021-02-03 23:45:21 -0800615 // define partial inter-module tie-off
Timothy Chen72cb99c2021-03-08 15:58:44 -0800616 edn_pkg::edn_rsp_t unused_edn1_edn_rsp1;
617 edn_pkg::edn_rsp_t unused_edn1_edn_rsp2;
Timothy Chen44b404e2021-02-05 13:06:01 -0800618 edn_pkg::edn_rsp_t unused_edn1_edn_rsp3;
Timothy Chen72cb99c2021-03-08 15:58:44 -0800619 edn_pkg::edn_rsp_t unused_edn1_edn_rsp4;
620 edn_pkg::edn_rsp_t unused_edn1_edn_rsp5;
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +0000621 edn_pkg::edn_rsp_t unused_edn1_edn_rsp6;
Eunchan Kim4af433f2021-03-25 17:11:41 -0700622 kmac_pkg::app_rsp_t unused_kmac_app_rsp1;
623 kmac_pkg::app_rsp_t unused_kmac_app_rsp2;
Timothy Chen90b82422021-02-03 23:45:21 -0800624
625 // assign partial inter-module tie-off
Timothy Chen72cb99c2021-03-08 15:58:44 -0800626 assign unused_edn1_edn_rsp1 = edn1_edn_rsp[1];
627 assign unused_edn1_edn_rsp2 = edn1_edn_rsp[2];
Timothy Chen44b404e2021-02-05 13:06:01 -0800628 assign unused_edn1_edn_rsp3 = edn1_edn_rsp[3];
Timothy Chen72cb99c2021-03-08 15:58:44 -0800629 assign unused_edn1_edn_rsp4 = edn1_edn_rsp[4];
630 assign unused_edn1_edn_rsp5 = edn1_edn_rsp[5];
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +0000631 assign unused_edn1_edn_rsp6 = edn1_edn_rsp[6];
Eunchan Kim4af433f2021-03-25 17:11:41 -0700632 assign unused_kmac_app_rsp1 = kmac_app_rsp[1];
633 assign unused_kmac_app_rsp2 = kmac_app_rsp[2];
Timothy Chen72cb99c2021-03-08 15:58:44 -0800634 assign edn1_edn_req[1] = '0;
635 assign edn1_edn_req[2] = '0;
Timothy Chen44b404e2021-02-05 13:06:01 -0800636 assign edn1_edn_req[3] = '0;
Timothy Chen72cb99c2021-03-08 15:58:44 -0800637 assign edn1_edn_req[4] = '0;
638 assign edn1_edn_req[5] = '0;
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +0000639 assign edn1_edn_req[6] = '0;
Eunchan Kim4af433f2021-03-25 17:11:41 -0700640 assign kmac_app_req[1] = kmac_pkg::APP_REQ_DEFAULT;
641 assign kmac_app_req[2] = kmac_pkg::APP_REQ_DEFAULT;
Timothy Chen90b82422021-02-03 23:45:21 -0800642
Timothy Chen80bd8aa2019-10-04 15:57:11 -0700643
Timothy Chen3b50be12020-11-11 13:19:59 -0800644 // Unused reset signals
645 logic unused_d0_rst_por_aon;
646 logic unused_d0_rst_por;
647 logic unused_d0_rst_por_io;
648 logic unused_d0_rst_por_io_div2;
649 logic unused_d0_rst_por_io_div4;
650 logic unused_d0_rst_por_usb;
651 logic unused_daon_rst_lc;
652 logic unused_daon_rst_lc_io_div4;
Timothy Chenac6af872021-02-22 17:17:52 -0800653 logic unused_daon_rst_sys;
Timothy Chen3b50be12020-11-11 13:19:59 -0800654 logic unused_daon_rst_spi_device;
Michael Schaffnerdbd087e2021-02-12 17:58:30 -0800655 logic unused_daon_rst_spi_host0;
656 logic unused_daon_rst_spi_host1;
Timothy Chenc2b279a2021-01-14 18:53:34 -0800657 logic unused_daon_rst_usb;
Timothy Chen469a3032021-02-01 15:44:09 -0800658 logic unused_daon_rst_i2c0;
659 logic unused_daon_rst_i2c1;
660 logic unused_daon_rst_i2c2;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800661 assign unused_d0_rst_por_aon = rstmgr_aon_resets.rst_por_aon_n[rstmgr_pkg::Domain0Sel];
662 assign unused_d0_rst_por = rstmgr_aon_resets.rst_por_n[rstmgr_pkg::Domain0Sel];
663 assign unused_d0_rst_por_io = rstmgr_aon_resets.rst_por_io_n[rstmgr_pkg::Domain0Sel];
664 assign unused_d0_rst_por_io_div2 = rstmgr_aon_resets.rst_por_io_div2_n[rstmgr_pkg::Domain0Sel];
665 assign unused_d0_rst_por_io_div4 = rstmgr_aon_resets.rst_por_io_div4_n[rstmgr_pkg::Domain0Sel];
666 assign unused_d0_rst_por_usb = rstmgr_aon_resets.rst_por_usb_n[rstmgr_pkg::Domain0Sel];
667 assign unused_daon_rst_lc = rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::DomainAonSel];
668 assign unused_daon_rst_lc_io_div4 = rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::DomainAonSel];
Timothy Chenac6af872021-02-22 17:17:52 -0800669 assign unused_daon_rst_sys = rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::DomainAonSel];
Timothy Chen8aeeb492021-02-01 21:25:17 -0800670 assign unused_daon_rst_spi_device = rstmgr_aon_resets.rst_spi_device_n[rstmgr_pkg::DomainAonSel];
Michael Schaffnerdbd087e2021-02-12 17:58:30 -0800671 assign unused_daon_rst_spi_host0 = rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::DomainAonSel];
672 assign unused_daon_rst_spi_host1 = rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::DomainAonSel];
Timothy Chen8aeeb492021-02-01 21:25:17 -0800673 assign unused_daon_rst_usb = rstmgr_aon_resets.rst_usb_n[rstmgr_pkg::DomainAonSel];
674 assign unused_daon_rst_i2c0 = rstmgr_aon_resets.rst_i2c0_n[rstmgr_pkg::DomainAonSel];
675 assign unused_daon_rst_i2c1 = rstmgr_aon_resets.rst_i2c1_n[rstmgr_pkg::DomainAonSel];
676 assign unused_daon_rst_i2c2 = rstmgr_aon_resets.rst_i2c2_n[rstmgr_pkg::DomainAonSel];
Timothy Chen3b50be12020-11-11 13:19:59 -0800677
Timothy Chen3193b002019-10-04 16:56:05 -0700678 // Non-debug module reset == reset for everything except for the debug module
679 logic ndmreset_req;
680
Timothy Chen3193b002019-10-04 16:56:05 -0700681 // debug request from rv_dm to core
lowRISC Contributors802543a2019-08-31 12:12:56 +0100682 logic debug_req;
683
684 // processor core
685 rv_core_ibex #(
Philipp Wagner25d889222020-04-03 11:52:41 +0100686 .PMPEnable (1),
687 .PMPGranularity (0), // 2^(PMPGranularity+2) == 4 byte granularity
688 .PMPNumRegions (16),
Pirmin Vogel185d1bf2020-08-27 13:30:10 +0200689 .MHPMCounterNum (10),
690 .MHPMCounterWidth (32),
Greg Chadwickdadb1af2020-04-16 17:10:23 +0100691 .RV32E (0),
Pirmin Vogele3814642020-08-27 12:44:23 +0200692 .RV32M (ibex_pkg::RV32MSingleCycle),
693 .RV32B (ibex_pkg::RV32BNone),
Pirmin Vogel4eb25022020-08-27 15:27:33 +0200694 .RegFile (IbexRegFile),
Greg Chadwickdadb1af2020-04-16 17:10:23 +0100695 .BranchTargetALU (1),
696 .WritebackStage (1),
Tom Roberts7824ccc2020-11-05 11:34:03 +0000697 .ICache (IbexICache),
698 .ICacheECC (1),
Pirmin Vogele3814642020-08-27 12:44:23 +0200699 .BranchPredictor (0),
Greg Chadwickdadb1af2020-04-16 17:10:23 +0100700 .DbgTriggerEn (1),
Tom Roberts78bb2ae2020-06-03 15:24:22 +0100701 .SecureIbex (0),
Rupert Swarbrickda341bf2021-03-10 15:45:25 +0000702 .DmHaltAddr (ADDR_SPACE_DEBUG_MEM + dm::HaltAddress[31:0]),
703 .DmExceptionAddr (ADDR_SPACE_DEBUG_MEM + dm::ExceptionAddress[31:0]),
Greg Chadwickdadb1af2020-04-16 17:10:23 +0100704 .PipeLine (IbexPipeLine)
Michael Schaffnera39557e2020-03-17 18:30:21 -0700705 ) u_rv_core_ibex (
lowRISC Contributors802543a2019-08-31 12:12:56 +0100706 // clock and reset
Timothy Chen8aeeb492021-02-01 21:25:17 -0800707 .clk_i (clkmgr_aon_clocks.clk_proc_main),
708 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
709 .clk_esc_i (clkmgr_aon_clocks.clk_io_div4_timers),
710 .rst_esc_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100711 .test_en_i (1'b0),
Tom Roberts53441692021-03-12 17:30:38 +0000712 .ram_cfg_i (ast_ram_1p_cfg),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100713 // static pinning
Greg Chadwick53ef2ec2019-09-03 14:53:54 +0100714 .hart_id_i (32'b0),
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +0000715 .boot_addr_i (ADDR_SPACE_ROM_CTRL__ROM),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100716 // TL-UL buses
Eunchan Kim0f549542020-08-04 10:40:11 -0700717 .tl_i_o (main_tl_corei_req),
718 .tl_i_i (main_tl_corei_rsp),
719 .tl_d_o (main_tl_cored_req),
720 .tl_d_i (main_tl_cored_rsp),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100721 // interrupts
722 .irq_software_i (msip),
723 .irq_timer_i (intr_rv_timer_timer_expired_0_0),
724 .irq_external_i (irq_plic),
Michael Schaffnerbdcbd202020-07-27 12:18:21 -0700725 // escalation input from alert handler (NMI)
Timothy Chenc0d32d92020-12-16 18:01:22 -0800726 .esc_tx_i (alert_handler_esc_tx[0]),
727 .esc_rx_o (alert_handler_esc_rx[0]),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100728 // debug interface
729 .debug_req_i (debug_req),
Timothy Chen580ed912020-12-21 21:21:50 -0800730 // crash dump interface
Tom Robertsc88e97f2021-03-04 13:38:20 +0000731 .crash_dump_o (rv_core_ibex_crash_dump),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100732 // CPU control signals
Michael Schaffnerdc0c1e92021-03-02 14:41:31 -0800733 .lc_cpu_en_i (lc_ctrl_lc_cpu_en),
Timothy Chen8aeeb492021-02-01 21:25:17 -0800734 .core_sleep_o (pwrmgr_aon_pwr_cpu.core_sleeping)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100735 );
736
737 // Debug Module (RISC-V Debug Spec 0.13)
738 //
739
740 rv_dm #(
Philipp Wagner086b7032019-10-25 17:06:15 +0100741 .NrHarts (1),
742 .IdcodeValue (JTAG_IDCODE)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100743 ) u_dm_top (
Timothy Chen8aeeb492021-02-01 21:25:17 -0800744 .clk_i (clkmgr_aon_clocks.clk_proc_main),
745 .rst_ni (rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]),
Michael Schaffner7ce0e522021-02-25 16:39:42 -0800746 .hw_debug_en_i (lc_ctrl_lc_hw_debug_en),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -0800747 .scanmode_i,
Timothy Chen3193b002019-10-04 16:56:05 -0700748 .ndmreset_o (ndmreset_req),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100749 .dmactive_o (),
750 .debug_req_o (debug_req),
751 .unavailable_i (1'b0),
752
753 // bus device with debug memory (for execution-based debug)
Eunchan Kim0f549542020-08-04 10:40:11 -0700754 .tl_d_i (main_tl_debug_mem_req),
755 .tl_d_o (main_tl_debug_mem_rsp),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100756
757 // bus host (for system bus accesses, SBA)
Eunchan Kim0f549542020-08-04 10:40:11 -0700758 .tl_h_o (main_tl_dm_sba_req),
759 .tl_h_i (main_tl_dm_sba_rsp),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100760
761 //JTAG
Michael Schaffner5f545872021-03-05 17:54:28 -0800762 .jtag_req_i (pinmux_aon_rv_jtag_req),
763 .jtag_rsp_o (pinmux_aon_rv_jtag_rsp)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100764 );
765
Timothy Chen8aeeb492021-02-01 21:25:17 -0800766 assign rstmgr_aon_cpu.ndmreset_req = ndmreset_req;
767 assign rstmgr_aon_cpu.rst_cpu_n = rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel];
Timothy Chenc59f7012020-04-16 19:11:42 -0700768
lowRISC Contributors802543a2019-08-31 12:12:56 +0100769 // sram device
770 logic ram_main_req;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800771 logic ram_main_gnt;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100772 logic ram_main_we;
Timothy Chen12cce142021-03-02 18:11:01 -0800773 logic ram_main_intg_err;
Timothy Chen4367c482021-01-22 00:18:45 -0800774 logic [14:0] ram_main_addr;
Timothy Chen2799bf02021-03-18 14:48:47 -0700775 logic [38:0] ram_main_wdata;
776 logic [38:0] ram_main_wmask;
Timothy Chen466585e2021-03-01 15:06:01 -0800777 logic [38:0] ram_main_rdata;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100778 logic ram_main_rvalid;
Philipp Wagnere1efc182020-05-21 18:26:17 +0100779 logic [1:0] ram_main_rerror;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100780
781 tlul_adapter_sram #(
Timothy Chen4367c482021-01-22 00:18:45 -0800782 .SramAw(15),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100783 .SramDw(32),
Timothy Chen12cce142021-03-02 18:11:01 -0800784 .Outstanding(2),
785 .CmdIntgCheck(1),
786 .EnableRspIntgGen(1),
Timothy Chen2799bf02021-03-18 14:48:47 -0700787 .EnableDataIntgGen(0),
788 .EnableDataIntgPt(1)
Michael Schaffnera39557e2020-03-17 18:30:21 -0700789 ) u_tl_adapter_ram_main (
Timothy Chen8aeeb492021-02-01 21:25:17 -0800790 .clk_i (clkmgr_aon_clocks.clk_main_infra),
791 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
Timothy Chen15d98b72021-02-10 20:58:34 -0800792 .tl_i (ram_main_tl_req),
793 .tl_o (ram_main_tl_rsp),
794 .en_ifetch_i (sram_ctrl_main_en_ifetch),
795 .req_o (ram_main_req),
Timothy Chenaad796e2021-03-24 17:21:33 -0700796 .req_type_o (),
Timothy Chen15d98b72021-02-10 20:58:34 -0800797 .gnt_i (ram_main_gnt),
798 .we_o (ram_main_we),
799 .addr_o (ram_main_addr),
800 .wdata_o (ram_main_wdata),
801 .wmask_o (ram_main_wmask),
Timothy Chen12cce142021-03-02 18:11:01 -0800802 .intg_error_o(ram_main_intg_err),
Timothy Chen2799bf02021-03-18 14:48:47 -0700803 .rdata_i (ram_main_rdata),
Timothy Chen15d98b72021-02-10 20:58:34 -0800804 .rvalid_i (ram_main_rvalid),
805 .rerror_i (ram_main_rerror)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100806 );
807
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800808 prim_ram_1p_scr #(
Timothy Chen466585e2021-03-01 15:06:01 -0800809 .Width(39),
Timothy Chen4367c482021-01-22 00:18:45 -0800810 .Depth(32768),
Timothy Chen95d23d92021-03-11 17:44:59 -0800811 .EnableParity(0),
812 .LfsrWidth(32),
Timothy Chen3b257162021-03-18 12:39:36 -0700813 .StatePerm(RndCnstSramCtrlMainSramLfsrPerm),
814 .DataBitsPerMask(1), // TODO: Temporary change to ensure byte updates can still be done
815 .DiffWidth(8)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100816 ) u_ram1p_ram_main (
Timothy Chen8aeeb492021-02-01 21:25:17 -0800817 .clk_i (clkmgr_aon_clocks.clk_main_infra),
818 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100819
Timothy Chen12cce142021-03-02 18:11:01 -0800820 .key_valid_i (sram_ctrl_main_sram_scr_req.valid),
821 .key_i (sram_ctrl_main_sram_scr_req.key),
822 .nonce_i (sram_ctrl_main_sram_scr_req.nonce),
Timothy Chen95d23d92021-03-11 17:44:59 -0800823 .init_req_i (sram_ctrl_main_sram_scr_init_req.req),
824 .init_seed_i (sram_ctrl_main_sram_scr_init_req.seed),
825 .init_ack_o (sram_ctrl_main_sram_scr_init_rsp.ack),
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800826
Timothy Chen12cce142021-03-02 18:11:01 -0800827 .req_i (ram_main_req),
828 .intg_error_i(ram_main_intg_err),
829 .gnt_o (ram_main_gnt),
830 .write_i (ram_main_we),
831 .addr_i (ram_main_addr),
Timothy Chen2799bf02021-03-18 14:48:47 -0700832 .wdata_i (ram_main_wdata),
833 .wmask_i (ram_main_wmask),
Timothy Chen12cce142021-03-02 18:11:01 -0800834 .rdata_o (ram_main_rdata),
835 .rvalid_o (ram_main_rvalid),
836 .rerror_o (ram_main_rerror),
837 .raddr_o (sram_ctrl_main_sram_scr_rsp.raddr),
838 .intg_error_o(ram_main_intg_error),
Timothy Chen685d6492021-03-09 21:28:39 -0800839 .cfg_i (ram_1p_cfg_i)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100840 );
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800841
Michael Schaffner9da4db82020-12-21 15:35:24 -0800842 assign sram_ctrl_main_sram_scr_rsp.rerror = ram_main_rerror;
843
Timothy Chen6e2ba842020-06-29 15:04:13 -0700844 // sram device
Timothy Chen8aeeb492021-02-01 21:25:17 -0800845 logic ram_ret_aon_req;
846 logic ram_ret_aon_gnt;
847 logic ram_ret_aon_we;
Timothy Chen12cce142021-03-02 18:11:01 -0800848 logic ram_ret_aon_intg_err;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800849 logic [9:0] ram_ret_aon_addr;
Timothy Chen2799bf02021-03-18 14:48:47 -0700850 logic [38:0] ram_ret_aon_wdata;
851 logic [38:0] ram_ret_aon_wmask;
Timothy Chen466585e2021-03-01 15:06:01 -0800852 logic [38:0] ram_ret_aon_rdata;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800853 logic ram_ret_aon_rvalid;
854 logic [1:0] ram_ret_aon_rerror;
Timothy Chen6e2ba842020-06-29 15:04:13 -0700855
856 tlul_adapter_sram #(
857 .SramAw(10),
858 .SramDw(32),
Timothy Chen12cce142021-03-02 18:11:01 -0800859 .Outstanding(2),
860 .CmdIntgCheck(1),
861 .EnableRspIntgGen(1),
Timothy Chen2799bf02021-03-18 14:48:47 -0700862 .EnableDataIntgGen(0),
863 .EnableDataIntgPt(1)
Timothy Chen8aeeb492021-02-01 21:25:17 -0800864 ) u_tl_adapter_ram_ret_aon (
865 .clk_i (clkmgr_aon_clocks.clk_io_div4_infra),
866 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
Timothy Chen15d98b72021-02-10 20:58:34 -0800867 .tl_i (ram_ret_aon_tl_req),
868 .tl_o (ram_ret_aon_tl_rsp),
869 .en_ifetch_i (sram_ctrl_ret_aon_en_ifetch),
870 .req_o (ram_ret_aon_req),
Timothy Chenaad796e2021-03-24 17:21:33 -0700871 .req_type_o (),
Timothy Chen15d98b72021-02-10 20:58:34 -0800872 .gnt_i (ram_ret_aon_gnt),
873 .we_o (ram_ret_aon_we),
874 .addr_o (ram_ret_aon_addr),
875 .wdata_o (ram_ret_aon_wdata),
876 .wmask_o (ram_ret_aon_wmask),
Timothy Chen12cce142021-03-02 18:11:01 -0800877 .intg_error_o(ram_ret_aon_intg_err),
Timothy Chen2799bf02021-03-18 14:48:47 -0700878 .rdata_i (ram_ret_aon_rdata),
Timothy Chen15d98b72021-02-10 20:58:34 -0800879 .rvalid_i (ram_ret_aon_rvalid),
880 .rerror_i (ram_ret_aon_rerror)
Timothy Chen6e2ba842020-06-29 15:04:13 -0700881 );
882
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800883 prim_ram_1p_scr #(
Timothy Chen466585e2021-03-01 15:06:01 -0800884 .Width(39),
Timothy Chen6e2ba842020-06-29 15:04:13 -0700885 .Depth(1024),
Timothy Chen95d23d92021-03-11 17:44:59 -0800886 .EnableParity(0),
887 .LfsrWidth(32),
Timothy Chen3b257162021-03-18 12:39:36 -0700888 .StatePerm(RndCnstSramCtrlRetAonSramLfsrPerm),
889 .DataBitsPerMask(1), // TODO: Temporary change to ensure byte updates can still be done
890 .DiffWidth(8)
Timothy Chen8aeeb492021-02-01 21:25:17 -0800891 ) u_ram1p_ram_ret_aon (
892 .clk_i (clkmgr_aon_clocks.clk_io_div4_infra),
893 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
Timothy Chen6e2ba842020-06-29 15:04:13 -0700894
Timothy Chen12cce142021-03-02 18:11:01 -0800895 .key_valid_i (sram_ctrl_ret_aon_sram_scr_req.valid),
896 .key_i (sram_ctrl_ret_aon_sram_scr_req.key),
897 .nonce_i (sram_ctrl_ret_aon_sram_scr_req.nonce),
Timothy Chen95d23d92021-03-11 17:44:59 -0800898 .init_req_i (sram_ctrl_ret_aon_sram_scr_init_req.req),
899 .init_seed_i (sram_ctrl_ret_aon_sram_scr_init_req.seed),
900 .init_ack_o (sram_ctrl_ret_aon_sram_scr_init_rsp.ack),
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800901
Timothy Chen12cce142021-03-02 18:11:01 -0800902 .req_i (ram_ret_aon_req),
903 .intg_error_i(ram_ret_aon_intg_err),
904 .gnt_o (ram_ret_aon_gnt),
905 .write_i (ram_ret_aon_we),
906 .addr_i (ram_ret_aon_addr),
Timothy Chen2799bf02021-03-18 14:48:47 -0700907 .wdata_i (ram_ret_aon_wdata),
908 .wmask_i (ram_ret_aon_wmask),
Timothy Chen12cce142021-03-02 18:11:01 -0800909 .rdata_o (ram_ret_aon_rdata),
910 .rvalid_o (ram_ret_aon_rvalid),
911 .rerror_o (ram_ret_aon_rerror),
912 .raddr_o (sram_ctrl_ret_aon_sram_scr_rsp.raddr),
913 .intg_error_o(ram_ret_aon_intg_error),
Timothy Chen685d6492021-03-09 21:28:39 -0800914 .cfg_i (ram_1p_cfg_i)
Timothy Chen6e2ba842020-06-29 15:04:13 -0700915 );
lowRISC Contributors802543a2019-08-31 12:12:56 +0100916
Timothy Chen8aeeb492021-02-01 21:25:17 -0800917 assign sram_ctrl_ret_aon_sram_scr_rsp.rerror = ram_ret_aon_rerror;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800918
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800919
lowRISC Contributors802543a2019-08-31 12:12:56 +0100920 // host to flash communication
921 logic flash_host_req;
Timothy Chenaad796e2021-03-24 17:21:33 -0700922 tlul_pkg::tl_type_e flash_host_req_type;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100923 logic flash_host_req_rdy;
924 logic flash_host_req_done;
Timothy Chend9a98772020-09-15 13:57:03 -0700925 logic flash_host_rderr;
Timothy Chen14518402020-04-13 15:25:22 -0700926 logic [flash_ctrl_pkg::BusWidth-1:0] flash_host_rdata;
Timothy Chenb35a3402020-06-23 00:14:11 -0700927 logic [flash_ctrl_pkg::BusAddrW-1:0] flash_host_addr;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100928
Timothy Chen5aec5282019-09-10 21:10:56 -0700929 tlul_adapter_sram #(
Timothy Chenb35a3402020-06-23 00:14:11 -0700930 .SramAw(flash_ctrl_pkg::BusAddrW),
Timothy Chen14518402020-04-13 15:25:22 -0700931 .SramDw(flash_ctrl_pkg::BusWidth),
Eunchan Kim6c731a82020-03-04 14:48:52 -0800932 .Outstanding(2),
Timothy Chen5aec5282019-09-10 21:10:56 -0700933 .ByteAccess(0),
Timothy Chen12cce142021-03-02 18:11:01 -0800934 .ErrOnWrite(1),
935 .CmdIntgCheck(1),
936 .EnableRspIntgGen(1),
937 .EnableDataIntgGen(1)
Michael Schaffnera39557e2020-03-17 18:30:21 -0700938 ) u_tl_adapter_eflash (
Timothy Chen8aeeb492021-02-01 21:25:17 -0800939 .clk_i (clkmgr_aon_clocks.clk_main_infra),
940 .rst_ni (rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100941
Timothy Chen15d98b72021-02-10 20:58:34 -0800942 .tl_i (eflash_tl_req),
943 .tl_o (eflash_tl_rsp),
944 .en_ifetch_i (tlul_pkg::InstrEn), // tie this to secure boot somehow
945 .req_o (flash_host_req),
Timothy Chenaad796e2021-03-24 17:21:33 -0700946 .req_type_o (flash_host_req_type),
Timothy Chen15d98b72021-02-10 20:58:34 -0800947 .gnt_i (flash_host_req_rdy),
948 .we_o (),
949 .addr_o (flash_host_addr),
950 .wdata_o (),
951 .wmask_o (),
Timothy Chen12cce142021-03-02 18:11:01 -0800952 .intg_error_o(), // TODO: connect to flash controller and flash scramble later
Timothy Chen15d98b72021-02-10 20:58:34 -0800953 .rdata_i (flash_host_rdata),
954 .rvalid_i (flash_host_req_done),
955 .rerror_i ({flash_host_rderr,1'b0})
lowRISC Contributors802543a2019-08-31 12:12:56 +0100956 );
957
Timothy Chen14518402020-04-13 15:25:22 -0700958 flash_phy u_flash_eflash (
Timothy Chen8aeeb492021-02-01 21:25:17 -0800959 .clk_i (clkmgr_aon_clocks.clk_main_infra),
960 .rst_ni (rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]),
Timothy Chen1b9fd902021-01-07 12:18:46 -0800961 .host_req_i (flash_host_req),
Timothy Chenaad796e2021-03-24 17:21:33 -0700962 .host_req_type_i (flash_host_req_type),
Timothy Chen1b9fd902021-01-07 12:18:46 -0800963 .host_addr_i (flash_host_addr),
964 .host_req_rdy_o (flash_host_req_rdy),
965 .host_req_done_o (flash_host_req_done),
966 .host_rderr_o (flash_host_rderr),
967 .host_rdata_o (flash_host_rdata),
968 .flash_ctrl_i (flash_ctrl_flash_req),
969 .flash_ctrl_o (flash_ctrl_flash_rsp),
970 .lc_nvm_debug_en_i (lc_ctrl_lc_nvm_debug_en),
Timothy Chen1b9fd902021-01-07 12:18:46 -0800971 .flash_bist_enable_i,
Timothy Chen2422a6c2020-11-19 16:06:14 -0800972 .flash_power_down_h_i,
973 .flash_power_ready_h_i,
Timothy Chen5270b7c2021-03-17 17:38:30 -0700974 .flash_test_mode_a_io,
975 .flash_test_voltage_h_io,
Timothy Chen2422a6c2020-11-19 16:06:14 -0800976 .scanmode_i,
Timothy Chen010e3cc2021-02-02 14:55:09 -0800977 .scan_en_i,
Timothy Chen2422a6c2020-11-19 16:06:14 -0800978 .scan_rst_ni
lowRISC Contributors802543a2019-08-31 12:12:56 +0100979 );
980
981
Michael Schaffner666dde12019-10-25 11:57:54 -0700982
Timothy Chen2971a1e2021-01-21 16:00:01 -0800983 uart u_uart0 (
Eunchan Kim769065e2019-10-29 17:29:26 -0700984
985 // Input
Timothy Chen2971a1e2021-01-21 16:00:01 -0800986 .cio_rx_i (cio_uart0_rx_p2d),
Eunchan Kim769065e2019-10-29 17:29:26 -0700987
988 // Output
Timothy Chen2971a1e2021-01-21 16:00:01 -0800989 .cio_tx_o (cio_uart0_tx_d2p),
990 .cio_tx_en_o (cio_uart0_tx_en_d2p),
Eunchan Kim769065e2019-10-29 17:29:26 -0700991
992 // Interrupt
Timothy Chen2971a1e2021-01-21 16:00:01 -0800993 .intr_tx_watermark_o (intr_uart0_tx_watermark),
994 .intr_rx_watermark_o (intr_uart0_rx_watermark),
995 .intr_tx_empty_o (intr_uart0_tx_empty),
996 .intr_rx_overflow_o (intr_uart0_rx_overflow),
997 .intr_rx_frame_err_o (intr_uart0_rx_frame_err),
998 .intr_rx_break_err_o (intr_uart0_rx_break_err),
999 .intr_rx_timeout_o (intr_uart0_rx_timeout),
1000 .intr_rx_parity_err_o (intr_uart0_rx_parity_err),
Eunchan Kim0f549542020-08-04 10:40:11 -07001001
1002 // Inter-module signals
Timothy Chen2971a1e2021-01-21 16:00:01 -08001003 .tl_i(uart0_tl_req),
1004 .tl_o(uart0_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001005
1006 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001007 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1008 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Timothy Chen2971a1e2021-01-21 16:00:01 -08001009 );
1010
1011 uart u_uart1 (
1012
1013 // Input
1014 .cio_rx_i (cio_uart1_rx_p2d),
1015
1016 // Output
1017 .cio_tx_o (cio_uart1_tx_d2p),
1018 .cio_tx_en_o (cio_uart1_tx_en_d2p),
1019
1020 // Interrupt
1021 .intr_tx_watermark_o (intr_uart1_tx_watermark),
1022 .intr_rx_watermark_o (intr_uart1_rx_watermark),
1023 .intr_tx_empty_o (intr_uart1_tx_empty),
1024 .intr_rx_overflow_o (intr_uart1_rx_overflow),
1025 .intr_rx_frame_err_o (intr_uart1_rx_frame_err),
1026 .intr_rx_break_err_o (intr_uart1_rx_break_err),
1027 .intr_rx_timeout_o (intr_uart1_rx_timeout),
1028 .intr_rx_parity_err_o (intr_uart1_rx_parity_err),
1029
1030 // Inter-module signals
1031 .tl_i(uart1_tl_req),
1032 .tl_o(uart1_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001033
1034 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001035 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1036 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Timothy Chen2971a1e2021-01-21 16:00:01 -08001037 );
1038
1039 uart u_uart2 (
1040
1041 // Input
1042 .cio_rx_i (cio_uart2_rx_p2d),
1043
1044 // Output
1045 .cio_tx_o (cio_uart2_tx_d2p),
1046 .cio_tx_en_o (cio_uart2_tx_en_d2p),
1047
1048 // Interrupt
1049 .intr_tx_watermark_o (intr_uart2_tx_watermark),
1050 .intr_rx_watermark_o (intr_uart2_rx_watermark),
1051 .intr_tx_empty_o (intr_uart2_tx_empty),
1052 .intr_rx_overflow_o (intr_uart2_rx_overflow),
1053 .intr_rx_frame_err_o (intr_uart2_rx_frame_err),
1054 .intr_rx_break_err_o (intr_uart2_rx_break_err),
1055 .intr_rx_timeout_o (intr_uart2_rx_timeout),
1056 .intr_rx_parity_err_o (intr_uart2_rx_parity_err),
1057
1058 // Inter-module signals
1059 .tl_i(uart2_tl_req),
1060 .tl_o(uart2_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001061
1062 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001063 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1064 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Timothy Chen2971a1e2021-01-21 16:00:01 -08001065 );
1066
1067 uart u_uart3 (
1068
1069 // Input
1070 .cio_rx_i (cio_uart3_rx_p2d),
1071
1072 // Output
1073 .cio_tx_o (cio_uart3_tx_d2p),
1074 .cio_tx_en_o (cio_uart3_tx_en_d2p),
1075
1076 // Interrupt
1077 .intr_tx_watermark_o (intr_uart3_tx_watermark),
1078 .intr_rx_watermark_o (intr_uart3_rx_watermark),
1079 .intr_tx_empty_o (intr_uart3_tx_empty),
1080 .intr_rx_overflow_o (intr_uart3_rx_overflow),
1081 .intr_rx_frame_err_o (intr_uart3_rx_frame_err),
1082 .intr_rx_break_err_o (intr_uart3_rx_break_err),
1083 .intr_rx_timeout_o (intr_uart3_rx_timeout),
1084 .intr_rx_parity_err_o (intr_uart3_rx_parity_err),
1085
1086 // Inter-module signals
1087 .tl_i(uart3_tl_req),
1088 .tl_o(uart3_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001089
1090 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001091 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1092 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
lowRISC Contributors802543a2019-08-31 12:12:56 +01001093 );
1094
Michael Schaffnera39557e2020-03-17 18:30:21 -07001095 gpio u_gpio (
Eunchan Kim769065e2019-10-29 17:29:26 -07001096
1097 // Input
1098 .cio_gpio_i (cio_gpio_gpio_p2d),
1099
1100 // Output
1101 .cio_gpio_o (cio_gpio_gpio_d2p),
1102 .cio_gpio_en_o (cio_gpio_gpio_en_d2p),
1103
1104 // Interrupt
lowRISC Contributors802543a2019-08-31 12:12:56 +01001105 .intr_gpio_o (intr_gpio_gpio),
Eunchan Kim0f549542020-08-04 10:40:11 -07001106
1107 // Inter-module signals
1108 .tl_i(gpio_tl_req),
1109 .tl_o(gpio_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001110
1111 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001112 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1113 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
lowRISC Contributors802543a2019-08-31 12:12:56 +01001114 );
1115
Michael Schaffnera39557e2020-03-17 18:30:21 -07001116 spi_device u_spi_device (
Eunchan Kim769065e2019-10-29 17:29:26 -07001117
1118 // Input
Timothy Chenc38f7892020-07-16 18:19:48 -07001119 .cio_sck_i (cio_spi_device_sck_p2d),
1120 .cio_csb_i (cio_spi_device_csb_p2d),
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001121 .cio_sd_i (cio_spi_device_sd_p2d),
Eunchan Kim769065e2019-10-29 17:29:26 -07001122
1123 // Output
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001124 .cio_sd_o (cio_spi_device_sd_d2p),
1125 .cio_sd_en_o (cio_spi_device_sd_en_d2p),
Eunchan Kim769065e2019-10-29 17:29:26 -07001126
1127 // Interrupt
1128 .intr_rxf_o (intr_spi_device_rxf),
1129 .intr_rxlvl_o (intr_spi_device_rxlvl),
1130 .intr_txlvl_o (intr_spi_device_txlvl),
1131 .intr_rxerr_o (intr_spi_device_rxerr),
1132 .intr_rxoverflow_o (intr_spi_device_rxoverflow),
Eunchan Kim546c0d42019-09-24 15:07:06 -07001133 .intr_txunderflow_o (intr_spi_device_txunderflow),
Eunchan Kim0f549542020-08-04 10:40:11 -07001134
1135 // Inter-module signals
Timothy Chen685d6492021-03-09 21:28:39 -08001136 .ram_cfg_i(ast_ram_2p_cfg),
Eunchan Kim0f549542020-08-04 10:40:11 -07001137 .tl_i(spi_device_tl_req),
1138 .tl_o(spi_device_tl_rsp),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -08001139 .scanmode_i,
Timothy Chene38c4702021-02-08 18:38:03 -08001140 .scan_rst_ni (scan_rst_ni),
Timothy Chen469a3032021-02-01 15:44:09 -08001141
1142 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001143 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
Timothy Chen04192e02021-02-19 16:16:25 -08001144 .scan_clk_i (clkmgr_aon_clocks.clk_io_div2_peri),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001145 .rst_ni (rstmgr_aon_resets.rst_spi_device_n[rstmgr_pkg::Domain0Sel])
lowRISC Contributors802543a2019-08-31 12:12:56 +01001146 );
1147
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001148 spi_host u_spi_host0 (
1149
1150 // Input
1151 .cio_sd_i (cio_spi_host0_sd_p2d),
1152
1153 // Output
1154 .cio_sck_o (cio_spi_host0_sck_d2p),
1155 .cio_sck_en_o (cio_spi_host0_sck_en_d2p),
1156 .cio_csb_o (cio_spi_host0_csb_d2p),
1157 .cio_csb_en_o (cio_spi_host0_csb_en_d2p),
1158 .cio_sd_o (cio_spi_host0_sd_d2p),
1159 .cio_sd_en_o (cio_spi_host0_sd_en_d2p),
1160
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001161 // Interrupt
1162 .intr_error_o (intr_spi_host0_error),
1163 .intr_spi_event_o (intr_spi_host0_spi_event),
1164
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001165 // Inter-module signals
1166 .tl_i(spi_host0_tl_req),
1167 .tl_o(spi_host0_tl_rsp),
Rupert Swarbrick0fdf0082021-03-09 16:39:48 +00001168 .scanmode_i,
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001169
1170 // Clock and reset connections
1171 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001172 .clk_core_i (clkmgr_aon_clocks.clk_io_div2_peri),
1173 .rst_ni (rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::Domain0Sel]),
1174 .rst_core_ni (rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::Domain0Sel])
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001175 );
1176
1177 spi_host u_spi_host1 (
1178
1179 // Input
1180 .cio_sd_i (cio_spi_host1_sd_p2d),
1181
1182 // Output
1183 .cio_sck_o (cio_spi_host1_sck_d2p),
1184 .cio_sck_en_o (cio_spi_host1_sck_en_d2p),
1185 .cio_csb_o (cio_spi_host1_csb_d2p),
1186 .cio_csb_en_o (cio_spi_host1_csb_en_d2p),
1187 .cio_sd_o (cio_spi_host1_sd_d2p),
1188 .cio_sd_en_o (cio_spi_host1_sd_en_d2p),
1189
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001190 // Interrupt
1191 .intr_error_o (intr_spi_host1_error),
1192 .intr_spi_event_o (intr_spi_host1_spi_event),
1193
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001194 // Inter-module signals
1195 .tl_i(spi_host1_tl_req),
1196 .tl_o(spi_host1_tl_rsp),
Rupert Swarbrick0fdf0082021-03-09 16:39:48 +00001197 .scanmode_i,
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001198
1199 // Clock and reset connections
1200 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001201 .clk_core_i (clkmgr_aon_clocks.clk_io_div2_peri),
1202 .rst_ni (rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::Domain0Sel]),
1203 .rst_core_ni (rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::Domain0Sel])
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001204 );
1205
Timothy Chen469a3032021-02-01 15:44:09 -08001206 i2c u_i2c0 (
1207
1208 // Input
1209 .cio_sda_i (cio_i2c0_sda_p2d),
1210 .cio_scl_i (cio_i2c0_scl_p2d),
1211
1212 // Output
1213 .cio_sda_o (cio_i2c0_sda_d2p),
1214 .cio_sda_en_o (cio_i2c0_sda_en_d2p),
1215 .cio_scl_o (cio_i2c0_scl_d2p),
1216 .cio_scl_en_o (cio_i2c0_scl_en_d2p),
1217
1218 // Interrupt
1219 .intr_fmt_watermark_o (intr_i2c0_fmt_watermark),
1220 .intr_rx_watermark_o (intr_i2c0_rx_watermark),
1221 .intr_fmt_overflow_o (intr_i2c0_fmt_overflow),
1222 .intr_rx_overflow_o (intr_i2c0_rx_overflow),
1223 .intr_nak_o (intr_i2c0_nak),
1224 .intr_scl_interference_o (intr_i2c0_scl_interference),
1225 .intr_sda_interference_o (intr_i2c0_sda_interference),
1226 .intr_stretch_timeout_o (intr_i2c0_stretch_timeout),
1227 .intr_sda_unstable_o (intr_i2c0_sda_unstable),
1228 .intr_trans_complete_o (intr_i2c0_trans_complete),
1229 .intr_tx_empty_o (intr_i2c0_tx_empty),
1230 .intr_tx_nonempty_o (intr_i2c0_tx_nonempty),
1231 .intr_tx_overflow_o (intr_i2c0_tx_overflow),
1232 .intr_acq_overflow_o (intr_i2c0_acq_overflow),
1233 .intr_ack_stop_o (intr_i2c0_ack_stop),
1234 .intr_host_timeout_o (intr_i2c0_host_timeout),
1235
1236 // Inter-module signals
1237 .tl_i(i2c0_tl_req),
1238 .tl_o(i2c0_tl_rsp),
1239
1240 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001241 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1242 .rst_ni (rstmgr_aon_resets.rst_i2c0_n[rstmgr_pkg::Domain0Sel])
Timothy Chen469a3032021-02-01 15:44:09 -08001243 );
1244
1245 i2c u_i2c1 (
1246
1247 // Input
1248 .cio_sda_i (cio_i2c1_sda_p2d),
1249 .cio_scl_i (cio_i2c1_scl_p2d),
1250
1251 // Output
1252 .cio_sda_o (cio_i2c1_sda_d2p),
1253 .cio_sda_en_o (cio_i2c1_sda_en_d2p),
1254 .cio_scl_o (cio_i2c1_scl_d2p),
1255 .cio_scl_en_o (cio_i2c1_scl_en_d2p),
1256
1257 // Interrupt
1258 .intr_fmt_watermark_o (intr_i2c1_fmt_watermark),
1259 .intr_rx_watermark_o (intr_i2c1_rx_watermark),
1260 .intr_fmt_overflow_o (intr_i2c1_fmt_overflow),
1261 .intr_rx_overflow_o (intr_i2c1_rx_overflow),
1262 .intr_nak_o (intr_i2c1_nak),
1263 .intr_scl_interference_o (intr_i2c1_scl_interference),
1264 .intr_sda_interference_o (intr_i2c1_sda_interference),
1265 .intr_stretch_timeout_o (intr_i2c1_stretch_timeout),
1266 .intr_sda_unstable_o (intr_i2c1_sda_unstable),
1267 .intr_trans_complete_o (intr_i2c1_trans_complete),
1268 .intr_tx_empty_o (intr_i2c1_tx_empty),
1269 .intr_tx_nonempty_o (intr_i2c1_tx_nonempty),
1270 .intr_tx_overflow_o (intr_i2c1_tx_overflow),
1271 .intr_acq_overflow_o (intr_i2c1_acq_overflow),
1272 .intr_ack_stop_o (intr_i2c1_ack_stop),
1273 .intr_host_timeout_o (intr_i2c1_host_timeout),
1274
1275 // Inter-module signals
1276 .tl_i(i2c1_tl_req),
1277 .tl_o(i2c1_tl_rsp),
1278
1279 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001280 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1281 .rst_ni (rstmgr_aon_resets.rst_i2c1_n[rstmgr_pkg::Domain0Sel])
Timothy Chen469a3032021-02-01 15:44:09 -08001282 );
1283
1284 i2c u_i2c2 (
1285
1286 // Input
1287 .cio_sda_i (cio_i2c2_sda_p2d),
1288 .cio_scl_i (cio_i2c2_scl_p2d),
1289
1290 // Output
1291 .cio_sda_o (cio_i2c2_sda_d2p),
1292 .cio_sda_en_o (cio_i2c2_sda_en_d2p),
1293 .cio_scl_o (cio_i2c2_scl_d2p),
1294 .cio_scl_en_o (cio_i2c2_scl_en_d2p),
1295
1296 // Interrupt
1297 .intr_fmt_watermark_o (intr_i2c2_fmt_watermark),
1298 .intr_rx_watermark_o (intr_i2c2_rx_watermark),
1299 .intr_fmt_overflow_o (intr_i2c2_fmt_overflow),
1300 .intr_rx_overflow_o (intr_i2c2_rx_overflow),
1301 .intr_nak_o (intr_i2c2_nak),
1302 .intr_scl_interference_o (intr_i2c2_scl_interference),
1303 .intr_sda_interference_o (intr_i2c2_sda_interference),
1304 .intr_stretch_timeout_o (intr_i2c2_stretch_timeout),
1305 .intr_sda_unstable_o (intr_i2c2_sda_unstable),
1306 .intr_trans_complete_o (intr_i2c2_trans_complete),
1307 .intr_tx_empty_o (intr_i2c2_tx_empty),
1308 .intr_tx_nonempty_o (intr_i2c2_tx_nonempty),
1309 .intr_tx_overflow_o (intr_i2c2_tx_overflow),
1310 .intr_acq_overflow_o (intr_i2c2_acq_overflow),
1311 .intr_ack_stop_o (intr_i2c2_ack_stop),
1312 .intr_host_timeout_o (intr_i2c2_host_timeout),
1313
1314 // Inter-module signals
1315 .tl_i(i2c2_tl_req),
1316 .tl_o(i2c2_tl_rsp),
1317
1318 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001319 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1320 .rst_ni (rstmgr_aon_resets.rst_i2c2_n[rstmgr_pkg::Domain0Sel])
Timothy Chen469a3032021-02-01 15:44:09 -08001321 );
1322
1323 pattgen u_pattgen (
1324
1325 // Output
1326 .cio_pda0_tx_o (cio_pattgen_pda0_tx_d2p),
1327 .cio_pda0_tx_en_o (cio_pattgen_pda0_tx_en_d2p),
1328 .cio_pcl0_tx_o (cio_pattgen_pcl0_tx_d2p),
1329 .cio_pcl0_tx_en_o (cio_pattgen_pcl0_tx_en_d2p),
1330 .cio_pda1_tx_o (cio_pattgen_pda1_tx_d2p),
1331 .cio_pda1_tx_en_o (cio_pattgen_pda1_tx_en_d2p),
1332 .cio_pcl1_tx_o (cio_pattgen_pcl1_tx_d2p),
1333 .cio_pcl1_tx_en_o (cio_pattgen_pcl1_tx_en_d2p),
1334
1335 // Interrupt
1336 .intr_done_ch0_o (intr_pattgen_done_ch0),
1337 .intr_done_ch1_o (intr_pattgen_done_ch1),
1338
1339 // Inter-module signals
1340 .tl_i(pattgen_tl_req),
1341 .tl_o(pattgen_tl_rsp),
1342
1343 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001344 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1345 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Timothy Chen469a3032021-02-01 15:44:09 -08001346 );
1347
Michael Schaffnera39557e2020-03-17 18:30:21 -07001348 rv_timer u_rv_timer (
Eunchan Kim769065e2019-10-29 17:29:26 -07001349
1350 // Interrupt
lowRISC Contributors802543a2019-08-31 12:12:56 +01001351 .intr_timer_expired_0_0_o (intr_rv_timer_timer_expired_0_0),
Eunchan Kim0f549542020-08-04 10:40:11 -07001352
1353 // Inter-module signals
1354 .tl_i(rv_timer_tl_req),
1355 .tl_o(rv_timer_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001356
1357 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001358 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
1359 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Michael Schaffner666dde12019-10-25 11:57:54 -07001360 );
1361
Michael Schaffnera39557e2020-03-17 18:30:21 -07001362 usbdev u_usbdev (
Pirmin Vogelea91b302020-01-14 18:53:01 +00001363
Pirmin Vogelb054fc02020-03-11 11:23:03 +01001364 // Input
1365 .cio_sense_i (cio_usbdev_sense_p2d),
1366 .cio_d_i (cio_usbdev_d_p2d),
1367 .cio_dp_i (cio_usbdev_dp_p2d),
1368 .cio_dn_i (cio_usbdev_dn_p2d),
Pirmin Vogelea91b302020-01-14 18:53:01 +00001369
Pirmin Vogelb054fc02020-03-11 11:23:03 +01001370 // Output
1371 .cio_se0_o (cio_usbdev_se0_d2p),
1372 .cio_se0_en_o (cio_usbdev_se0_en_d2p),
Pirmin Vogelfe6863b2020-05-11 17:30:54 +02001373 .cio_dp_pullup_o (cio_usbdev_dp_pullup_d2p),
1374 .cio_dp_pullup_en_o (cio_usbdev_dp_pullup_en_d2p),
1375 .cio_dn_pullup_o (cio_usbdev_dn_pullup_d2p),
1376 .cio_dn_pullup_en_o (cio_usbdev_dn_pullup_en_d2p),
Pirmin Vogelb054fc02020-03-11 11:23:03 +01001377 .cio_tx_mode_se_o (cio_usbdev_tx_mode_se_d2p),
1378 .cio_tx_mode_se_en_o (cio_usbdev_tx_mode_se_en_d2p),
1379 .cio_suspend_o (cio_usbdev_suspend_d2p),
1380 .cio_suspend_en_o (cio_usbdev_suspend_en_d2p),
1381 .cio_d_o (cio_usbdev_d_d2p),
1382 .cio_d_en_o (cio_usbdev_d_en_d2p),
1383 .cio_dp_o (cio_usbdev_dp_d2p),
1384 .cio_dp_en_o (cio_usbdev_dp_en_d2p),
1385 .cio_dn_o (cio_usbdev_dn_d2p),
1386 .cio_dn_en_o (cio_usbdev_dn_en_d2p),
Pirmin Vogelea91b302020-01-14 18:53:01 +00001387
1388 // Interrupt
1389 .intr_pkt_received_o (intr_usbdev_pkt_received),
1390 .intr_pkt_sent_o (intr_usbdev_pkt_sent),
1391 .intr_disconnected_o (intr_usbdev_disconnected),
1392 .intr_host_lost_o (intr_usbdev_host_lost),
1393 .intr_link_reset_o (intr_usbdev_link_reset),
1394 .intr_link_suspend_o (intr_usbdev_link_suspend),
1395 .intr_link_resume_o (intr_usbdev_link_resume),
1396 .intr_av_empty_o (intr_usbdev_av_empty),
1397 .intr_rx_full_o (intr_usbdev_rx_full),
1398 .intr_av_overflow_o (intr_usbdev_av_overflow),
1399 .intr_link_in_err_o (intr_usbdev_link_in_err),
1400 .intr_rx_crc_err_o (intr_usbdev_rx_crc_err),
1401 .intr_rx_pid_err_o (intr_usbdev_rx_pid_err),
1402 .intr_rx_bitstuff_err_o (intr_usbdev_rx_bitstuff_err),
1403 .intr_frame_o (intr_usbdev_frame),
1404 .intr_connected_o (intr_usbdev_connected),
Stefan Lippuner207b1a62020-11-10 09:25:53 +01001405 .intr_link_out_err_o (intr_usbdev_link_out_err),
Pirmin Vogelea91b302020-01-14 18:53:01 +00001406
Pirmin Vogeldd3a2f02020-05-12 14:59:50 +02001407 // Inter-module signals
Timothy Chen1555dce2020-08-11 11:26:50 -07001408 .usb_ref_val_o(usbdev_usb_ref_val_o),
1409 .usb_ref_pulse_o(usbdev_usb_ref_pulse_o),
Timothy Chenc2b279a2021-01-14 18:53:34 -08001410 .usb_out_of_rst_o(usbdev_usb_out_of_rst),
1411 .usb_aon_wake_en_o(usbdev_usb_aon_wake_en),
1412 .usb_aon_wake_ack_o(usbdev_usb_aon_wake_ack),
1413 .usb_suspend_o(usbdev_usb_suspend),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001414 .usb_state_debug_i(pinmux_aon_usb_state_debug),
Timothy Chen685d6492021-03-09 21:28:39 -08001415 .ram_cfg_i(ast_ram_2p_cfg),
Eunchan Kim0f549542020-08-04 10:40:11 -07001416 .tl_i(usbdev_tl_req),
1417 .tl_o(usbdev_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001418
1419 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001420 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1421 .clk_aon_i (clkmgr_aon_clocks.clk_aon_peri),
1422 .clk_usb_48mhz_i (clkmgr_aon_clocks.clk_usb_peri),
1423 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
1424 .rst_aon_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::Domain0Sel]),
1425 .rst_usb_48mhz_ni (rstmgr_aon_resets.rst_usb_n[rstmgr_pkg::Domain0Sel])
1426 );
1427
1428 otp_ctrl #(
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08001429 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[1:0]),
Michael Schaffner20972a62021-02-24 18:53:46 -08001430 .MemInitFile(OtpCtrlMemInitFile),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001431 .RndCnstLfsrSeed(RndCnstOtpCtrlLfsrSeed),
1432 .RndCnstLfsrPerm(RndCnstOtpCtrlLfsrPerm)
1433 ) u_otp_ctrl (
1434
1435 // Interrupt
1436 .intr_otp_operation_done_o (intr_otp_ctrl_otp_operation_done),
1437 .intr_otp_error_o (intr_otp_ctrl_otp_error),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001438 // [0]: fatal_macro_error
1439 // [1]: fatal_check_error
1440 .alert_tx_o ( alert_tx[1:0] ),
1441 .alert_rx_i ( alert_rx[1:0] ),
1442
1443 // Inter-module signals
1444 .otp_ast_pwr_seq_o(otp_ctrl_otp_ast_pwr_seq_o),
1445 .otp_ast_pwr_seq_h_i(otp_ctrl_otp_ast_pwr_seq_h_i),
Timothy Chen90b82422021-02-03 23:45:21 -08001446 .edn_o(edn0_edn_req[1]),
1447 .edn_i(edn0_edn_rsp[1]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001448 .pwr_otp_i(pwrmgr_aon_pwr_otp_req),
1449 .pwr_otp_o(pwrmgr_aon_pwr_otp_rsp),
1450 .lc_otp_program_i(lc_ctrl_lc_otp_program_req),
1451 .lc_otp_program_o(lc_ctrl_lc_otp_program_rsp),
1452 .lc_otp_token_i(lc_ctrl_lc_otp_token_req),
1453 .lc_otp_token_o(lc_ctrl_lc_otp_token_rsp),
1454 .otp_lc_data_o(otp_ctrl_otp_lc_data),
1455 .lc_escalate_en_i(lc_ctrl_lc_escalate_en),
1456 .lc_creator_seed_sw_rw_en_i(lc_ctrl_lc_creator_seed_sw_rw_en),
1457 .lc_seed_hw_rd_en_i(lc_ctrl_lc_seed_hw_rd_en),
1458 .lc_dft_en_i(lc_ctrl_lc_dft_en),
1459 .lc_check_byp_en_i(lc_ctrl_lc_check_byp_en),
1460 .otp_keymgr_key_o(otp_ctrl_otp_keymgr_key),
1461 .flash_otp_key_i(flash_ctrl_otp_req),
1462 .flash_otp_key_o(flash_ctrl_otp_rsp),
1463 .sram_otp_key_i(otp_ctrl_sram_otp_key_req),
1464 .sram_otp_key_o(otp_ctrl_sram_otp_key_rsp),
1465 .otbn_otp_key_i('0),
1466 .otbn_otp_key_o(),
1467 .otp_hw_cfg_o(otp_ctrl_otp_hw_cfg),
1468 .tl_i(otp_ctrl_tl_req),
1469 .tl_o(otp_ctrl_tl_rsp),
1470
1471 // Clock and reset connections
1472 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
1473 .clk_edn_i (clkmgr_aon_clocks.clk_main_timers),
1474 .rst_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel]),
1475 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
1476 );
1477
1478 lc_ctrl #(
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08001479 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[3:2]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001480 .RndCnstLcKeymgrDivInvalid(RndCnstLcCtrlLcKeymgrDivInvalid),
1481 .RndCnstLcKeymgrDivTestDevRma(RndCnstLcCtrlLcKeymgrDivTestDevRma),
1482 .RndCnstLcKeymgrDivProduction(RndCnstLcCtrlLcKeymgrDivProduction)
1483 ) u_lc_ctrl (
Timothy Chen8aeeb492021-02-01 21:25:17 -08001484 // [2]: fatal_prog_error
1485 // [3]: fatal_state_error
1486 .alert_tx_o ( alert_tx[3:2] ),
1487 .alert_rx_i ( alert_rx[3:2] ),
1488
1489 // Inter-module signals
Michael Schaffnera7063802021-02-18 18:06:03 -08001490 .jtag_i(pinmux_aon_lc_jtag_req),
1491 .jtag_o(pinmux_aon_lc_jtag_rsp),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001492 .esc_wipe_secrets_tx_i(alert_handler_esc_tx[1]),
1493 .esc_wipe_secrets_rx_o(alert_handler_esc_rx[1]),
1494 .esc_scrap_state_tx_i(alert_handler_esc_tx[2]),
1495 .esc_scrap_state_rx_o(alert_handler_esc_rx[2]),
1496 .pwr_lc_i(pwrmgr_aon_pwr_lc_req),
1497 .pwr_lc_o(pwrmgr_aon_pwr_lc_rsp),
1498 .otp_lc_data_i(otp_ctrl_otp_lc_data),
1499 .lc_otp_program_o(lc_ctrl_lc_otp_program_req),
1500 .lc_otp_program_i(lc_ctrl_lc_otp_program_rsp),
1501 .lc_otp_token_o(lc_ctrl_lc_otp_token_req),
1502 .lc_otp_token_i(lc_ctrl_lc_otp_token_rsp),
1503 .lc_dft_en_o(lc_ctrl_lc_dft_en),
1504 .lc_nvm_debug_en_o(lc_ctrl_lc_nvm_debug_en),
1505 .lc_hw_debug_en_o(lc_ctrl_lc_hw_debug_en),
1506 .lc_cpu_en_o(lc_ctrl_lc_cpu_en),
Michael Schaffnerdc0c1e92021-03-02 14:41:31 -08001507 .lc_keymgr_en_o(lc_ctrl_lc_keymgr_en),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001508 .lc_escalate_en_o(lc_ctrl_lc_escalate_en),
Timothy Chenfa60a602021-03-23 14:29:40 -07001509 .lc_clk_byp_req_o(lc_ctrl_lc_clk_byp_req),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001510 .lc_clk_byp_ack_i(lc_ctrl_lc_clk_byp_ack),
1511 .lc_flash_rma_req_o(flash_ctrl_rma_req),
1512 .lc_flash_rma_seed_o(flash_ctrl_rma_seed),
1513 .lc_flash_rma_ack_i(flash_ctrl_rma_ack),
1514 .lc_check_byp_en_o(lc_ctrl_lc_check_byp_en),
1515 .lc_creator_seed_sw_rw_en_o(lc_ctrl_lc_creator_seed_sw_rw_en),
1516 .lc_owner_seed_sw_rw_en_o(lc_ctrl_lc_owner_seed_sw_rw_en),
1517 .lc_iso_part_sw_rd_en_o(lc_ctrl_lc_iso_part_sw_rd_en),
1518 .lc_iso_part_sw_wr_en_o(lc_ctrl_lc_iso_part_sw_wr_en),
1519 .lc_seed_hw_rd_en_o(lc_ctrl_lc_seed_hw_rd_en),
1520 .lc_keymgr_div_o(lc_ctrl_lc_keymgr_div),
1521 .otp_hw_cfg_i(otp_ctrl_otp_hw_cfg),
1522 .tl_i(lc_ctrl_tl_req),
1523 .tl_o(lc_ctrl_tl_rsp),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -08001524 .scanmode_i,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001525
1526 // Clock and reset connections
1527 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
1528 .rst_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel])
1529 );
1530
1531 alert_handler #(
1532 .RndCnstLfsrSeed(RndCnstAlertHandlerLfsrSeed),
1533 .RndCnstLfsrPerm(RndCnstAlertHandlerLfsrPerm)
1534 ) u_alert_handler (
1535
1536 // Interrupt
1537 .intr_classa_o (intr_alert_handler_classa),
1538 .intr_classb_o (intr_alert_handler_classb),
1539 .intr_classc_o (intr_alert_handler_classc),
1540 .intr_classd_o (intr_alert_handler_classd),
1541
1542 // Inter-module signals
1543 .crashdump_o(alert_handler_crashdump),
Timothy Chen72cb99c2021-03-08 15:58:44 -08001544 .edn_o(edn0_edn_req[4]),
1545 .edn_i(edn0_edn_rsp[4]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001546 .esc_rx_i(alert_handler_esc_rx),
1547 .esc_tx_o(alert_handler_esc_tx),
1548 .tl_i(alert_handler_tl_req),
1549 .tl_o(alert_handler_tl_rsp),
1550 // alert signals
1551 .alert_rx_o ( alert_rx ),
1552 .alert_tx_i ( alert_tx ),
1553
1554 // Clock and reset connections
1555 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
Timothy Chen44b404e2021-02-05 13:06:01 -08001556 .clk_edn_i (clkmgr_aon_clocks.clk_main_timers),
1557 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
1558 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Timothy Chen8aeeb492021-02-01 21:25:17 -08001559 );
1560
Timothy Chen8aeeb492021-02-01 21:25:17 -08001561 pwrmgr u_pwrmgr_aon (
1562
1563 // Interrupt
1564 .intr_wakeup_o (intr_pwrmgr_aon_wakeup),
1565
1566 // Inter-module signals
1567 .pwr_ast_o(pwrmgr_ast_req_o),
1568 .pwr_ast_i(pwrmgr_ast_rsp_i),
1569 .pwr_rst_o(pwrmgr_aon_pwr_rst_req),
1570 .pwr_rst_i(pwrmgr_aon_pwr_rst_rsp),
1571 .pwr_clk_o(pwrmgr_aon_pwr_clk_req),
1572 .pwr_clk_i(pwrmgr_aon_pwr_clk_rsp),
1573 .pwr_otp_o(pwrmgr_aon_pwr_otp_req),
1574 .pwr_otp_i(pwrmgr_aon_pwr_otp_rsp),
1575 .pwr_lc_o(pwrmgr_aon_pwr_lc_req),
1576 .pwr_lc_i(pwrmgr_aon_pwr_lc_rsp),
1577 .pwr_flash_o(pwrmgr_aon_pwr_flash_req),
1578 .pwr_flash_i(pwrmgr_aon_pwr_flash_rsp),
1579 .esc_rst_tx_i(alert_handler_esc_tx[3]),
1580 .esc_rst_rx_o(alert_handler_esc_rx[3]),
1581 .pwr_cpu_i(pwrmgr_aon_pwr_cpu),
1582 .wakeups_i(pwrmgr_aon_wakeups),
1583 .rstreqs_i(pwrmgr_aon_rstreqs),
Timothy Chen383afb82021-02-23 13:18:53 -08001584 .strap_o(pwrmgr_aon_strap),
1585 .low_power_o(pwrmgr_aon_low_power),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001586 .tl_i(pwrmgr_aon_tl_req),
1587 .tl_o(pwrmgr_aon_tl_rsp),
1588
1589 // Clock and reset connections
1590 .clk_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1591 .clk_slow_i (clkmgr_aon_clocks.clk_aon_powerup),
1592 .rst_ni (rstmgr_aon_resets.rst_por_n[rstmgr_pkg::DomainAonSel]),
1593 .rst_slow_ni (rstmgr_aon_resets.rst_por_aon_n[rstmgr_pkg::DomainAonSel])
1594 );
1595
1596 rstmgr u_rstmgr_aon (
1597
1598 // Inter-module signals
1599 .pwr_i(pwrmgr_aon_pwr_rst_req),
1600 .pwr_o(pwrmgr_aon_pwr_rst_rsp),
1601 .resets_o(rstmgr_aon_resets),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001602 .cpu_i(rstmgr_aon_cpu),
1603 .alert_dump_i(alert_handler_crashdump),
Tom Robertsc88e97f2021-03-04 13:38:20 +00001604 .cpu_dump_i(rv_core_ibex_crash_dump),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001605 .resets_ast_o(rsts_ast_o),
1606 .tl_i(rstmgr_aon_tl_req),
1607 .tl_o(rstmgr_aon_tl_rsp),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -08001608 .scanmode_i,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001609 .scan_rst_ni (scan_rst_ni),
1610
1611 // Clock and reset connections
1612 .clk_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1613 .clk_aon_i (clkmgr_aon_clocks.clk_aon_powerup),
1614 .clk_main_i (clkmgr_aon_clocks.clk_main_powerup),
1615 .clk_io_i (clkmgr_aon_clocks.clk_io_powerup),
1616 .clk_usb_i (clkmgr_aon_clocks.clk_usb_powerup),
1617 .clk_io_div2_i (clkmgr_aon_clocks.clk_io_div2_powerup),
1618 .clk_io_div4_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1619 .rst_ni (rst_ni)
1620 );
1621
1622 clkmgr u_clkmgr_aon (
1623
1624 // Inter-module signals
1625 .clocks_o(clkmgr_aon_clocks),
Rupert Swarbrickb3b9a472021-03-26 10:31:15 +00001626 .lc_dft_en_i(lc_ctrl_pkg::LC_TX_DEFAULT),
Timothy Chenfa60a602021-03-23 14:29:40 -07001627 .ast_clk_byp_req_o(ast_clk_byp_req_o),
1628 .ast_clk_byp_ack_i(ast_clk_byp_ack_i),
1629 .lc_clk_byp_req_i(lc_ctrl_lc_clk_byp_req),
1630 .lc_clk_byp_ack_o(lc_ctrl_lc_clk_byp_ack),
Timothy Chene38c4702021-02-08 18:38:03 -08001631 .jitter_en_o(clk_main_jitter_en_o),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001632 .clk_main_i(clk_main_i),
1633 .clk_io_i(clk_io_i),
1634 .clk_usb_i(clk_usb_i),
1635 .clk_aon_i(clk_aon_i),
1636 .clocks_ast_o(clks_ast_o),
1637 .pwr_i(pwrmgr_aon_pwr_clk_req),
1638 .pwr_o(pwrmgr_aon_pwr_clk_rsp),
1639 .idle_i(clkmgr_aon_idle),
1640 .tl_i(clkmgr_aon_tl_req),
1641 .tl_o(clkmgr_aon_tl_rsp),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -08001642 .scanmode_i,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001643
1644 // Clock and reset connections
1645 .clk_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1646 .rst_ni (rstmgr_aon_resets.rst_por_io_div4_n[rstmgr_pkg::DomainAonSel]),
1647 .rst_main_ni (rstmgr_aon_resets.rst_por_n[rstmgr_pkg::DomainAonSel]),
1648 .rst_io_ni (rstmgr_aon_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]),
1649 .rst_usb_ni (rstmgr_aon_resets.rst_por_usb_n[rstmgr_pkg::DomainAonSel]),
1650 .rst_io_div2_ni (rstmgr_aon_resets.rst_por_io_div2_n[rstmgr_pkg::DomainAonSel]),
1651 .rst_io_div4_ni (rstmgr_aon_resets.rst_por_io_div4_n[rstmgr_pkg::DomainAonSel])
1652 );
1653
Eric Shiu5f1d3042021-03-17 17:24:11 -07001654 adc_ctrl u_adc_ctrl_aon (
Timothy Chen6f98f352021-03-10 16:27:29 -08001655
1656 // Interrupt
1657 .intr_debug_cable_o (intr_adc_ctrl_aon_debug_cable),
1658
1659 // Inter-module signals
1660 .adc_o(adc_req_o),
1661 .adc_i(adc_rsp_i),
1662 .debug_cable_wakeup_o(pwrmgr_aon_wakeups[0]),
1663 .tl_i(adc_ctrl_aon_tl_req),
1664 .tl_o(adc_ctrl_aon_tl_rsp),
1665
1666 // Clock and reset connections
1667 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1668 .clk_aon_i (clkmgr_aon_clocks.clk_aon_peri),
1669 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1670 .rst_slow_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
1671 );
1672
Michael Schaffner5f545872021-03-05 17:54:28 -08001673 pinmux #(
1674 .TargetCfg(PinmuxAonTargetCfg)
1675 ) u_pinmux_aon (
Timothy Chen8aeeb492021-02-01 21:25:17 -08001676
1677 // Inter-module signals
Michael Schaffnera7063802021-02-18 18:06:03 -08001678 .lc_hw_debug_en_i(lc_ctrl_lc_hw_debug_en),
1679 .lc_dft_en_i(lc_ctrl_lc_dft_en),
1680 .lc_jtag_o(pinmux_aon_lc_jtag_req),
1681 .lc_jtag_i(pinmux_aon_lc_jtag_rsp),
Michael Schaffner5f545872021-03-05 17:54:28 -08001682 .rv_jtag_o(pinmux_aon_rv_jtag_req),
1683 .rv_jtag_i(pinmux_aon_rv_jtag_rsp),
Michael Schaffnera7063802021-02-18 18:06:03 -08001684 .dft_jtag_o(),
1685 .dft_jtag_i(jtag_pkg::JTAG_RSP_DEFAULT),
Timothy Chen685d6492021-03-09 21:28:39 -08001686 .dft_strap_test_o(dft_strap_test_o),
Timothy Chen383afb82021-02-23 13:18:53 -08001687 .sleep_en_i(pwrmgr_aon_low_power),
1688 .strap_en_i(pwrmgr_aon_strap),
Timothy Chen6f98f352021-03-10 16:27:29 -08001689 .aon_wkup_req_o(pwrmgr_aon_wakeups[1]),
1690 .usb_wkup_req_o(pwrmgr_aon_wakeups[2]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001691 .usb_out_of_rst_i(usbdev_usb_out_of_rst),
1692 .usb_aon_wake_en_i(usbdev_usb_aon_wake_en),
1693 .usb_aon_wake_ack_i(usbdev_usb_aon_wake_ack),
1694 .usb_suspend_i(usbdev_usb_suspend),
1695 .usb_state_debug_o(pinmux_aon_usb_state_debug),
1696 .tl_i(pinmux_aon_tl_req),
1697 .tl_o(pinmux_aon_tl_rsp),
1698
1699 .periph_to_mio_i (mio_d2p ),
Michael Schaffner74c4ff22021-03-30 15:43:46 -07001700 .periph_to_mio_oe_i (mio_en_d2p ),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001701 .mio_to_periph_o (mio_p2d ),
1702
Michael Schaffner43ce8d52021-02-10 17:04:57 -08001703 .mio_attr_o,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001704 .mio_out_o,
1705 .mio_oe_o,
1706 .mio_in_i,
1707
1708 .periph_to_dio_i (dio_d2p ),
Michael Schaffner74c4ff22021-03-30 15:43:46 -07001709 .periph_to_dio_oe_i (dio_en_d2p ),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001710 .dio_to_periph_o (dio_p2d ),
1711
Michael Schaffner43ce8d52021-02-10 17:04:57 -08001712 .dio_attr_o,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001713 .dio_out_o,
1714 .dio_oe_o,
1715 .dio_in_i,
1716
Michael Schaffnera1f76182021-03-16 18:05:46 -07001717 .scanmode_i,
Michael Schaffner43ce8d52021-02-10 17:04:57 -08001718
Timothy Chen8aeeb492021-02-01 21:25:17 -08001719 // Clock and reset connections
Timothy Chen383afb82021-02-23 13:18:53 -08001720 .clk_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1721 .clk_aon_i (clkmgr_aon_clocks.clk_aon_powerup),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001722 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1723 .rst_aon_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
1724 );
1725
Timothy Chen2b8ef762021-02-16 14:44:55 -08001726 aon_timer u_aon_timer_aon (
1727
1728 // Interrupt
1729 .intr_wkup_timer_expired_o (intr_aon_timer_aon_wkup_timer_expired),
1730 .intr_wdog_timer_bark_o (intr_aon_timer_aon_wdog_timer_bark),
1731
1732 // Inter-module signals
Timothy Chen6f98f352021-03-10 16:27:29 -08001733 .aon_timer_wkup_req_o(pwrmgr_aon_wakeups[3]),
Timothy Chen2b8ef762021-02-16 14:44:55 -08001734 .aon_timer_rst_req_o(pwrmgr_aon_rstreqs),
Timothy Chen0481a822021-03-05 14:30:17 -08001735 .lc_cpu_en_i(lc_ctrl_lc_cpu_en),
Timothy Chen383afb82021-02-23 13:18:53 -08001736 .sleep_mode_i(pwrmgr_aon_low_power),
Timothy Chen2b8ef762021-02-16 14:44:55 -08001737 .tl_i(aon_timer_aon_tl_req),
1738 .tl_o(aon_timer_aon_tl_rsp),
1739
1740 // Clock and reset connections
1741 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
1742 .clk_aon_i (clkmgr_aon_clocks.clk_aon_timers),
1743 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1744 .rst_aon_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
1745 );
1746
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08001747 sensor_ctrl #(
1748 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[10:4])
1749 ) u_sensor_ctrl_aon (
Timothy Chen8aeeb492021-02-01 21:25:17 -08001750
Timothy Chen685d6492021-03-09 21:28:39 -08001751 // Input
1752 .cio_ast_debug_in_i (cio_sensor_ctrl_aon_ast_debug_in_p2d),
1753
1754 // Output
1755 .cio_ast_debug_out_o (cio_sensor_ctrl_aon_ast_debug_out_d2p),
1756 .cio_ast_debug_out_en_o (cio_sensor_ctrl_aon_ast_debug_out_en_d2p),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001757 // [4]: recov_as
1758 // [5]: recov_cg
1759 // [6]: recov_gd
1760 // [7]: recov_ts_hi
1761 // [8]: recov_ts_lo
1762 // [9]: recov_ls
1763 // [10]: recov_ot
1764 .alert_tx_o ( alert_tx[10:4] ),
1765 .alert_rx_i ( alert_rx[10:4] ),
1766
1767 // Inter-module signals
1768 .ast_alert_i(sensor_ctrl_ast_alert_req_i),
1769 .ast_alert_o(sensor_ctrl_ast_alert_rsp_o),
1770 .ast_status_i(sensor_ctrl_ast_status_i),
Timothy Chen685d6492021-03-09 21:28:39 -08001771 .ast2pinmux_i(ast2pinmux_i),
1772 .pinmux2ast_o(pinmux2ast_o),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001773 .tl_i(sensor_ctrl_aon_tl_req),
1774 .tl_o(sensor_ctrl_aon_tl_rsp),
1775
1776 // Clock and reset connections
1777 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1778 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel])
Pirmin Vogelea91b302020-01-14 18:53:01 +00001779 );
1780
Michael Schaffner9da4db82020-12-21 15:35:24 -08001781 sram_ctrl #(
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08001782 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[12:11]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001783 .RndCnstSramKey(RndCnstSramCtrlRetAonSramKey),
Timothy Chen15d98b72021-02-10 20:58:34 -08001784 .RndCnstSramNonce(RndCnstSramCtrlRetAonSramNonce),
Timothy Chen95d23d92021-03-11 17:44:59 -08001785 .RndCnstSramLfsrPerm(RndCnstSramCtrlRetAonSramLfsrPerm),
Timothy Chen15d98b72021-02-10 20:58:34 -08001786 .InstrExec(SramCtrlRetAonInstrExec)
Timothy Chen8aeeb492021-02-01 21:25:17 -08001787 ) u_sram_ctrl_ret_aon (
Timothy Chen12cce142021-03-02 18:11:01 -08001788 // [11]: fatal_intg_error
1789 // [12]: fatal_parity_error
1790 .alert_tx_o ( alert_tx[12:11] ),
1791 .alert_rx_i ( alert_rx[12:11] ),
Michael Schaffner9da4db82020-12-21 15:35:24 -08001792
1793 // Inter-module signals
1794 .sram_otp_key_o(otp_ctrl_sram_otp_key_req[1]),
1795 .sram_otp_key_i(otp_ctrl_sram_otp_key_rsp[1]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001796 .sram_scr_o(sram_ctrl_ret_aon_sram_scr_req),
1797 .sram_scr_i(sram_ctrl_ret_aon_sram_scr_rsp),
Timothy Chen95d23d92021-03-11 17:44:59 -08001798 .sram_scr_init_o(sram_ctrl_ret_aon_sram_scr_init_req),
1799 .sram_scr_init_i(sram_ctrl_ret_aon_sram_scr_init_rsp),
Michael Schaffner9da4db82020-12-21 15:35:24 -08001800 .lc_escalate_en_i(lc_ctrl_lc_escalate_en),
Timothy Chen15d98b72021-02-10 20:58:34 -08001801 .lc_hw_debug_en_i(lc_ctrl_lc_hw_debug_en),
1802 .otp_hw_cfg_i(otp_ctrl_otp_hw_cfg),
1803 .en_ifetch_o(sram_ctrl_ret_aon_en_ifetch),
Timothy Chen12cce142021-03-02 18:11:01 -08001804 .intg_error_i(ram_ret_aon_intg_error),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001805 .tl_i(sram_ctrl_ret_aon_tl_req),
1806 .tl_o(sram_ctrl_ret_aon_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001807
1808 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001809 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1810 .clk_otp_i (clkmgr_aon_clocks.clk_io_div4_peri),
1811 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1812 .rst_otp_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::DomainAonSel])
Michael Schaffner9da4db82020-12-21 15:35:24 -08001813 );
1814
Timothy Chenccf343d2020-12-04 20:38:15 -08001815 flash_ctrl #(
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08001816 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[15:13]),
Timothy Chenccf343d2020-12-04 20:38:15 -08001817 .RndCnstAddrKey(RndCnstFlashCtrlAddrKey),
Timothy Chen24b62792020-12-11 15:09:05 -08001818 .RndCnstDataKey(RndCnstFlashCtrlDataKey),
1819 .RndCnstLfsrSeed(RndCnstFlashCtrlLfsrSeed),
1820 .RndCnstLfsrPerm(RndCnstFlashCtrlLfsrPerm)
Timothy Chenccf343d2020-12-04 20:38:15 -08001821 ) u_flash_ctrl (
Timothy Chen1555dce2020-08-11 11:26:50 -07001822
Timothy Chen6a34b6e2021-02-22 11:33:11 -08001823 // Input
1824 .cio_tck_i (cio_flash_ctrl_tck_p2d),
1825 .cio_tms_i (cio_flash_ctrl_tms_p2d),
1826 .cio_tdi_i (cio_flash_ctrl_tdi_p2d),
1827
1828 // Output
1829 .cio_tdo_o (cio_flash_ctrl_tdo_d2p),
1830 .cio_tdo_en_o (cio_flash_ctrl_tdo_en_d2p),
1831
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001832 // Interrupt
1833 .intr_prog_empty_o (intr_flash_ctrl_prog_empty),
1834 .intr_prog_lvl_o (intr_flash_ctrl_prog_lvl),
1835 .intr_rd_full_o (intr_flash_ctrl_rd_full),
1836 .intr_rd_lvl_o (intr_flash_ctrl_rd_lvl),
1837 .intr_op_done_o (intr_flash_ctrl_op_done),
Timothy Chenaad796e2021-03-24 17:21:33 -07001838 .intr_err_o (intr_flash_ctrl_err),
Timothy Chen12cce142021-03-02 18:11:01 -08001839 // [13]: recov_err
1840 // [14]: recov_mp_err
1841 // [15]: recov_ecc_err
1842 .alert_tx_o ( alert_tx[15:13] ),
1843 .alert_rx_i ( alert_rx[15:13] ),
Timothy Chen1555dce2020-08-11 11:26:50 -07001844
1845 // Inter-module signals
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001846 .flash_o(flash_ctrl_flash_req),
1847 .flash_i(flash_ctrl_flash_rsp),
Timothy Chenccf343d2020-12-04 20:38:15 -08001848 .otp_o(flash_ctrl_otp_req),
1849 .otp_i(flash_ctrl_otp_rsp),
Michael Schaffner6d3d6a02020-12-11 13:52:51 -08001850 .lc_creator_seed_sw_rw_en_i(lc_ctrl_lc_creator_seed_sw_rw_en),
1851 .lc_owner_seed_sw_rw_en_i(lc_ctrl_lc_owner_seed_sw_rw_en),
1852 .lc_iso_part_sw_rd_en_i(lc_ctrl_lc_iso_part_sw_rd_en),
1853 .lc_iso_part_sw_wr_en_i(lc_ctrl_lc_iso_part_sw_wr_en),
1854 .lc_seed_hw_rd_en_i(lc_ctrl_lc_seed_hw_rd_en),
Timothy Chen3cb138f2020-12-15 20:35:03 -08001855 .rma_req_i(flash_ctrl_rma_req),
1856 .rma_ack_o(flash_ctrl_rma_ack),
1857 .rma_seed_i(flash_ctrl_rma_seed),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001858 .pwrmgr_i(pwrmgr_aon_pwr_flash_req),
1859 .pwrmgr_o(pwrmgr_aon_pwr_flash_rsp),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001860 .keymgr_o(flash_ctrl_keymgr),
Timothy Chen76eb8832021-03-25 16:49:58 -07001861 .core_tl_i(flash_ctrl_core_tl_req),
1862 .core_tl_o(flash_ctrl_core_tl_rsp),
1863 .prim_tl_i(flash_ctrl_prim_tl_req),
1864 .prim_tl_o(flash_ctrl_prim_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001865
1866 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001867 .clk_i (clkmgr_aon_clocks.clk_main_infra),
1868 .clk_otp_i (clkmgr_aon_clocks.clk_io_div4_infra),
1869 .rst_ni (rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]),
1870 .rst_otp_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel])
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001871 );
1872
1873 rv_plic u_rv_plic (
1874
1875 // Inter-module signals
1876 .tl_i(rv_plic_tl_req),
1877 .tl_o(rv_plic_tl_rsp),
1878
1879 .intr_src_i (intr_vector),
1880 .irq_o (irq_plic),
1881 .irq_id_o (irq_id),
1882 .msip_o (msip),
Timothy Chen469a3032021-02-01 15:44:09 -08001883
1884 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001885 .clk_i (clkmgr_aon_clocks.clk_main_secure),
1886 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001887 );
1888
1889 aes #(
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08001890 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[17:16]),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001891 .AES192Enable(1'b1),
1892 .Masking(AesMasking),
1893 .SBoxImpl(AesSBoxImpl),
1894 .SecStartTriggerDelay(SecAesStartTriggerDelay),
1895 .SecAllowForcingMasks(SecAesAllowForcingMasks),
Pirmin Vogel95cea452021-03-02 08:54:01 +01001896 .SecSkipPRNGReseeding(SecAesSkipPRNGReseeding),
Pirmin Vogeld31b0cc2021-02-26 11:48:39 +01001897 .RndCnstClearingLfsrSeed(RndCnstAesClearingLfsrSeed),
1898 .RndCnstClearingLfsrPerm(RndCnstAesClearingLfsrPerm),
Pirmin Vogel116ecac2021-03-19 11:21:42 +01001899 .RndCnstClearingSharePerm(RndCnstAesClearingSharePerm),
Pirmin Vogeld31b0cc2021-02-26 11:48:39 +01001900 .RndCnstMaskingLfsrSeed(RndCnstAesMaskingLfsrSeed),
1901 .RndCnstMskgChunkLfsrPerm(RndCnstAesMskgChunkLfsrPerm)
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001902 ) u_aes (
Timothy Chen12cce142021-03-02 18:11:01 -08001903 // [16]: recov_ctrl_update_err
1904 // [17]: fatal_fault
1905 .alert_tx_o ( alert_tx[17:16] ),
1906 .alert_rx_i ( alert_rx[17:16] ),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001907
1908 // Inter-module signals
Timothy Chen8aeeb492021-02-01 21:25:17 -08001909 .idle_o(clkmgr_aon_idle[0]),
Pirmin Vogel144ca842021-02-26 15:46:43 +01001910 .lc_escalate_en_i(lc_ctrl_lc_escalate_en),
Timothy Chen72cb99c2021-03-08 15:58:44 -08001911 .edn_o(edn0_edn_req[5]),
1912 .edn_i(edn0_edn_rsp[5]),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001913 .tl_i(aes_tl_req),
1914 .tl_o(aes_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001915
1916 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001917 .clk_i (clkmgr_aon_clocks.clk_main_aes),
Pirmin Vogel95cea452021-03-02 08:54:01 +01001918 .clk_edn_i (clkmgr_aon_clocks.clk_main_aes),
1919 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
1920 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001921 );
1922
1923 hmac u_hmac (
1924
1925 // Interrupt
1926 .intr_hmac_done_o (intr_hmac_hmac_done),
1927 .intr_fifo_empty_o (intr_hmac_fifo_empty),
1928 .intr_hmac_err_o (intr_hmac_hmac_err),
1929
1930 // Inter-module signals
Timothy Chen8aeeb492021-02-01 21:25:17 -08001931 .idle_o(clkmgr_aon_idle[1]),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001932 .tl_i(hmac_tl_req),
1933 .tl_o(hmac_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001934
1935 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001936 .clk_i (clkmgr_aon_clocks.clk_main_hmac),
1937 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001938 );
1939
1940 kmac #(
1941 .EnMasking(KmacEnMasking),
1942 .ReuseShare(KmacReuseShare)
1943 ) u_kmac (
1944
1945 // Interrupt
1946 .intr_kmac_done_o (intr_kmac_kmac_done),
1947 .intr_fifo_empty_o (intr_kmac_fifo_empty),
1948 .intr_kmac_err_o (intr_kmac_kmac_err),
1949
1950 // Inter-module signals
1951 .keymgr_key_i(keymgr_kmac_key),
Eunchan Kim02eaac72021-03-23 10:54:25 -07001952 .app_i(kmac_app_req),
1953 .app_o(kmac_app_rsp),
Timothy Chen44b404e2021-02-05 13:06:01 -08001954 .entropy_o(edn0_edn_req[3]),
1955 .entropy_i(edn0_edn_rsp[3]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001956 .idle_o(clkmgr_aon_idle[2]),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08001957 .tl_i(kmac_tl_req),
1958 .tl_o(kmac_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001959
1960 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001961 .clk_i (clkmgr_aon_clocks.clk_main_kmac),
1962 .clk_edn_i (clkmgr_aon_clocks.clk_main_kmac),
1963 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
1964 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Timothy Chen1555dce2020-08-11 11:26:50 -07001965 );
1966
Timothy Chenf9169fa2020-12-04 18:08:45 -08001967 keymgr #(
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08001968 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[19:18]),
Timothy Chenf9169fa2020-12-04 18:08:45 -08001969 .RndCnstLfsrSeed(RndCnstKeymgrLfsrSeed),
1970 .RndCnstLfsrPerm(RndCnstKeymgrLfsrPerm),
Timothy Chenbe2da9e2021-01-07 18:29:01 -08001971 .RndCnstRandPerm(RndCnstKeymgrRandPerm),
Timothy Chenf9169fa2020-12-04 18:08:45 -08001972 .RndCnstRevisionSeed(RndCnstKeymgrRevisionSeed),
1973 .RndCnstCreatorIdentitySeed(RndCnstKeymgrCreatorIdentitySeed),
1974 .RndCnstOwnerIntIdentitySeed(RndCnstKeymgrOwnerIntIdentitySeed),
1975 .RndCnstOwnerIdentitySeed(RndCnstKeymgrOwnerIdentitySeed),
1976 .RndCnstSoftOutputSeed(RndCnstKeymgrSoftOutputSeed),
Timothy Chen51c85462020-12-10 16:36:02 -08001977 .RndCnstHardOutputSeed(RndCnstKeymgrHardOutputSeed),
1978 .RndCnstAesSeed(RndCnstKeymgrAesSeed),
1979 .RndCnstHmacSeed(RndCnstKeymgrHmacSeed),
1980 .RndCnstKmacSeed(RndCnstKeymgrKmacSeed),
1981 .RndCnstNoneSeed(RndCnstKeymgrNoneSeed)
Timothy Chenf9169fa2020-12-04 18:08:45 -08001982 ) u_keymgr (
Timothy Chen94953722020-09-18 16:15:12 -07001983
1984 // Interrupt
1985 .intr_op_done_o (intr_keymgr_op_done),
Timothy Chen12cce142021-03-02 18:11:01 -08001986 // [18]: fatal_fault_err
1987 // [19]: recov_operation_err
1988 .alert_tx_o ( alert_tx[19:18] ),
1989 .alert_rx_i ( alert_rx[19:18] ),
Timothy Chen94953722020-09-18 16:15:12 -07001990
1991 // Inter-module signals
Timothy Chen90b82422021-02-03 23:45:21 -08001992 .edn_o(edn0_edn_req[0]),
1993 .edn_i(edn0_edn_rsp[0]),
Timothy Chen94953722020-09-18 16:15:12 -07001994 .aes_key_o(),
1995 .hmac_key_o(),
Eunchan Kime5d33b72020-11-03 14:34:16 -08001996 .kmac_key_o(keymgr_kmac_key),
Eunchan Kim4af433f2021-03-25 17:11:41 -07001997 .kmac_data_o(kmac_app_req[0]),
1998 .kmac_data_i(kmac_app_rsp[0]),
Timothy Chen77cc8b92020-12-05 09:19:14 -08001999 .otp_key_i(otp_ctrl_otp_keymgr_key),
Timothy Chen6ace8f32020-12-14 17:26:56 -08002000 .otp_hw_cfg_i(otp_ctrl_otp_hw_cfg),
Timothy Chen94953722020-09-18 16:15:12 -07002001 .flash_i(flash_ctrl_keymgr),
Michael Schaffnerdc0c1e92021-03-02 14:41:31 -08002002 .lc_keymgr_en_i(lc_ctrl_lc_keymgr_en),
Timothy Chen6ace8f32020-12-14 17:26:56 -08002003 .lc_keymgr_div_i(lc_ctrl_lc_keymgr_div),
Timothy Chen94953722020-09-18 16:15:12 -07002004 .tl_i(keymgr_tl_req),
2005 .tl_o(keymgr_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002006
2007 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002008 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2009 .clk_edn_i (clkmgr_aon_clocks.clk_main_secure),
2010 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2011 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Timothy Chen94953722020-09-18 16:15:12 -07002012 );
2013
Mark Branstadff807362020-11-16 07:56:15 -08002014 csrng #(
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002015 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[20:20]),
Mark Branstadff807362020-11-16 07:56:15 -08002016 .SBoxImpl(CsrngSBoxImpl)
2017 ) u_csrng (
2018
2019 // Interrupt
2020 .intr_cs_cmd_req_done_o (intr_csrng_cs_cmd_req_done),
2021 .intr_cs_entropy_req_o (intr_csrng_cs_entropy_req),
2022 .intr_cs_hw_inst_exc_o (intr_csrng_cs_hw_inst_exc),
Mark Branstadd65d1392021-02-10 13:15:39 -08002023 .intr_cs_fatal_err_o (intr_csrng_cs_fatal_err),
Timothy Chen12cce142021-03-02 18:11:01 -08002024 // [20]: fatal_alert
2025 .alert_tx_o ( alert_tx[20:20] ),
2026 .alert_rx_i ( alert_rx[20:20] ),
Mark Branstadff807362020-11-16 07:56:15 -08002027
2028 // Inter-module signals
2029 .csrng_cmd_i(csrng_csrng_cmd_req),
2030 .csrng_cmd_o(csrng_csrng_cmd_rsp),
2031 .entropy_src_hw_if_o(csrng_entropy_src_hw_if_req),
2032 .entropy_src_hw_if_i(csrng_entropy_src_hw_if_rsp),
Mark Branstadde7eba32021-03-22 14:18:38 -07002033 .cs_aes_halt_i(csrng_cs_aes_halt_req),
2034 .cs_aes_halt_o(csrng_cs_aes_halt_rsp),
Mark Branstadff807362020-11-16 07:56:15 -08002035 .efuse_sw_app_enable_i('0),
Mark Branstad1c3b1602020-12-11 15:09:10 -08002036 .lc_hw_debug_en_i(lc_ctrl_pkg::Off),
Mark Branstadff807362020-11-16 07:56:15 -08002037 .tl_i(csrng_tl_req),
2038 .tl_o(csrng_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002039
2040 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002041 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2042 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Mark Branstadff807362020-11-16 07:56:15 -08002043 );
2044
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002045 entropy_src #(
2046 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[22:21])
2047 ) u_entropy_src (
Mark Branstadff807362020-11-16 07:56:15 -08002048
2049 // Interrupt
2050 .intr_es_entropy_valid_o (intr_entropy_src_es_entropy_valid),
2051 .intr_es_health_test_failed_o (intr_entropy_src_es_health_test_failed),
Mark Branstad789ea022021-02-12 14:35:42 -08002052 .intr_es_fatal_err_o (intr_entropy_src_es_fatal_err),
Timothy Chen12cce142021-03-02 18:11:01 -08002053 // [21]: recov_alert
2054 // [22]: fatal_alert
2055 .alert_tx_o ( alert_tx[22:21] ),
2056 .alert_rx_i ( alert_rx[22:21] ),
Mark Branstadff807362020-11-16 07:56:15 -08002057
2058 // Inter-module signals
2059 .entropy_src_hw_if_i(csrng_entropy_src_hw_if_req),
2060 .entropy_src_hw_if_o(csrng_entropy_src_hw_if_rsp),
Mark Branstadde7eba32021-03-22 14:18:38 -07002061 .cs_aes_halt_o(csrng_cs_aes_halt_req),
2062 .cs_aes_halt_i(csrng_cs_aes_halt_rsp),
Timothy Chenea59ad32021-02-03 17:51:38 -08002063 .entropy_src_rng_o(es_rng_req_o),
2064 .entropy_src_rng_i(es_rng_rsp_i),
Mark Branstadff807362020-11-16 07:56:15 -08002065 .entropy_src_xht_o(),
2066 .entropy_src_xht_i(entropy_src_pkg::ENTROPY_SRC_XHT_RSP_DEFAULT),
2067 .efuse_es_sw_reg_en_i('0),
Timothy Chen5270b7c2021-03-17 17:38:30 -07002068 .rng_fips_o(es_rng_fips_o),
Mark Branstadff807362020-11-16 07:56:15 -08002069 .tl_i(entropy_src_tl_req),
2070 .tl_o(entropy_src_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002071
2072 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002073 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2074 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Mark Branstadff807362020-11-16 07:56:15 -08002075 );
2076
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002077 edn #(
2078 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[23:23])
2079 ) u_edn0 (
Mark Branstadff807362020-11-16 07:56:15 -08002080
2081 // Interrupt
2082 .intr_edn_cmd_req_done_o (intr_edn0_edn_cmd_req_done),
Mark Branstad1e7fa2e2021-02-18 08:41:37 -08002083 .intr_edn_fatal_err_o (intr_edn0_edn_fatal_err),
Timothy Chen12cce142021-03-02 18:11:01 -08002084 // [23]: fatal_alert
2085 .alert_tx_o ( alert_tx[23:23] ),
2086 .alert_rx_i ( alert_rx[23:23] ),
Mark Branstadff807362020-11-16 07:56:15 -08002087
2088 // Inter-module signals
2089 .csrng_cmd_o(csrng_csrng_cmd_req[0]),
2090 .csrng_cmd_i(csrng_csrng_cmd_rsp[0]),
Timothy Chen90b82422021-02-03 23:45:21 -08002091 .edn_i(edn0_edn_req),
2092 .edn_o(edn0_edn_rsp),
Mark Branstadff807362020-11-16 07:56:15 -08002093 .tl_i(edn0_tl_req),
2094 .tl_o(edn0_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002095
2096 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002097 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2098 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Mark Branstadff807362020-11-16 07:56:15 -08002099 );
2100
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002101 edn #(
2102 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[24:24])
2103 ) u_edn1 (
Mark Branstadff807362020-11-16 07:56:15 -08002104
2105 // Interrupt
2106 .intr_edn_cmd_req_done_o (intr_edn1_edn_cmd_req_done),
Mark Branstad1e7fa2e2021-02-18 08:41:37 -08002107 .intr_edn_fatal_err_o (intr_edn1_edn_fatal_err),
Timothy Chen12cce142021-03-02 18:11:01 -08002108 // [24]: fatal_alert
2109 .alert_tx_o ( alert_tx[24:24] ),
2110 .alert_rx_i ( alert_rx[24:24] ),
Mark Branstadff807362020-11-16 07:56:15 -08002111
2112 // Inter-module signals
2113 .csrng_cmd_o(csrng_csrng_cmd_req[1]),
2114 .csrng_cmd_i(csrng_csrng_cmd_rsp[1]),
Timothy Chen44b404e2021-02-05 13:06:01 -08002115 .edn_i(edn1_edn_req),
2116 .edn_o(edn1_edn_rsp),
Mark Branstadff807362020-11-16 07:56:15 -08002117 .tl_i(edn1_tl_req),
2118 .tl_o(edn1_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002119
2120 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002121 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2122 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Mark Branstadff807362020-11-16 07:56:15 -08002123 );
2124
Michael Schaffner9da4db82020-12-21 15:35:24 -08002125 sram_ctrl #(
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002126 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[26:25]),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002127 .RndCnstSramKey(RndCnstSramCtrlMainSramKey),
Timothy Chen15d98b72021-02-10 20:58:34 -08002128 .RndCnstSramNonce(RndCnstSramCtrlMainSramNonce),
Timothy Chen95d23d92021-03-11 17:44:59 -08002129 .RndCnstSramLfsrPerm(RndCnstSramCtrlMainSramLfsrPerm),
Timothy Chen15d98b72021-02-10 20:58:34 -08002130 .InstrExec(SramCtrlMainInstrExec)
Michael Schaffner9da4db82020-12-21 15:35:24 -08002131 ) u_sram_ctrl_main (
Timothy Chen12cce142021-03-02 18:11:01 -08002132 // [25]: fatal_intg_error
2133 // [26]: fatal_parity_error
2134 .alert_tx_o ( alert_tx[26:25] ),
2135 .alert_rx_i ( alert_rx[26:25] ),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002136
2137 // Inter-module signals
2138 .sram_otp_key_o(otp_ctrl_sram_otp_key_req[0]),
2139 .sram_otp_key_i(otp_ctrl_sram_otp_key_rsp[0]),
2140 .sram_scr_o(sram_ctrl_main_sram_scr_req),
2141 .sram_scr_i(sram_ctrl_main_sram_scr_rsp),
Timothy Chen95d23d92021-03-11 17:44:59 -08002142 .sram_scr_init_o(sram_ctrl_main_sram_scr_init_req),
2143 .sram_scr_init_i(sram_ctrl_main_sram_scr_init_rsp),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002144 .lc_escalate_en_i(lc_ctrl_lc_escalate_en),
Timothy Chen15d98b72021-02-10 20:58:34 -08002145 .lc_hw_debug_en_i(lc_ctrl_lc_hw_debug_en),
2146 .otp_hw_cfg_i(otp_ctrl_otp_hw_cfg),
2147 .en_ifetch_o(sram_ctrl_main_en_ifetch),
Timothy Chen12cce142021-03-02 18:11:01 -08002148 .intg_error_i(ram_main_intg_error),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002149 .tl_i(sram_ctrl_main_tl_req),
2150 .tl_o(sram_ctrl_main_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002151
2152 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002153 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2154 .clk_otp_i (clkmgr_aon_clocks.clk_io_div4_secure),
2155 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2156 .rst_otp_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel])
Michael Schaffner9da4db82020-12-21 15:35:24 -08002157 );
2158
Pirmin Vogel69b55a82020-10-01 09:54:39 +02002159 otbn #(
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002160 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[28:27]),
Pirmin Vogel69b55a82020-10-01 09:54:39 +02002161 .RegFile(OtbnRegFile)
2162 ) u_otbn (
Philipp Wagnera4a9e402020-06-22 12:06:56 +01002163
2164 // Interrupt
2165 .intr_done_o (intr_otbn_done),
Timothy Chen12cce142021-03-02 18:11:01 -08002166 // [27]: fatal
2167 // [28]: recov
2168 .alert_tx_o ( alert_tx[28:27] ),
2169 .alert_rx_i ( alert_rx[28:27] ),
Philipp Wagnera4a9e402020-06-22 12:06:56 +01002170
2171 // Inter-module signals
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +00002172 .edn_rnd_o(edn1_edn_req[0]),
2173 .edn_rnd_i(edn1_edn_rsp[0]),
2174 .edn_urnd_o(edn0_edn_req[6]),
2175 .edn_urnd_i(edn0_edn_rsp[6]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08002176 .idle_o(clkmgr_aon_idle[3]),
Timothy Chen685d6492021-03-09 21:28:39 -08002177 .ram_cfg_i(ast_ram_1p_cfg),
Eunchan Kim0f549542020-08-04 10:40:11 -07002178 .tl_i(otbn_tl_req),
2179 .tl_o(otbn_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002180
2181 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002182 .clk_i (clkmgr_aon_clocks.clk_main_otbn),
Greg Chadwickc62e57b2021-02-18 11:30:06 +00002183 .clk_edn_i (clkmgr_aon_clocks.clk_main_otbn),
2184 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2185 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Philipp Wagnera4a9e402020-06-22 12:06:56 +01002186 );
2187
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +00002188 rom_ctrl #(
2189 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[29:29]),
2190 .BootRomInitFile(RomCtrlBootRomInitFile)
2191 ) u_rom_ctrl (
2192 // [29]: fatal
2193 .alert_tx_o ( alert_tx[29:29] ),
2194 .alert_rx_i ( alert_rx[29:29] ),
2195
2196 // Inter-module signals
2197 .rom_cfg_i(ast_rom_cfg),
2198 .regs_tl_i(rom_ctrl_regs_tl_req),
2199 .regs_tl_o(rom_ctrl_regs_tl_rsp),
2200 .rom_tl_i(rom_ctrl_rom_tl_req),
2201 .rom_tl_o(rom_ctrl_rom_tl_rsp),
2202
2203 // Clock and reset connections
2204 .clk_i (clkmgr_aon_clocks.clk_main_infra),
2205 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
2206 );
2207
lowRISC Contributors802543a2019-08-31 12:12:56 +01002208 // interrupt assignments
2209 assign intr_vector = {
Timothy Chenaad796e2021-03-24 17:21:33 -07002210 intr_otbn_done, // ID 146
2211 intr_edn1_edn_fatal_err, // ID 145
2212 intr_edn1_edn_cmd_req_done, // ID 144
2213 intr_edn0_edn_fatal_err, // ID 143
2214 intr_edn0_edn_cmd_req_done, // ID 142
2215 intr_entropy_src_es_fatal_err, // ID 141
2216 intr_entropy_src_es_health_test_failed, // ID 140
2217 intr_entropy_src_es_entropy_valid, // ID 139
2218 intr_csrng_cs_fatal_err, // ID 138
2219 intr_csrng_cs_hw_inst_exc, // ID 137
2220 intr_csrng_cs_entropy_req, // ID 136
2221 intr_csrng_cs_cmd_req_done, // ID 135
2222 intr_keymgr_op_done, // ID 134
2223 intr_kmac_kmac_err, // ID 133
2224 intr_kmac_fifo_empty, // ID 132
2225 intr_kmac_kmac_done, // ID 131
2226 intr_hmac_hmac_err, // ID 130
2227 intr_hmac_fifo_empty, // ID 129
2228 intr_hmac_hmac_done, // ID 128
2229 intr_flash_ctrl_err, // ID 127
Timothy Chen6f98f352021-03-10 16:27:29 -08002230 intr_flash_ctrl_op_done, // ID 126
2231 intr_flash_ctrl_rd_lvl, // ID 125
2232 intr_flash_ctrl_rd_full, // ID 124
2233 intr_flash_ctrl_prog_lvl, // ID 123
2234 intr_flash_ctrl_prog_empty, // ID 122
2235 intr_aon_timer_aon_wdog_timer_bark, // ID 121
2236 intr_aon_timer_aon_wkup_timer_expired, // ID 120
2237 intr_adc_ctrl_aon_debug_cable, // ID 119
Rupert Swarbrick13cdb232021-03-09 15:34:53 +00002238 intr_pwrmgr_aon_wakeup, // ID 118
2239 intr_alert_handler_classd, // ID 117
2240 intr_alert_handler_classc, // ID 116
2241 intr_alert_handler_classb, // ID 115
2242 intr_alert_handler_classa, // ID 114
2243 intr_otp_ctrl_otp_error, // ID 113
2244 intr_otp_ctrl_otp_operation_done, // ID 112
2245 intr_usbdev_link_out_err, // ID 111
2246 intr_usbdev_connected, // ID 110
2247 intr_usbdev_frame, // ID 109
2248 intr_usbdev_rx_bitstuff_err, // ID 108
2249 intr_usbdev_rx_pid_err, // ID 107
2250 intr_usbdev_rx_crc_err, // ID 106
2251 intr_usbdev_link_in_err, // ID 105
2252 intr_usbdev_av_overflow, // ID 104
2253 intr_usbdev_rx_full, // ID 103
2254 intr_usbdev_av_empty, // ID 102
2255 intr_usbdev_link_resume, // ID 101
2256 intr_usbdev_link_suspend, // ID 100
2257 intr_usbdev_link_reset, // ID 99
2258 intr_usbdev_host_lost, // ID 98
2259 intr_usbdev_disconnected, // ID 97
2260 intr_usbdev_pkt_sent, // ID 96
2261 intr_usbdev_pkt_received, // ID 95
2262 intr_rv_timer_timer_expired_0_0, // ID 94
2263 intr_pattgen_done_ch1, // ID 93
2264 intr_pattgen_done_ch0, // ID 92
2265 intr_i2c2_host_timeout, // ID 91
2266 intr_i2c2_ack_stop, // ID 90
2267 intr_i2c2_acq_overflow, // ID 89
2268 intr_i2c2_tx_overflow, // ID 88
2269 intr_i2c2_tx_nonempty, // ID 87
2270 intr_i2c2_tx_empty, // ID 86
2271 intr_i2c2_trans_complete, // ID 85
2272 intr_i2c2_sda_unstable, // ID 84
2273 intr_i2c2_stretch_timeout, // ID 83
2274 intr_i2c2_sda_interference, // ID 82
2275 intr_i2c2_scl_interference, // ID 81
2276 intr_i2c2_nak, // ID 80
2277 intr_i2c2_rx_overflow, // ID 79
2278 intr_i2c2_fmt_overflow, // ID 78
2279 intr_i2c2_rx_watermark, // ID 77
2280 intr_i2c2_fmt_watermark, // ID 76
2281 intr_i2c1_host_timeout, // ID 75
2282 intr_i2c1_ack_stop, // ID 74
2283 intr_i2c1_acq_overflow, // ID 73
2284 intr_i2c1_tx_overflow, // ID 72
2285 intr_i2c1_tx_nonempty, // ID 71
2286 intr_i2c1_tx_empty, // ID 70
2287 intr_i2c1_trans_complete, // ID 69
2288 intr_i2c1_sda_unstable, // ID 68
2289 intr_i2c1_stretch_timeout, // ID 67
2290 intr_i2c1_sda_interference, // ID 66
2291 intr_i2c1_scl_interference, // ID 65
2292 intr_i2c1_nak, // ID 64
2293 intr_i2c1_rx_overflow, // ID 63
2294 intr_i2c1_fmt_overflow, // ID 62
2295 intr_i2c1_rx_watermark, // ID 61
2296 intr_i2c1_fmt_watermark, // ID 60
2297 intr_i2c0_host_timeout, // ID 59
2298 intr_i2c0_ack_stop, // ID 58
2299 intr_i2c0_acq_overflow, // ID 57
2300 intr_i2c0_tx_overflow, // ID 56
2301 intr_i2c0_tx_nonempty, // ID 55
2302 intr_i2c0_tx_empty, // ID 54
2303 intr_i2c0_trans_complete, // ID 53
2304 intr_i2c0_sda_unstable, // ID 52
2305 intr_i2c0_stretch_timeout, // ID 51
2306 intr_i2c0_sda_interference, // ID 50
2307 intr_i2c0_scl_interference, // ID 49
2308 intr_i2c0_nak, // ID 48
2309 intr_i2c0_rx_overflow, // ID 47
2310 intr_i2c0_fmt_overflow, // ID 46
2311 intr_i2c0_rx_watermark, // ID 45
2312 intr_i2c0_fmt_watermark, // ID 44
2313 intr_spi_host1_spi_event, // ID 43
2314 intr_spi_host1_error, // ID 42
2315 intr_spi_host0_spi_event, // ID 41
2316 intr_spi_host0_error, // ID 40
Michael Schaffnerb5b8eba2021-02-09 20:07:04 -08002317 intr_spi_device_txunderflow, // ID 39
2318 intr_spi_device_rxoverflow, // ID 38
2319 intr_spi_device_rxerr, // ID 37
2320 intr_spi_device_txlvl, // ID 36
2321 intr_spi_device_rxlvl, // ID 35
2322 intr_spi_device_rxf, // ID 34
2323 intr_gpio_gpio, // ID 33
2324 intr_uart3_rx_parity_err, // ID 32
2325 intr_uart3_rx_timeout, // ID 31
2326 intr_uart3_rx_break_err, // ID 30
2327 intr_uart3_rx_frame_err, // ID 29
2328 intr_uart3_rx_overflow, // ID 28
2329 intr_uart3_tx_empty, // ID 27
2330 intr_uart3_rx_watermark, // ID 26
2331 intr_uart3_tx_watermark, // ID 25
2332 intr_uart2_rx_parity_err, // ID 24
2333 intr_uart2_rx_timeout, // ID 23
2334 intr_uart2_rx_break_err, // ID 22
2335 intr_uart2_rx_frame_err, // ID 21
2336 intr_uart2_rx_overflow, // ID 20
2337 intr_uart2_tx_empty, // ID 19
2338 intr_uart2_rx_watermark, // ID 18
2339 intr_uart2_tx_watermark, // ID 17
2340 intr_uart1_rx_parity_err, // ID 16
2341 intr_uart1_rx_timeout, // ID 15
2342 intr_uart1_rx_break_err, // ID 14
2343 intr_uart1_rx_frame_err, // ID 13
2344 intr_uart1_rx_overflow, // ID 12
2345 intr_uart1_tx_empty, // ID 11
2346 intr_uart1_rx_watermark, // ID 10
2347 intr_uart1_tx_watermark, // ID 9
2348 intr_uart0_rx_parity_err, // ID 8
2349 intr_uart0_rx_timeout, // ID 7
2350 intr_uart0_rx_break_err, // ID 6
2351 intr_uart0_rx_frame_err, // ID 5
2352 intr_uart0_rx_overflow, // ID 4
2353 intr_uart0_tx_empty, // ID 3
2354 intr_uart0_rx_watermark, // ID 2
2355 intr_uart0_tx_watermark, // ID 1
2356 1'b 0 // ID 0 is a special case and tied to zero.
lowRISC Contributors802543a2019-08-31 12:12:56 +01002357 };
2358
2359 // TL-UL Crossbar
lowRISC Contributors802543a2019-08-31 12:12:56 +01002360 xbar_main u_xbar_main (
Timothy Chen8aeeb492021-02-01 21:25:17 -08002361 .clk_main_i (clkmgr_aon_clocks.clk_main_infra),
2362 .clk_fixed_i (clkmgr_aon_clocks.clk_io_div4_infra),
2363 .rst_main_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2364 .rst_fixed_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
Eunchan Kim0f549542020-08-04 10:40:11 -07002365
2366 // port: tl_corei
2367 .tl_corei_i(main_tl_corei_req),
2368 .tl_corei_o(main_tl_corei_rsp),
2369
2370 // port: tl_cored
2371 .tl_cored_i(main_tl_cored_req),
2372 .tl_cored_o(main_tl_cored_rsp),
2373
2374 // port: tl_dm_sba
2375 .tl_dm_sba_i(main_tl_dm_sba_req),
2376 .tl_dm_sba_o(main_tl_dm_sba_rsp),
2377
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +00002378 // port: tl_rom_ctrl__rom
2379 .tl_rom_ctrl__rom_o(rom_ctrl_rom_tl_req),
2380 .tl_rom_ctrl__rom_i(rom_ctrl_rom_tl_rsp),
2381
2382 // port: tl_rom_ctrl__regs
2383 .tl_rom_ctrl__regs_o(rom_ctrl_regs_tl_req),
2384 .tl_rom_ctrl__regs_i(rom_ctrl_regs_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002385
2386 // port: tl_debug_mem
2387 .tl_debug_mem_o(main_tl_debug_mem_req),
2388 .tl_debug_mem_i(main_tl_debug_mem_rsp),
2389
2390 // port: tl_ram_main
2391 .tl_ram_main_o(ram_main_tl_req),
2392 .tl_ram_main_i(ram_main_tl_rsp),
2393
2394 // port: tl_eflash
2395 .tl_eflash_o(eflash_tl_req),
2396 .tl_eflash_i(eflash_tl_rsp),
2397
2398 // port: tl_peri
2399 .tl_peri_o(main_tl_peri_req),
2400 .tl_peri_i(main_tl_peri_rsp),
2401
Timothy Chen76eb8832021-03-25 16:49:58 -07002402 // port: tl_flash_ctrl__core
2403 .tl_flash_ctrl__core_o(flash_ctrl_core_tl_req),
2404 .tl_flash_ctrl__core_i(flash_ctrl_core_tl_rsp),
2405
2406 // port: tl_flash_ctrl__prim
2407 .tl_flash_ctrl__prim_o(flash_ctrl_prim_tl_req),
2408 .tl_flash_ctrl__prim_i(flash_ctrl_prim_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002409
2410 // port: tl_hmac
2411 .tl_hmac_o(hmac_tl_req),
2412 .tl_hmac_i(hmac_tl_rsp),
2413
Eunchan Kime5d33b72020-11-03 14:34:16 -08002414 // port: tl_kmac
2415 .tl_kmac_o(kmac_tl_req),
2416 .tl_kmac_i(kmac_tl_rsp),
2417
Eunchan Kim0f549542020-08-04 10:40:11 -07002418 // port: tl_aes
2419 .tl_aes_o(aes_tl_req),
2420 .tl_aes_i(aes_tl_rsp),
2421
Mark Branstadff807362020-11-16 07:56:15 -08002422 // port: tl_entropy_src
2423 .tl_entropy_src_o(entropy_src_tl_req),
2424 .tl_entropy_src_i(entropy_src_tl_rsp),
2425
2426 // port: tl_csrng
2427 .tl_csrng_o(csrng_tl_req),
2428 .tl_csrng_i(csrng_tl_rsp),
2429
2430 // port: tl_edn0
2431 .tl_edn0_o(edn0_tl_req),
2432 .tl_edn0_i(edn0_tl_rsp),
2433
2434 // port: tl_edn1
2435 .tl_edn1_o(edn1_tl_req),
2436 .tl_edn1_i(edn1_tl_rsp),
2437
Eunchan Kim0f549542020-08-04 10:40:11 -07002438 // port: tl_rv_plic
2439 .tl_rv_plic_o(rv_plic_tl_req),
2440 .tl_rv_plic_i(rv_plic_tl_rsp),
2441
Eunchan Kim0f549542020-08-04 10:40:11 -07002442 // port: tl_otbn
2443 .tl_otbn_o(otbn_tl_req),
2444 .tl_otbn_i(otbn_tl_rsp),
2445
Timothy Chen94953722020-09-18 16:15:12 -07002446 // port: tl_keymgr
2447 .tl_keymgr_o(keymgr_tl_req),
2448 .tl_keymgr_i(keymgr_tl_rsp),
2449
Michael Schaffner9da4db82020-12-21 15:35:24 -08002450 // port: tl_sram_ctrl_main
2451 .tl_sram_ctrl_main_o(sram_ctrl_main_tl_req),
2452 .tl_sram_ctrl_main_i(sram_ctrl_main_tl_rsp),
2453
lowRISC Contributors802543a2019-08-31 12:12:56 +01002454
2455 .scanmode_i
2456 );
Eunchan Kim55d7ae82019-12-19 17:08:35 -08002457 xbar_peri u_xbar_peri (
Timothy Chen8aeeb492021-02-01 21:25:17 -08002458 .clk_peri_i (clkmgr_aon_clocks.clk_io_div4_infra),
2459 .rst_peri_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
Eunchan Kim0f549542020-08-04 10:40:11 -07002460
2461 // port: tl_main
2462 .tl_main_i(main_tl_peri_req),
2463 .tl_main_o(main_tl_peri_rsp),
2464
Timothy Chen2971a1e2021-01-21 16:00:01 -08002465 // port: tl_uart0
2466 .tl_uart0_o(uart0_tl_req),
2467 .tl_uart0_i(uart0_tl_rsp),
2468
2469 // port: tl_uart1
2470 .tl_uart1_o(uart1_tl_req),
2471 .tl_uart1_i(uart1_tl_rsp),
2472
2473 // port: tl_uart2
2474 .tl_uart2_o(uart2_tl_req),
2475 .tl_uart2_i(uart2_tl_rsp),
2476
2477 // port: tl_uart3
2478 .tl_uart3_o(uart3_tl_req),
2479 .tl_uart3_i(uart3_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002480
Timothy Chen469a3032021-02-01 15:44:09 -08002481 // port: tl_i2c0
2482 .tl_i2c0_o(i2c0_tl_req),
2483 .tl_i2c0_i(i2c0_tl_rsp),
2484
2485 // port: tl_i2c1
2486 .tl_i2c1_o(i2c1_tl_req),
2487 .tl_i2c1_i(i2c1_tl_rsp),
2488
2489 // port: tl_i2c2
2490 .tl_i2c2_o(i2c2_tl_req),
2491 .tl_i2c2_i(i2c2_tl_rsp),
2492
2493 // port: tl_pattgen
2494 .tl_pattgen_o(pattgen_tl_req),
2495 .tl_pattgen_i(pattgen_tl_rsp),
2496
Eunchan Kim0f549542020-08-04 10:40:11 -07002497 // port: tl_gpio
2498 .tl_gpio_o(gpio_tl_req),
2499 .tl_gpio_i(gpio_tl_rsp),
2500
2501 // port: tl_spi_device
2502 .tl_spi_device_o(spi_device_tl_req),
2503 .tl_spi_device_i(spi_device_tl_rsp),
2504
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08002505 // port: tl_spi_host0
2506 .tl_spi_host0_o(spi_host0_tl_req),
2507 .tl_spi_host0_i(spi_host0_tl_rsp),
2508
2509 // port: tl_spi_host1
2510 .tl_spi_host1_o(spi_host1_tl_req),
2511 .tl_spi_host1_i(spi_host1_tl_rsp),
2512
Eunchan Kim0f549542020-08-04 10:40:11 -07002513 // port: tl_rv_timer
2514 .tl_rv_timer_o(rv_timer_tl_req),
2515 .tl_rv_timer_i(rv_timer_tl_rsp),
2516
2517 // port: tl_usbdev
2518 .tl_usbdev_o(usbdev_tl_req),
2519 .tl_usbdev_i(usbdev_tl_rsp),
2520
Timothy Chen8aeeb492021-02-01 21:25:17 -08002521 // port: tl_pwrmgr_aon
2522 .tl_pwrmgr_aon_o(pwrmgr_aon_tl_req),
2523 .tl_pwrmgr_aon_i(pwrmgr_aon_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002524
Timothy Chen8aeeb492021-02-01 21:25:17 -08002525 // port: tl_rstmgr_aon
2526 .tl_rstmgr_aon_o(rstmgr_aon_tl_req),
2527 .tl_rstmgr_aon_i(rstmgr_aon_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002528
Timothy Chen8aeeb492021-02-01 21:25:17 -08002529 // port: tl_clkmgr_aon
2530 .tl_clkmgr_aon_o(clkmgr_aon_tl_req),
2531 .tl_clkmgr_aon_i(clkmgr_aon_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002532
Timothy Chen8aeeb492021-02-01 21:25:17 -08002533 // port: tl_pinmux_aon
2534 .tl_pinmux_aon_o(pinmux_aon_tl_req),
2535 .tl_pinmux_aon_i(pinmux_aon_tl_rsp),
2536
Timothy Chen8aeeb492021-02-01 21:25:17 -08002537 // port: tl_ram_ret_aon
2538 .tl_ram_ret_aon_o(ram_ret_aon_tl_req),
2539 .tl_ram_ret_aon_i(ram_ret_aon_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002540
Michael Schaffnera3045602020-10-06 19:19:46 -07002541 // port: tl_otp_ctrl
2542 .tl_otp_ctrl_o(otp_ctrl_tl_req),
2543 .tl_otp_ctrl_i(otp_ctrl_tl_rsp),
2544
Michael Schaffner6d3d6a02020-12-11 13:52:51 -08002545 // port: tl_lc_ctrl
2546 .tl_lc_ctrl_o(lc_ctrl_tl_req),
2547 .tl_lc_ctrl_i(lc_ctrl_tl_rsp),
2548
Timothy Chen8aeeb492021-02-01 21:25:17 -08002549 // port: tl_sensor_ctrl_aon
2550 .tl_sensor_ctrl_aon_o(sensor_ctrl_aon_tl_req),
2551 .tl_sensor_ctrl_aon_i(sensor_ctrl_aon_tl_rsp),
Timothy Chen1555dce2020-08-11 11:26:50 -07002552
Michael Schaffnerd1fc7d12020-12-21 12:52:23 -08002553 // port: tl_alert_handler
2554 .tl_alert_handler_o(alert_handler_tl_req),
2555 .tl_alert_handler_i(alert_handler_tl_rsp),
2556
Timothy Chen8aeeb492021-02-01 21:25:17 -08002557 // port: tl_sram_ctrl_ret_aon
2558 .tl_sram_ctrl_ret_aon_o(sram_ctrl_ret_aon_tl_req),
2559 .tl_sram_ctrl_ret_aon_i(sram_ctrl_ret_aon_tl_rsp),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002560
Timothy Chen2b8ef762021-02-16 14:44:55 -08002561 // port: tl_aon_timer_aon
2562 .tl_aon_timer_aon_o(aon_timer_aon_tl_req),
2563 .tl_aon_timer_aon_i(aon_timer_aon_tl_rsp),
Michael Schaffnerd1fc7d12020-12-21 12:52:23 -08002564
Timothy Chen6f98f352021-03-10 16:27:29 -08002565 // port: tl_adc_ctrl_aon
2566 .tl_adc_ctrl_aon_o(adc_ctrl_aon_tl_req),
2567 .tl_adc_ctrl_aon_i(adc_ctrl_aon_tl_rsp),
2568
Timothy Chenb1966872021-03-01 22:39:01 -08002569 // port: tl_ast
2570 .tl_ast_o(ast_tl_req_o),
2571 .tl_ast_i(ast_tl_rsp_i),
Timothy Chenfb34fe32020-08-26 17:13:19 -07002572
Eunchan Kim55d7ae82019-12-19 17:08:35 -08002573
2574 .scanmode_i
2575 );
lowRISC Contributors802543a2019-08-31 12:12:56 +01002576
Eunchan Kim769065e2019-10-29 17:29:26 -07002577 // Pinmux connections
Michael Schaffner74c4ff22021-03-30 15:43:46 -07002578 // All muxed inputs
2579 assign cio_gpio_gpio_p2d[0] = mio_p2d[MioInGpioGpio0];
2580 assign cio_gpio_gpio_p2d[1] = mio_p2d[MioInGpioGpio1];
2581 assign cio_gpio_gpio_p2d[2] = mio_p2d[MioInGpioGpio2];
2582 assign cio_gpio_gpio_p2d[3] = mio_p2d[MioInGpioGpio3];
2583 assign cio_gpio_gpio_p2d[4] = mio_p2d[MioInGpioGpio4];
2584 assign cio_gpio_gpio_p2d[5] = mio_p2d[MioInGpioGpio5];
2585 assign cio_gpio_gpio_p2d[6] = mio_p2d[MioInGpioGpio6];
2586 assign cio_gpio_gpio_p2d[7] = mio_p2d[MioInGpioGpio7];
2587 assign cio_gpio_gpio_p2d[8] = mio_p2d[MioInGpioGpio8];
2588 assign cio_gpio_gpio_p2d[9] = mio_p2d[MioInGpioGpio9];
2589 assign cio_gpio_gpio_p2d[10] = mio_p2d[MioInGpioGpio10];
2590 assign cio_gpio_gpio_p2d[11] = mio_p2d[MioInGpioGpio11];
2591 assign cio_gpio_gpio_p2d[12] = mio_p2d[MioInGpioGpio12];
2592 assign cio_gpio_gpio_p2d[13] = mio_p2d[MioInGpioGpio13];
2593 assign cio_gpio_gpio_p2d[14] = mio_p2d[MioInGpioGpio14];
2594 assign cio_gpio_gpio_p2d[15] = mio_p2d[MioInGpioGpio15];
2595 assign cio_gpio_gpio_p2d[16] = mio_p2d[MioInGpioGpio16];
2596 assign cio_gpio_gpio_p2d[17] = mio_p2d[MioInGpioGpio17];
2597 assign cio_gpio_gpio_p2d[18] = mio_p2d[MioInGpioGpio18];
2598 assign cio_gpio_gpio_p2d[19] = mio_p2d[MioInGpioGpio19];
2599 assign cio_gpio_gpio_p2d[20] = mio_p2d[MioInGpioGpio20];
2600 assign cio_gpio_gpio_p2d[21] = mio_p2d[MioInGpioGpio21];
2601 assign cio_gpio_gpio_p2d[22] = mio_p2d[MioInGpioGpio22];
2602 assign cio_gpio_gpio_p2d[23] = mio_p2d[MioInGpioGpio23];
2603 assign cio_gpio_gpio_p2d[24] = mio_p2d[MioInGpioGpio24];
2604 assign cio_gpio_gpio_p2d[25] = mio_p2d[MioInGpioGpio25];
2605 assign cio_gpio_gpio_p2d[26] = mio_p2d[MioInGpioGpio26];
2606 assign cio_gpio_gpio_p2d[27] = mio_p2d[MioInGpioGpio27];
2607 assign cio_gpio_gpio_p2d[28] = mio_p2d[MioInGpioGpio28];
2608 assign cio_gpio_gpio_p2d[29] = mio_p2d[MioInGpioGpio29];
2609 assign cio_gpio_gpio_p2d[30] = mio_p2d[MioInGpioGpio30];
2610 assign cio_gpio_gpio_p2d[31] = mio_p2d[MioInGpioGpio31];
2611 assign cio_i2c0_sda_p2d = mio_p2d[MioInI2c0Sda];
2612 assign cio_i2c0_scl_p2d = mio_p2d[MioInI2c0Scl];
2613 assign cio_i2c1_sda_p2d = mio_p2d[MioInI2c1Sda];
2614 assign cio_i2c1_scl_p2d = mio_p2d[MioInI2c1Scl];
2615 assign cio_i2c2_sda_p2d = mio_p2d[MioInI2c2Sda];
2616 assign cio_i2c2_scl_p2d = mio_p2d[MioInI2c2Scl];
2617 assign cio_spi_host1_sd_p2d[0] = mio_p2d[MioInSpiHost1Sd0];
2618 assign cio_spi_host1_sd_p2d[1] = mio_p2d[MioInSpiHost1Sd1];
2619 assign cio_spi_host1_sd_p2d[2] = mio_p2d[MioInSpiHost1Sd2];
2620 assign cio_spi_host1_sd_p2d[3] = mio_p2d[MioInSpiHost1Sd3];
2621 assign cio_uart0_rx_p2d = mio_p2d[MioInUart0Rx];
2622 assign cio_uart1_rx_p2d = mio_p2d[MioInUart1Rx];
2623 assign cio_uart2_rx_p2d = mio_p2d[MioInUart2Rx];
2624 assign cio_uart3_rx_p2d = mio_p2d[MioInUart3Rx];
2625 assign cio_flash_ctrl_tck_p2d = mio_p2d[MioInFlashCtrlTck];
2626 assign cio_flash_ctrl_tms_p2d = mio_p2d[MioInFlashCtrlTms];
2627 assign cio_flash_ctrl_tdi_p2d = mio_p2d[MioInFlashCtrlTdi];
2628 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[0] = mio_p2d[MioInSensorCtrlAonAstDebugIn0];
2629 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[1] = mio_p2d[MioInSensorCtrlAonAstDebugIn1];
2630 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[2] = mio_p2d[MioInSensorCtrlAonAstDebugIn2];
2631 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[3] = mio_p2d[MioInSensorCtrlAonAstDebugIn3];
2632 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[4] = mio_p2d[MioInSensorCtrlAonAstDebugIn4];
2633 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[5] = mio_p2d[MioInSensorCtrlAonAstDebugIn5];
2634 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[6] = mio_p2d[MioInSensorCtrlAonAstDebugIn6];
2635 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[7] = mio_p2d[MioInSensorCtrlAonAstDebugIn7];
2636 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[8] = mio_p2d[MioInSensorCtrlAonAstDebugIn8];
2637 assign cio_sensor_ctrl_aon_ast_debug_in_p2d[9] = mio_p2d[MioInSensorCtrlAonAstDebugIn9];
Eunchan Kim769065e2019-10-29 17:29:26 -07002638
Michael Schaffner74c4ff22021-03-30 15:43:46 -07002639 // All muxed outputs
2640 assign mio_d2p[MioOutGpioGpio0] = cio_gpio_gpio_d2p[0];
2641 assign mio_d2p[MioOutGpioGpio1] = cio_gpio_gpio_d2p[1];
2642 assign mio_d2p[MioOutGpioGpio2] = cio_gpio_gpio_d2p[2];
2643 assign mio_d2p[MioOutGpioGpio3] = cio_gpio_gpio_d2p[3];
2644 assign mio_d2p[MioOutGpioGpio4] = cio_gpio_gpio_d2p[4];
2645 assign mio_d2p[MioOutGpioGpio5] = cio_gpio_gpio_d2p[5];
2646 assign mio_d2p[MioOutGpioGpio6] = cio_gpio_gpio_d2p[6];
2647 assign mio_d2p[MioOutGpioGpio7] = cio_gpio_gpio_d2p[7];
2648 assign mio_d2p[MioOutGpioGpio8] = cio_gpio_gpio_d2p[8];
2649 assign mio_d2p[MioOutGpioGpio9] = cio_gpio_gpio_d2p[9];
2650 assign mio_d2p[MioOutGpioGpio10] = cio_gpio_gpio_d2p[10];
2651 assign mio_d2p[MioOutGpioGpio11] = cio_gpio_gpio_d2p[11];
2652 assign mio_d2p[MioOutGpioGpio12] = cio_gpio_gpio_d2p[12];
2653 assign mio_d2p[MioOutGpioGpio13] = cio_gpio_gpio_d2p[13];
2654 assign mio_d2p[MioOutGpioGpio14] = cio_gpio_gpio_d2p[14];
2655 assign mio_d2p[MioOutGpioGpio15] = cio_gpio_gpio_d2p[15];
2656 assign mio_d2p[MioOutGpioGpio16] = cio_gpio_gpio_d2p[16];
2657 assign mio_d2p[MioOutGpioGpio17] = cio_gpio_gpio_d2p[17];
2658 assign mio_d2p[MioOutGpioGpio18] = cio_gpio_gpio_d2p[18];
2659 assign mio_d2p[MioOutGpioGpio19] = cio_gpio_gpio_d2p[19];
2660 assign mio_d2p[MioOutGpioGpio20] = cio_gpio_gpio_d2p[20];
2661 assign mio_d2p[MioOutGpioGpio21] = cio_gpio_gpio_d2p[21];
2662 assign mio_d2p[MioOutGpioGpio22] = cio_gpio_gpio_d2p[22];
2663 assign mio_d2p[MioOutGpioGpio23] = cio_gpio_gpio_d2p[23];
2664 assign mio_d2p[MioOutGpioGpio24] = cio_gpio_gpio_d2p[24];
2665 assign mio_d2p[MioOutGpioGpio25] = cio_gpio_gpio_d2p[25];
2666 assign mio_d2p[MioOutGpioGpio26] = cio_gpio_gpio_d2p[26];
2667 assign mio_d2p[MioOutGpioGpio27] = cio_gpio_gpio_d2p[27];
2668 assign mio_d2p[MioOutGpioGpio28] = cio_gpio_gpio_d2p[28];
2669 assign mio_d2p[MioOutGpioGpio29] = cio_gpio_gpio_d2p[29];
2670 assign mio_d2p[MioOutGpioGpio30] = cio_gpio_gpio_d2p[30];
2671 assign mio_d2p[MioOutGpioGpio31] = cio_gpio_gpio_d2p[31];
2672 assign mio_d2p[MioOutI2c0Sda] = cio_i2c0_sda_d2p;
2673 assign mio_d2p[MioOutI2c0Scl] = cio_i2c0_scl_d2p;
2674 assign mio_d2p[MioOutI2c1Sda] = cio_i2c1_sda_d2p;
2675 assign mio_d2p[MioOutI2c1Scl] = cio_i2c1_scl_d2p;
2676 assign mio_d2p[MioOutI2c2Sda] = cio_i2c2_sda_d2p;
2677 assign mio_d2p[MioOutI2c2Scl] = cio_i2c2_scl_d2p;
2678 assign mio_d2p[MioOutSpiHost1Sd0] = cio_spi_host1_sd_d2p[0];
2679 assign mio_d2p[MioOutSpiHost1Sd1] = cio_spi_host1_sd_d2p[1];
2680 assign mio_d2p[MioOutSpiHost1Sd2] = cio_spi_host1_sd_d2p[2];
2681 assign mio_d2p[MioOutSpiHost1Sd3] = cio_spi_host1_sd_d2p[3];
2682 assign mio_d2p[MioOutUart0Tx] = cio_uart0_tx_d2p;
2683 assign mio_d2p[MioOutUart1Tx] = cio_uart1_tx_d2p;
2684 assign mio_d2p[MioOutUart2Tx] = cio_uart2_tx_d2p;
2685 assign mio_d2p[MioOutUart3Tx] = cio_uart3_tx_d2p;
2686 assign mio_d2p[MioOutPattgenPda0Tx] = cio_pattgen_pda0_tx_d2p;
2687 assign mio_d2p[MioOutPattgenPcl0Tx] = cio_pattgen_pcl0_tx_d2p;
2688 assign mio_d2p[MioOutPattgenPda1Tx] = cio_pattgen_pda1_tx_d2p;
2689 assign mio_d2p[MioOutPattgenPcl1Tx] = cio_pattgen_pcl1_tx_d2p;
2690 assign mio_d2p[MioOutSpiHost1Sck] = cio_spi_host1_sck_d2p;
2691 assign mio_d2p[MioOutSpiHost1Csb] = cio_spi_host1_csb_d2p;
2692 assign mio_d2p[MioOutFlashCtrlTdo] = cio_flash_ctrl_tdo_d2p;
2693 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut0] = cio_sensor_ctrl_aon_ast_debug_out_d2p[0];
2694 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut1] = cio_sensor_ctrl_aon_ast_debug_out_d2p[1];
2695 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut2] = cio_sensor_ctrl_aon_ast_debug_out_d2p[2];
2696 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut3] = cio_sensor_ctrl_aon_ast_debug_out_d2p[3];
2697 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut4] = cio_sensor_ctrl_aon_ast_debug_out_d2p[4];
2698 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut5] = cio_sensor_ctrl_aon_ast_debug_out_d2p[5];
2699 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut6] = cio_sensor_ctrl_aon_ast_debug_out_d2p[6];
2700 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut7] = cio_sensor_ctrl_aon_ast_debug_out_d2p[7];
2701 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut8] = cio_sensor_ctrl_aon_ast_debug_out_d2p[8];
2702 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut9] = cio_sensor_ctrl_aon_ast_debug_out_d2p[9];
Michael Schaffner920e4cc2020-04-28 22:58:12 -07002703
Michael Schaffner74c4ff22021-03-30 15:43:46 -07002704 // All muxed output enables
2705 assign mio_en_d2p[MioOutGpioGpio0] = cio_gpio_gpio_en_d2p[0];
2706 assign mio_en_d2p[MioOutGpioGpio1] = cio_gpio_gpio_en_d2p[1];
2707 assign mio_en_d2p[MioOutGpioGpio2] = cio_gpio_gpio_en_d2p[2];
2708 assign mio_en_d2p[MioOutGpioGpio3] = cio_gpio_gpio_en_d2p[3];
2709 assign mio_en_d2p[MioOutGpioGpio4] = cio_gpio_gpio_en_d2p[4];
2710 assign mio_en_d2p[MioOutGpioGpio5] = cio_gpio_gpio_en_d2p[5];
2711 assign mio_en_d2p[MioOutGpioGpio6] = cio_gpio_gpio_en_d2p[6];
2712 assign mio_en_d2p[MioOutGpioGpio7] = cio_gpio_gpio_en_d2p[7];
2713 assign mio_en_d2p[MioOutGpioGpio8] = cio_gpio_gpio_en_d2p[8];
2714 assign mio_en_d2p[MioOutGpioGpio9] = cio_gpio_gpio_en_d2p[9];
2715 assign mio_en_d2p[MioOutGpioGpio10] = cio_gpio_gpio_en_d2p[10];
2716 assign mio_en_d2p[MioOutGpioGpio11] = cio_gpio_gpio_en_d2p[11];
2717 assign mio_en_d2p[MioOutGpioGpio12] = cio_gpio_gpio_en_d2p[12];
2718 assign mio_en_d2p[MioOutGpioGpio13] = cio_gpio_gpio_en_d2p[13];
2719 assign mio_en_d2p[MioOutGpioGpio14] = cio_gpio_gpio_en_d2p[14];
2720 assign mio_en_d2p[MioOutGpioGpio15] = cio_gpio_gpio_en_d2p[15];
2721 assign mio_en_d2p[MioOutGpioGpio16] = cio_gpio_gpio_en_d2p[16];
2722 assign mio_en_d2p[MioOutGpioGpio17] = cio_gpio_gpio_en_d2p[17];
2723 assign mio_en_d2p[MioOutGpioGpio18] = cio_gpio_gpio_en_d2p[18];
2724 assign mio_en_d2p[MioOutGpioGpio19] = cio_gpio_gpio_en_d2p[19];
2725 assign mio_en_d2p[MioOutGpioGpio20] = cio_gpio_gpio_en_d2p[20];
2726 assign mio_en_d2p[MioOutGpioGpio21] = cio_gpio_gpio_en_d2p[21];
2727 assign mio_en_d2p[MioOutGpioGpio22] = cio_gpio_gpio_en_d2p[22];
2728 assign mio_en_d2p[MioOutGpioGpio23] = cio_gpio_gpio_en_d2p[23];
2729 assign mio_en_d2p[MioOutGpioGpio24] = cio_gpio_gpio_en_d2p[24];
2730 assign mio_en_d2p[MioOutGpioGpio25] = cio_gpio_gpio_en_d2p[25];
2731 assign mio_en_d2p[MioOutGpioGpio26] = cio_gpio_gpio_en_d2p[26];
2732 assign mio_en_d2p[MioOutGpioGpio27] = cio_gpio_gpio_en_d2p[27];
2733 assign mio_en_d2p[MioOutGpioGpio28] = cio_gpio_gpio_en_d2p[28];
2734 assign mio_en_d2p[MioOutGpioGpio29] = cio_gpio_gpio_en_d2p[29];
2735 assign mio_en_d2p[MioOutGpioGpio30] = cio_gpio_gpio_en_d2p[30];
2736 assign mio_en_d2p[MioOutGpioGpio31] = cio_gpio_gpio_en_d2p[31];
2737 assign mio_en_d2p[MioOutI2c0Sda] = cio_i2c0_sda_en_d2p;
2738 assign mio_en_d2p[MioOutI2c0Scl] = cio_i2c0_scl_en_d2p;
2739 assign mio_en_d2p[MioOutI2c1Sda] = cio_i2c1_sda_en_d2p;
2740 assign mio_en_d2p[MioOutI2c1Scl] = cio_i2c1_scl_en_d2p;
2741 assign mio_en_d2p[MioOutI2c2Sda] = cio_i2c2_sda_en_d2p;
2742 assign mio_en_d2p[MioOutI2c2Scl] = cio_i2c2_scl_en_d2p;
2743 assign mio_en_d2p[MioOutSpiHost1Sd0] = cio_spi_host1_sd_en_d2p[0];
2744 assign mio_en_d2p[MioOutSpiHost1Sd1] = cio_spi_host1_sd_en_d2p[1];
2745 assign mio_en_d2p[MioOutSpiHost1Sd2] = cio_spi_host1_sd_en_d2p[2];
2746 assign mio_en_d2p[MioOutSpiHost1Sd3] = cio_spi_host1_sd_en_d2p[3];
2747 assign mio_en_d2p[MioOutUart0Tx] = cio_uart0_tx_en_d2p;
2748 assign mio_en_d2p[MioOutUart1Tx] = cio_uart1_tx_en_d2p;
2749 assign mio_en_d2p[MioOutUart2Tx] = cio_uart2_tx_en_d2p;
2750 assign mio_en_d2p[MioOutUart3Tx] = cio_uart3_tx_en_d2p;
2751 assign mio_en_d2p[MioOutPattgenPda0Tx] = cio_pattgen_pda0_tx_en_d2p;
2752 assign mio_en_d2p[MioOutPattgenPcl0Tx] = cio_pattgen_pcl0_tx_en_d2p;
2753 assign mio_en_d2p[MioOutPattgenPda1Tx] = cio_pattgen_pda1_tx_en_d2p;
2754 assign mio_en_d2p[MioOutPattgenPcl1Tx] = cio_pattgen_pcl1_tx_en_d2p;
2755 assign mio_en_d2p[MioOutSpiHost1Sck] = cio_spi_host1_sck_en_d2p;
2756 assign mio_en_d2p[MioOutSpiHost1Csb] = cio_spi_host1_csb_en_d2p;
2757 assign mio_en_d2p[MioOutFlashCtrlTdo] = cio_flash_ctrl_tdo_en_d2p;
2758 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut0] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[0];
2759 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut1] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[1];
2760 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut2] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[2];
2761 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut3] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[3];
2762 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut4] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[4];
2763 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut5] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[5];
2764 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut6] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[6];
2765 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut7] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[7];
2766 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut8] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[8];
2767 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut9] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[9];
Michael Schaffner920e4cc2020-04-28 22:58:12 -07002768
Michael Schaffner74c4ff22021-03-30 15:43:46 -07002769 // All dedicated inputs
2770 logic [20:0] unused_dio_p2d;
2771 assign cio_spi_host0_sd_p2d[0] = dio_p2d[DioSpiHost0Sd0];
2772 assign cio_spi_host0_sd_p2d[1] = dio_p2d[DioSpiHost0Sd1];
2773 assign cio_spi_host0_sd_p2d[2] = dio_p2d[DioSpiHost0Sd2];
2774 assign cio_spi_host0_sd_p2d[3] = dio_p2d[DioSpiHost0Sd3];
2775 assign cio_spi_device_sd_p2d[0] = dio_p2d[DioSpiDeviceSd0];
2776 assign cio_spi_device_sd_p2d[1] = dio_p2d[DioSpiDeviceSd1];
2777 assign cio_spi_device_sd_p2d[2] = dio_p2d[DioSpiDeviceSd2];
2778 assign cio_spi_device_sd_p2d[3] = dio_p2d[DioSpiDeviceSd3];
2779 assign cio_usbdev_d_p2d = dio_p2d[DioUsbdevD];
2780 assign cio_usbdev_dp_p2d = dio_p2d[DioUsbdevDp];
2781 assign cio_usbdev_dn_p2d = dio_p2d[DioUsbdevDn];
2782 assign cio_spi_device_sck_p2d = dio_p2d[DioSpiDeviceSck];
2783 assign cio_spi_device_csb_p2d = dio_p2d[DioSpiDeviceCsb];
2784 assign cio_usbdev_sense_p2d = dio_p2d[DioUsbdevSense];
2785 assign unused_dio_p2d[0] = dio_p2d[DioSpiHost0Sck];
2786 assign unused_dio_p2d[1] = dio_p2d[DioSpiHost0Csb];
2787 assign unused_dio_p2d[2] = dio_p2d[DioUsbdevSe0];
2788 assign unused_dio_p2d[3] = dio_p2d[DioUsbdevDpPullup];
2789 assign unused_dio_p2d[4] = dio_p2d[DioUsbdevDnPullup];
2790 assign unused_dio_p2d[5] = dio_p2d[DioUsbdevTxModeSe];
2791 assign unused_dio_p2d[6] = dio_p2d[DioUsbdevSuspend];
2792
2793 // All dedicated outputs
2794 assign dio_d2p[DioSpiHost0Sd0] = cio_spi_host0_sd_d2p[0];
2795 assign dio_d2p[DioSpiHost0Sd1] = cio_spi_host0_sd_d2p[1];
2796 assign dio_d2p[DioSpiHost0Sd2] = cio_spi_host0_sd_d2p[2];
2797 assign dio_d2p[DioSpiHost0Sd3] = cio_spi_host0_sd_d2p[3];
2798 assign dio_d2p[DioSpiDeviceSd0] = cio_spi_device_sd_d2p[0];
2799 assign dio_d2p[DioSpiDeviceSd1] = cio_spi_device_sd_d2p[1];
2800 assign dio_d2p[DioSpiDeviceSd2] = cio_spi_device_sd_d2p[2];
2801 assign dio_d2p[DioSpiDeviceSd3] = cio_spi_device_sd_d2p[3];
2802 assign dio_d2p[DioUsbdevD] = cio_usbdev_d_d2p;
2803 assign dio_d2p[DioUsbdevDp] = cio_usbdev_dp_d2p;
2804 assign dio_d2p[DioUsbdevDn] = cio_usbdev_dn_d2p;
2805 assign dio_d2p[DioSpiDeviceSck] = 1'b0;
2806 assign dio_d2p[DioSpiDeviceCsb] = 1'b0;
2807 assign dio_d2p[DioUsbdevSense] = 1'b0;
2808 assign dio_d2p[DioSpiHost0Sck] = cio_spi_host0_sck_d2p;
2809 assign dio_d2p[DioSpiHost0Csb] = cio_spi_host0_csb_d2p;
2810 assign dio_d2p[DioUsbdevSe0] = cio_usbdev_se0_d2p;
2811 assign dio_d2p[DioUsbdevDpPullup] = cio_usbdev_dp_pullup_d2p;
2812 assign dio_d2p[DioUsbdevDnPullup] = cio_usbdev_dn_pullup_d2p;
2813 assign dio_d2p[DioUsbdevTxModeSe] = cio_usbdev_tx_mode_se_d2p;
2814 assign dio_d2p[DioUsbdevSuspend] = cio_usbdev_suspend_d2p;
2815
2816 // All dedicated output enables
2817 assign dio_en_d2p[DioSpiHost0Sd0] = cio_spi_host0_sd_en_d2p[0];
2818 assign dio_en_d2p[DioSpiHost0Sd1] = cio_spi_host0_sd_en_d2p[1];
2819 assign dio_en_d2p[DioSpiHost0Sd2] = cio_spi_host0_sd_en_d2p[2];
2820 assign dio_en_d2p[DioSpiHost0Sd3] = cio_spi_host0_sd_en_d2p[3];
2821 assign dio_en_d2p[DioSpiDeviceSd0] = cio_spi_device_sd_en_d2p[0];
2822 assign dio_en_d2p[DioSpiDeviceSd1] = cio_spi_device_sd_en_d2p[1];
2823 assign dio_en_d2p[DioSpiDeviceSd2] = cio_spi_device_sd_en_d2p[2];
2824 assign dio_en_d2p[DioSpiDeviceSd3] = cio_spi_device_sd_en_d2p[3];
2825 assign dio_en_d2p[DioUsbdevD] = cio_usbdev_d_en_d2p;
2826 assign dio_en_d2p[DioUsbdevDp] = cio_usbdev_dp_en_d2p;
2827 assign dio_en_d2p[DioUsbdevDn] = cio_usbdev_dn_en_d2p;
2828 assign dio_en_d2p[DioSpiDeviceSck] = 1'b0;
2829 assign dio_en_d2p[DioSpiDeviceCsb] = 1'b0;
2830 assign dio_en_d2p[DioUsbdevSense] = 1'b0;
2831 assign dio_en_d2p[DioSpiHost0Sck] = cio_spi_host0_sck_en_d2p;
2832 assign dio_en_d2p[DioSpiHost0Csb] = cio_spi_host0_csb_en_d2p;
2833 assign dio_en_d2p[DioUsbdevSe0] = cio_usbdev_se0_en_d2p;
2834 assign dio_en_d2p[DioUsbdevDpPullup] = cio_usbdev_dp_pullup_en_d2p;
2835 assign dio_en_d2p[DioUsbdevDnPullup] = cio_usbdev_dn_pullup_en_d2p;
2836 assign dio_en_d2p[DioUsbdevTxModeSe] = cio_usbdev_tx_mode_se_en_d2p;
2837 assign dio_en_d2p[DioUsbdevSuspend] = cio_usbdev_suspend_en_d2p;
2838
Eunchan Kim769065e2019-10-29 17:29:26 -07002839
Nils Graf78607aa2019-09-16 15:47:23 -07002840 // make sure scanmode_i is never X (including during reset)
Eunchan Kim5511bbe2020-08-07 14:04:20 -07002841 `ASSERT_KNOWN(scanmodeKnown, scanmode_i, clk_main_i, 0)
Nils Graf78607aa2019-09-16 15:47:23 -07002842
lowRISC Contributors802543a2019-08-31 12:12:56 +01002843endmodule