blob: 3ed55a9627083dc490113eb4681283000ca1cd33 [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 Chendff0b9d2021-04-22 12:46:14 -070025 parameter bit EntropySrcStub = 0,
Timothy Chen15d98b72021-02-10 20:58:34 -080026 parameter bit SramCtrlMainInstrExec = 1,
Timothy Chen7be15162021-04-21 19:43:31 -070027 parameter bit OtbnStub = 0,
Pirmin Vogel69b55a82020-10-01 09:54:39 +020028 parameter otbn_pkg::regfile_e OtbnRegFile = otbn_pkg::RegFileFF,
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +000029 parameter RomCtrlBootRomInitFile = "",
Pirmin Vogel15e1b912020-09-16 14:43:22 +020030
31 // Manually defined parameters
Pirmin Vogel4eb25022020-08-27 15:27:33 +020032 parameter ibex_pkg::regfile_e IbexRegFile = ibex_pkg::RegFileFF,
Tom Roberts7824ccc2020-11-05 11:34:03 +000033 parameter bit IbexICache = 1,
Timothy Chena6b5a1e2021-04-12 14:20:30 -070034 parameter bit IbexPipeLine = 0,
35 parameter bit SecureIbex = 1
Timothy Chen7ff53122019-09-19 15:20:43 -070036) (
Timothy Chen371c94d2020-06-30 17:18:14 -070037 // Reset, clocks defined as part of intermodule
lowRISC Contributors802543a2019-08-31 12:12:56 +010038 input rst_ni,
39
Eunchan Kim769065e2019-10-29 17:29:26 -070040 // Multiplexed I/O
Michael Schaffner3b1c0302021-04-02 18:01:15 -070041 input [46:0] mio_in_i,
42 output logic [46:0] mio_out_o,
43 output logic [46:0] mio_oe_o,
Eunchan Kim769065e2019-10-29 17:29:26 -070044 // Dedicated I/O
Timothy Chen22c18562021-04-09 14:52:12 -070045 input [23:0] dio_in_i,
46 output logic [23:0] dio_out_o,
47 output logic [23:0] dio_oe_o,
lowRISC Contributors802543a2019-08-31 12:12:56 +010048
Michael Schaffner79eb65f2020-05-01 19:12:47 -070049 // pad attributes to padring
Michael Schaffner74c4ff22021-03-30 15:43:46 -070050 output prim_pad_wrapper_pkg::pad_attr_t [pinmux_reg_pkg::NMioPads-1:0] mio_attr_o,
51 output prim_pad_wrapper_pkg::pad_attr_t [pinmux_reg_pkg::NDioPads-1:0] dio_attr_o,
Michael Schaffner79eb65f2020-05-01 19:12:47 -070052
Timothy Chen371c94d2020-06-30 17:18:14 -070053
54 // Inter-module Signal External type
Timothy Chen6f98f352021-03-10 16:27:29 -080055 output ast_pkg::adc_ast_req_t adc_req_o,
56 input ast_pkg::adc_ast_rsp_t adc_rsp_i,
Timothy Chen685d6492021-03-09 21:28:39 -080057 input edn_pkg::edn_req_t ast_edn_req_i,
58 output edn_pkg::edn_rsp_t ast_edn_rsp_o,
59 output lc_ctrl_pkg::lc_tx_t ast_lc_dft_en_o,
60 input prim_ram_1p_pkg::ram_1p_cfg_t ram_1p_cfg_i,
61 input prim_ram_2p_pkg::ram_2p_cfg_t ram_2p_cfg_i,
62 input prim_rom_pkg::rom_cfg_t rom_cfg_i,
Eunchan Kim5511bbe2020-08-07 14:04:20 -070063 input logic clk_main_i,
64 input logic clk_io_i,
65 input logic clk_usb_i,
66 input logic clk_aon_i,
Timothy Chene38c4702021-02-08 18:38:03 -080067 output logic clk_main_jitter_en_o,
Timothy Chenfa60a602021-03-23 14:29:40 -070068 output lc_ctrl_pkg::lc_tx_t ast_clk_byp_req_o,
69 input lc_ctrl_pkg::lc_tx_t ast_clk_byp_ack_i,
Timothy Chen800136d2021-04-29 14:56:19 -070070 output ast_pkg::ast_dif_t flash_alert_o,
Timothy Chend39fd392021-01-15 21:29:36 -080071 input lc_ctrl_pkg::lc_tx_t flash_bist_enable_i,
Timothy Chen2422a6c2020-11-19 16:06:14 -080072 input logic flash_power_down_h_i,
73 input logic flash_power_ready_h_i,
Timothy Chenea59ad32021-02-03 17:51:38 -080074 output entropy_src_pkg::entropy_src_rng_req_t es_rng_req_o,
75 input entropy_src_pkg::entropy_src_rng_rsp_t es_rng_rsp_i,
Timothy Chen5270b7c2021-03-17 17:38:30 -070076 output logic es_rng_fips_o,
Timothy Chen685d6492021-03-09 21:28:39 -080077 output tlul_pkg::tl_h2d_t ast_tl_req_o,
78 input tlul_pkg::tl_d2h_t ast_tl_rsp_i,
79 output pinmux_pkg::dft_strap_test_req_t dft_strap_test_o,
Timothy Chen1b5f81b2021-04-28 14:44:48 -070080 input logic dft_hold_tap_sel_i,
Timothy Chen685d6492021-03-09 21:28:39 -080081 output pwrmgr_pkg::pwr_ast_req_t pwrmgr_ast_req_o,
82 input pwrmgr_pkg::pwr_ast_rsp_t pwrmgr_ast_rsp_i,
83 output otp_ctrl_pkg::otp_ast_req_t otp_ctrl_otp_ast_pwr_seq_o,
84 input otp_ctrl_pkg::otp_ast_rsp_t otp_ctrl_otp_ast_pwr_seq_h_i,
Timothy Chen800136d2021-04-29 14:56:19 -070085 output ast_pkg::ast_dif_t otp_alert_o,
Timothy Chen685d6492021-03-09 21:28:39 -080086 input ast_pkg::ast_alert_req_t sensor_ctrl_ast_alert_req_i,
87 output ast_pkg::ast_alert_rsp_t sensor_ctrl_ast_alert_rsp_o,
88 input ast_pkg::ast_status_t sensor_ctrl_ast_status_i,
Timothy Chen0249a3a2021-04-15 11:26:31 -070089 input logic [8:0] ast2pinmux_i,
Timothy Chen800136d2021-04-29 14:56:19 -070090 input logic ast_init_done_i,
Timothy Chen685d6492021-03-09 21:28:39 -080091 output logic usbdev_usb_ref_val_o,
92 output logic usbdev_usb_ref_pulse_o,
Timothy Chen437fd9a2020-08-26 12:48:40 -070093 output clkmgr_pkg::clkmgr_ast_out_t clks_ast_o,
94 output rstmgr_pkg::rstmgr_ast_out_t rsts_ast_o,
Timothy Chen5270b7c2021-03-17 17:38:30 -070095
96 // Flash specific voltages
Michael Schaffner6c5f7a72021-04-09 11:51:10 -070097 inout [1:0] flash_test_mode_a_io,
Timothy Chen5270b7c2021-03-17 17:38:30 -070098 inout flash_test_voltage_h_io,
99
Michael Schaffnerd13f4422021-04-20 10:27:48 -0700100 // OTP specific voltages
101 inout otp_ext_voltage_h_io,
102
Timothy Chene38c4702021-02-08 18:38:03 -0800103 input scan_rst_ni, // reset used for test mode
104 input scan_en_i,
Michael Schaffner8bf4fe62021-02-18 12:56:08 -0800105 input lc_ctrl_pkg::lc_tx_t scanmode_i // lc_ctrl_pkg::On for Scan
lowRISC Contributors802543a2019-08-31 12:12:56 +0100106);
107
Philipp Wagner086b7032019-10-25 17:06:15 +0100108 // JTAG IDCODE for development versions of this code.
109 // Manufacturers of OpenTitan chips must replace this code with one of their
110 // own IDs.
111 // Field structure as defined in the IEEE 1149.1 (JTAG) specification,
112 // section 12.1.1.
Michael Schaffnerd4d5d2f2020-04-17 15:45:55 -0700113 localparam logic [31:0] JTAG_IDCODE = {
Philipp Wagner086b7032019-10-25 17:06:15 +0100114 4'h0, // Version
115 16'h4F54, // Part Number: "OT"
Philipp Wagnerf57964e2019-11-04 17:57:06 +0000116 11'h426, // Manufacturer Identity: Google
Philipp Wagner086b7032019-10-25 17:06:15 +0100117 1'b1 // (fixed)
118 };
119
lowRISC Contributors802543a2019-08-31 12:12:56 +0100120 import tlul_pkg::*;
121 import top_pkg::*;
122 import tl_main_pkg::*;
Michael Schaffner74c4ff22021-03-30 15:43:46 -0700123 import top_earlgrey_pkg::*;
Michael Schaffner40b6bd22020-10-27 19:52:23 -0700124 // Compile-time random constants
125 import top_earlgrey_rnd_cnst_pkg::*;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100126
Eunchan Kim769065e2019-10-29 17:29:26 -0700127 // Signals
Timothy Chen6925c6f2021-04-09 17:19:27 -0700128 logic [54:0] mio_p2d;
Timothy Chen0249a3a2021-04-15 11:26:31 -0700129 logic [71:0] mio_d2p;
130 logic [71:0] mio_en_d2p;
Timothy Chen22c18562021-04-09 14:52:12 -0700131 logic [23:0] dio_p2d;
132 logic [23:0] dio_d2p;
133 logic [23:0] dio_en_d2p;
Timothy Chen2971a1e2021-01-21 16:00:01 -0800134 // uart0
135 logic cio_uart0_rx_p2d;
136 logic cio_uart0_tx_d2p;
137 logic cio_uart0_tx_en_d2p;
138 // uart1
139 logic cio_uart1_rx_p2d;
140 logic cio_uart1_tx_d2p;
141 logic cio_uart1_tx_en_d2p;
142 // uart2
143 logic cio_uart2_rx_p2d;
144 logic cio_uart2_tx_d2p;
145 logic cio_uart2_tx_en_d2p;
146 // uart3
147 logic cio_uart3_rx_p2d;
148 logic cio_uart3_tx_d2p;
149 logic cio_uart3_tx_en_d2p;
Eunchan Kim769065e2019-10-29 17:29:26 -0700150 // gpio
151 logic [31:0] cio_gpio_gpio_p2d;
152 logic [31:0] cio_gpio_gpio_d2p;
153 logic [31:0] cio_gpio_gpio_en_d2p;
154 // spi_device
155 logic cio_spi_device_sck_p2d;
156 logic cio_spi_device_csb_p2d;
Michael Schaffnerdbd087e2021-02-12 17:58:30 -0800157 logic [3:0] cio_spi_device_sd_p2d;
158 logic [3:0] cio_spi_device_sd_d2p;
159 logic [3:0] cio_spi_device_sd_en_d2p;
160 // spi_host0
161 logic [3:0] cio_spi_host0_sd_p2d;
162 logic cio_spi_host0_sck_d2p;
163 logic cio_spi_host0_sck_en_d2p;
164 logic cio_spi_host0_csb_d2p;
165 logic cio_spi_host0_csb_en_d2p;
166 logic [3:0] cio_spi_host0_sd_d2p;
167 logic [3:0] cio_spi_host0_sd_en_d2p;
168 // spi_host1
169 logic [3:0] cio_spi_host1_sd_p2d;
170 logic cio_spi_host1_sck_d2p;
171 logic cio_spi_host1_sck_en_d2p;
172 logic cio_spi_host1_csb_d2p;
173 logic cio_spi_host1_csb_en_d2p;
174 logic [3:0] cio_spi_host1_sd_d2p;
175 logic [3:0] cio_spi_host1_sd_en_d2p;
Timothy Chen469a3032021-02-01 15:44:09 -0800176 // i2c0
177 logic cio_i2c0_sda_p2d;
178 logic cio_i2c0_scl_p2d;
179 logic cio_i2c0_sda_d2p;
180 logic cio_i2c0_sda_en_d2p;
181 logic cio_i2c0_scl_d2p;
182 logic cio_i2c0_scl_en_d2p;
183 // i2c1
184 logic cio_i2c1_sda_p2d;
185 logic cio_i2c1_scl_p2d;
186 logic cio_i2c1_sda_d2p;
187 logic cio_i2c1_sda_en_d2p;
188 logic cio_i2c1_scl_d2p;
189 logic cio_i2c1_scl_en_d2p;
190 // i2c2
191 logic cio_i2c2_sda_p2d;
192 logic cio_i2c2_scl_p2d;
193 logic cio_i2c2_sda_d2p;
194 logic cio_i2c2_sda_en_d2p;
195 logic cio_i2c2_scl_d2p;
196 logic cio_i2c2_scl_en_d2p;
197 // pattgen
198 logic cio_pattgen_pda0_tx_d2p;
199 logic cio_pattgen_pda0_tx_en_d2p;
200 logic cio_pattgen_pcl0_tx_d2p;
201 logic cio_pattgen_pcl0_tx_en_d2p;
202 logic cio_pattgen_pda1_tx_d2p;
203 logic cio_pattgen_pda1_tx_en_d2p;
204 logic cio_pattgen_pcl1_tx_d2p;
205 logic cio_pattgen_pcl1_tx_en_d2p;
Eunchan Kim769065e2019-10-29 17:29:26 -0700206 // rv_timer
Pirmin Vogelea91b302020-01-14 18:53:01 +0000207 // usbdev
208 logic cio_usbdev_sense_p2d;
Pirmin Vogelb054fc02020-03-11 11:23:03 +0100209 logic cio_usbdev_d_p2d;
Pirmin Vogelea91b302020-01-14 18:53:01 +0000210 logic cio_usbdev_dp_p2d;
211 logic cio_usbdev_dn_p2d;
Pirmin Vogelb054fc02020-03-11 11:23:03 +0100212 logic cio_usbdev_se0_d2p;
213 logic cio_usbdev_se0_en_d2p;
Pirmin Vogelfe6863b2020-05-11 17:30:54 +0200214 logic cio_usbdev_dp_pullup_d2p;
215 logic cio_usbdev_dp_pullup_en_d2p;
216 logic cio_usbdev_dn_pullup_d2p;
217 logic cio_usbdev_dn_pullup_en_d2p;
Pirmin Vogelb054fc02020-03-11 11:23:03 +0100218 logic cio_usbdev_tx_mode_se_d2p;
219 logic cio_usbdev_tx_mode_se_en_d2p;
220 logic cio_usbdev_suspend_d2p;
221 logic cio_usbdev_suspend_en_d2p;
Timothy Chen22c18562021-04-09 14:52:12 -0700222 logic cio_usbdev_rx_enable_d2p;
223 logic cio_usbdev_rx_enable_en_d2p;
Pirmin Vogelb054fc02020-03-11 11:23:03 +0100224 logic cio_usbdev_d_d2p;
225 logic cio_usbdev_d_en_d2p;
Pirmin Vogelea91b302020-01-14 18:53:01 +0000226 logic cio_usbdev_dp_d2p;
227 logic cio_usbdev_dp_en_d2p;
228 logic cio_usbdev_dn_d2p;
229 logic cio_usbdev_dn_en_d2p;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800230 // otp_ctrl
231 // lc_ctrl
232 // alert_handler
Timothy Chen8aeeb492021-02-01 21:25:17 -0800233 // pwrmgr_aon
234 // rstmgr_aon
235 // clkmgr_aon
Michael Schaffnere029a682021-04-06 16:21:30 -0700236 // sysrst_ctrl_aon
237 logic cio_sysrst_ctrl_aon_ac_present_p2d;
238 logic cio_sysrst_ctrl_aon_ec_rst_in_l_p2d;
239 logic cio_sysrst_ctrl_aon_key0_in_p2d;
240 logic cio_sysrst_ctrl_aon_key1_in_p2d;
241 logic cio_sysrst_ctrl_aon_key2_in_p2d;
242 logic cio_sysrst_ctrl_aon_pwrb_in_p2d;
243 logic cio_sysrst_ctrl_aon_bat_disable_d2p;
244 logic cio_sysrst_ctrl_aon_bat_disable_en_d2p;
245 logic cio_sysrst_ctrl_aon_ec_rst_out_l_d2p;
246 logic cio_sysrst_ctrl_aon_ec_rst_out_l_en_d2p;
247 logic cio_sysrst_ctrl_aon_key0_out_d2p;
248 logic cio_sysrst_ctrl_aon_key0_out_en_d2p;
249 logic cio_sysrst_ctrl_aon_key1_out_d2p;
250 logic cio_sysrst_ctrl_aon_key1_out_en_d2p;
251 logic cio_sysrst_ctrl_aon_key2_out_d2p;
252 logic cio_sysrst_ctrl_aon_key2_out_en_d2p;
253 logic cio_sysrst_ctrl_aon_pwrb_out_d2p;
254 logic cio_sysrst_ctrl_aon_pwrb_out_en_d2p;
Timothy Chen6f98f352021-03-10 16:27:29 -0800255 // adc_ctrl_aon
Martin Lueker-Boden0d63fe02021-03-10 17:30:37 -0800256 // pwm_aon
257 logic [5:0] cio_pwm_aon_pwm_d2p;
258 logic [5:0] cio_pwm_aon_pwm_en_d2p;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800259 // pinmux_aon
Timothy Chen2b8ef762021-02-16 14:44:55 -0800260 // aon_timer_aon
Timothy Chen8aeeb492021-02-01 21:25:17 -0800261 // sensor_ctrl_aon
Timothy Chen0249a3a2021-04-15 11:26:31 -0700262 logic [8:0] cio_sensor_ctrl_aon_ast_debug_out_d2p;
263 logic [8:0] cio_sensor_ctrl_aon_ast_debug_out_en_d2p;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800264 // sram_ctrl_ret_aon
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -0800265 // flash_ctrl
Timothy Chen6a34b6e2021-02-22 11:33:11 -0800266 logic cio_flash_ctrl_tck_p2d;
267 logic cio_flash_ctrl_tms_p2d;
268 logic cio_flash_ctrl_tdi_p2d;
269 logic cio_flash_ctrl_tdo_d2p;
270 logic cio_flash_ctrl_tdo_en_d2p;
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -0800271 // rv_plic
272 // aes
273 // hmac
274 // kmac
Timothy Chen94953722020-09-18 16:15:12 -0700275 // keymgr
Mark Branstadff807362020-11-16 07:56:15 -0800276 // csrng
277 // entropy_src
278 // edn0
279 // edn1
Michael Schaffner9da4db82020-12-21 15:35:24 -0800280 // sram_ctrl_main
Philipp Wagnera4a9e402020-06-22 12:06:56 +0100281 // otbn
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +0000282 // rom_ctrl
Eunchan Kim769065e2019-10-29 17:29:26 -0700283
284
Mark Branstad33236362021-05-12 14:37:41 -0700285 logic [179:0] intr_vector;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100286 // Interrupt source list
Timothy Chen2971a1e2021-01-21 16:00:01 -0800287 logic intr_uart0_tx_watermark;
288 logic intr_uart0_rx_watermark;
289 logic intr_uart0_tx_empty;
290 logic intr_uart0_rx_overflow;
291 logic intr_uart0_rx_frame_err;
292 logic intr_uart0_rx_break_err;
293 logic intr_uart0_rx_timeout;
294 logic intr_uart0_rx_parity_err;
295 logic intr_uart1_tx_watermark;
296 logic intr_uart1_rx_watermark;
297 logic intr_uart1_tx_empty;
298 logic intr_uart1_rx_overflow;
299 logic intr_uart1_rx_frame_err;
300 logic intr_uart1_rx_break_err;
301 logic intr_uart1_rx_timeout;
302 logic intr_uart1_rx_parity_err;
303 logic intr_uart2_tx_watermark;
304 logic intr_uart2_rx_watermark;
305 logic intr_uart2_tx_empty;
306 logic intr_uart2_rx_overflow;
307 logic intr_uart2_rx_frame_err;
308 logic intr_uart2_rx_break_err;
309 logic intr_uart2_rx_timeout;
310 logic intr_uart2_rx_parity_err;
311 logic intr_uart3_tx_watermark;
312 logic intr_uart3_rx_watermark;
313 logic intr_uart3_tx_empty;
314 logic intr_uart3_rx_overflow;
315 logic intr_uart3_rx_frame_err;
316 logic intr_uart3_rx_break_err;
317 logic intr_uart3_rx_timeout;
318 logic intr_uart3_rx_parity_err;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100319 logic [31:0] intr_gpio_gpio;
Eunchan Kim8c57fe32019-09-02 21:14:24 -0700320 logic intr_spi_device_rxf;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100321 logic intr_spi_device_rxlvl;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100322 logic intr_spi_device_txlvl;
323 logic intr_spi_device_rxerr;
Eunchan Kim546c0d42019-09-24 15:07:06 -0700324 logic intr_spi_device_rxoverflow;
325 logic intr_spi_device_txunderflow;
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -0800326 logic intr_spi_host0_error;
327 logic intr_spi_host0_spi_event;
328 logic intr_spi_host1_error;
329 logic intr_spi_host1_spi_event;
Timothy Chen469a3032021-02-01 15:44:09 -0800330 logic intr_i2c0_fmt_watermark;
331 logic intr_i2c0_rx_watermark;
332 logic intr_i2c0_fmt_overflow;
333 logic intr_i2c0_rx_overflow;
334 logic intr_i2c0_nak;
335 logic intr_i2c0_scl_interference;
336 logic intr_i2c0_sda_interference;
337 logic intr_i2c0_stretch_timeout;
338 logic intr_i2c0_sda_unstable;
339 logic intr_i2c0_trans_complete;
340 logic intr_i2c0_tx_empty;
341 logic intr_i2c0_tx_nonempty;
342 logic intr_i2c0_tx_overflow;
343 logic intr_i2c0_acq_overflow;
344 logic intr_i2c0_ack_stop;
345 logic intr_i2c0_host_timeout;
346 logic intr_i2c1_fmt_watermark;
347 logic intr_i2c1_rx_watermark;
348 logic intr_i2c1_fmt_overflow;
349 logic intr_i2c1_rx_overflow;
350 logic intr_i2c1_nak;
351 logic intr_i2c1_scl_interference;
352 logic intr_i2c1_sda_interference;
353 logic intr_i2c1_stretch_timeout;
354 logic intr_i2c1_sda_unstable;
355 logic intr_i2c1_trans_complete;
356 logic intr_i2c1_tx_empty;
357 logic intr_i2c1_tx_nonempty;
358 logic intr_i2c1_tx_overflow;
359 logic intr_i2c1_acq_overflow;
360 logic intr_i2c1_ack_stop;
361 logic intr_i2c1_host_timeout;
362 logic intr_i2c2_fmt_watermark;
363 logic intr_i2c2_rx_watermark;
364 logic intr_i2c2_fmt_overflow;
365 logic intr_i2c2_rx_overflow;
366 logic intr_i2c2_nak;
367 logic intr_i2c2_scl_interference;
368 logic intr_i2c2_sda_interference;
369 logic intr_i2c2_stretch_timeout;
370 logic intr_i2c2_sda_unstable;
371 logic intr_i2c2_trans_complete;
372 logic intr_i2c2_tx_empty;
373 logic intr_i2c2_tx_nonempty;
374 logic intr_i2c2_tx_overflow;
375 logic intr_i2c2_acq_overflow;
376 logic intr_i2c2_ack_stop;
377 logic intr_i2c2_host_timeout;
378 logic intr_pattgen_done_ch0;
379 logic intr_pattgen_done_ch1;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100380 logic intr_rv_timer_timer_expired_0_0;
Pirmin Vogelea91b302020-01-14 18:53:01 +0000381 logic intr_usbdev_pkt_received;
382 logic intr_usbdev_pkt_sent;
383 logic intr_usbdev_disconnected;
384 logic intr_usbdev_host_lost;
385 logic intr_usbdev_link_reset;
386 logic intr_usbdev_link_suspend;
387 logic intr_usbdev_link_resume;
388 logic intr_usbdev_av_empty;
389 logic intr_usbdev_rx_full;
390 logic intr_usbdev_av_overflow;
391 logic intr_usbdev_link_in_err;
392 logic intr_usbdev_rx_crc_err;
393 logic intr_usbdev_rx_pid_err;
394 logic intr_usbdev_rx_bitstuff_err;
395 logic intr_usbdev_frame;
396 logic intr_usbdev_connected;
Stefan Lippuner207b1a62020-11-10 09:25:53 +0100397 logic intr_usbdev_link_out_err;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800398 logic intr_otp_ctrl_otp_operation_done;
399 logic intr_otp_ctrl_otp_error;
400 logic intr_alert_handler_classa;
401 logic intr_alert_handler_classb;
402 logic intr_alert_handler_classc;
403 logic intr_alert_handler_classd;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800404 logic intr_pwrmgr_aon_wakeup;
Michael Schaffnere029a682021-04-06 16:21:30 -0700405 logic intr_sysrst_ctrl_aon_sysrst_ctrl;
Timothy Chen6f98f352021-03-10 16:27:29 -0800406 logic intr_adc_ctrl_aon_debug_cable;
Timothy Chen2b8ef762021-02-16 14:44:55 -0800407 logic intr_aon_timer_aon_wkup_timer_expired;
408 logic intr_aon_timer_aon_wdog_timer_bark;
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -0800409 logic intr_flash_ctrl_prog_empty;
410 logic intr_flash_ctrl_prog_lvl;
411 logic intr_flash_ctrl_rd_full;
412 logic intr_flash_ctrl_rd_lvl;
413 logic intr_flash_ctrl_op_done;
Timothy Chenaad796e2021-03-24 17:21:33 -0700414 logic intr_flash_ctrl_err;
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -0800415 logic intr_hmac_hmac_done;
416 logic intr_hmac_fifo_empty;
417 logic intr_hmac_hmac_err;
418 logic intr_kmac_kmac_done;
419 logic intr_kmac_fifo_empty;
420 logic intr_kmac_kmac_err;
Timothy Chen94953722020-09-18 16:15:12 -0700421 logic intr_keymgr_op_done;
Mark Branstadff807362020-11-16 07:56:15 -0800422 logic intr_csrng_cs_cmd_req_done;
423 logic intr_csrng_cs_entropy_req;
424 logic intr_csrng_cs_hw_inst_exc;
Mark Branstadd65d1392021-02-10 13:15:39 -0800425 logic intr_csrng_cs_fatal_err;
Mark Branstadff807362020-11-16 07:56:15 -0800426 logic intr_entropy_src_es_entropy_valid;
427 logic intr_entropy_src_es_health_test_failed;
Mark Branstad33236362021-05-12 14:37:41 -0700428 logic intr_entropy_src_es_observe_fifo_ready;
Mark Branstad789ea022021-02-12 14:35:42 -0800429 logic intr_entropy_src_es_fatal_err;
Mark Branstadff807362020-11-16 07:56:15 -0800430 logic intr_edn0_edn_cmd_req_done;
Mark Branstad1e7fa2e2021-02-18 08:41:37 -0800431 logic intr_edn0_edn_fatal_err;
Mark Branstadff807362020-11-16 07:56:15 -0800432 logic intr_edn1_edn_cmd_req_done;
Mark Branstad1e7fa2e2021-02-18 08:41:37 -0800433 logic intr_edn1_edn_fatal_err;
Philipp Wagnera4a9e402020-06-22 12:06:56 +0100434 logic intr_otbn_done;
Michael Schaffner666dde12019-10-25 11:57:54 -0700435
lowRISC Contributors802543a2019-08-31 12:12:56 +0100436
Michael Schaffnerd4d5d2f2020-04-17 15:45:55 -0700437
Michael Schaffner1ba89b82019-11-03 14:25:54 -0800438 logic [0:0] irq_plic;
439 logic [0:0] msip;
Timothy Chen469a3032021-02-01 15:44:09 -0800440 logic [7:0] irq_id[1];
441 logic [7:0] unused_irq_id[1];
lowRISC Contributors802543a2019-08-31 12:12:56 +0100442
Michael Schaffner1ba89b82019-11-03 14:25:54 -0800443 // this avoids lint errors
444 assign unused_irq_id = irq_id;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100445
Michael Schaffner666dde12019-10-25 11:57:54 -0700446 // Alert list
Philipp Wagner79725e12020-03-03 23:34:38 +0000447 prim_alert_pkg::alert_tx_t [alert_pkg::NAlerts-1:0] alert_tx;
448 prim_alert_pkg::alert_rx_t [alert_pkg::NAlerts-1:0] alert_rx;
Michael Schaffner666dde12019-10-25 11:57:54 -0700449
450
Eunchan Kim40098a92020-04-17 12:22:36 -0700451 // define inter-module signals
Timothy Chen685d6492021-03-09 21:28:39 -0800452 prim_ram_1p_pkg::ram_1p_cfg_t ast_ram_1p_cfg;
453 prim_ram_2p_pkg::ram_2p_cfg_t ast_ram_2p_cfg;
454 prim_rom_pkg::rom_cfg_t ast_rom_cfg;
Timothy Chenccf343d2020-12-04 20:38:15 -0800455 alert_pkg::alert_crashdump_t alert_handler_crashdump;
Timothy Chenc0d32d92020-12-16 18:01:22 -0800456 prim_esc_pkg::esc_rx_t [3:0] alert_handler_esc_rx;
457 prim_esc_pkg::esc_tx_t [3:0] alert_handler_esc_tx;
Mark Branstadff807362020-11-16 07:56:15 -0800458 csrng_pkg::csrng_req_t [1:0] csrng_csrng_cmd_req;
459 csrng_pkg::csrng_rsp_t [1:0] csrng_csrng_cmd_rsp;
Timothy Chenccf343d2020-12-04 20:38:15 -0800460 entropy_src_pkg::entropy_src_hw_if_req_t csrng_entropy_src_hw_if_req;
461 entropy_src_pkg::entropy_src_hw_if_rsp_t csrng_entropy_src_hw_if_rsp;
Mark Branstadde7eba32021-03-22 14:18:38 -0700462 entropy_src_pkg::cs_aes_halt_req_t csrng_cs_aes_halt_req;
463 entropy_src_pkg::cs_aes_halt_rsp_t csrng_cs_aes_halt_rsp;
Eunchan Kim40098a92020-04-17 12:22:36 -0700464 flash_ctrl_pkg::flash_req_t flash_ctrl_flash_req;
465 flash_ctrl_pkg::flash_rsp_t flash_ctrl_flash_rsp;
Timothy Chenccf343d2020-12-04 20:38:15 -0800466 flash_ctrl_pkg::keymgr_flash_t flash_ctrl_keymgr;
467 otp_ctrl_pkg::flash_otp_key_req_t flash_ctrl_otp_req;
468 otp_ctrl_pkg::flash_otp_key_rsp_t flash_ctrl_otp_rsp;
Timothy Chen3cb138f2020-12-15 20:35:03 -0800469 lc_ctrl_pkg::lc_tx_t flash_ctrl_rma_req;
470 lc_ctrl_pkg::lc_tx_t flash_ctrl_rma_ack;
471 lc_ctrl_pkg::lc_flash_rma_seed_t flash_ctrl_rma_seed;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800472 sram_ctrl_pkg::sram_scr_req_t sram_ctrl_main_sram_scr_req;
473 sram_ctrl_pkg::sram_scr_rsp_t sram_ctrl_main_sram_scr_rsp;
Timothy Chen95d23d92021-03-11 17:44:59 -0800474 sram_ctrl_pkg::sram_scr_init_req_t sram_ctrl_main_sram_scr_init_req;
475 sram_ctrl_pkg::sram_scr_init_rsp_t sram_ctrl_main_sram_scr_init_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800476 sram_ctrl_pkg::sram_scr_req_t sram_ctrl_ret_aon_sram_scr_req;
477 sram_ctrl_pkg::sram_scr_rsp_t sram_ctrl_ret_aon_sram_scr_rsp;
Timothy Chen95d23d92021-03-11 17:44:59 -0800478 sram_ctrl_pkg::sram_scr_init_req_t sram_ctrl_ret_aon_sram_scr_init_req;
479 sram_ctrl_pkg::sram_scr_init_rsp_t sram_ctrl_ret_aon_sram_scr_init_rsp;
Timothy Chen15d98b72021-02-10 20:58:34 -0800480 tlul_pkg::tl_instr_en_t sram_ctrl_main_en_ifetch;
481 tlul_pkg::tl_instr_en_t sram_ctrl_ret_aon_en_ifetch;
Timothy Chen12cce142021-03-02 18:11:01 -0800482 logic ram_main_intg_error;
483 logic ram_ret_aon_intg_error;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800484 otp_ctrl_pkg::sram_otp_key_req_t [1:0] otp_ctrl_sram_otp_key_req;
485 otp_ctrl_pkg::sram_otp_key_rsp_t [1:0] otp_ctrl_sram_otp_key_rsp;
Timothy Chen6efde1e2021-04-16 15:39:23 -0700486 pwrmgr_pkg::pwr_flash_t pwrmgr_aon_pwr_flash;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800487 pwrmgr_pkg::pwr_rst_req_t pwrmgr_aon_pwr_rst_req;
488 pwrmgr_pkg::pwr_rst_rsp_t pwrmgr_aon_pwr_rst_rsp;
489 pwrmgr_pkg::pwr_clk_req_t pwrmgr_aon_pwr_clk_req;
490 pwrmgr_pkg::pwr_clk_rsp_t pwrmgr_aon_pwr_clk_rsp;
491 pwrmgr_pkg::pwr_otp_req_t pwrmgr_aon_pwr_otp_req;
492 pwrmgr_pkg::pwr_otp_rsp_t pwrmgr_aon_pwr_otp_rsp;
493 pwrmgr_pkg::pwr_lc_req_t pwrmgr_aon_pwr_lc_req;
494 pwrmgr_pkg::pwr_lc_rsp_t pwrmgr_aon_pwr_lc_rsp;
Timothy Chen383afb82021-02-23 13:18:53 -0800495 logic pwrmgr_aon_strap;
496 logic pwrmgr_aon_low_power;
Timothy Chenb2abc982021-04-20 10:56:23 -0700497 rom_ctrl_pkg::pwrmgr_data_t rom_ctrl_pwrmgr_data;
Timothy Chenf625b0d2021-04-20 17:54:24 -0700498 rom_ctrl_pkg::keymgr_data_t rom_ctrl_keymgr_data;
Tom Robertsc88e97f2021-03-04 13:38:20 +0000499 ibex_pkg::crash_dump_t rv_core_ibex_crash_dump;
Timothy Chenc2b279a2021-01-14 18:53:34 -0800500 logic usbdev_usb_out_of_rst;
501 logic usbdev_usb_aon_wake_en;
502 logic usbdev_usb_aon_wake_ack;
503 logic usbdev_usb_suspend;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800504 usbdev_pkg::awk_state_t pinmux_aon_usb_state_debug;
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +0000505 edn_pkg::edn_req_t [6:0] edn0_edn_req;
506 edn_pkg::edn_rsp_t [6:0] edn0_edn_rsp;
507 edn_pkg::edn_req_t [6:0] edn1_edn_req;
508 edn_pkg::edn_rsp_t [6:0] edn1_edn_rsp;
Timothy Chen77cc8b92020-12-05 09:19:14 -0800509 otp_ctrl_pkg::otp_keymgr_key_t otp_ctrl_otp_keymgr_key;
Eunchan Kime5d33b72020-11-03 14:34:16 -0800510 keymgr_pkg::hw_key_req_t keymgr_kmac_key;
Eunchan Kim4af433f2021-03-25 17:11:41 -0700511 kmac_pkg::app_req_t [2:0] kmac_app_req;
512 kmac_pkg::app_rsp_t [2:0] kmac_app_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800513 logic [3:0] clkmgr_aon_idle;
Michael Schaffnera7063802021-02-18 18:06:03 -0800514 jtag_pkg::jtag_req_t pinmux_aon_lc_jtag_req;
515 jtag_pkg::jtag_rsp_t pinmux_aon_lc_jtag_rsp;
Michael Schaffner5f545872021-03-05 17:54:28 -0800516 jtag_pkg::jtag_req_t pinmux_aon_rv_jtag_req;
517 jtag_pkg::jtag_rsp_t pinmux_aon_rv_jtag_rsp;
Michael Schaffner6d3d6a02020-12-11 13:52:51 -0800518 otp_ctrl_pkg::otp_lc_data_t otp_ctrl_otp_lc_data;
519 otp_ctrl_pkg::lc_otp_program_req_t lc_ctrl_lc_otp_program_req;
520 otp_ctrl_pkg::lc_otp_program_rsp_t lc_ctrl_lc_otp_program_rsp;
Michael Schaffner6d3d6a02020-12-11 13:52:51 -0800521 lc_ctrl_pkg::lc_keymgr_div_t lc_ctrl_lc_keymgr_div;
522 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_dft_en;
523 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_nvm_debug_en;
524 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_hw_debug_en;
525 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_cpu_en;
Michael Schaffnerdc0c1e92021-03-02 14:41:31 -0800526 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_keymgr_en;
Michael Schaffner6d3d6a02020-12-11 13:52:51 -0800527 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_escalate_en;
Michael Schaffnerc506dc52020-12-22 21:07:17 -0800528 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_check_byp_en;
Timothy Chenfa60a602021-03-23 14:29:40 -0700529 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_clk_byp_req;
Timothy Chen33c90782021-01-06 17:38:48 -0800530 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_clk_byp_ack;
Michael Schaffner6d3d6a02020-12-11 13:52:51 -0800531 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_creator_seed_sw_rw_en;
532 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_owner_seed_sw_rw_en;
533 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_iso_part_sw_rd_en;
534 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_iso_part_sw_wr_en;
535 lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_seed_hw_rd_en;
Martin Lueker-Boden553aece2021-04-23 17:00:45 -0700536 spi_device_pkg::passthrough_req_t spi_device_passthrough_req;
537 spi_device_pkg::passthrough_rsp_t spi_device_passthrough_rsp;
Timothy Chenb74f6122021-04-26 16:57:22 -0700538 logic [4:0] pwrmgr_aon_wakeups;
539 logic [1:0] pwrmgr_aon_rstreqs;
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +0000540 tlul_pkg::tl_h2d_t rom_ctrl_rom_tl_req;
541 tlul_pkg::tl_d2h_t rom_ctrl_rom_tl_rsp;
542 tlul_pkg::tl_h2d_t rom_ctrl_regs_tl_req;
543 tlul_pkg::tl_d2h_t rom_ctrl_regs_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700544 tlul_pkg::tl_h2d_t ram_main_tl_req;
545 tlul_pkg::tl_d2h_t ram_main_tl_rsp;
546 tlul_pkg::tl_h2d_t eflash_tl_req;
547 tlul_pkg::tl_d2h_t eflash_tl_rsp;
548 tlul_pkg::tl_h2d_t main_tl_peri_req;
549 tlul_pkg::tl_d2h_t main_tl_peri_rsp;
Timothy Chen76eb8832021-03-25 16:49:58 -0700550 tlul_pkg::tl_h2d_t flash_ctrl_core_tl_req;
551 tlul_pkg::tl_d2h_t flash_ctrl_core_tl_rsp;
552 tlul_pkg::tl_h2d_t flash_ctrl_prim_tl_req;
553 tlul_pkg::tl_d2h_t flash_ctrl_prim_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700554 tlul_pkg::tl_h2d_t hmac_tl_req;
555 tlul_pkg::tl_d2h_t hmac_tl_rsp;
Eunchan Kime5d33b72020-11-03 14:34:16 -0800556 tlul_pkg::tl_h2d_t kmac_tl_req;
557 tlul_pkg::tl_d2h_t kmac_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700558 tlul_pkg::tl_h2d_t aes_tl_req;
559 tlul_pkg::tl_d2h_t aes_tl_rsp;
Mark Branstadff807362020-11-16 07:56:15 -0800560 tlul_pkg::tl_h2d_t entropy_src_tl_req;
561 tlul_pkg::tl_d2h_t entropy_src_tl_rsp;
562 tlul_pkg::tl_h2d_t csrng_tl_req;
563 tlul_pkg::tl_d2h_t csrng_tl_rsp;
564 tlul_pkg::tl_h2d_t edn0_tl_req;
565 tlul_pkg::tl_d2h_t edn0_tl_rsp;
566 tlul_pkg::tl_h2d_t edn1_tl_req;
567 tlul_pkg::tl_d2h_t edn1_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700568 tlul_pkg::tl_h2d_t rv_plic_tl_req;
569 tlul_pkg::tl_d2h_t rv_plic_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700570 tlul_pkg::tl_h2d_t otbn_tl_req;
571 tlul_pkg::tl_d2h_t otbn_tl_rsp;
Timothy Chen94953722020-09-18 16:15:12 -0700572 tlul_pkg::tl_h2d_t keymgr_tl_req;
573 tlul_pkg::tl_d2h_t keymgr_tl_rsp;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800574 tlul_pkg::tl_h2d_t sram_ctrl_main_tl_req;
575 tlul_pkg::tl_d2h_t sram_ctrl_main_tl_rsp;
Timothy Chen2971a1e2021-01-21 16:00:01 -0800576 tlul_pkg::tl_h2d_t uart0_tl_req;
577 tlul_pkg::tl_d2h_t uart0_tl_rsp;
578 tlul_pkg::tl_h2d_t uart1_tl_req;
579 tlul_pkg::tl_d2h_t uart1_tl_rsp;
580 tlul_pkg::tl_h2d_t uart2_tl_req;
581 tlul_pkg::tl_d2h_t uart2_tl_rsp;
582 tlul_pkg::tl_h2d_t uart3_tl_req;
583 tlul_pkg::tl_d2h_t uart3_tl_rsp;
Timothy Chen469a3032021-02-01 15:44:09 -0800584 tlul_pkg::tl_h2d_t i2c0_tl_req;
585 tlul_pkg::tl_d2h_t i2c0_tl_rsp;
586 tlul_pkg::tl_h2d_t i2c1_tl_req;
587 tlul_pkg::tl_d2h_t i2c1_tl_rsp;
588 tlul_pkg::tl_h2d_t i2c2_tl_req;
589 tlul_pkg::tl_d2h_t i2c2_tl_rsp;
590 tlul_pkg::tl_h2d_t pattgen_tl_req;
591 tlul_pkg::tl_d2h_t pattgen_tl_rsp;
Martin Lueker-Boden0d63fe02021-03-10 17:30:37 -0800592 tlul_pkg::tl_h2d_t pwm_aon_tl_req;
593 tlul_pkg::tl_d2h_t pwm_aon_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700594 tlul_pkg::tl_h2d_t gpio_tl_req;
595 tlul_pkg::tl_d2h_t gpio_tl_rsp;
596 tlul_pkg::tl_h2d_t spi_device_tl_req;
597 tlul_pkg::tl_d2h_t spi_device_tl_rsp;
Michael Schaffnerdbd087e2021-02-12 17:58:30 -0800598 tlul_pkg::tl_h2d_t spi_host0_tl_req;
599 tlul_pkg::tl_d2h_t spi_host0_tl_rsp;
600 tlul_pkg::tl_h2d_t spi_host1_tl_req;
601 tlul_pkg::tl_d2h_t spi_host1_tl_rsp;
Eunchan Kim0f549542020-08-04 10:40:11 -0700602 tlul_pkg::tl_h2d_t rv_timer_tl_req;
603 tlul_pkg::tl_d2h_t rv_timer_tl_rsp;
604 tlul_pkg::tl_h2d_t usbdev_tl_req;
605 tlul_pkg::tl_d2h_t usbdev_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800606 tlul_pkg::tl_h2d_t pwrmgr_aon_tl_req;
607 tlul_pkg::tl_d2h_t pwrmgr_aon_tl_rsp;
608 tlul_pkg::tl_h2d_t rstmgr_aon_tl_req;
609 tlul_pkg::tl_d2h_t rstmgr_aon_tl_rsp;
610 tlul_pkg::tl_h2d_t clkmgr_aon_tl_req;
611 tlul_pkg::tl_d2h_t clkmgr_aon_tl_rsp;
612 tlul_pkg::tl_h2d_t pinmux_aon_tl_req;
613 tlul_pkg::tl_d2h_t pinmux_aon_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800614 tlul_pkg::tl_h2d_t ram_ret_aon_tl_req;
615 tlul_pkg::tl_d2h_t ram_ret_aon_tl_rsp;
Michael Schaffnera3045602020-10-06 19:19:46 -0700616 tlul_pkg::tl_h2d_t otp_ctrl_tl_req;
617 tlul_pkg::tl_d2h_t otp_ctrl_tl_rsp;
Michael Schaffner6d3d6a02020-12-11 13:52:51 -0800618 tlul_pkg::tl_h2d_t lc_ctrl_tl_req;
619 tlul_pkg::tl_d2h_t lc_ctrl_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800620 tlul_pkg::tl_h2d_t sensor_ctrl_aon_tl_req;
621 tlul_pkg::tl_d2h_t sensor_ctrl_aon_tl_rsp;
Michael Schaffnerd1fc7d12020-12-21 12:52:23 -0800622 tlul_pkg::tl_h2d_t alert_handler_tl_req;
623 tlul_pkg::tl_d2h_t alert_handler_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800624 tlul_pkg::tl_h2d_t sram_ctrl_ret_aon_tl_req;
625 tlul_pkg::tl_d2h_t sram_ctrl_ret_aon_tl_rsp;
Timothy Chen2b8ef762021-02-16 14:44:55 -0800626 tlul_pkg::tl_h2d_t aon_timer_aon_tl_req;
627 tlul_pkg::tl_d2h_t aon_timer_aon_tl_rsp;
Michael Schaffnere029a682021-04-06 16:21:30 -0700628 tlul_pkg::tl_h2d_t sysrst_ctrl_aon_tl_req;
629 tlul_pkg::tl_d2h_t sysrst_ctrl_aon_tl_rsp;
Timothy Chen6f98f352021-03-10 16:27:29 -0800630 tlul_pkg::tl_h2d_t adc_ctrl_aon_tl_req;
631 tlul_pkg::tl_d2h_t adc_ctrl_aon_tl_rsp;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800632 rstmgr_pkg::rstmgr_out_t rstmgr_aon_resets;
633 rstmgr_pkg::rstmgr_cpu_t rstmgr_aon_cpu;
634 pwrmgr_pkg::pwr_cpu_t pwrmgr_aon_pwr_cpu;
635 clkmgr_pkg::clkmgr_out_t clkmgr_aon_clocks;
Timothy Chenb2abc982021-04-20 10:56:23 -0700636 lc_ctrl_pkg::lc_tx_t pwrmgr_aon_fetch_en;
Eunchan Kim0f549542020-08-04 10:40:11 -0700637 tlul_pkg::tl_h2d_t main_tl_corei_req;
638 tlul_pkg::tl_d2h_t main_tl_corei_rsp;
639 tlul_pkg::tl_h2d_t main_tl_cored_req;
640 tlul_pkg::tl_d2h_t main_tl_cored_rsp;
641 tlul_pkg::tl_h2d_t main_tl_dm_sba_req;
642 tlul_pkg::tl_d2h_t main_tl_dm_sba_rsp;
643 tlul_pkg::tl_h2d_t main_tl_debug_mem_req;
644 tlul_pkg::tl_d2h_t main_tl_debug_mem_rsp;
Michael Schaffnerfca43822021-05-20 13:35:56 -0700645 jtag_pkg::jtag_req_t pinmux_aon_dft_jtag_req;
646 jtag_pkg::jtag_rsp_t pinmux_aon_dft_jtag_rsp;
Michael Schaffner4d8199f2021-05-25 18:20:19 -0700647 otp_ctrl_part_pkg::otp_hw_cfg_t otp_ctrl_otp_hw_cfg;
648 otp_ctrl_pkg::otp_en_t csrng_otp_en_csrng_sw_app_read;
649 otp_ctrl_pkg::otp_en_t entropy_src_otp_en_entropy_src_fw_read;
Michael Schaffnerd59fd182021-06-03 19:36:44 -0700650 otp_ctrl_pkg::otp_en_t entropy_src_otp_en_entropy_src_fw_over;
Michael Schaffner4d8199f2021-05-25 18:20:19 -0700651 otp_ctrl_pkg::otp_device_id_t lc_ctrl_otp_device_id;
652 otp_ctrl_pkg::otp_device_id_t keymgr_otp_device_id;
653 otp_ctrl_pkg::otp_en_t sram_ctrl_main_otp_en_sram_ifetch;
654 otp_ctrl_pkg::otp_en_t sram_ctrl_ret_aon_otp_en_sram_ifetch;
Pirmin Vogela2d411d2020-07-13 17:33:42 +0200655
Timothy Chen075ed372021-02-04 14:42:29 -0800656 // define mixed connection to port
Timothy Chen685d6492021-03-09 21:28:39 -0800657 assign edn0_edn_req[2] = ast_edn_req_i;
658 assign ast_edn_rsp_o = edn0_edn_rsp[2];
659 assign ast_lc_dft_en_o = lc_ctrl_lc_dft_en;
660 assign ast_ram_1p_cfg = ram_1p_cfg_i;
661 assign ast_ram_2p_cfg = ram_2p_cfg_i;
662 assign ast_rom_cfg = rom_cfg_i;
Timothy Chen075ed372021-02-04 14:42:29 -0800663
Timothy Chen90b82422021-02-03 23:45:21 -0800664 // define partial inter-module tie-off
Timothy Chen72cb99c2021-03-08 15:58:44 -0800665 edn_pkg::edn_rsp_t unused_edn1_edn_rsp1;
666 edn_pkg::edn_rsp_t unused_edn1_edn_rsp2;
Timothy Chen44b404e2021-02-05 13:06:01 -0800667 edn_pkg::edn_rsp_t unused_edn1_edn_rsp3;
Timothy Chen72cb99c2021-03-08 15:58:44 -0800668 edn_pkg::edn_rsp_t unused_edn1_edn_rsp4;
669 edn_pkg::edn_rsp_t unused_edn1_edn_rsp5;
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +0000670 edn_pkg::edn_rsp_t unused_edn1_edn_rsp6;
Timothy Chen90b82422021-02-03 23:45:21 -0800671
672 // assign partial inter-module tie-off
Timothy Chen72cb99c2021-03-08 15:58:44 -0800673 assign unused_edn1_edn_rsp1 = edn1_edn_rsp[1];
674 assign unused_edn1_edn_rsp2 = edn1_edn_rsp[2];
Timothy Chen44b404e2021-02-05 13:06:01 -0800675 assign unused_edn1_edn_rsp3 = edn1_edn_rsp[3];
Timothy Chen72cb99c2021-03-08 15:58:44 -0800676 assign unused_edn1_edn_rsp4 = edn1_edn_rsp[4];
677 assign unused_edn1_edn_rsp5 = edn1_edn_rsp[5];
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +0000678 assign unused_edn1_edn_rsp6 = edn1_edn_rsp[6];
Timothy Chen72cb99c2021-03-08 15:58:44 -0800679 assign edn1_edn_req[1] = '0;
680 assign edn1_edn_req[2] = '0;
Timothy Chen44b404e2021-02-05 13:06:01 -0800681 assign edn1_edn_req[3] = '0;
Timothy Chen72cb99c2021-03-08 15:58:44 -0800682 assign edn1_edn_req[4] = '0;
683 assign edn1_edn_req[5] = '0;
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +0000684 assign edn1_edn_req[6] = '0;
Timothy Chen90b82422021-02-03 23:45:21 -0800685
Timothy Chen80bd8aa2019-10-04 15:57:11 -0700686
Michael Schaffner4d8199f2021-05-25 18:20:19 -0700687 // OTP HW_CFG Broadcast signals.
688 // TODO(#6713): The actual struct breakout and mapping currently needs to
689 // be performed by hand.
690 assign csrng_otp_en_csrng_sw_app_read = otp_ctrl_otp_hw_cfg.data.en_csrng_sw_app_read;
691 assign entropy_src_otp_en_entropy_src_fw_read = otp_ctrl_otp_hw_cfg.data.en_entropy_src_fw_read;
Michael Schaffnerd59fd182021-06-03 19:36:44 -0700692 assign entropy_src_otp_en_entropy_src_fw_over = otp_ctrl_otp_hw_cfg.data.en_entropy_src_fw_over;
Michael Schaffner4d8199f2021-05-25 18:20:19 -0700693 assign sram_ctrl_main_otp_en_sram_ifetch = otp_ctrl_otp_hw_cfg.data.en_sram_ifetch;
694 assign sram_ctrl_ret_aon_otp_en_sram_ifetch = otp_ctrl_otp_hw_cfg.data.en_sram_ifetch;
695 assign lc_ctrl_otp_device_id = otp_ctrl_otp_hw_cfg.data.device_id;
696 assign keymgr_otp_device_id = otp_ctrl_otp_hw_cfg.data.device_id;
697
698 logic unused_otp_hw_cfg_bits;
699 assign unused_otp_hw_cfg_bits = ^{
700 otp_ctrl_otp_hw_cfg.valid,
701 otp_ctrl_otp_hw_cfg.data.hw_cfg_digest,
702 otp_ctrl_otp_hw_cfg.data.unallocated
703 };
704
Timothy Chen3b50be12020-11-11 13:19:59 -0800705 // Unused reset signals
706 logic unused_d0_rst_por_aon;
707 logic unused_d0_rst_por;
708 logic unused_d0_rst_por_io;
709 logic unused_d0_rst_por_io_div2;
710 logic unused_d0_rst_por_io_div4;
711 logic unused_d0_rst_por_usb;
712 logic unused_daon_rst_lc;
713 logic unused_daon_rst_lc_io_div4;
Timothy Chenac6af872021-02-22 17:17:52 -0800714 logic unused_daon_rst_sys;
Timothy Chen3b50be12020-11-11 13:19:59 -0800715 logic unused_daon_rst_spi_device;
Michael Schaffnerdbd087e2021-02-12 17:58:30 -0800716 logic unused_daon_rst_spi_host0;
717 logic unused_daon_rst_spi_host1;
Timothy Chenc2b279a2021-01-14 18:53:34 -0800718 logic unused_daon_rst_usb;
Timothy Chen469a3032021-02-01 15:44:09 -0800719 logic unused_daon_rst_i2c0;
720 logic unused_daon_rst_i2c1;
721 logic unused_daon_rst_i2c2;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800722 assign unused_d0_rst_por_aon = rstmgr_aon_resets.rst_por_aon_n[rstmgr_pkg::Domain0Sel];
723 assign unused_d0_rst_por = rstmgr_aon_resets.rst_por_n[rstmgr_pkg::Domain0Sel];
724 assign unused_d0_rst_por_io = rstmgr_aon_resets.rst_por_io_n[rstmgr_pkg::Domain0Sel];
725 assign unused_d0_rst_por_io_div2 = rstmgr_aon_resets.rst_por_io_div2_n[rstmgr_pkg::Domain0Sel];
726 assign unused_d0_rst_por_io_div4 = rstmgr_aon_resets.rst_por_io_div4_n[rstmgr_pkg::Domain0Sel];
727 assign unused_d0_rst_por_usb = rstmgr_aon_resets.rst_por_usb_n[rstmgr_pkg::Domain0Sel];
728 assign unused_daon_rst_lc = rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::DomainAonSel];
729 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 -0800730 assign unused_daon_rst_sys = rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::DomainAonSel];
Timothy Chen8aeeb492021-02-01 21:25:17 -0800731 assign unused_daon_rst_spi_device = rstmgr_aon_resets.rst_spi_device_n[rstmgr_pkg::DomainAonSel];
Michael Schaffnerdbd087e2021-02-12 17:58:30 -0800732 assign unused_daon_rst_spi_host0 = rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::DomainAonSel];
733 assign unused_daon_rst_spi_host1 = rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::DomainAonSel];
Timothy Chen8aeeb492021-02-01 21:25:17 -0800734 assign unused_daon_rst_usb = rstmgr_aon_resets.rst_usb_n[rstmgr_pkg::DomainAonSel];
735 assign unused_daon_rst_i2c0 = rstmgr_aon_resets.rst_i2c0_n[rstmgr_pkg::DomainAonSel];
736 assign unused_daon_rst_i2c1 = rstmgr_aon_resets.rst_i2c1_n[rstmgr_pkg::DomainAonSel];
737 assign unused_daon_rst_i2c2 = rstmgr_aon_resets.rst_i2c2_n[rstmgr_pkg::DomainAonSel];
Timothy Chen3b50be12020-11-11 13:19:59 -0800738
Timothy Chen3193b002019-10-04 16:56:05 -0700739 // Non-debug module reset == reset for everything except for the debug module
740 logic ndmreset_req;
741
Timothy Chen3193b002019-10-04 16:56:05 -0700742 // debug request from rv_dm to core
lowRISC Contributors802543a2019-08-31 12:12:56 +0100743 logic debug_req;
744
745 // processor core
746 rv_core_ibex #(
Philipp Wagner25d889222020-04-03 11:52:41 +0100747 .PMPEnable (1),
748 .PMPGranularity (0), // 2^(PMPGranularity+2) == 4 byte granularity
749 .PMPNumRegions (16),
Pirmin Vogel185d1bf2020-08-27 13:30:10 +0200750 .MHPMCounterNum (10),
751 .MHPMCounterWidth (32),
Greg Chadwickdadb1af2020-04-16 17:10:23 +0100752 .RV32E (0),
Pirmin Vogele3814642020-08-27 12:44:23 +0200753 .RV32M (ibex_pkg::RV32MSingleCycle),
754 .RV32B (ibex_pkg::RV32BNone),
Pirmin Vogel4eb25022020-08-27 15:27:33 +0200755 .RegFile (IbexRegFile),
Greg Chadwickdadb1af2020-04-16 17:10:23 +0100756 .BranchTargetALU (1),
757 .WritebackStage (1),
Tom Roberts7824ccc2020-11-05 11:34:03 +0000758 .ICache (IbexICache),
759 .ICacheECC (1),
Pirmin Vogele3814642020-08-27 12:44:23 +0200760 .BranchPredictor (0),
Greg Chadwickdadb1af2020-04-16 17:10:23 +0100761 .DbgTriggerEn (1),
Timothy Chena6b5a1e2021-04-12 14:20:30 -0700762 .SecureIbex (SecureIbex),
Rupert Swarbrickda341bf2021-03-10 15:45:25 +0000763 .DmHaltAddr (ADDR_SPACE_DEBUG_MEM + dm::HaltAddress[31:0]),
764 .DmExceptionAddr (ADDR_SPACE_DEBUG_MEM + dm::ExceptionAddress[31:0]),
Greg Chadwickdadb1af2020-04-16 17:10:23 +0100765 .PipeLine (IbexPipeLine)
Michael Schaffnera39557e2020-03-17 18:30:21 -0700766 ) u_rv_core_ibex (
lowRISC Contributors802543a2019-08-31 12:12:56 +0100767 // clock and reset
Timothy Chen8aeeb492021-02-01 21:25:17 -0800768 .clk_i (clkmgr_aon_clocks.clk_proc_main),
769 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
770 .clk_esc_i (clkmgr_aon_clocks.clk_io_div4_timers),
771 .rst_esc_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
Tom Roberts53441692021-03-12 17:30:38 +0000772 .ram_cfg_i (ast_ram_1p_cfg),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100773 // static pinning
Greg Chadwick53ef2ec2019-09-03 14:53:54 +0100774 .hart_id_i (32'b0),
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +0000775 .boot_addr_i (ADDR_SPACE_ROM_CTRL__ROM),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100776 // TL-UL buses
Eunchan Kim0f549542020-08-04 10:40:11 -0700777 .tl_i_o (main_tl_corei_req),
778 .tl_i_i (main_tl_corei_rsp),
779 .tl_d_o (main_tl_cored_req),
780 .tl_d_i (main_tl_cored_rsp),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100781 // interrupts
782 .irq_software_i (msip),
783 .irq_timer_i (intr_rv_timer_timer_expired_0_0),
784 .irq_external_i (irq_plic),
Michael Schaffnerbdcbd202020-07-27 12:18:21 -0700785 // escalation input from alert handler (NMI)
Timothy Chenc0d32d92020-12-16 18:01:22 -0800786 .esc_tx_i (alert_handler_esc_tx[0]),
787 .esc_rx_o (alert_handler_esc_rx[0]),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100788 // debug interface
789 .debug_req_i (debug_req),
Timothy Chen580ed912020-12-21 21:21:50 -0800790 // crash dump interface
Tom Robertsc88e97f2021-03-04 13:38:20 +0000791 .crash_dump_o (rv_core_ibex_crash_dump),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100792 // CPU control signals
Michael Schaffnerdc0c1e92021-03-02 14:41:31 -0800793 .lc_cpu_en_i (lc_ctrl_lc_cpu_en),
Timothy Chenb2abc982021-04-20 10:56:23 -0700794 .pwrmgr_cpu_en_i (pwrmgr_aon_fetch_en),
Timothy Chena72c4dc2021-04-19 17:21:09 -0700795 .core_sleep_o (pwrmgr_aon_pwr_cpu.core_sleeping),
796
797 // dft bypass
798 .scan_rst_ni,
799 .scanmode_i
lowRISC Contributors802543a2019-08-31 12:12:56 +0100800 );
801
802 // Debug Module (RISC-V Debug Spec 0.13)
803 //
804
805 rv_dm #(
Philipp Wagner086b7032019-10-25 17:06:15 +0100806 .NrHarts (1),
807 .IdcodeValue (JTAG_IDCODE)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100808 ) u_dm_top (
Timothy Chen8aeeb492021-02-01 21:25:17 -0800809 .clk_i (clkmgr_aon_clocks.clk_proc_main),
810 .rst_ni (rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]),
Michael Schaffner7ce0e522021-02-25 16:39:42 -0800811 .hw_debug_en_i (lc_ctrl_lc_hw_debug_en),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -0800812 .scanmode_i,
Timothy Chenbd29a0e2021-04-19 17:44:27 -0700813 .scan_rst_ni,
Timothy Chen3193b002019-10-04 16:56:05 -0700814 .ndmreset_o (ndmreset_req),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100815 .dmactive_o (),
816 .debug_req_o (debug_req),
817 .unavailable_i (1'b0),
818
819 // bus device with debug memory (for execution-based debug)
Eunchan Kim0f549542020-08-04 10:40:11 -0700820 .tl_d_i (main_tl_debug_mem_req),
821 .tl_d_o (main_tl_debug_mem_rsp),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100822
823 // bus host (for system bus accesses, SBA)
Eunchan Kim0f549542020-08-04 10:40:11 -0700824 .tl_h_o (main_tl_dm_sba_req),
825 .tl_h_i (main_tl_dm_sba_rsp),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100826
827 //JTAG
Michael Schaffner5f545872021-03-05 17:54:28 -0800828 .jtag_req_i (pinmux_aon_rv_jtag_req),
829 .jtag_rsp_o (pinmux_aon_rv_jtag_rsp)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100830 );
831
Timothy Chen8aeeb492021-02-01 21:25:17 -0800832 assign rstmgr_aon_cpu.ndmreset_req = ndmreset_req;
833 assign rstmgr_aon_cpu.rst_cpu_n = rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel];
Timothy Chenc59f7012020-04-16 19:11:42 -0700834
Michael Schaffnerfca43822021-05-20 13:35:56 -0700835 // Struct breakout module tool-inserted DFT TAP signals
836 pinmux_jtag_breakout u_dft_tap_breakout (
837 .req_i (pinmux_aon_dft_jtag_req),
838 .rsp_o (pinmux_aon_dft_jtag_rsp),
839 .tck_o (),
840 .trst_no (),
841 .tms_o (),
842 .tdi_o (),
843 .tdo_i (1'b0),
844 .tdo_oe_i (1'b0)
845 );
846
lowRISC Contributors802543a2019-08-31 12:12:56 +0100847 // sram device
848 logic ram_main_req;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800849 logic ram_main_gnt;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100850 logic ram_main_we;
Timothy Chen12cce142021-03-02 18:11:01 -0800851 logic ram_main_intg_err;
Timothy Chen4367c482021-01-22 00:18:45 -0800852 logic [14:0] ram_main_addr;
Timothy Chen2799bf02021-03-18 14:48:47 -0700853 logic [38:0] ram_main_wdata;
854 logic [38:0] ram_main_wmask;
Timothy Chen466585e2021-03-01 15:06:01 -0800855 logic [38:0] ram_main_rdata;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100856 logic ram_main_rvalid;
Philipp Wagnere1efc182020-05-21 18:26:17 +0100857 logic [1:0] ram_main_rerror;
lowRISC Contributors802543a2019-08-31 12:12:56 +0100858
859 tlul_adapter_sram #(
Timothy Chen4367c482021-01-22 00:18:45 -0800860 .SramAw(15),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100861 .SramDw(32),
Timothy Chen12cce142021-03-02 18:11:01 -0800862 .Outstanding(2),
863 .CmdIntgCheck(1),
864 .EnableRspIntgGen(1),
Timothy Chen2799bf02021-03-18 14:48:47 -0700865 .EnableDataIntgGen(0),
866 .EnableDataIntgPt(1)
Michael Schaffnera39557e2020-03-17 18:30:21 -0700867 ) u_tl_adapter_ram_main (
Timothy Chen8aeeb492021-02-01 21:25:17 -0800868 .clk_i (clkmgr_aon_clocks.clk_main_infra),
869 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
Timothy Chen15d98b72021-02-10 20:58:34 -0800870 .tl_i (ram_main_tl_req),
871 .tl_o (ram_main_tl_rsp),
872 .en_ifetch_i (sram_ctrl_main_en_ifetch),
873 .req_o (ram_main_req),
Timothy Chenaad796e2021-03-24 17:21:33 -0700874 .req_type_o (),
Timothy Chen15d98b72021-02-10 20:58:34 -0800875 .gnt_i (ram_main_gnt),
876 .we_o (ram_main_we),
877 .addr_o (ram_main_addr),
878 .wdata_o (ram_main_wdata),
879 .wmask_o (ram_main_wmask),
Timothy Chen12cce142021-03-02 18:11:01 -0800880 .intg_error_o(ram_main_intg_err),
Timothy Chen2799bf02021-03-18 14:48:47 -0700881 .rdata_i (ram_main_rdata),
Timothy Chen15d98b72021-02-10 20:58:34 -0800882 .rvalid_i (ram_main_rvalid),
883 .rerror_i (ram_main_rerror)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100884 );
885
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800886 prim_ram_1p_scr #(
Timothy Chen466585e2021-03-01 15:06:01 -0800887 .Width(39),
Timothy Chen4367c482021-01-22 00:18:45 -0800888 .Depth(32768),
Timothy Chen95d23d92021-03-11 17:44:59 -0800889 .EnableParity(0),
890 .LfsrWidth(32),
Timothy Chen3b257162021-03-18 12:39:36 -0700891 .StatePerm(RndCnstSramCtrlMainSramLfsrPerm),
892 .DataBitsPerMask(1), // TODO: Temporary change to ensure byte updates can still be done
893 .DiffWidth(8)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100894 ) u_ram1p_ram_main (
Timothy Chen8aeeb492021-02-01 21:25:17 -0800895 .clk_i (clkmgr_aon_clocks.clk_main_infra),
896 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
lowRISC Contributors802543a2019-08-31 12:12:56 +0100897
Timothy Chen12cce142021-03-02 18:11:01 -0800898 .key_valid_i (sram_ctrl_main_sram_scr_req.valid),
899 .key_i (sram_ctrl_main_sram_scr_req.key),
900 .nonce_i (sram_ctrl_main_sram_scr_req.nonce),
Timothy Chen95d23d92021-03-11 17:44:59 -0800901 .init_req_i (sram_ctrl_main_sram_scr_init_req.req),
902 .init_seed_i (sram_ctrl_main_sram_scr_init_req.seed),
903 .init_ack_o (sram_ctrl_main_sram_scr_init_rsp.ack),
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800904
Timothy Chen12cce142021-03-02 18:11:01 -0800905 .req_i (ram_main_req),
906 .intg_error_i(ram_main_intg_err),
907 .gnt_o (ram_main_gnt),
908 .write_i (ram_main_we),
909 .addr_i (ram_main_addr),
Timothy Chen2799bf02021-03-18 14:48:47 -0700910 .wdata_i (ram_main_wdata),
911 .wmask_i (ram_main_wmask),
Timothy Chen12cce142021-03-02 18:11:01 -0800912 .rdata_o (ram_main_rdata),
913 .rvalid_o (ram_main_rvalid),
914 .rerror_o (ram_main_rerror),
915 .raddr_o (sram_ctrl_main_sram_scr_rsp.raddr),
916 .intg_error_o(ram_main_intg_error),
Timothy Chen685d6492021-03-09 21:28:39 -0800917 .cfg_i (ram_1p_cfg_i)
lowRISC Contributors802543a2019-08-31 12:12:56 +0100918 );
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800919
Michael Schaffner9da4db82020-12-21 15:35:24 -0800920 assign sram_ctrl_main_sram_scr_rsp.rerror = ram_main_rerror;
921
Timothy Chen6e2ba842020-06-29 15:04:13 -0700922 // sram device
Timothy Chen8aeeb492021-02-01 21:25:17 -0800923 logic ram_ret_aon_req;
924 logic ram_ret_aon_gnt;
925 logic ram_ret_aon_we;
Timothy Chen12cce142021-03-02 18:11:01 -0800926 logic ram_ret_aon_intg_err;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800927 logic [9:0] ram_ret_aon_addr;
Timothy Chen2799bf02021-03-18 14:48:47 -0700928 logic [38:0] ram_ret_aon_wdata;
929 logic [38:0] ram_ret_aon_wmask;
Timothy Chen466585e2021-03-01 15:06:01 -0800930 logic [38:0] ram_ret_aon_rdata;
Timothy Chen8aeeb492021-02-01 21:25:17 -0800931 logic ram_ret_aon_rvalid;
932 logic [1:0] ram_ret_aon_rerror;
Timothy Chen6e2ba842020-06-29 15:04:13 -0700933
934 tlul_adapter_sram #(
935 .SramAw(10),
936 .SramDw(32),
Timothy Chen12cce142021-03-02 18:11:01 -0800937 .Outstanding(2),
938 .CmdIntgCheck(1),
939 .EnableRspIntgGen(1),
Timothy Chen2799bf02021-03-18 14:48:47 -0700940 .EnableDataIntgGen(0),
941 .EnableDataIntgPt(1)
Timothy Chen8aeeb492021-02-01 21:25:17 -0800942 ) u_tl_adapter_ram_ret_aon (
943 .clk_i (clkmgr_aon_clocks.clk_io_div4_infra),
944 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
Timothy Chen15d98b72021-02-10 20:58:34 -0800945 .tl_i (ram_ret_aon_tl_req),
946 .tl_o (ram_ret_aon_tl_rsp),
947 .en_ifetch_i (sram_ctrl_ret_aon_en_ifetch),
948 .req_o (ram_ret_aon_req),
Timothy Chenaad796e2021-03-24 17:21:33 -0700949 .req_type_o (),
Timothy Chen15d98b72021-02-10 20:58:34 -0800950 .gnt_i (ram_ret_aon_gnt),
951 .we_o (ram_ret_aon_we),
952 .addr_o (ram_ret_aon_addr),
953 .wdata_o (ram_ret_aon_wdata),
954 .wmask_o (ram_ret_aon_wmask),
Timothy Chen12cce142021-03-02 18:11:01 -0800955 .intg_error_o(ram_ret_aon_intg_err),
Timothy Chen2799bf02021-03-18 14:48:47 -0700956 .rdata_i (ram_ret_aon_rdata),
Timothy Chen15d98b72021-02-10 20:58:34 -0800957 .rvalid_i (ram_ret_aon_rvalid),
958 .rerror_i (ram_ret_aon_rerror)
Timothy Chen6e2ba842020-06-29 15:04:13 -0700959 );
960
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800961 prim_ram_1p_scr #(
Timothy Chen466585e2021-03-01 15:06:01 -0800962 .Width(39),
Timothy Chen6e2ba842020-06-29 15:04:13 -0700963 .Depth(1024),
Timothy Chen95d23d92021-03-11 17:44:59 -0800964 .EnableParity(0),
965 .LfsrWidth(32),
Timothy Chen3b257162021-03-18 12:39:36 -0700966 .StatePerm(RndCnstSramCtrlRetAonSramLfsrPerm),
967 .DataBitsPerMask(1), // TODO: Temporary change to ensure byte updates can still be done
968 .DiffWidth(8)
Timothy Chen8aeeb492021-02-01 21:25:17 -0800969 ) u_ram1p_ram_ret_aon (
970 .clk_i (clkmgr_aon_clocks.clk_io_div4_infra),
971 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
Timothy Chen6e2ba842020-06-29 15:04:13 -0700972
Timothy Chen12cce142021-03-02 18:11:01 -0800973 .key_valid_i (sram_ctrl_ret_aon_sram_scr_req.valid),
974 .key_i (sram_ctrl_ret_aon_sram_scr_req.key),
975 .nonce_i (sram_ctrl_ret_aon_sram_scr_req.nonce),
Timothy Chen95d23d92021-03-11 17:44:59 -0800976 .init_req_i (sram_ctrl_ret_aon_sram_scr_init_req.req),
977 .init_seed_i (sram_ctrl_ret_aon_sram_scr_init_req.seed),
978 .init_ack_o (sram_ctrl_ret_aon_sram_scr_init_rsp.ack),
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800979
Timothy Chen12cce142021-03-02 18:11:01 -0800980 .req_i (ram_ret_aon_req),
981 .intg_error_i(ram_ret_aon_intg_err),
982 .gnt_o (ram_ret_aon_gnt),
983 .write_i (ram_ret_aon_we),
984 .addr_i (ram_ret_aon_addr),
Timothy Chen2799bf02021-03-18 14:48:47 -0700985 .wdata_i (ram_ret_aon_wdata),
986 .wmask_i (ram_ret_aon_wmask),
Timothy Chen12cce142021-03-02 18:11:01 -0800987 .rdata_o (ram_ret_aon_rdata),
988 .rvalid_o (ram_ret_aon_rvalid),
989 .rerror_o (ram_ret_aon_rerror),
990 .raddr_o (sram_ctrl_ret_aon_sram_scr_rsp.raddr),
991 .intg_error_o(ram_ret_aon_intg_error),
Timothy Chen685d6492021-03-09 21:28:39 -0800992 .cfg_i (ram_1p_cfg_i)
Timothy Chen6e2ba842020-06-29 15:04:13 -0700993 );
lowRISC Contributors802543a2019-08-31 12:12:56 +0100994
Timothy Chen8aeeb492021-02-01 21:25:17 -0800995 assign sram_ctrl_ret_aon_sram_scr_rsp.rerror = ram_ret_aon_rerror;
Michael Schaffner9da4db82020-12-21 15:35:24 -0800996
Michael Schaffnerbec47c72020-11-06 14:03:54 -0800997
lowRISC Contributors802543a2019-08-31 12:12:56 +0100998 // host to flash communication
999 logic flash_host_req;
Timothy Chenaad796e2021-03-24 17:21:33 -07001000 tlul_pkg::tl_type_e flash_host_req_type;
lowRISC Contributors802543a2019-08-31 12:12:56 +01001001 logic flash_host_req_rdy;
1002 logic flash_host_req_done;
Timothy Chend9a98772020-09-15 13:57:03 -07001003 logic flash_host_rderr;
Timothy Chen14518402020-04-13 15:25:22 -07001004 logic [flash_ctrl_pkg::BusWidth-1:0] flash_host_rdata;
Timothy Chenb35a3402020-06-23 00:14:11 -07001005 logic [flash_ctrl_pkg::BusAddrW-1:0] flash_host_addr;
Timothy Chen60526ac2021-04-07 16:48:55 -07001006 logic flash_host_intg_err;
lowRISC Contributors802543a2019-08-31 12:12:56 +01001007
Timothy Chen5aec5282019-09-10 21:10:56 -07001008 tlul_adapter_sram #(
Timothy Chenb35a3402020-06-23 00:14:11 -07001009 .SramAw(flash_ctrl_pkg::BusAddrW),
Timothy Chen14518402020-04-13 15:25:22 -07001010 .SramDw(flash_ctrl_pkg::BusWidth),
Eunchan Kim6c731a82020-03-04 14:48:52 -08001011 .Outstanding(2),
Timothy Chen5aec5282019-09-10 21:10:56 -07001012 .ByteAccess(0),
Timothy Chen12cce142021-03-02 18:11:01 -08001013 .ErrOnWrite(1),
1014 .CmdIntgCheck(1),
1015 .EnableRspIntgGen(1),
1016 .EnableDataIntgGen(1)
Michael Schaffnera39557e2020-03-17 18:30:21 -07001017 ) u_tl_adapter_eflash (
Timothy Chen8aeeb492021-02-01 21:25:17 -08001018 .clk_i (clkmgr_aon_clocks.clk_main_infra),
1019 .rst_ni (rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]),
lowRISC Contributors802543a2019-08-31 12:12:56 +01001020
Timothy Chen15d98b72021-02-10 20:58:34 -08001021 .tl_i (eflash_tl_req),
1022 .tl_o (eflash_tl_rsp),
1023 .en_ifetch_i (tlul_pkg::InstrEn), // tie this to secure boot somehow
1024 .req_o (flash_host_req),
Timothy Chenaad796e2021-03-24 17:21:33 -07001025 .req_type_o (flash_host_req_type),
Timothy Chen15d98b72021-02-10 20:58:34 -08001026 .gnt_i (flash_host_req_rdy),
1027 .we_o (),
1028 .addr_o (flash_host_addr),
1029 .wdata_o (),
1030 .wmask_o (),
Timothy Chen60526ac2021-04-07 16:48:55 -07001031 .intg_error_o(flash_host_intg_err),
Timothy Chen15d98b72021-02-10 20:58:34 -08001032 .rdata_i (flash_host_rdata),
1033 .rvalid_i (flash_host_req_done),
1034 .rerror_i ({flash_host_rderr,1'b0})
lowRISC Contributors802543a2019-08-31 12:12:56 +01001035 );
1036
Timothy Chen14518402020-04-13 15:25:22 -07001037 flash_phy u_flash_eflash (
Timothy Chen8aeeb492021-02-01 21:25:17 -08001038 .clk_i (clkmgr_aon_clocks.clk_main_infra),
1039 .rst_ni (rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]),
Timothy Chen1b9fd902021-01-07 12:18:46 -08001040 .host_req_i (flash_host_req),
Timothy Chen60526ac2021-04-07 16:48:55 -07001041 .host_intg_err_i (flash_host_intg_err),
Timothy Chenaad796e2021-03-24 17:21:33 -07001042 .host_req_type_i (flash_host_req_type),
Timothy Chen1b9fd902021-01-07 12:18:46 -08001043 .host_addr_i (flash_host_addr),
1044 .host_req_rdy_o (flash_host_req_rdy),
1045 .host_req_done_o (flash_host_req_done),
1046 .host_rderr_o (flash_host_rderr),
1047 .host_rdata_o (flash_host_rdata),
1048 .flash_ctrl_i (flash_ctrl_flash_req),
1049 .flash_ctrl_o (flash_ctrl_flash_rsp),
1050 .lc_nvm_debug_en_i (lc_ctrl_lc_nvm_debug_en),
Timothy Chen1b9fd902021-01-07 12:18:46 -08001051 .flash_bist_enable_i,
Timothy Chen2422a6c2020-11-19 16:06:14 -08001052 .flash_power_down_h_i,
1053 .flash_power_ready_h_i,
Timothy Chen5270b7c2021-03-17 17:38:30 -07001054 .flash_test_mode_a_io,
1055 .flash_test_voltage_h_io,
Timothy Chen800136d2021-04-29 14:56:19 -07001056 .flash_alert_o,
Timothy Chen2422a6c2020-11-19 16:06:14 -08001057 .scanmode_i,
Timothy Chen010e3cc2021-02-02 14:55:09 -08001058 .scan_en_i,
Timothy Chen2422a6c2020-11-19 16:06:14 -08001059 .scan_rst_ni
lowRISC Contributors802543a2019-08-31 12:12:56 +01001060 );
1061
1062
Michael Schaffner666dde12019-10-25 11:57:54 -07001063
Timothy Chen2971a1e2021-01-21 16:00:01 -08001064 uart u_uart0 (
Eunchan Kim769065e2019-10-29 17:29:26 -07001065
1066 // Input
Timothy Chen2971a1e2021-01-21 16:00:01 -08001067 .cio_rx_i (cio_uart0_rx_p2d),
Eunchan Kim769065e2019-10-29 17:29:26 -07001068
1069 // Output
Timothy Chen2971a1e2021-01-21 16:00:01 -08001070 .cio_tx_o (cio_uart0_tx_d2p),
1071 .cio_tx_en_o (cio_uart0_tx_en_d2p),
Eunchan Kim769065e2019-10-29 17:29:26 -07001072
1073 // Interrupt
Timothy Chen2971a1e2021-01-21 16:00:01 -08001074 .intr_tx_watermark_o (intr_uart0_tx_watermark),
1075 .intr_rx_watermark_o (intr_uart0_rx_watermark),
1076 .intr_tx_empty_o (intr_uart0_tx_empty),
1077 .intr_rx_overflow_o (intr_uart0_rx_overflow),
1078 .intr_rx_frame_err_o (intr_uart0_rx_frame_err),
1079 .intr_rx_break_err_o (intr_uart0_rx_break_err),
1080 .intr_rx_timeout_o (intr_uart0_rx_timeout),
1081 .intr_rx_parity_err_o (intr_uart0_rx_parity_err),
Eunchan Kim0f549542020-08-04 10:40:11 -07001082
1083 // Inter-module signals
Timothy Chen2971a1e2021-01-21 16:00:01 -08001084 .tl_i(uart0_tl_req),
1085 .tl_o(uart0_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001086
1087 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001088 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1089 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Timothy Chen2971a1e2021-01-21 16:00:01 -08001090 );
1091
1092 uart u_uart1 (
1093
1094 // Input
1095 .cio_rx_i (cio_uart1_rx_p2d),
1096
1097 // Output
1098 .cio_tx_o (cio_uart1_tx_d2p),
1099 .cio_tx_en_o (cio_uart1_tx_en_d2p),
1100
1101 // Interrupt
1102 .intr_tx_watermark_o (intr_uart1_tx_watermark),
1103 .intr_rx_watermark_o (intr_uart1_rx_watermark),
1104 .intr_tx_empty_o (intr_uart1_tx_empty),
1105 .intr_rx_overflow_o (intr_uart1_rx_overflow),
1106 .intr_rx_frame_err_o (intr_uart1_rx_frame_err),
1107 .intr_rx_break_err_o (intr_uart1_rx_break_err),
1108 .intr_rx_timeout_o (intr_uart1_rx_timeout),
1109 .intr_rx_parity_err_o (intr_uart1_rx_parity_err),
1110
1111 // Inter-module signals
1112 .tl_i(uart1_tl_req),
1113 .tl_o(uart1_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001114
1115 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001116 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1117 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Timothy Chen2971a1e2021-01-21 16:00:01 -08001118 );
1119
1120 uart u_uart2 (
1121
1122 // Input
1123 .cio_rx_i (cio_uart2_rx_p2d),
1124
1125 // Output
1126 .cio_tx_o (cio_uart2_tx_d2p),
1127 .cio_tx_en_o (cio_uart2_tx_en_d2p),
1128
1129 // Interrupt
1130 .intr_tx_watermark_o (intr_uart2_tx_watermark),
1131 .intr_rx_watermark_o (intr_uart2_rx_watermark),
1132 .intr_tx_empty_o (intr_uart2_tx_empty),
1133 .intr_rx_overflow_o (intr_uart2_rx_overflow),
1134 .intr_rx_frame_err_o (intr_uart2_rx_frame_err),
1135 .intr_rx_break_err_o (intr_uart2_rx_break_err),
1136 .intr_rx_timeout_o (intr_uart2_rx_timeout),
1137 .intr_rx_parity_err_o (intr_uart2_rx_parity_err),
1138
1139 // Inter-module signals
1140 .tl_i(uart2_tl_req),
1141 .tl_o(uart2_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001142
1143 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001144 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1145 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Timothy Chen2971a1e2021-01-21 16:00:01 -08001146 );
1147
1148 uart u_uart3 (
1149
1150 // Input
1151 .cio_rx_i (cio_uart3_rx_p2d),
1152
1153 // Output
1154 .cio_tx_o (cio_uart3_tx_d2p),
1155 .cio_tx_en_o (cio_uart3_tx_en_d2p),
1156
1157 // Interrupt
1158 .intr_tx_watermark_o (intr_uart3_tx_watermark),
1159 .intr_rx_watermark_o (intr_uart3_rx_watermark),
1160 .intr_tx_empty_o (intr_uart3_tx_empty),
1161 .intr_rx_overflow_o (intr_uart3_rx_overflow),
1162 .intr_rx_frame_err_o (intr_uart3_rx_frame_err),
1163 .intr_rx_break_err_o (intr_uart3_rx_break_err),
1164 .intr_rx_timeout_o (intr_uart3_rx_timeout),
1165 .intr_rx_parity_err_o (intr_uart3_rx_parity_err),
1166
1167 // Inter-module signals
1168 .tl_i(uart3_tl_req),
1169 .tl_o(uart3_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001170
1171 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001172 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1173 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
lowRISC Contributors802543a2019-08-31 12:12:56 +01001174 );
1175
Michael Schaffner0281a862021-06-04 18:25:28 -07001176 gpio #(
1177 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[0:0])
1178 ) u_gpio (
Eunchan Kim769065e2019-10-29 17:29:26 -07001179
1180 // Input
1181 .cio_gpio_i (cio_gpio_gpio_p2d),
1182
1183 // Output
1184 .cio_gpio_o (cio_gpio_gpio_d2p),
1185 .cio_gpio_en_o (cio_gpio_gpio_en_d2p),
1186
1187 // Interrupt
lowRISC Contributors802543a2019-08-31 12:12:56 +01001188 .intr_gpio_o (intr_gpio_gpio),
Michael Schaffner0281a862021-06-04 18:25:28 -07001189 // [0]: fatal_fault
1190 .alert_tx_o ( alert_tx[0:0] ),
1191 .alert_rx_i ( alert_rx[0:0] ),
Eunchan Kim0f549542020-08-04 10:40:11 -07001192
1193 // Inter-module signals
1194 .tl_i(gpio_tl_req),
1195 .tl_o(gpio_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001196
1197 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001198 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1199 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
lowRISC Contributors802543a2019-08-31 12:12:56 +01001200 );
1201
Michael Schaffner4c989be2021-06-07 16:44:30 -07001202 spi_device #(
1203 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[1:1])
1204 ) u_spi_device (
Eunchan Kim769065e2019-10-29 17:29:26 -07001205
1206 // Input
Timothy Chenc38f7892020-07-16 18:19:48 -07001207 .cio_sck_i (cio_spi_device_sck_p2d),
1208 .cio_csb_i (cio_spi_device_csb_p2d),
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001209 .cio_sd_i (cio_spi_device_sd_p2d),
Eunchan Kim769065e2019-10-29 17:29:26 -07001210
1211 // Output
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001212 .cio_sd_o (cio_spi_device_sd_d2p),
1213 .cio_sd_en_o (cio_spi_device_sd_en_d2p),
Eunchan Kim769065e2019-10-29 17:29:26 -07001214
1215 // Interrupt
1216 .intr_rxf_o (intr_spi_device_rxf),
1217 .intr_rxlvl_o (intr_spi_device_rxlvl),
1218 .intr_txlvl_o (intr_spi_device_txlvl),
1219 .intr_rxerr_o (intr_spi_device_rxerr),
1220 .intr_rxoverflow_o (intr_spi_device_rxoverflow),
Eunchan Kim546c0d42019-09-24 15:07:06 -07001221 .intr_txunderflow_o (intr_spi_device_txunderflow),
Michael Schaffner4c989be2021-06-07 16:44:30 -07001222 // [1]: fatal_fault
1223 .alert_tx_o ( alert_tx[1:1] ),
1224 .alert_rx_i ( alert_rx[1:1] ),
Eunchan Kim0f549542020-08-04 10:40:11 -07001225
1226 // Inter-module signals
Timothy Chen685d6492021-03-09 21:28:39 -08001227 .ram_cfg_i(ast_ram_2p_cfg),
Martin Lueker-Boden553aece2021-04-23 17:00:45 -07001228 .passthrough_o(spi_device_passthrough_req),
1229 .passthrough_i(spi_device_passthrough_rsp),
Eunchan Kim728b6872021-05-18 09:30:16 -07001230 .mbist_en_i('0),
Eunchan Kim0f549542020-08-04 10:40:11 -07001231 .tl_i(spi_device_tl_req),
1232 .tl_o(spi_device_tl_rsp),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -08001233 .scanmode_i,
Timothy Chen21e6a4f2021-04-30 03:47:01 -07001234 .scan_rst_ni,
Timothy Chen469a3032021-02-01 15:44:09 -08001235
1236 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001237 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
Timothy Chen04192e02021-02-19 16:16:25 -08001238 .scan_clk_i (clkmgr_aon_clocks.clk_io_div2_peri),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001239 .rst_ni (rstmgr_aon_resets.rst_spi_device_n[rstmgr_pkg::Domain0Sel])
lowRISC Contributors802543a2019-08-31 12:12:56 +01001240 );
1241
Michael Schaffnerbd21d5a2021-06-07 16:38:34 -07001242 spi_host #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07001243 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[2:2])
Michael Schaffnerbd21d5a2021-06-07 16:38:34 -07001244 ) u_spi_host0 (
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001245
1246 // Input
1247 .cio_sd_i (cio_spi_host0_sd_p2d),
1248
1249 // Output
1250 .cio_sck_o (cio_spi_host0_sck_d2p),
1251 .cio_sck_en_o (cio_spi_host0_sck_en_d2p),
1252 .cio_csb_o (cio_spi_host0_csb_d2p),
1253 .cio_csb_en_o (cio_spi_host0_csb_en_d2p),
1254 .cio_sd_o (cio_spi_host0_sd_d2p),
1255 .cio_sd_en_o (cio_spi_host0_sd_en_d2p),
1256
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001257 // Interrupt
1258 .intr_error_o (intr_spi_host0_error),
1259 .intr_spi_event_o (intr_spi_host0_spi_event),
Michael Schaffner4c989be2021-06-07 16:44:30 -07001260 // [2]: fatal_fault
1261 .alert_tx_o ( alert_tx[2:2] ),
1262 .alert_rx_i ( alert_rx[2:2] ),
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001263
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001264 // Inter-module signals
Martin Lueker-Boden553aece2021-04-23 17:00:45 -07001265 .passthrough_i(spi_device_passthrough_req),
1266 .passthrough_o(spi_device_passthrough_rsp),
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001267 .tl_i(spi_host0_tl_req),
1268 .tl_o(spi_host0_tl_rsp),
Rupert Swarbrick0fdf0082021-03-09 16:39:48 +00001269 .scanmode_i,
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001270
1271 // Clock and reset connections
1272 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
Timothy Chenc1c16752021-04-28 14:03:02 -07001273 .clk_core_i (clkmgr_aon_clocks.clk_io_peri),
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001274 .rst_ni (rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::Domain0Sel]),
1275 .rst_core_ni (rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::Domain0Sel])
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001276 );
1277
Michael Schaffnerbd21d5a2021-06-07 16:38:34 -07001278 spi_host #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07001279 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[3:3])
Michael Schaffnerbd21d5a2021-06-07 16:38:34 -07001280 ) u_spi_host1 (
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001281
1282 // Input
1283 .cio_sd_i (cio_spi_host1_sd_p2d),
1284
1285 // Output
1286 .cio_sck_o (cio_spi_host1_sck_d2p),
1287 .cio_sck_en_o (cio_spi_host1_sck_en_d2p),
1288 .cio_csb_o (cio_spi_host1_csb_d2p),
1289 .cio_csb_en_o (cio_spi_host1_csb_en_d2p),
1290 .cio_sd_o (cio_spi_host1_sd_d2p),
1291 .cio_sd_en_o (cio_spi_host1_sd_en_d2p),
1292
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001293 // Interrupt
1294 .intr_error_o (intr_spi_host1_error),
1295 .intr_spi_event_o (intr_spi_host1_spi_event),
Michael Schaffner4c989be2021-06-07 16:44:30 -07001296 // [3]: fatal_fault
1297 .alert_tx_o ( alert_tx[3:3] ),
1298 .alert_rx_i ( alert_rx[3:3] ),
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001299
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001300 // Inter-module signals
Martin Lueker-Boden553aece2021-04-23 17:00:45 -07001301 .passthrough_i(spi_device_pkg::PASSTHROUGH_REQ_DEFAULT),
1302 .passthrough_o(),
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001303 .tl_i(spi_host1_tl_req),
1304 .tl_o(spi_host1_tl_rsp),
Rupert Swarbrick0fdf0082021-03-09 16:39:48 +00001305 .scanmode_i,
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001306
1307 // Clock and reset connections
1308 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
Martin Lueker-Bodeneb9498c2021-02-02 08:33:29 -08001309 .clk_core_i (clkmgr_aon_clocks.clk_io_div2_peri),
1310 .rst_ni (rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::Domain0Sel]),
1311 .rst_core_ni (rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::Domain0Sel])
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08001312 );
1313
Timothy Chen469a3032021-02-01 15:44:09 -08001314 i2c u_i2c0 (
1315
1316 // Input
1317 .cio_sda_i (cio_i2c0_sda_p2d),
1318 .cio_scl_i (cio_i2c0_scl_p2d),
1319
1320 // Output
1321 .cio_sda_o (cio_i2c0_sda_d2p),
1322 .cio_sda_en_o (cio_i2c0_sda_en_d2p),
1323 .cio_scl_o (cio_i2c0_scl_d2p),
1324 .cio_scl_en_o (cio_i2c0_scl_en_d2p),
1325
1326 // Interrupt
1327 .intr_fmt_watermark_o (intr_i2c0_fmt_watermark),
1328 .intr_rx_watermark_o (intr_i2c0_rx_watermark),
1329 .intr_fmt_overflow_o (intr_i2c0_fmt_overflow),
1330 .intr_rx_overflow_o (intr_i2c0_rx_overflow),
1331 .intr_nak_o (intr_i2c0_nak),
1332 .intr_scl_interference_o (intr_i2c0_scl_interference),
1333 .intr_sda_interference_o (intr_i2c0_sda_interference),
1334 .intr_stretch_timeout_o (intr_i2c0_stretch_timeout),
1335 .intr_sda_unstable_o (intr_i2c0_sda_unstable),
1336 .intr_trans_complete_o (intr_i2c0_trans_complete),
1337 .intr_tx_empty_o (intr_i2c0_tx_empty),
1338 .intr_tx_nonempty_o (intr_i2c0_tx_nonempty),
1339 .intr_tx_overflow_o (intr_i2c0_tx_overflow),
1340 .intr_acq_overflow_o (intr_i2c0_acq_overflow),
1341 .intr_ack_stop_o (intr_i2c0_ack_stop),
1342 .intr_host_timeout_o (intr_i2c0_host_timeout),
1343
1344 // Inter-module signals
1345 .tl_i(i2c0_tl_req),
1346 .tl_o(i2c0_tl_rsp),
1347
1348 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001349 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1350 .rst_ni (rstmgr_aon_resets.rst_i2c0_n[rstmgr_pkg::Domain0Sel])
Timothy Chen469a3032021-02-01 15:44:09 -08001351 );
1352
1353 i2c u_i2c1 (
1354
1355 // Input
1356 .cio_sda_i (cio_i2c1_sda_p2d),
1357 .cio_scl_i (cio_i2c1_scl_p2d),
1358
1359 // Output
1360 .cio_sda_o (cio_i2c1_sda_d2p),
1361 .cio_sda_en_o (cio_i2c1_sda_en_d2p),
1362 .cio_scl_o (cio_i2c1_scl_d2p),
1363 .cio_scl_en_o (cio_i2c1_scl_en_d2p),
1364
1365 // Interrupt
1366 .intr_fmt_watermark_o (intr_i2c1_fmt_watermark),
1367 .intr_rx_watermark_o (intr_i2c1_rx_watermark),
1368 .intr_fmt_overflow_o (intr_i2c1_fmt_overflow),
1369 .intr_rx_overflow_o (intr_i2c1_rx_overflow),
1370 .intr_nak_o (intr_i2c1_nak),
1371 .intr_scl_interference_o (intr_i2c1_scl_interference),
1372 .intr_sda_interference_o (intr_i2c1_sda_interference),
1373 .intr_stretch_timeout_o (intr_i2c1_stretch_timeout),
1374 .intr_sda_unstable_o (intr_i2c1_sda_unstable),
1375 .intr_trans_complete_o (intr_i2c1_trans_complete),
1376 .intr_tx_empty_o (intr_i2c1_tx_empty),
1377 .intr_tx_nonempty_o (intr_i2c1_tx_nonempty),
1378 .intr_tx_overflow_o (intr_i2c1_tx_overflow),
1379 .intr_acq_overflow_o (intr_i2c1_acq_overflow),
1380 .intr_ack_stop_o (intr_i2c1_ack_stop),
1381 .intr_host_timeout_o (intr_i2c1_host_timeout),
1382
1383 // Inter-module signals
1384 .tl_i(i2c1_tl_req),
1385 .tl_o(i2c1_tl_rsp),
1386
1387 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001388 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1389 .rst_ni (rstmgr_aon_resets.rst_i2c1_n[rstmgr_pkg::Domain0Sel])
Timothy Chen469a3032021-02-01 15:44:09 -08001390 );
1391
1392 i2c u_i2c2 (
1393
1394 // Input
1395 .cio_sda_i (cio_i2c2_sda_p2d),
1396 .cio_scl_i (cio_i2c2_scl_p2d),
1397
1398 // Output
1399 .cio_sda_o (cio_i2c2_sda_d2p),
1400 .cio_sda_en_o (cio_i2c2_sda_en_d2p),
1401 .cio_scl_o (cio_i2c2_scl_d2p),
1402 .cio_scl_en_o (cio_i2c2_scl_en_d2p),
1403
1404 // Interrupt
1405 .intr_fmt_watermark_o (intr_i2c2_fmt_watermark),
1406 .intr_rx_watermark_o (intr_i2c2_rx_watermark),
1407 .intr_fmt_overflow_o (intr_i2c2_fmt_overflow),
1408 .intr_rx_overflow_o (intr_i2c2_rx_overflow),
1409 .intr_nak_o (intr_i2c2_nak),
1410 .intr_scl_interference_o (intr_i2c2_scl_interference),
1411 .intr_sda_interference_o (intr_i2c2_sda_interference),
1412 .intr_stretch_timeout_o (intr_i2c2_stretch_timeout),
1413 .intr_sda_unstable_o (intr_i2c2_sda_unstable),
1414 .intr_trans_complete_o (intr_i2c2_trans_complete),
1415 .intr_tx_empty_o (intr_i2c2_tx_empty),
1416 .intr_tx_nonempty_o (intr_i2c2_tx_nonempty),
1417 .intr_tx_overflow_o (intr_i2c2_tx_overflow),
1418 .intr_acq_overflow_o (intr_i2c2_acq_overflow),
1419 .intr_ack_stop_o (intr_i2c2_ack_stop),
1420 .intr_host_timeout_o (intr_i2c2_host_timeout),
1421
1422 // Inter-module signals
1423 .tl_i(i2c2_tl_req),
1424 .tl_o(i2c2_tl_rsp),
1425
1426 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001427 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1428 .rst_ni (rstmgr_aon_resets.rst_i2c2_n[rstmgr_pkg::Domain0Sel])
Timothy Chen469a3032021-02-01 15:44:09 -08001429 );
1430
Michael Schaffner8b3f2ba2021-06-07 17:18:22 -07001431 pattgen #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07001432 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[4:4])
Michael Schaffner8b3f2ba2021-06-07 17:18:22 -07001433 ) u_pattgen (
Timothy Chen469a3032021-02-01 15:44:09 -08001434
1435 // Output
1436 .cio_pda0_tx_o (cio_pattgen_pda0_tx_d2p),
1437 .cio_pda0_tx_en_o (cio_pattgen_pda0_tx_en_d2p),
1438 .cio_pcl0_tx_o (cio_pattgen_pcl0_tx_d2p),
1439 .cio_pcl0_tx_en_o (cio_pattgen_pcl0_tx_en_d2p),
1440 .cio_pda1_tx_o (cio_pattgen_pda1_tx_d2p),
1441 .cio_pda1_tx_en_o (cio_pattgen_pda1_tx_en_d2p),
1442 .cio_pcl1_tx_o (cio_pattgen_pcl1_tx_d2p),
1443 .cio_pcl1_tx_en_o (cio_pattgen_pcl1_tx_en_d2p),
1444
1445 // Interrupt
1446 .intr_done_ch0_o (intr_pattgen_done_ch0),
1447 .intr_done_ch1_o (intr_pattgen_done_ch1),
Michael Schaffner4c989be2021-06-07 16:44:30 -07001448 // [4]: fatal_fault
1449 .alert_tx_o ( alert_tx[4:4] ),
1450 .alert_rx_i ( alert_rx[4:4] ),
Timothy Chen469a3032021-02-01 15:44:09 -08001451
1452 // Inter-module signals
1453 .tl_i(pattgen_tl_req),
1454 .tl_o(pattgen_tl_rsp),
1455
1456 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001457 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1458 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Timothy Chen469a3032021-02-01 15:44:09 -08001459 );
1460
Michael Schaffnera39557e2020-03-17 18:30:21 -07001461 rv_timer u_rv_timer (
Eunchan Kim769065e2019-10-29 17:29:26 -07001462
1463 // Interrupt
lowRISC Contributors802543a2019-08-31 12:12:56 +01001464 .intr_timer_expired_0_0_o (intr_rv_timer_timer_expired_0_0),
Eunchan Kim0f549542020-08-04 10:40:11 -07001465
1466 // Inter-module signals
1467 .tl_i(rv_timer_tl_req),
1468 .tl_o(rv_timer_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001469
1470 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001471 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
1472 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
Michael Schaffner666dde12019-10-25 11:57:54 -07001473 );
1474
Michael Schaffnera39557e2020-03-17 18:30:21 -07001475 usbdev u_usbdev (
Pirmin Vogelea91b302020-01-14 18:53:01 +00001476
Pirmin Vogelb054fc02020-03-11 11:23:03 +01001477 // Input
1478 .cio_sense_i (cio_usbdev_sense_p2d),
1479 .cio_d_i (cio_usbdev_d_p2d),
1480 .cio_dp_i (cio_usbdev_dp_p2d),
1481 .cio_dn_i (cio_usbdev_dn_p2d),
Pirmin Vogelea91b302020-01-14 18:53:01 +00001482
Pirmin Vogelb054fc02020-03-11 11:23:03 +01001483 // Output
1484 .cio_se0_o (cio_usbdev_se0_d2p),
1485 .cio_se0_en_o (cio_usbdev_se0_en_d2p),
Pirmin Vogelfe6863b2020-05-11 17:30:54 +02001486 .cio_dp_pullup_o (cio_usbdev_dp_pullup_d2p),
1487 .cio_dp_pullup_en_o (cio_usbdev_dp_pullup_en_d2p),
1488 .cio_dn_pullup_o (cio_usbdev_dn_pullup_d2p),
1489 .cio_dn_pullup_en_o (cio_usbdev_dn_pullup_en_d2p),
Pirmin Vogelb054fc02020-03-11 11:23:03 +01001490 .cio_tx_mode_se_o (cio_usbdev_tx_mode_se_d2p),
1491 .cio_tx_mode_se_en_o (cio_usbdev_tx_mode_se_en_d2p),
1492 .cio_suspend_o (cio_usbdev_suspend_d2p),
1493 .cio_suspend_en_o (cio_usbdev_suspend_en_d2p),
Timothy Chen22c18562021-04-09 14:52:12 -07001494 .cio_rx_enable_o (cio_usbdev_rx_enable_d2p),
1495 .cio_rx_enable_en_o (cio_usbdev_rx_enable_en_d2p),
Pirmin Vogelb054fc02020-03-11 11:23:03 +01001496 .cio_d_o (cio_usbdev_d_d2p),
1497 .cio_d_en_o (cio_usbdev_d_en_d2p),
1498 .cio_dp_o (cio_usbdev_dp_d2p),
1499 .cio_dp_en_o (cio_usbdev_dp_en_d2p),
1500 .cio_dn_o (cio_usbdev_dn_d2p),
1501 .cio_dn_en_o (cio_usbdev_dn_en_d2p),
Pirmin Vogelea91b302020-01-14 18:53:01 +00001502
1503 // Interrupt
1504 .intr_pkt_received_o (intr_usbdev_pkt_received),
1505 .intr_pkt_sent_o (intr_usbdev_pkt_sent),
1506 .intr_disconnected_o (intr_usbdev_disconnected),
1507 .intr_host_lost_o (intr_usbdev_host_lost),
1508 .intr_link_reset_o (intr_usbdev_link_reset),
1509 .intr_link_suspend_o (intr_usbdev_link_suspend),
1510 .intr_link_resume_o (intr_usbdev_link_resume),
1511 .intr_av_empty_o (intr_usbdev_av_empty),
1512 .intr_rx_full_o (intr_usbdev_rx_full),
1513 .intr_av_overflow_o (intr_usbdev_av_overflow),
1514 .intr_link_in_err_o (intr_usbdev_link_in_err),
1515 .intr_rx_crc_err_o (intr_usbdev_rx_crc_err),
1516 .intr_rx_pid_err_o (intr_usbdev_rx_pid_err),
1517 .intr_rx_bitstuff_err_o (intr_usbdev_rx_bitstuff_err),
1518 .intr_frame_o (intr_usbdev_frame),
1519 .intr_connected_o (intr_usbdev_connected),
Stefan Lippuner207b1a62020-11-10 09:25:53 +01001520 .intr_link_out_err_o (intr_usbdev_link_out_err),
Pirmin Vogelea91b302020-01-14 18:53:01 +00001521
Pirmin Vogeldd3a2f02020-05-12 14:59:50 +02001522 // Inter-module signals
Timothy Chen1555dce2020-08-11 11:26:50 -07001523 .usb_ref_val_o(usbdev_usb_ref_val_o),
1524 .usb_ref_pulse_o(usbdev_usb_ref_pulse_o),
Timothy Chenc2b279a2021-01-14 18:53:34 -08001525 .usb_out_of_rst_o(usbdev_usb_out_of_rst),
1526 .usb_aon_wake_en_o(usbdev_usb_aon_wake_en),
1527 .usb_aon_wake_ack_o(usbdev_usb_aon_wake_ack),
1528 .usb_suspend_o(usbdev_usb_suspend),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001529 .usb_state_debug_i(pinmux_aon_usb_state_debug),
Timothy Chen685d6492021-03-09 21:28:39 -08001530 .ram_cfg_i(ast_ram_2p_cfg),
Eunchan Kim0f549542020-08-04 10:40:11 -07001531 .tl_i(usbdev_tl_req),
1532 .tl_o(usbdev_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001533
1534 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001535 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1536 .clk_aon_i (clkmgr_aon_clocks.clk_aon_peri),
1537 .clk_usb_48mhz_i (clkmgr_aon_clocks.clk_usb_peri),
1538 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
1539 .rst_aon_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::Domain0Sel]),
1540 .rst_usb_48mhz_ni (rstmgr_aon_resets.rst_usb_n[rstmgr_pkg::Domain0Sel])
1541 );
1542
1543 otp_ctrl #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07001544 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[6:5]),
Michael Schaffner20972a62021-02-24 18:53:46 -08001545 .MemInitFile(OtpCtrlMemInitFile),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001546 .RndCnstLfsrSeed(RndCnstOtpCtrlLfsrSeed),
1547 .RndCnstLfsrPerm(RndCnstOtpCtrlLfsrPerm)
1548 ) u_otp_ctrl (
1549
1550 // Interrupt
1551 .intr_otp_operation_done_o (intr_otp_ctrl_otp_operation_done),
1552 .intr_otp_error_o (intr_otp_ctrl_otp_error),
Michael Schaffner4c989be2021-06-07 16:44:30 -07001553 // [5]: fatal_macro_error
1554 // [6]: fatal_check_error
1555 .alert_tx_o ( alert_tx[6:5] ),
1556 .alert_rx_i ( alert_rx[6:5] ),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001557
1558 // Inter-module signals
1559 .otp_ast_pwr_seq_o(otp_ctrl_otp_ast_pwr_seq_o),
1560 .otp_ast_pwr_seq_h_i(otp_ctrl_otp_ast_pwr_seq_h_i),
Timothy Chen800136d2021-04-29 14:56:19 -07001561 .otp_alert_o(otp_alert_o),
Timothy Chen90b82422021-02-03 23:45:21 -08001562 .edn_o(edn0_edn_req[1]),
1563 .edn_i(edn0_edn_rsp[1]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001564 .pwr_otp_i(pwrmgr_aon_pwr_otp_req),
1565 .pwr_otp_o(pwrmgr_aon_pwr_otp_rsp),
1566 .lc_otp_program_i(lc_ctrl_lc_otp_program_req),
1567 .lc_otp_program_o(lc_ctrl_lc_otp_program_rsp),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001568 .otp_lc_data_o(otp_ctrl_otp_lc_data),
1569 .lc_escalate_en_i(lc_ctrl_lc_escalate_en),
1570 .lc_creator_seed_sw_rw_en_i(lc_ctrl_lc_creator_seed_sw_rw_en),
1571 .lc_seed_hw_rd_en_i(lc_ctrl_lc_seed_hw_rd_en),
1572 .lc_dft_en_i(lc_ctrl_lc_dft_en),
1573 .lc_check_byp_en_i(lc_ctrl_lc_check_byp_en),
1574 .otp_keymgr_key_o(otp_ctrl_otp_keymgr_key),
1575 .flash_otp_key_i(flash_ctrl_otp_req),
1576 .flash_otp_key_o(flash_ctrl_otp_rsp),
1577 .sram_otp_key_i(otp_ctrl_sram_otp_key_req),
1578 .sram_otp_key_o(otp_ctrl_sram_otp_key_rsp),
1579 .otbn_otp_key_i('0),
1580 .otbn_otp_key_o(),
1581 .otp_hw_cfg_o(otp_ctrl_otp_hw_cfg),
1582 .tl_i(otp_ctrl_tl_req),
1583 .tl_o(otp_ctrl_tl_rsp),
Michael Schaffnerd13f4422021-04-20 10:27:48 -07001584 .otp_ext_voltage_h_io,
Timothy Chen21e6a4f2021-04-30 03:47:01 -07001585 .scanmode_i,
1586 .scan_rst_ni,
1587 .scan_en_i,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001588
1589 // Clock and reset connections
1590 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
1591 .clk_edn_i (clkmgr_aon_clocks.clk_main_timers),
1592 .rst_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel]),
1593 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
1594 );
1595
1596 lc_ctrl #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07001597 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[9:7]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001598 .RndCnstLcKeymgrDivInvalid(RndCnstLcCtrlLcKeymgrDivInvalid),
1599 .RndCnstLcKeymgrDivTestDevRma(RndCnstLcCtrlLcKeymgrDivTestDevRma),
1600 .RndCnstLcKeymgrDivProduction(RndCnstLcCtrlLcKeymgrDivProduction)
1601 ) u_lc_ctrl (
Michael Schaffner4c989be2021-06-07 16:44:30 -07001602 // [7]: fatal_prog_error
1603 // [8]: fatal_state_error
1604 // [9]: fatal_bus_integ_error
1605 .alert_tx_o ( alert_tx[9:7] ),
1606 .alert_rx_i ( alert_rx[9:7] ),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001607
1608 // Inter-module signals
Michael Schaffnera7063802021-02-18 18:06:03 -08001609 .jtag_i(pinmux_aon_lc_jtag_req),
1610 .jtag_o(pinmux_aon_lc_jtag_rsp),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001611 .esc_wipe_secrets_tx_i(alert_handler_esc_tx[1]),
1612 .esc_wipe_secrets_rx_o(alert_handler_esc_rx[1]),
1613 .esc_scrap_state_tx_i(alert_handler_esc_tx[2]),
1614 .esc_scrap_state_rx_o(alert_handler_esc_rx[2]),
1615 .pwr_lc_i(pwrmgr_aon_pwr_lc_req),
1616 .pwr_lc_o(pwrmgr_aon_pwr_lc_rsp),
1617 .otp_lc_data_i(otp_ctrl_otp_lc_data),
1618 .lc_otp_program_o(lc_ctrl_lc_otp_program_req),
1619 .lc_otp_program_i(lc_ctrl_lc_otp_program_rsp),
Michael Schaffner5fb9ea62021-05-19 12:56:29 -07001620 .kmac_data_o(kmac_app_req[1]),
1621 .kmac_data_i(kmac_app_rsp[1]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001622 .lc_dft_en_o(lc_ctrl_lc_dft_en),
1623 .lc_nvm_debug_en_o(lc_ctrl_lc_nvm_debug_en),
1624 .lc_hw_debug_en_o(lc_ctrl_lc_hw_debug_en),
1625 .lc_cpu_en_o(lc_ctrl_lc_cpu_en),
Michael Schaffnerdc0c1e92021-03-02 14:41:31 -08001626 .lc_keymgr_en_o(lc_ctrl_lc_keymgr_en),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001627 .lc_escalate_en_o(lc_ctrl_lc_escalate_en),
Timothy Chenfa60a602021-03-23 14:29:40 -07001628 .lc_clk_byp_req_o(lc_ctrl_lc_clk_byp_req),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001629 .lc_clk_byp_ack_i(lc_ctrl_lc_clk_byp_ack),
1630 .lc_flash_rma_req_o(flash_ctrl_rma_req),
1631 .lc_flash_rma_seed_o(flash_ctrl_rma_seed),
1632 .lc_flash_rma_ack_i(flash_ctrl_rma_ack),
1633 .lc_check_byp_en_o(lc_ctrl_lc_check_byp_en),
1634 .lc_creator_seed_sw_rw_en_o(lc_ctrl_lc_creator_seed_sw_rw_en),
1635 .lc_owner_seed_sw_rw_en_o(lc_ctrl_lc_owner_seed_sw_rw_en),
1636 .lc_iso_part_sw_rd_en_o(lc_ctrl_lc_iso_part_sw_rd_en),
1637 .lc_iso_part_sw_wr_en_o(lc_ctrl_lc_iso_part_sw_wr_en),
1638 .lc_seed_hw_rd_en_o(lc_ctrl_lc_seed_hw_rd_en),
1639 .lc_keymgr_div_o(lc_ctrl_lc_keymgr_div),
Michael Schaffner4d8199f2021-05-25 18:20:19 -07001640 .otp_device_id_i(lc_ctrl_otp_device_id),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001641 .tl_i(lc_ctrl_tl_req),
1642 .tl_o(lc_ctrl_tl_rsp),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -08001643 .scanmode_i,
Timothy Chen21e6a4f2021-04-30 03:47:01 -07001644 .scan_rst_ni,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001645
1646 // Clock and reset connections
1647 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
Michael Schaffner5fb9ea62021-05-19 12:56:29 -07001648 .clk_kmac_i (clkmgr_aon_clocks.clk_main_timers),
1649 .rst_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel]),
1650 .rst_kmac_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Timothy Chen8aeeb492021-02-01 21:25:17 -08001651 );
1652
1653 alert_handler #(
1654 .RndCnstLfsrSeed(RndCnstAlertHandlerLfsrSeed),
1655 .RndCnstLfsrPerm(RndCnstAlertHandlerLfsrPerm)
1656 ) u_alert_handler (
1657
1658 // Interrupt
1659 .intr_classa_o (intr_alert_handler_classa),
1660 .intr_classb_o (intr_alert_handler_classb),
1661 .intr_classc_o (intr_alert_handler_classc),
1662 .intr_classd_o (intr_alert_handler_classd),
1663
1664 // Inter-module signals
1665 .crashdump_o(alert_handler_crashdump),
Timothy Chen72cb99c2021-03-08 15:58:44 -08001666 .edn_o(edn0_edn_req[4]),
1667 .edn_i(edn0_edn_rsp[4]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001668 .esc_rx_i(alert_handler_esc_rx),
1669 .esc_tx_o(alert_handler_esc_tx),
1670 .tl_i(alert_handler_tl_req),
1671 .tl_o(alert_handler_tl_rsp),
1672 // alert signals
1673 .alert_rx_o ( alert_rx ),
1674 .alert_tx_i ( alert_tx ),
1675
1676 // Clock and reset connections
1677 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
Timothy Chen44b404e2021-02-05 13:06:01 -08001678 .clk_edn_i (clkmgr_aon_clocks.clk_main_timers),
1679 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
1680 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Timothy Chen8aeeb492021-02-01 21:25:17 -08001681 );
1682
Timothy Chen8aeeb492021-02-01 21:25:17 -08001683 pwrmgr u_pwrmgr_aon (
1684
1685 // Interrupt
1686 .intr_wakeup_o (intr_pwrmgr_aon_wakeup),
1687
1688 // Inter-module signals
1689 .pwr_ast_o(pwrmgr_ast_req_o),
1690 .pwr_ast_i(pwrmgr_ast_rsp_i),
1691 .pwr_rst_o(pwrmgr_aon_pwr_rst_req),
1692 .pwr_rst_i(pwrmgr_aon_pwr_rst_rsp),
1693 .pwr_clk_o(pwrmgr_aon_pwr_clk_req),
1694 .pwr_clk_i(pwrmgr_aon_pwr_clk_rsp),
1695 .pwr_otp_o(pwrmgr_aon_pwr_otp_req),
1696 .pwr_otp_i(pwrmgr_aon_pwr_otp_rsp),
1697 .pwr_lc_o(pwrmgr_aon_pwr_lc_req),
1698 .pwr_lc_i(pwrmgr_aon_pwr_lc_rsp),
Timothy Chen6efde1e2021-04-16 15:39:23 -07001699 .pwr_flash_i(pwrmgr_aon_pwr_flash),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001700 .esc_rst_tx_i(alert_handler_esc_tx[3]),
1701 .esc_rst_rx_o(alert_handler_esc_rx[3]),
1702 .pwr_cpu_i(pwrmgr_aon_pwr_cpu),
1703 .wakeups_i(pwrmgr_aon_wakeups),
1704 .rstreqs_i(pwrmgr_aon_rstreqs),
Timothy Chen383afb82021-02-23 13:18:53 -08001705 .strap_o(pwrmgr_aon_strap),
1706 .low_power_o(pwrmgr_aon_low_power),
Timothy Chenb2abc982021-04-20 10:56:23 -07001707 .rom_ctrl_i(rom_ctrl_pwrmgr_data),
1708 .fetch_en_o(pwrmgr_aon_fetch_en),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001709 .tl_i(pwrmgr_aon_tl_req),
1710 .tl_o(pwrmgr_aon_tl_rsp),
1711
1712 // Clock and reset connections
1713 .clk_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1714 .clk_slow_i (clkmgr_aon_clocks.clk_aon_powerup),
1715 .rst_ni (rstmgr_aon_resets.rst_por_n[rstmgr_pkg::DomainAonSel]),
1716 .rst_slow_ni (rstmgr_aon_resets.rst_por_aon_n[rstmgr_pkg::DomainAonSel])
1717 );
1718
1719 rstmgr u_rstmgr_aon (
1720
1721 // Inter-module signals
1722 .pwr_i(pwrmgr_aon_pwr_rst_req),
1723 .pwr_o(pwrmgr_aon_pwr_rst_rsp),
1724 .resets_o(rstmgr_aon_resets),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001725 .cpu_i(rstmgr_aon_cpu),
1726 .alert_dump_i(alert_handler_crashdump),
Tom Robertsc88e97f2021-03-04 13:38:20 +00001727 .cpu_dump_i(rv_core_ibex_crash_dump),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001728 .resets_ast_o(rsts_ast_o),
1729 .tl_i(rstmgr_aon_tl_req),
1730 .tl_o(rstmgr_aon_tl_rsp),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -08001731 .scanmode_i,
Timothy Chen21e6a4f2021-04-30 03:47:01 -07001732 .scan_rst_ni,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001733
1734 // Clock and reset connections
1735 .clk_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1736 .clk_aon_i (clkmgr_aon_clocks.clk_aon_powerup),
1737 .clk_main_i (clkmgr_aon_clocks.clk_main_powerup),
1738 .clk_io_i (clkmgr_aon_clocks.clk_io_powerup),
1739 .clk_usb_i (clkmgr_aon_clocks.clk_usb_powerup),
1740 .clk_io_div2_i (clkmgr_aon_clocks.clk_io_div2_powerup),
1741 .clk_io_div4_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1742 .rst_ni (rst_ni)
1743 );
1744
1745 clkmgr u_clkmgr_aon (
1746
1747 // Inter-module signals
1748 .clocks_o(clkmgr_aon_clocks),
Michael Schaffner9d8eb9b2021-05-14 19:48:25 -07001749 .lc_dft_en_i(lc_ctrl_lc_dft_en),
Timothy Chenfa60a602021-03-23 14:29:40 -07001750 .ast_clk_byp_req_o(ast_clk_byp_req_o),
1751 .ast_clk_byp_ack_i(ast_clk_byp_ack_i),
1752 .lc_clk_byp_req_i(lc_ctrl_lc_clk_byp_req),
1753 .lc_clk_byp_ack_o(lc_ctrl_lc_clk_byp_ack),
Timothy Chene38c4702021-02-08 18:38:03 -08001754 .jitter_en_o(clk_main_jitter_en_o),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001755 .clk_main_i(clk_main_i),
1756 .clk_io_i(clk_io_i),
1757 .clk_usb_i(clk_usb_i),
1758 .clk_aon_i(clk_aon_i),
1759 .clocks_ast_o(clks_ast_o),
1760 .pwr_i(pwrmgr_aon_pwr_clk_req),
1761 .pwr_o(pwrmgr_aon_pwr_clk_rsp),
1762 .idle_i(clkmgr_aon_idle),
1763 .tl_i(clkmgr_aon_tl_req),
1764 .tl_o(clkmgr_aon_tl_rsp),
Michael Schaffner8bf4fe62021-02-18 12:56:08 -08001765 .scanmode_i,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001766
1767 // Clock and reset connections
1768 .clk_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1769 .rst_ni (rstmgr_aon_resets.rst_por_io_div4_n[rstmgr_pkg::DomainAonSel]),
1770 .rst_main_ni (rstmgr_aon_resets.rst_por_n[rstmgr_pkg::DomainAonSel]),
1771 .rst_io_ni (rstmgr_aon_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]),
1772 .rst_usb_ni (rstmgr_aon_resets.rst_por_usb_n[rstmgr_pkg::DomainAonSel]),
1773 .rst_io_div2_ni (rstmgr_aon_resets.rst_por_io_div2_n[rstmgr_pkg::DomainAonSel]),
1774 .rst_io_div4_ni (rstmgr_aon_resets.rst_por_io_div4_n[rstmgr_pkg::DomainAonSel])
1775 );
1776
Michael Schaffnere029a682021-04-06 16:21:30 -07001777 sysrst_ctrl u_sysrst_ctrl_aon (
1778
1779 // Input
1780 .cio_ac_present_i (cio_sysrst_ctrl_aon_ac_present_p2d),
1781 .cio_ec_rst_in_l_i (cio_sysrst_ctrl_aon_ec_rst_in_l_p2d),
1782 .cio_key0_in_i (cio_sysrst_ctrl_aon_key0_in_p2d),
1783 .cio_key1_in_i (cio_sysrst_ctrl_aon_key1_in_p2d),
1784 .cio_key2_in_i (cio_sysrst_ctrl_aon_key2_in_p2d),
1785 .cio_pwrb_in_i (cio_sysrst_ctrl_aon_pwrb_in_p2d),
1786
1787 // Output
1788 .cio_bat_disable_o (cio_sysrst_ctrl_aon_bat_disable_d2p),
1789 .cio_bat_disable_en_o (cio_sysrst_ctrl_aon_bat_disable_en_d2p),
1790 .cio_ec_rst_out_l_o (cio_sysrst_ctrl_aon_ec_rst_out_l_d2p),
1791 .cio_ec_rst_out_l_en_o (cio_sysrst_ctrl_aon_ec_rst_out_l_en_d2p),
1792 .cio_key0_out_o (cio_sysrst_ctrl_aon_key0_out_d2p),
1793 .cio_key0_out_en_o (cio_sysrst_ctrl_aon_key0_out_en_d2p),
1794 .cio_key1_out_o (cio_sysrst_ctrl_aon_key1_out_d2p),
1795 .cio_key1_out_en_o (cio_sysrst_ctrl_aon_key1_out_en_d2p),
1796 .cio_key2_out_o (cio_sysrst_ctrl_aon_key2_out_d2p),
1797 .cio_key2_out_en_o (cio_sysrst_ctrl_aon_key2_out_en_d2p),
1798 .cio_pwrb_out_o (cio_sysrst_ctrl_aon_pwrb_out_d2p),
1799 .cio_pwrb_out_en_o (cio_sysrst_ctrl_aon_pwrb_out_en_d2p),
1800
1801 // Interrupt
1802 .intr_sysrst_ctrl_o (intr_sysrst_ctrl_aon_sysrst_ctrl),
1803
1804 // Inter-module signals
Timothy Chenb74f6122021-04-26 16:57:22 -07001805 .gsc_wk_o(pwrmgr_aon_wakeups[0]),
1806 .gsc_rst_o(pwrmgr_aon_rstreqs[0]),
Michael Schaffnere029a682021-04-06 16:21:30 -07001807 .tl_i(sysrst_ctrl_aon_tl_req),
1808 .tl_o(sysrst_ctrl_aon_tl_rsp),
1809
1810 // Clock and reset connections
1811 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1812 .clk_aon_i (clkmgr_aon_clocks.clk_aon_secure),
1813 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1814 .rst_aon_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
1815 );
1816
Eric Shiu5f1d3042021-03-17 17:24:11 -07001817 adc_ctrl u_adc_ctrl_aon (
Timothy Chen6f98f352021-03-10 16:27:29 -08001818
1819 // Interrupt
1820 .intr_debug_cable_o (intr_adc_ctrl_aon_debug_cable),
1821
1822 // Inter-module signals
1823 .adc_o(adc_req_o),
1824 .adc_i(adc_rsp_i),
Timothy Chenb74f6122021-04-26 16:57:22 -07001825 .debug_cable_wakeup_o(pwrmgr_aon_wakeups[1]),
Timothy Chen6f98f352021-03-10 16:27:29 -08001826 .tl_i(adc_ctrl_aon_tl_req),
1827 .tl_o(adc_ctrl_aon_tl_rsp),
1828
1829 // Clock and reset connections
1830 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1831 .clk_aon_i (clkmgr_aon_clocks.clk_aon_peri),
1832 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1833 .rst_slow_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
1834 );
1835
Martin Lueker-Boden0d63fe02021-03-10 17:30:37 -08001836 pwm u_pwm_aon (
1837
1838 // Output
1839 .cio_pwm_o (cio_pwm_aon_pwm_d2p),
1840 .cio_pwm_en_o (cio_pwm_aon_pwm_en_d2p),
1841
1842 // Inter-module signals
1843 .tl_i(pwm_aon_tl_req),
1844 .tl_o(pwm_aon_tl_rsp),
1845
1846 // Clock and reset connections
1847 .clk_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1848 .clk_core_i (clkmgr_aon_clocks.clk_aon_powerup),
1849 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1850 .rst_core_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
1851 );
1852
Michael Schaffner5f545872021-03-05 17:54:28 -08001853 pinmux #(
1854 .TargetCfg(PinmuxAonTargetCfg)
1855 ) u_pinmux_aon (
Timothy Chen8aeeb492021-02-01 21:25:17 -08001856
1857 // Inter-module signals
Michael Schaffnera7063802021-02-18 18:06:03 -08001858 .lc_hw_debug_en_i(lc_ctrl_lc_hw_debug_en),
1859 .lc_dft_en_i(lc_ctrl_lc_dft_en),
1860 .lc_jtag_o(pinmux_aon_lc_jtag_req),
1861 .lc_jtag_i(pinmux_aon_lc_jtag_rsp),
Michael Schaffner5f545872021-03-05 17:54:28 -08001862 .rv_jtag_o(pinmux_aon_rv_jtag_req),
1863 .rv_jtag_i(pinmux_aon_rv_jtag_rsp),
Michael Schaffnerfca43822021-05-20 13:35:56 -07001864 .dft_jtag_o(pinmux_aon_dft_jtag_req),
1865 .dft_jtag_i(pinmux_aon_dft_jtag_rsp),
Timothy Chen685d6492021-03-09 21:28:39 -08001866 .dft_strap_test_o(dft_strap_test_o),
Timothy Chen1b5f81b2021-04-28 14:44:48 -07001867 .dft_hold_tap_sel_i(dft_hold_tap_sel_i),
Timothy Chen383afb82021-02-23 13:18:53 -08001868 .sleep_en_i(pwrmgr_aon_low_power),
1869 .strap_en_i(pwrmgr_aon_strap),
Timothy Chenb74f6122021-04-26 16:57:22 -07001870 .aon_wkup_req_o(pwrmgr_aon_wakeups[2]),
1871 .usb_wkup_req_o(pwrmgr_aon_wakeups[3]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001872 .usb_out_of_rst_i(usbdev_usb_out_of_rst),
1873 .usb_aon_wake_en_i(usbdev_usb_aon_wake_en),
1874 .usb_aon_wake_ack_i(usbdev_usb_aon_wake_ack),
1875 .usb_suspend_i(usbdev_usb_suspend),
1876 .usb_state_debug_o(pinmux_aon_usb_state_debug),
1877 .tl_i(pinmux_aon_tl_req),
1878 .tl_o(pinmux_aon_tl_rsp),
1879
1880 .periph_to_mio_i (mio_d2p ),
Michael Schaffner74c4ff22021-03-30 15:43:46 -07001881 .periph_to_mio_oe_i (mio_en_d2p ),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001882 .mio_to_periph_o (mio_p2d ),
1883
Michael Schaffner43ce8d52021-02-10 17:04:57 -08001884 .mio_attr_o,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001885 .mio_out_o,
1886 .mio_oe_o,
1887 .mio_in_i,
1888
1889 .periph_to_dio_i (dio_d2p ),
Michael Schaffner74c4ff22021-03-30 15:43:46 -07001890 .periph_to_dio_oe_i (dio_en_d2p ),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001891 .dio_to_periph_o (dio_p2d ),
1892
Michael Schaffner43ce8d52021-02-10 17:04:57 -08001893 .dio_attr_o,
Timothy Chen8aeeb492021-02-01 21:25:17 -08001894 .dio_out_o,
1895 .dio_oe_o,
1896 .dio_in_i,
1897
Michael Schaffnera1f76182021-03-16 18:05:46 -07001898 .scanmode_i,
Michael Schaffner43ce8d52021-02-10 17:04:57 -08001899
Timothy Chen8aeeb492021-02-01 21:25:17 -08001900 // Clock and reset connections
Timothy Chen383afb82021-02-23 13:18:53 -08001901 .clk_i (clkmgr_aon_clocks.clk_io_div4_powerup),
1902 .clk_aon_i (clkmgr_aon_clocks.clk_aon_powerup),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001903 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1904 .rst_aon_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
1905 );
1906
Timothy Chen2b8ef762021-02-16 14:44:55 -08001907 aon_timer u_aon_timer_aon (
1908
1909 // Interrupt
1910 .intr_wkup_timer_expired_o (intr_aon_timer_aon_wkup_timer_expired),
1911 .intr_wdog_timer_bark_o (intr_aon_timer_aon_wdog_timer_bark),
1912
1913 // Inter-module signals
Timothy Chenb74f6122021-04-26 16:57:22 -07001914 .aon_timer_wkup_req_o(pwrmgr_aon_wakeups[4]),
1915 .aon_timer_rst_req_o(pwrmgr_aon_rstreqs[1]),
Michael Schaffner69844f52021-06-01 10:19:40 -07001916 .lc_escalate_en_i(lc_ctrl_lc_escalate_en),
Timothy Chen383afb82021-02-23 13:18:53 -08001917 .sleep_mode_i(pwrmgr_aon_low_power),
Timothy Chen2b8ef762021-02-16 14:44:55 -08001918 .tl_i(aon_timer_aon_tl_req),
1919 .tl_o(aon_timer_aon_tl_rsp),
1920
1921 // Clock and reset connections
1922 .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
1923 .clk_aon_i (clkmgr_aon_clocks.clk_aon_timers),
1924 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1925 .rst_aon_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
1926 );
1927
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08001928 sensor_ctrl #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07001929 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[20:10])
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08001930 ) u_sensor_ctrl_aon (
Timothy Chen8aeeb492021-02-01 21:25:17 -08001931
Timothy Chen685d6492021-03-09 21:28:39 -08001932 // Output
1933 .cio_ast_debug_out_o (cio_sensor_ctrl_aon_ast_debug_out_d2p),
1934 .cio_ast_debug_out_en_o (cio_sensor_ctrl_aon_ast_debug_out_en_d2p),
Michael Schaffner4c989be2021-06-07 16:44:30 -07001935 // [10]: recov_as
1936 // [11]: recov_cg
1937 // [12]: recov_gd
1938 // [13]: recov_ts_hi
1939 // [14]: recov_ts_lo
1940 // [15]: recov_fla
1941 // [16]: recov_otp
1942 // [17]: recov_ot0
1943 // [18]: recov_ot1
1944 // [19]: recov_ot2
1945 // [20]: recov_ot3
1946 .alert_tx_o ( alert_tx[20:10] ),
1947 .alert_rx_i ( alert_rx[20:10] ),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001948
1949 // Inter-module signals
1950 .ast_alert_i(sensor_ctrl_ast_alert_req_i),
1951 .ast_alert_o(sensor_ctrl_ast_alert_rsp_o),
1952 .ast_status_i(sensor_ctrl_ast_status_i),
Timothy Chen800136d2021-04-29 14:56:19 -07001953 .ast_init_done_i(ast_init_done_i),
Timothy Chen685d6492021-03-09 21:28:39 -08001954 .ast2pinmux_i(ast2pinmux_i),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001955 .tl_i(sensor_ctrl_aon_tl_req),
1956 .tl_o(sensor_ctrl_aon_tl_rsp),
1957
1958 // Clock and reset connections
1959 .clk_i (clkmgr_aon_clocks.clk_io_div4_secure),
1960 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel])
Pirmin Vogelea91b302020-01-14 18:53:01 +00001961 );
1962
Michael Schaffner9da4db82020-12-21 15:35:24 -08001963 sram_ctrl #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07001964 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[22:21]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001965 .RndCnstSramKey(RndCnstSramCtrlRetAonSramKey),
Timothy Chen15d98b72021-02-10 20:58:34 -08001966 .RndCnstSramNonce(RndCnstSramCtrlRetAonSramNonce),
Timothy Chen95d23d92021-03-11 17:44:59 -08001967 .RndCnstSramLfsrPerm(RndCnstSramCtrlRetAonSramLfsrPerm),
Timothy Chen15d98b72021-02-10 20:58:34 -08001968 .InstrExec(SramCtrlRetAonInstrExec)
Timothy Chen8aeeb492021-02-01 21:25:17 -08001969 ) u_sram_ctrl_ret_aon (
Michael Schaffner4c989be2021-06-07 16:44:30 -07001970 // [21]: fatal_intg_error
1971 // [22]: fatal_parity_error
1972 .alert_tx_o ( alert_tx[22:21] ),
1973 .alert_rx_i ( alert_rx[22:21] ),
Michael Schaffner9da4db82020-12-21 15:35:24 -08001974
1975 // Inter-module signals
1976 .sram_otp_key_o(otp_ctrl_sram_otp_key_req[1]),
1977 .sram_otp_key_i(otp_ctrl_sram_otp_key_rsp[1]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001978 .sram_scr_o(sram_ctrl_ret_aon_sram_scr_req),
1979 .sram_scr_i(sram_ctrl_ret_aon_sram_scr_rsp),
Timothy Chen95d23d92021-03-11 17:44:59 -08001980 .sram_scr_init_o(sram_ctrl_ret_aon_sram_scr_init_req),
1981 .sram_scr_init_i(sram_ctrl_ret_aon_sram_scr_init_rsp),
Michael Schaffner9da4db82020-12-21 15:35:24 -08001982 .lc_escalate_en_i(lc_ctrl_lc_escalate_en),
Timothy Chen15d98b72021-02-10 20:58:34 -08001983 .lc_hw_debug_en_i(lc_ctrl_lc_hw_debug_en),
Michael Schaffner4d8199f2021-05-25 18:20:19 -07001984 .otp_en_sram_ifetch_i(sram_ctrl_ret_aon_otp_en_sram_ifetch),
Timothy Chen15d98b72021-02-10 20:58:34 -08001985 .en_ifetch_o(sram_ctrl_ret_aon_en_ifetch),
Timothy Chen12cce142021-03-02 18:11:01 -08001986 .intg_error_i(ram_ret_aon_intg_error),
Timothy Chen8aeeb492021-02-01 21:25:17 -08001987 .tl_i(sram_ctrl_ret_aon_tl_req),
1988 .tl_o(sram_ctrl_ret_aon_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08001989
1990 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08001991 .clk_i (clkmgr_aon_clocks.clk_io_div4_peri),
1992 .clk_otp_i (clkmgr_aon_clocks.clk_io_div4_peri),
1993 .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]),
1994 .rst_otp_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::DomainAonSel])
Michael Schaffner9da4db82020-12-21 15:35:24 -08001995 );
1996
Timothy Chenccf343d2020-12-04 20:38:15 -08001997 flash_ctrl #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07001998 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[26:23]),
Timothy Chenccf343d2020-12-04 20:38:15 -08001999 .RndCnstAddrKey(RndCnstFlashCtrlAddrKey),
Timothy Chen24b62792020-12-11 15:09:05 -08002000 .RndCnstDataKey(RndCnstFlashCtrlDataKey),
2001 .RndCnstLfsrSeed(RndCnstFlashCtrlLfsrSeed),
2002 .RndCnstLfsrPerm(RndCnstFlashCtrlLfsrPerm)
Timothy Chenccf343d2020-12-04 20:38:15 -08002003 ) u_flash_ctrl (
Timothy Chen1555dce2020-08-11 11:26:50 -07002004
Timothy Chen6a34b6e2021-02-22 11:33:11 -08002005 // Input
2006 .cio_tck_i (cio_flash_ctrl_tck_p2d),
2007 .cio_tms_i (cio_flash_ctrl_tms_p2d),
2008 .cio_tdi_i (cio_flash_ctrl_tdi_p2d),
2009
2010 // Output
2011 .cio_tdo_o (cio_flash_ctrl_tdo_d2p),
2012 .cio_tdo_en_o (cio_flash_ctrl_tdo_en_d2p),
2013
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002014 // Interrupt
2015 .intr_prog_empty_o (intr_flash_ctrl_prog_empty),
2016 .intr_prog_lvl_o (intr_flash_ctrl_prog_lvl),
2017 .intr_rd_full_o (intr_flash_ctrl_rd_full),
2018 .intr_rd_lvl_o (intr_flash_ctrl_rd_lvl),
2019 .intr_op_done_o (intr_flash_ctrl_op_done),
Timothy Chenaad796e2021-03-24 17:21:33 -07002020 .intr_err_o (intr_flash_ctrl_err),
Michael Schaffner4c989be2021-06-07 16:44:30 -07002021 // [23]: recov_err
2022 // [24]: recov_mp_err
2023 // [25]: recov_ecc_err
2024 // [26]: fatal_intg_err
2025 .alert_tx_o ( alert_tx[26:23] ),
2026 .alert_rx_i ( alert_rx[26:23] ),
Timothy Chen1555dce2020-08-11 11:26:50 -07002027
2028 // Inter-module signals
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002029 .flash_o(flash_ctrl_flash_req),
2030 .flash_i(flash_ctrl_flash_rsp),
Timothy Chenccf343d2020-12-04 20:38:15 -08002031 .otp_o(flash_ctrl_otp_req),
2032 .otp_i(flash_ctrl_otp_rsp),
Michael Schaffner6d3d6a02020-12-11 13:52:51 -08002033 .lc_creator_seed_sw_rw_en_i(lc_ctrl_lc_creator_seed_sw_rw_en),
2034 .lc_owner_seed_sw_rw_en_i(lc_ctrl_lc_owner_seed_sw_rw_en),
2035 .lc_iso_part_sw_rd_en_i(lc_ctrl_lc_iso_part_sw_rd_en),
2036 .lc_iso_part_sw_wr_en_i(lc_ctrl_lc_iso_part_sw_wr_en),
2037 .lc_seed_hw_rd_en_i(lc_ctrl_lc_seed_hw_rd_en),
Timothy Chen3cb138f2020-12-15 20:35:03 -08002038 .rma_req_i(flash_ctrl_rma_req),
2039 .rma_ack_o(flash_ctrl_rma_ack),
2040 .rma_seed_i(flash_ctrl_rma_seed),
Timothy Chen6efde1e2021-04-16 15:39:23 -07002041 .pwrmgr_o(pwrmgr_aon_pwr_flash),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002042 .keymgr_o(flash_ctrl_keymgr),
Timothy Chen76eb8832021-03-25 16:49:58 -07002043 .core_tl_i(flash_ctrl_core_tl_req),
2044 .core_tl_o(flash_ctrl_core_tl_rsp),
2045 .prim_tl_i(flash_ctrl_prim_tl_req),
2046 .prim_tl_o(flash_ctrl_prim_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002047
2048 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002049 .clk_i (clkmgr_aon_clocks.clk_main_infra),
2050 .clk_otp_i (clkmgr_aon_clocks.clk_io_div4_infra),
2051 .rst_ni (rstmgr_aon_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]),
2052 .rst_otp_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel])
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002053 );
2054
2055 rv_plic u_rv_plic (
2056
2057 // Inter-module signals
2058 .tl_i(rv_plic_tl_req),
2059 .tl_o(rv_plic_tl_rsp),
2060
2061 .intr_src_i (intr_vector),
2062 .irq_o (irq_plic),
2063 .irq_id_o (irq_id),
2064 .msip_o (msip),
Timothy Chen469a3032021-02-01 15:44:09 -08002065
2066 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002067 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2068 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002069 );
2070
2071 aes #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002072 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[28:27]),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002073 .AES192Enable(1'b1),
2074 .Masking(AesMasking),
2075 .SBoxImpl(AesSBoxImpl),
2076 .SecStartTriggerDelay(SecAesStartTriggerDelay),
2077 .SecAllowForcingMasks(SecAesAllowForcingMasks),
Pirmin Vogel95cea452021-03-02 08:54:01 +01002078 .SecSkipPRNGReseeding(SecAesSkipPRNGReseeding),
Pirmin Vogeld31b0cc2021-02-26 11:48:39 +01002079 .RndCnstClearingLfsrSeed(RndCnstAesClearingLfsrSeed),
2080 .RndCnstClearingLfsrPerm(RndCnstAesClearingLfsrPerm),
Pirmin Vogel116ecac2021-03-19 11:21:42 +01002081 .RndCnstClearingSharePerm(RndCnstAesClearingSharePerm),
Pirmin Vogeld31b0cc2021-02-26 11:48:39 +01002082 .RndCnstMaskingLfsrSeed(RndCnstAesMaskingLfsrSeed),
2083 .RndCnstMskgChunkLfsrPerm(RndCnstAesMskgChunkLfsrPerm)
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002084 ) u_aes (
Michael Schaffner4c989be2021-06-07 16:44:30 -07002085 // [27]: recov_ctrl_update_err
2086 // [28]: fatal_fault
2087 .alert_tx_o ( alert_tx[28:27] ),
2088 .alert_rx_i ( alert_rx[28:27] ),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002089
2090 // Inter-module signals
Timothy Chen8aeeb492021-02-01 21:25:17 -08002091 .idle_o(clkmgr_aon_idle[0]),
Pirmin Vogel144ca842021-02-26 15:46:43 +01002092 .lc_escalate_en_i(lc_ctrl_lc_escalate_en),
Timothy Chen72cb99c2021-03-08 15:58:44 -08002093 .edn_o(edn0_edn_req[5]),
2094 .edn_i(edn0_edn_rsp[5]),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002095 .tl_i(aes_tl_req),
2096 .tl_o(aes_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002097
2098 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002099 .clk_i (clkmgr_aon_clocks.clk_main_aes),
Pirmin Vogel95cea452021-03-02 08:54:01 +01002100 .clk_edn_i (clkmgr_aon_clocks.clk_main_aes),
2101 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2102 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002103 );
2104
Michael Schaffner8a6bedc2021-06-07 16:25:02 -07002105 hmac #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002106 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[29:29])
Michael Schaffner8a6bedc2021-06-07 16:25:02 -07002107 ) u_hmac (
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002108
2109 // Interrupt
2110 .intr_hmac_done_o (intr_hmac_hmac_done),
2111 .intr_fifo_empty_o (intr_hmac_fifo_empty),
2112 .intr_hmac_err_o (intr_hmac_hmac_err),
Michael Schaffner4c989be2021-06-07 16:44:30 -07002113 // [29]: fatal_fault
2114 .alert_tx_o ( alert_tx[29:29] ),
2115 .alert_rx_i ( alert_rx[29:29] ),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002116
2117 // Inter-module signals
Timothy Chen8aeeb492021-02-01 21:25:17 -08002118 .idle_o(clkmgr_aon_idle[1]),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002119 .tl_i(hmac_tl_req),
2120 .tl_o(hmac_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002121
2122 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002123 .clk_i (clkmgr_aon_clocks.clk_main_hmac),
2124 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002125 );
2126
2127 kmac #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002128 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[30:30]),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002129 .EnMasking(KmacEnMasking),
2130 .ReuseShare(KmacReuseShare)
2131 ) u_kmac (
2132
2133 // Interrupt
2134 .intr_kmac_done_o (intr_kmac_kmac_done),
2135 .intr_fifo_empty_o (intr_kmac_fifo_empty),
2136 .intr_kmac_err_o (intr_kmac_kmac_err),
Michael Schaffner4c989be2021-06-07 16:44:30 -07002137 // [30]: fatal_fault
2138 .alert_tx_o ( alert_tx[30:30] ),
2139 .alert_rx_i ( alert_rx[30:30] ),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002140
2141 // Inter-module signals
2142 .keymgr_key_i(keymgr_kmac_key),
Eunchan Kim02eaac72021-03-23 10:54:25 -07002143 .app_i(kmac_app_req),
2144 .app_o(kmac_app_rsp),
Timothy Chen44b404e2021-02-05 13:06:01 -08002145 .entropy_o(edn0_edn_req[3]),
2146 .entropy_i(edn0_edn_rsp[3]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08002147 .idle_o(clkmgr_aon_idle[2]),
Martin Lueker-Bodend5a1e4b2020-11-11 19:46:33 -08002148 .tl_i(kmac_tl_req),
2149 .tl_o(kmac_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002150
2151 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002152 .clk_i (clkmgr_aon_clocks.clk_main_kmac),
2153 .clk_edn_i (clkmgr_aon_clocks.clk_main_kmac),
2154 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2155 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Timothy Chen1555dce2020-08-11 11:26:50 -07002156 );
2157
Timothy Chenf9169fa2020-12-04 18:08:45 -08002158 keymgr #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002159 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[32:31]),
Timothy Chenf9169fa2020-12-04 18:08:45 -08002160 .RndCnstLfsrSeed(RndCnstKeymgrLfsrSeed),
2161 .RndCnstLfsrPerm(RndCnstKeymgrLfsrPerm),
Timothy Chenbe2da9e2021-01-07 18:29:01 -08002162 .RndCnstRandPerm(RndCnstKeymgrRandPerm),
Timothy Chenf9169fa2020-12-04 18:08:45 -08002163 .RndCnstRevisionSeed(RndCnstKeymgrRevisionSeed),
2164 .RndCnstCreatorIdentitySeed(RndCnstKeymgrCreatorIdentitySeed),
2165 .RndCnstOwnerIntIdentitySeed(RndCnstKeymgrOwnerIntIdentitySeed),
2166 .RndCnstOwnerIdentitySeed(RndCnstKeymgrOwnerIdentitySeed),
2167 .RndCnstSoftOutputSeed(RndCnstKeymgrSoftOutputSeed),
Timothy Chen51c85462020-12-10 16:36:02 -08002168 .RndCnstHardOutputSeed(RndCnstKeymgrHardOutputSeed),
2169 .RndCnstAesSeed(RndCnstKeymgrAesSeed),
2170 .RndCnstHmacSeed(RndCnstKeymgrHmacSeed),
2171 .RndCnstKmacSeed(RndCnstKeymgrKmacSeed),
2172 .RndCnstNoneSeed(RndCnstKeymgrNoneSeed)
Timothy Chenf9169fa2020-12-04 18:08:45 -08002173 ) u_keymgr (
Timothy Chen94953722020-09-18 16:15:12 -07002174
2175 // Interrupt
2176 .intr_op_done_o (intr_keymgr_op_done),
Michael Schaffner4c989be2021-06-07 16:44:30 -07002177 // [31]: fatal_fault_err
2178 // [32]: recov_operation_err
2179 .alert_tx_o ( alert_tx[32:31] ),
2180 .alert_rx_i ( alert_rx[32:31] ),
Timothy Chen94953722020-09-18 16:15:12 -07002181
2182 // Inter-module signals
Timothy Chen90b82422021-02-03 23:45:21 -08002183 .edn_o(edn0_edn_req[0]),
2184 .edn_i(edn0_edn_rsp[0]),
Timothy Chen94953722020-09-18 16:15:12 -07002185 .aes_key_o(),
2186 .hmac_key_o(),
Eunchan Kime5d33b72020-11-03 14:34:16 -08002187 .kmac_key_o(keymgr_kmac_key),
Eunchan Kim4af433f2021-03-25 17:11:41 -07002188 .kmac_data_o(kmac_app_req[0]),
2189 .kmac_data_i(kmac_app_rsp[0]),
Timothy Chen77cc8b92020-12-05 09:19:14 -08002190 .otp_key_i(otp_ctrl_otp_keymgr_key),
Michael Schaffner4d8199f2021-05-25 18:20:19 -07002191 .otp_device_id_i(keymgr_otp_device_id),
Timothy Chen94953722020-09-18 16:15:12 -07002192 .flash_i(flash_ctrl_keymgr),
Michael Schaffnerdc0c1e92021-03-02 14:41:31 -08002193 .lc_keymgr_en_i(lc_ctrl_lc_keymgr_en),
Timothy Chen6ace8f32020-12-14 17:26:56 -08002194 .lc_keymgr_div_i(lc_ctrl_lc_keymgr_div),
Timothy Chenf625b0d2021-04-20 17:54:24 -07002195 .rom_digest_i(rom_ctrl_keymgr_data),
Timothy Chen94953722020-09-18 16:15:12 -07002196 .tl_i(keymgr_tl_req),
2197 .tl_o(keymgr_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002198
2199 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002200 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2201 .clk_edn_i (clkmgr_aon_clocks.clk_main_secure),
2202 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2203 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Timothy Chen94953722020-09-18 16:15:12 -07002204 );
2205
Mark Branstadff807362020-11-16 07:56:15 -08002206 csrng #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002207 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[33:33]),
Mark Branstadff807362020-11-16 07:56:15 -08002208 .SBoxImpl(CsrngSBoxImpl)
2209 ) u_csrng (
2210
2211 // Interrupt
2212 .intr_cs_cmd_req_done_o (intr_csrng_cs_cmd_req_done),
2213 .intr_cs_entropy_req_o (intr_csrng_cs_entropy_req),
2214 .intr_cs_hw_inst_exc_o (intr_csrng_cs_hw_inst_exc),
Mark Branstadd65d1392021-02-10 13:15:39 -08002215 .intr_cs_fatal_err_o (intr_csrng_cs_fatal_err),
Michael Schaffner4c989be2021-06-07 16:44:30 -07002216 // [33]: fatal_alert
2217 .alert_tx_o ( alert_tx[33:33] ),
2218 .alert_rx_i ( alert_rx[33:33] ),
Mark Branstadff807362020-11-16 07:56:15 -08002219
2220 // Inter-module signals
2221 .csrng_cmd_i(csrng_csrng_cmd_req),
2222 .csrng_cmd_o(csrng_csrng_cmd_rsp),
2223 .entropy_src_hw_if_o(csrng_entropy_src_hw_if_req),
2224 .entropy_src_hw_if_i(csrng_entropy_src_hw_if_rsp),
Mark Branstadde7eba32021-03-22 14:18:38 -07002225 .cs_aes_halt_i(csrng_cs_aes_halt_req),
2226 .cs_aes_halt_o(csrng_cs_aes_halt_rsp),
Michael Schaffner4d8199f2021-05-25 18:20:19 -07002227 .otp_en_csrng_sw_app_read_i(csrng_otp_en_csrng_sw_app_read),
Michael Schaffner991524f2021-06-01 10:19:00 -07002228 .lc_hw_debug_en_i(lc_ctrl_lc_hw_debug_en),
Mark Branstadff807362020-11-16 07:56:15 -08002229 .tl_i(csrng_tl_req),
2230 .tl_o(csrng_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002231
2232 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002233 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2234 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Mark Branstadff807362020-11-16 07:56:15 -08002235 );
2236
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002237 entropy_src #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002238 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[35:34]),
Timothy Chendff0b9d2021-04-22 12:46:14 -07002239 .Stub(EntropySrcStub)
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002240 ) u_entropy_src (
Mark Branstadff807362020-11-16 07:56:15 -08002241
2242 // Interrupt
2243 .intr_es_entropy_valid_o (intr_entropy_src_es_entropy_valid),
2244 .intr_es_health_test_failed_o (intr_entropy_src_es_health_test_failed),
Mark Branstad33236362021-05-12 14:37:41 -07002245 .intr_es_observe_fifo_ready_o (intr_entropy_src_es_observe_fifo_ready),
Mark Branstad789ea022021-02-12 14:35:42 -08002246 .intr_es_fatal_err_o (intr_entropy_src_es_fatal_err),
Michael Schaffner4c989be2021-06-07 16:44:30 -07002247 // [34]: recov_alert
2248 // [35]: fatal_alert
2249 .alert_tx_o ( alert_tx[35:34] ),
2250 .alert_rx_i ( alert_rx[35:34] ),
Mark Branstadff807362020-11-16 07:56:15 -08002251
2252 // Inter-module signals
2253 .entropy_src_hw_if_i(csrng_entropy_src_hw_if_req),
2254 .entropy_src_hw_if_o(csrng_entropy_src_hw_if_rsp),
Mark Branstadde7eba32021-03-22 14:18:38 -07002255 .cs_aes_halt_o(csrng_cs_aes_halt_req),
2256 .cs_aes_halt_i(csrng_cs_aes_halt_rsp),
Timothy Chenea59ad32021-02-03 17:51:38 -08002257 .entropy_src_rng_o(es_rng_req_o),
2258 .entropy_src_rng_i(es_rng_rsp_i),
Mark Branstadff807362020-11-16 07:56:15 -08002259 .entropy_src_xht_o(),
2260 .entropy_src_xht_i(entropy_src_pkg::ENTROPY_SRC_XHT_RSP_DEFAULT),
Michael Schaffner4d8199f2021-05-25 18:20:19 -07002261 .otp_en_entropy_src_fw_read_i(entropy_src_otp_en_entropy_src_fw_read),
Michael Schaffnerd59fd182021-06-03 19:36:44 -07002262 .otp_en_entropy_src_fw_over_i(entropy_src_otp_en_entropy_src_fw_over),
Timothy Chen5270b7c2021-03-17 17:38:30 -07002263 .rng_fips_o(es_rng_fips_o),
Mark Branstadff807362020-11-16 07:56:15 -08002264 .tl_i(entropy_src_tl_req),
2265 .tl_o(entropy_src_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002266
2267 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002268 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2269 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Mark Branstadff807362020-11-16 07:56:15 -08002270 );
2271
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002272 edn #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002273 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[36:36])
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002274 ) u_edn0 (
Mark Branstadff807362020-11-16 07:56:15 -08002275
2276 // Interrupt
2277 .intr_edn_cmd_req_done_o (intr_edn0_edn_cmd_req_done),
Mark Branstad1e7fa2e2021-02-18 08:41:37 -08002278 .intr_edn_fatal_err_o (intr_edn0_edn_fatal_err),
Michael Schaffner4c989be2021-06-07 16:44:30 -07002279 // [36]: fatal_alert
2280 .alert_tx_o ( alert_tx[36:36] ),
2281 .alert_rx_i ( alert_rx[36:36] ),
Mark Branstadff807362020-11-16 07:56:15 -08002282
2283 // Inter-module signals
2284 .csrng_cmd_o(csrng_csrng_cmd_req[0]),
2285 .csrng_cmd_i(csrng_csrng_cmd_rsp[0]),
Timothy Chen90b82422021-02-03 23:45:21 -08002286 .edn_i(edn0_edn_req),
2287 .edn_o(edn0_edn_rsp),
Mark Branstadff807362020-11-16 07:56:15 -08002288 .tl_i(edn0_tl_req),
2289 .tl_o(edn0_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002290
2291 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002292 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2293 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Mark Branstadff807362020-11-16 07:56:15 -08002294 );
2295
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002296 edn #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002297 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[37:37])
Michael Schaffner4ac0a9d2021-03-12 14:45:32 -08002298 ) u_edn1 (
Mark Branstadff807362020-11-16 07:56:15 -08002299
2300 // Interrupt
2301 .intr_edn_cmd_req_done_o (intr_edn1_edn_cmd_req_done),
Mark Branstad1e7fa2e2021-02-18 08:41:37 -08002302 .intr_edn_fatal_err_o (intr_edn1_edn_fatal_err),
Michael Schaffner4c989be2021-06-07 16:44:30 -07002303 // [37]: fatal_alert
2304 .alert_tx_o ( alert_tx[37:37] ),
2305 .alert_rx_i ( alert_rx[37:37] ),
Mark Branstadff807362020-11-16 07:56:15 -08002306
2307 // Inter-module signals
2308 .csrng_cmd_o(csrng_csrng_cmd_req[1]),
2309 .csrng_cmd_i(csrng_csrng_cmd_rsp[1]),
Timothy Chen44b404e2021-02-05 13:06:01 -08002310 .edn_i(edn1_edn_req),
2311 .edn_o(edn1_edn_rsp),
Mark Branstadff807362020-11-16 07:56:15 -08002312 .tl_i(edn1_tl_req),
2313 .tl_o(edn1_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002314
2315 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002316 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2317 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Mark Branstadff807362020-11-16 07:56:15 -08002318 );
2319
Michael Schaffner9da4db82020-12-21 15:35:24 -08002320 sram_ctrl #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002321 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[39:38]),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002322 .RndCnstSramKey(RndCnstSramCtrlMainSramKey),
Timothy Chen15d98b72021-02-10 20:58:34 -08002323 .RndCnstSramNonce(RndCnstSramCtrlMainSramNonce),
Timothy Chen95d23d92021-03-11 17:44:59 -08002324 .RndCnstSramLfsrPerm(RndCnstSramCtrlMainSramLfsrPerm),
Timothy Chen15d98b72021-02-10 20:58:34 -08002325 .InstrExec(SramCtrlMainInstrExec)
Michael Schaffner9da4db82020-12-21 15:35:24 -08002326 ) u_sram_ctrl_main (
Michael Schaffner4c989be2021-06-07 16:44:30 -07002327 // [38]: fatal_intg_error
2328 // [39]: fatal_parity_error
2329 .alert_tx_o ( alert_tx[39:38] ),
2330 .alert_rx_i ( alert_rx[39:38] ),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002331
2332 // Inter-module signals
2333 .sram_otp_key_o(otp_ctrl_sram_otp_key_req[0]),
2334 .sram_otp_key_i(otp_ctrl_sram_otp_key_rsp[0]),
2335 .sram_scr_o(sram_ctrl_main_sram_scr_req),
2336 .sram_scr_i(sram_ctrl_main_sram_scr_rsp),
Timothy Chen95d23d92021-03-11 17:44:59 -08002337 .sram_scr_init_o(sram_ctrl_main_sram_scr_init_req),
2338 .sram_scr_init_i(sram_ctrl_main_sram_scr_init_rsp),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002339 .lc_escalate_en_i(lc_ctrl_lc_escalate_en),
Timothy Chen15d98b72021-02-10 20:58:34 -08002340 .lc_hw_debug_en_i(lc_ctrl_lc_hw_debug_en),
Michael Schaffner4d8199f2021-05-25 18:20:19 -07002341 .otp_en_sram_ifetch_i(sram_ctrl_main_otp_en_sram_ifetch),
Timothy Chen15d98b72021-02-10 20:58:34 -08002342 .en_ifetch_o(sram_ctrl_main_en_ifetch),
Timothy Chen12cce142021-03-02 18:11:01 -08002343 .intg_error_i(ram_main_intg_error),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002344 .tl_i(sram_ctrl_main_tl_req),
2345 .tl_o(sram_ctrl_main_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002346
2347 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002348 .clk_i (clkmgr_aon_clocks.clk_main_secure),
2349 .clk_otp_i (clkmgr_aon_clocks.clk_io_div4_secure),
2350 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2351 .rst_otp_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel])
Michael Schaffner9da4db82020-12-21 15:35:24 -08002352 );
2353
Pirmin Vogel69b55a82020-10-01 09:54:39 +02002354 otbn #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002355 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[41:40]),
Timothy Chen7be15162021-04-21 19:43:31 -07002356 .Stub(OtbnStub),
Greg Chadwickb168ae92021-04-14 16:04:03 +01002357 .RegFile(OtbnRegFile),
2358 .RndCnstUrndLfsrSeed(RndCnstOtbnUrndLfsrSeed),
2359 .RndCnstUrndChunkLfsrPerm(RndCnstOtbnUrndChunkLfsrPerm)
Pirmin Vogel69b55a82020-10-01 09:54:39 +02002360 ) u_otbn (
Philipp Wagnera4a9e402020-06-22 12:06:56 +01002361
2362 // Interrupt
2363 .intr_done_o (intr_otbn_done),
Michael Schaffner4c989be2021-06-07 16:44:30 -07002364 // [40]: fatal
2365 // [41]: recov
2366 .alert_tx_o ( alert_tx[41:40] ),
2367 .alert_rx_i ( alert_rx[41:40] ),
Philipp Wagnera4a9e402020-06-22 12:06:56 +01002368
2369 // Inter-module signals
Greg Chadwickcc0dd2a2021-03-10 15:55:58 +00002370 .edn_rnd_o(edn1_edn_req[0]),
2371 .edn_rnd_i(edn1_edn_rsp[0]),
2372 .edn_urnd_o(edn0_edn_req[6]),
2373 .edn_urnd_i(edn0_edn_rsp[6]),
Timothy Chen8aeeb492021-02-01 21:25:17 -08002374 .idle_o(clkmgr_aon_idle[3]),
Timothy Chen685d6492021-03-09 21:28:39 -08002375 .ram_cfg_i(ast_ram_1p_cfg),
Eunchan Kim0f549542020-08-04 10:40:11 -07002376 .tl_i(otbn_tl_req),
2377 .tl_o(otbn_tl_rsp),
Timothy Chen469a3032021-02-01 15:44:09 -08002378
2379 // Clock and reset connections
Timothy Chen8aeeb492021-02-01 21:25:17 -08002380 .clk_i (clkmgr_aon_clocks.clk_main_otbn),
Greg Chadwickc62e57b2021-02-18 11:30:06 +00002381 .clk_edn_i (clkmgr_aon_clocks.clk_main_otbn),
2382 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2383 .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
Philipp Wagnera4a9e402020-06-22 12:06:56 +01002384 );
2385
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +00002386 rom_ctrl #(
Michael Schaffner4c989be2021-06-07 16:44:30 -07002387 .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[42:42]),
Rupert Swarbrick830aac52021-03-19 17:00:18 +00002388 .BootRomInitFile(RomCtrlBootRomInitFile),
2389 .RndCnstScrNonce(RndCnstRomCtrlScrNonce),
Rupert Swarbrick447835d2021-06-09 14:12:50 +01002390 .RndCnstScrKey(RndCnstRomCtrlScrKey)
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +00002391 ) u_rom_ctrl (
Michael Schaffner4c989be2021-06-07 16:44:30 -07002392 // [42]: fatal
2393 .alert_tx_o ( alert_tx[42:42] ),
2394 .alert_rx_i ( alert_rx[42:42] ),
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +00002395
2396 // Inter-module signals
2397 .rom_cfg_i(ast_rom_cfg),
Timothy Chenb2abc982021-04-20 10:56:23 -07002398 .pwrmgr_data_o(rom_ctrl_pwrmgr_data),
Timothy Chenf625b0d2021-04-20 17:54:24 -07002399 .keymgr_data_o(rom_ctrl_keymgr_data),
Michael Schaffner5fb9ea62021-05-19 12:56:29 -07002400 .kmac_data_o(kmac_app_req[2]),
2401 .kmac_data_i(kmac_app_rsp[2]),
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +00002402 .regs_tl_i(rom_ctrl_regs_tl_req),
2403 .regs_tl_o(rom_ctrl_regs_tl_rsp),
2404 .rom_tl_i(rom_ctrl_rom_tl_req),
2405 .rom_tl_o(rom_ctrl_rom_tl_rsp),
2406
2407 // Clock and reset connections
2408 .clk_i (clkmgr_aon_clocks.clk_main_infra),
2409 .rst_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
2410 );
2411
lowRISC Contributors802543a2019-08-31 12:12:56 +01002412 // interrupt assignments
2413 assign intr_vector = {
Mark Branstad33236362021-05-12 14:37:41 -07002414 intr_otbn_done, // IDs [179 +: 1]
2415 intr_edn1_edn_fatal_err, // IDs [178 +: 1]
2416 intr_edn1_edn_cmd_req_done, // IDs [177 +: 1]
2417 intr_edn0_edn_fatal_err, // IDs [176 +: 1]
2418 intr_edn0_edn_cmd_req_done, // IDs [175 +: 1]
2419 intr_entropy_src_es_fatal_err, // IDs [174 +: 1]
2420 intr_entropy_src_es_observe_fifo_ready, // IDs [173 +: 1]
Michael Schaffnere029a682021-04-06 16:21:30 -07002421 intr_entropy_src_es_health_test_failed, // IDs [172 +: 1]
2422 intr_entropy_src_es_entropy_valid, // IDs [171 +: 1]
2423 intr_csrng_cs_fatal_err, // IDs [170 +: 1]
2424 intr_csrng_cs_hw_inst_exc, // IDs [169 +: 1]
2425 intr_csrng_cs_entropy_req, // IDs [168 +: 1]
2426 intr_csrng_cs_cmd_req_done, // IDs [167 +: 1]
2427 intr_keymgr_op_done, // IDs [166 +: 1]
2428 intr_kmac_kmac_err, // IDs [165 +: 1]
2429 intr_kmac_fifo_empty, // IDs [164 +: 1]
2430 intr_kmac_kmac_done, // IDs [163 +: 1]
2431 intr_hmac_hmac_err, // IDs [162 +: 1]
2432 intr_hmac_fifo_empty, // IDs [161 +: 1]
2433 intr_hmac_hmac_done, // IDs [160 +: 1]
2434 intr_flash_ctrl_err, // IDs [159 +: 1]
2435 intr_flash_ctrl_op_done, // IDs [158 +: 1]
2436 intr_flash_ctrl_rd_lvl, // IDs [157 +: 1]
2437 intr_flash_ctrl_rd_full, // IDs [156 +: 1]
2438 intr_flash_ctrl_prog_lvl, // IDs [155 +: 1]
2439 intr_flash_ctrl_prog_empty, // IDs [154 +: 1]
2440 intr_aon_timer_aon_wdog_timer_bark, // IDs [153 +: 1]
2441 intr_aon_timer_aon_wkup_timer_expired, // IDs [152 +: 1]
2442 intr_adc_ctrl_aon_debug_cable, // IDs [151 +: 1]
2443 intr_sysrst_ctrl_aon_sysrst_ctrl, // IDs [150 +: 1]
2444 intr_pwrmgr_aon_wakeup, // IDs [149 +: 1]
2445 intr_alert_handler_classd, // IDs [148 +: 1]
2446 intr_alert_handler_classc, // IDs [147 +: 1]
2447 intr_alert_handler_classb, // IDs [146 +: 1]
2448 intr_alert_handler_classa, // IDs [145 +: 1]
2449 intr_otp_ctrl_otp_error, // IDs [144 +: 1]
2450 intr_otp_ctrl_otp_operation_done, // IDs [143 +: 1]
2451 intr_usbdev_link_out_err, // IDs [142 +: 1]
2452 intr_usbdev_connected, // IDs [141 +: 1]
2453 intr_usbdev_frame, // IDs [140 +: 1]
2454 intr_usbdev_rx_bitstuff_err, // IDs [139 +: 1]
2455 intr_usbdev_rx_pid_err, // IDs [138 +: 1]
2456 intr_usbdev_rx_crc_err, // IDs [137 +: 1]
2457 intr_usbdev_link_in_err, // IDs [136 +: 1]
2458 intr_usbdev_av_overflow, // IDs [135 +: 1]
2459 intr_usbdev_rx_full, // IDs [134 +: 1]
2460 intr_usbdev_av_empty, // IDs [133 +: 1]
2461 intr_usbdev_link_resume, // IDs [132 +: 1]
2462 intr_usbdev_link_suspend, // IDs [131 +: 1]
2463 intr_usbdev_link_reset, // IDs [130 +: 1]
2464 intr_usbdev_host_lost, // IDs [129 +: 1]
2465 intr_usbdev_disconnected, // IDs [128 +: 1]
2466 intr_usbdev_pkt_sent, // IDs [127 +: 1]
2467 intr_usbdev_pkt_received, // IDs [126 +: 1]
2468 intr_rv_timer_timer_expired_0_0, // IDs [125 +: 1]
2469 intr_pattgen_done_ch1, // IDs [124 +: 1]
2470 intr_pattgen_done_ch0, // IDs [123 +: 1]
2471 intr_i2c2_host_timeout, // IDs [122 +: 1]
2472 intr_i2c2_ack_stop, // IDs [121 +: 1]
2473 intr_i2c2_acq_overflow, // IDs [120 +: 1]
2474 intr_i2c2_tx_overflow, // IDs [119 +: 1]
2475 intr_i2c2_tx_nonempty, // IDs [118 +: 1]
2476 intr_i2c2_tx_empty, // IDs [117 +: 1]
2477 intr_i2c2_trans_complete, // IDs [116 +: 1]
2478 intr_i2c2_sda_unstable, // IDs [115 +: 1]
2479 intr_i2c2_stretch_timeout, // IDs [114 +: 1]
2480 intr_i2c2_sda_interference, // IDs [113 +: 1]
2481 intr_i2c2_scl_interference, // IDs [112 +: 1]
2482 intr_i2c2_nak, // IDs [111 +: 1]
2483 intr_i2c2_rx_overflow, // IDs [110 +: 1]
2484 intr_i2c2_fmt_overflow, // IDs [109 +: 1]
2485 intr_i2c2_rx_watermark, // IDs [108 +: 1]
2486 intr_i2c2_fmt_watermark, // IDs [107 +: 1]
2487 intr_i2c1_host_timeout, // IDs [106 +: 1]
2488 intr_i2c1_ack_stop, // IDs [105 +: 1]
2489 intr_i2c1_acq_overflow, // IDs [104 +: 1]
2490 intr_i2c1_tx_overflow, // IDs [103 +: 1]
2491 intr_i2c1_tx_nonempty, // IDs [102 +: 1]
2492 intr_i2c1_tx_empty, // IDs [101 +: 1]
2493 intr_i2c1_trans_complete, // IDs [100 +: 1]
2494 intr_i2c1_sda_unstable, // IDs [99 +: 1]
2495 intr_i2c1_stretch_timeout, // IDs [98 +: 1]
2496 intr_i2c1_sda_interference, // IDs [97 +: 1]
2497 intr_i2c1_scl_interference, // IDs [96 +: 1]
2498 intr_i2c1_nak, // IDs [95 +: 1]
2499 intr_i2c1_rx_overflow, // IDs [94 +: 1]
2500 intr_i2c1_fmt_overflow, // IDs [93 +: 1]
2501 intr_i2c1_rx_watermark, // IDs [92 +: 1]
2502 intr_i2c1_fmt_watermark, // IDs [91 +: 1]
2503 intr_i2c0_host_timeout, // IDs [90 +: 1]
2504 intr_i2c0_ack_stop, // IDs [89 +: 1]
2505 intr_i2c0_acq_overflow, // IDs [88 +: 1]
2506 intr_i2c0_tx_overflow, // IDs [87 +: 1]
2507 intr_i2c0_tx_nonempty, // IDs [86 +: 1]
2508 intr_i2c0_tx_empty, // IDs [85 +: 1]
2509 intr_i2c0_trans_complete, // IDs [84 +: 1]
2510 intr_i2c0_sda_unstable, // IDs [83 +: 1]
2511 intr_i2c0_stretch_timeout, // IDs [82 +: 1]
2512 intr_i2c0_sda_interference, // IDs [81 +: 1]
2513 intr_i2c0_scl_interference, // IDs [80 +: 1]
2514 intr_i2c0_nak, // IDs [79 +: 1]
2515 intr_i2c0_rx_overflow, // IDs [78 +: 1]
2516 intr_i2c0_fmt_overflow, // IDs [77 +: 1]
2517 intr_i2c0_rx_watermark, // IDs [76 +: 1]
2518 intr_i2c0_fmt_watermark, // IDs [75 +: 1]
2519 intr_spi_host1_spi_event, // IDs [74 +: 1]
2520 intr_spi_host1_error, // IDs [73 +: 1]
2521 intr_spi_host0_spi_event, // IDs [72 +: 1]
2522 intr_spi_host0_error, // IDs [71 +: 1]
2523 intr_spi_device_txunderflow, // IDs [70 +: 1]
2524 intr_spi_device_rxoverflow, // IDs [69 +: 1]
2525 intr_spi_device_rxerr, // IDs [68 +: 1]
2526 intr_spi_device_txlvl, // IDs [67 +: 1]
2527 intr_spi_device_rxlvl, // IDs [66 +: 1]
2528 intr_spi_device_rxf, // IDs [65 +: 1]
2529 intr_gpio_gpio, // IDs [33 +: 32]
2530 intr_uart3_rx_parity_err, // IDs [32 +: 1]
2531 intr_uart3_rx_timeout, // IDs [31 +: 1]
2532 intr_uart3_rx_break_err, // IDs [30 +: 1]
2533 intr_uart3_rx_frame_err, // IDs [29 +: 1]
2534 intr_uart3_rx_overflow, // IDs [28 +: 1]
2535 intr_uart3_tx_empty, // IDs [27 +: 1]
2536 intr_uart3_rx_watermark, // IDs [26 +: 1]
2537 intr_uart3_tx_watermark, // IDs [25 +: 1]
2538 intr_uart2_rx_parity_err, // IDs [24 +: 1]
2539 intr_uart2_rx_timeout, // IDs [23 +: 1]
2540 intr_uart2_rx_break_err, // IDs [22 +: 1]
2541 intr_uart2_rx_frame_err, // IDs [21 +: 1]
2542 intr_uart2_rx_overflow, // IDs [20 +: 1]
2543 intr_uart2_tx_empty, // IDs [19 +: 1]
2544 intr_uart2_rx_watermark, // IDs [18 +: 1]
2545 intr_uart2_tx_watermark, // IDs [17 +: 1]
2546 intr_uart1_rx_parity_err, // IDs [16 +: 1]
2547 intr_uart1_rx_timeout, // IDs [15 +: 1]
2548 intr_uart1_rx_break_err, // IDs [14 +: 1]
2549 intr_uart1_rx_frame_err, // IDs [13 +: 1]
2550 intr_uart1_rx_overflow, // IDs [12 +: 1]
2551 intr_uart1_tx_empty, // IDs [11 +: 1]
2552 intr_uart1_rx_watermark, // IDs [10 +: 1]
2553 intr_uart1_tx_watermark, // IDs [9 +: 1]
2554 intr_uart0_rx_parity_err, // IDs [8 +: 1]
2555 intr_uart0_rx_timeout, // IDs [7 +: 1]
2556 intr_uart0_rx_break_err, // IDs [6 +: 1]
2557 intr_uart0_rx_frame_err, // IDs [5 +: 1]
2558 intr_uart0_rx_overflow, // IDs [4 +: 1]
2559 intr_uart0_tx_empty, // IDs [3 +: 1]
2560 intr_uart0_rx_watermark, // IDs [2 +: 1]
2561 intr_uart0_tx_watermark, // IDs [1 +: 1]
2562 1'b 0 // ID [0 +: 1] is a special case and tied to zero.
lowRISC Contributors802543a2019-08-31 12:12:56 +01002563 };
2564
2565 // TL-UL Crossbar
lowRISC Contributors802543a2019-08-31 12:12:56 +01002566 xbar_main u_xbar_main (
Timothy Chen8aeeb492021-02-01 21:25:17 -08002567 .clk_main_i (clkmgr_aon_clocks.clk_main_infra),
2568 .clk_fixed_i (clkmgr_aon_clocks.clk_io_div4_infra),
2569 .rst_main_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
2570 .rst_fixed_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
Eunchan Kim0f549542020-08-04 10:40:11 -07002571
2572 // port: tl_corei
2573 .tl_corei_i(main_tl_corei_req),
2574 .tl_corei_o(main_tl_corei_rsp),
2575
2576 // port: tl_cored
2577 .tl_cored_i(main_tl_cored_req),
2578 .tl_cored_o(main_tl_cored_rsp),
2579
2580 // port: tl_dm_sba
2581 .tl_dm_sba_i(main_tl_dm_sba_req),
2582 .tl_dm_sba_o(main_tl_dm_sba_rsp),
2583
Rupert Swarbrick9855d4b2020-12-02 08:41:35 +00002584 // port: tl_rom_ctrl__rom
2585 .tl_rom_ctrl__rom_o(rom_ctrl_rom_tl_req),
2586 .tl_rom_ctrl__rom_i(rom_ctrl_rom_tl_rsp),
2587
2588 // port: tl_rom_ctrl__regs
2589 .tl_rom_ctrl__regs_o(rom_ctrl_regs_tl_req),
2590 .tl_rom_ctrl__regs_i(rom_ctrl_regs_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002591
2592 // port: tl_debug_mem
2593 .tl_debug_mem_o(main_tl_debug_mem_req),
2594 .tl_debug_mem_i(main_tl_debug_mem_rsp),
2595
2596 // port: tl_ram_main
2597 .tl_ram_main_o(ram_main_tl_req),
2598 .tl_ram_main_i(ram_main_tl_rsp),
2599
2600 // port: tl_eflash
2601 .tl_eflash_o(eflash_tl_req),
2602 .tl_eflash_i(eflash_tl_rsp),
2603
2604 // port: tl_peri
2605 .tl_peri_o(main_tl_peri_req),
2606 .tl_peri_i(main_tl_peri_rsp),
2607
Timothy Chen76eb8832021-03-25 16:49:58 -07002608 // port: tl_flash_ctrl__core
2609 .tl_flash_ctrl__core_o(flash_ctrl_core_tl_req),
2610 .tl_flash_ctrl__core_i(flash_ctrl_core_tl_rsp),
2611
2612 // port: tl_flash_ctrl__prim
2613 .tl_flash_ctrl__prim_o(flash_ctrl_prim_tl_req),
2614 .tl_flash_ctrl__prim_i(flash_ctrl_prim_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002615
2616 // port: tl_hmac
2617 .tl_hmac_o(hmac_tl_req),
2618 .tl_hmac_i(hmac_tl_rsp),
2619
Eunchan Kime5d33b72020-11-03 14:34:16 -08002620 // port: tl_kmac
2621 .tl_kmac_o(kmac_tl_req),
2622 .tl_kmac_i(kmac_tl_rsp),
2623
Eunchan Kim0f549542020-08-04 10:40:11 -07002624 // port: tl_aes
2625 .tl_aes_o(aes_tl_req),
2626 .tl_aes_i(aes_tl_rsp),
2627
Mark Branstadff807362020-11-16 07:56:15 -08002628 // port: tl_entropy_src
2629 .tl_entropy_src_o(entropy_src_tl_req),
2630 .tl_entropy_src_i(entropy_src_tl_rsp),
2631
2632 // port: tl_csrng
2633 .tl_csrng_o(csrng_tl_req),
2634 .tl_csrng_i(csrng_tl_rsp),
2635
2636 // port: tl_edn0
2637 .tl_edn0_o(edn0_tl_req),
2638 .tl_edn0_i(edn0_tl_rsp),
2639
2640 // port: tl_edn1
2641 .tl_edn1_o(edn1_tl_req),
2642 .tl_edn1_i(edn1_tl_rsp),
2643
Eunchan Kim0f549542020-08-04 10:40:11 -07002644 // port: tl_rv_plic
2645 .tl_rv_plic_o(rv_plic_tl_req),
2646 .tl_rv_plic_i(rv_plic_tl_rsp),
2647
Eunchan Kim0f549542020-08-04 10:40:11 -07002648 // port: tl_otbn
2649 .tl_otbn_o(otbn_tl_req),
2650 .tl_otbn_i(otbn_tl_rsp),
2651
Timothy Chen94953722020-09-18 16:15:12 -07002652 // port: tl_keymgr
2653 .tl_keymgr_o(keymgr_tl_req),
2654 .tl_keymgr_i(keymgr_tl_rsp),
2655
Michael Schaffner9da4db82020-12-21 15:35:24 -08002656 // port: tl_sram_ctrl_main
2657 .tl_sram_ctrl_main_o(sram_ctrl_main_tl_req),
2658 .tl_sram_ctrl_main_i(sram_ctrl_main_tl_rsp),
2659
lowRISC Contributors802543a2019-08-31 12:12:56 +01002660
2661 .scanmode_i
2662 );
Eunchan Kim55d7ae82019-12-19 17:08:35 -08002663 xbar_peri u_xbar_peri (
Timothy Chen8aeeb492021-02-01 21:25:17 -08002664 .clk_peri_i (clkmgr_aon_clocks.clk_io_div4_infra),
2665 .rst_peri_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
Eunchan Kim0f549542020-08-04 10:40:11 -07002666
2667 // port: tl_main
2668 .tl_main_i(main_tl_peri_req),
2669 .tl_main_o(main_tl_peri_rsp),
2670
Timothy Chen2971a1e2021-01-21 16:00:01 -08002671 // port: tl_uart0
2672 .tl_uart0_o(uart0_tl_req),
2673 .tl_uart0_i(uart0_tl_rsp),
2674
2675 // port: tl_uart1
2676 .tl_uart1_o(uart1_tl_req),
2677 .tl_uart1_i(uart1_tl_rsp),
2678
2679 // port: tl_uart2
2680 .tl_uart2_o(uart2_tl_req),
2681 .tl_uart2_i(uart2_tl_rsp),
2682
2683 // port: tl_uart3
2684 .tl_uart3_o(uart3_tl_req),
2685 .tl_uart3_i(uart3_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002686
Timothy Chen469a3032021-02-01 15:44:09 -08002687 // port: tl_i2c0
2688 .tl_i2c0_o(i2c0_tl_req),
2689 .tl_i2c0_i(i2c0_tl_rsp),
2690
2691 // port: tl_i2c1
2692 .tl_i2c1_o(i2c1_tl_req),
2693 .tl_i2c1_i(i2c1_tl_rsp),
2694
2695 // port: tl_i2c2
2696 .tl_i2c2_o(i2c2_tl_req),
2697 .tl_i2c2_i(i2c2_tl_rsp),
2698
2699 // port: tl_pattgen
2700 .tl_pattgen_o(pattgen_tl_req),
2701 .tl_pattgen_i(pattgen_tl_rsp),
2702
Martin Lueker-Boden0d63fe02021-03-10 17:30:37 -08002703 // port: tl_pwm_aon
2704 .tl_pwm_aon_o(pwm_aon_tl_req),
2705 .tl_pwm_aon_i(pwm_aon_tl_rsp),
2706
Eunchan Kim0f549542020-08-04 10:40:11 -07002707 // port: tl_gpio
2708 .tl_gpio_o(gpio_tl_req),
2709 .tl_gpio_i(gpio_tl_rsp),
2710
2711 // port: tl_spi_device
2712 .tl_spi_device_o(spi_device_tl_req),
2713 .tl_spi_device_i(spi_device_tl_rsp),
2714
Michael Schaffnerdbd087e2021-02-12 17:58:30 -08002715 // port: tl_spi_host0
2716 .tl_spi_host0_o(spi_host0_tl_req),
2717 .tl_spi_host0_i(spi_host0_tl_rsp),
2718
2719 // port: tl_spi_host1
2720 .tl_spi_host1_o(spi_host1_tl_req),
2721 .tl_spi_host1_i(spi_host1_tl_rsp),
2722
Eunchan Kim0f549542020-08-04 10:40:11 -07002723 // port: tl_rv_timer
2724 .tl_rv_timer_o(rv_timer_tl_req),
2725 .tl_rv_timer_i(rv_timer_tl_rsp),
2726
2727 // port: tl_usbdev
2728 .tl_usbdev_o(usbdev_tl_req),
2729 .tl_usbdev_i(usbdev_tl_rsp),
2730
Timothy Chen8aeeb492021-02-01 21:25:17 -08002731 // port: tl_pwrmgr_aon
2732 .tl_pwrmgr_aon_o(pwrmgr_aon_tl_req),
2733 .tl_pwrmgr_aon_i(pwrmgr_aon_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002734
Timothy Chen8aeeb492021-02-01 21:25:17 -08002735 // port: tl_rstmgr_aon
2736 .tl_rstmgr_aon_o(rstmgr_aon_tl_req),
2737 .tl_rstmgr_aon_i(rstmgr_aon_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002738
Timothy Chen8aeeb492021-02-01 21:25:17 -08002739 // port: tl_clkmgr_aon
2740 .tl_clkmgr_aon_o(clkmgr_aon_tl_req),
2741 .tl_clkmgr_aon_i(clkmgr_aon_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002742
Timothy Chen8aeeb492021-02-01 21:25:17 -08002743 // port: tl_pinmux_aon
2744 .tl_pinmux_aon_o(pinmux_aon_tl_req),
2745 .tl_pinmux_aon_i(pinmux_aon_tl_rsp),
2746
Timothy Chen8aeeb492021-02-01 21:25:17 -08002747 // port: tl_ram_ret_aon
2748 .tl_ram_ret_aon_o(ram_ret_aon_tl_req),
2749 .tl_ram_ret_aon_i(ram_ret_aon_tl_rsp),
Eunchan Kim0f549542020-08-04 10:40:11 -07002750
Michael Schaffnera3045602020-10-06 19:19:46 -07002751 // port: tl_otp_ctrl
2752 .tl_otp_ctrl_o(otp_ctrl_tl_req),
2753 .tl_otp_ctrl_i(otp_ctrl_tl_rsp),
2754
Michael Schaffner6d3d6a02020-12-11 13:52:51 -08002755 // port: tl_lc_ctrl
2756 .tl_lc_ctrl_o(lc_ctrl_tl_req),
2757 .tl_lc_ctrl_i(lc_ctrl_tl_rsp),
2758
Timothy Chen8aeeb492021-02-01 21:25:17 -08002759 // port: tl_sensor_ctrl_aon
2760 .tl_sensor_ctrl_aon_o(sensor_ctrl_aon_tl_req),
2761 .tl_sensor_ctrl_aon_i(sensor_ctrl_aon_tl_rsp),
Timothy Chen1555dce2020-08-11 11:26:50 -07002762
Michael Schaffnerd1fc7d12020-12-21 12:52:23 -08002763 // port: tl_alert_handler
2764 .tl_alert_handler_o(alert_handler_tl_req),
2765 .tl_alert_handler_i(alert_handler_tl_rsp),
2766
Timothy Chen8aeeb492021-02-01 21:25:17 -08002767 // port: tl_sram_ctrl_ret_aon
2768 .tl_sram_ctrl_ret_aon_o(sram_ctrl_ret_aon_tl_req),
2769 .tl_sram_ctrl_ret_aon_i(sram_ctrl_ret_aon_tl_rsp),
Michael Schaffner9da4db82020-12-21 15:35:24 -08002770
Timothy Chen2b8ef762021-02-16 14:44:55 -08002771 // port: tl_aon_timer_aon
2772 .tl_aon_timer_aon_o(aon_timer_aon_tl_req),
2773 .tl_aon_timer_aon_i(aon_timer_aon_tl_rsp),
Michael Schaffnerd1fc7d12020-12-21 12:52:23 -08002774
Michael Schaffnere029a682021-04-06 16:21:30 -07002775 // port: tl_sysrst_ctrl_aon
2776 .tl_sysrst_ctrl_aon_o(sysrst_ctrl_aon_tl_req),
2777 .tl_sysrst_ctrl_aon_i(sysrst_ctrl_aon_tl_rsp),
2778
Timothy Chen6f98f352021-03-10 16:27:29 -08002779 // port: tl_adc_ctrl_aon
2780 .tl_adc_ctrl_aon_o(adc_ctrl_aon_tl_req),
2781 .tl_adc_ctrl_aon_i(adc_ctrl_aon_tl_rsp),
2782
Timothy Chenb1966872021-03-01 22:39:01 -08002783 // port: tl_ast
2784 .tl_ast_o(ast_tl_req_o),
2785 .tl_ast_i(ast_tl_rsp_i),
Timothy Chenfb34fe32020-08-26 17:13:19 -07002786
Eunchan Kim55d7ae82019-12-19 17:08:35 -08002787
2788 .scanmode_i
2789 );
lowRISC Contributors802543a2019-08-31 12:12:56 +01002790
Eunchan Kim769065e2019-10-29 17:29:26 -07002791 // Pinmux connections
Michael Schaffner74c4ff22021-03-30 15:43:46 -07002792 // All muxed inputs
2793 assign cio_gpio_gpio_p2d[0] = mio_p2d[MioInGpioGpio0];
2794 assign cio_gpio_gpio_p2d[1] = mio_p2d[MioInGpioGpio1];
2795 assign cio_gpio_gpio_p2d[2] = mio_p2d[MioInGpioGpio2];
2796 assign cio_gpio_gpio_p2d[3] = mio_p2d[MioInGpioGpio3];
2797 assign cio_gpio_gpio_p2d[4] = mio_p2d[MioInGpioGpio4];
2798 assign cio_gpio_gpio_p2d[5] = mio_p2d[MioInGpioGpio5];
2799 assign cio_gpio_gpio_p2d[6] = mio_p2d[MioInGpioGpio6];
2800 assign cio_gpio_gpio_p2d[7] = mio_p2d[MioInGpioGpio7];
2801 assign cio_gpio_gpio_p2d[8] = mio_p2d[MioInGpioGpio8];
2802 assign cio_gpio_gpio_p2d[9] = mio_p2d[MioInGpioGpio9];
2803 assign cio_gpio_gpio_p2d[10] = mio_p2d[MioInGpioGpio10];
2804 assign cio_gpio_gpio_p2d[11] = mio_p2d[MioInGpioGpio11];
2805 assign cio_gpio_gpio_p2d[12] = mio_p2d[MioInGpioGpio12];
2806 assign cio_gpio_gpio_p2d[13] = mio_p2d[MioInGpioGpio13];
2807 assign cio_gpio_gpio_p2d[14] = mio_p2d[MioInGpioGpio14];
2808 assign cio_gpio_gpio_p2d[15] = mio_p2d[MioInGpioGpio15];
2809 assign cio_gpio_gpio_p2d[16] = mio_p2d[MioInGpioGpio16];
2810 assign cio_gpio_gpio_p2d[17] = mio_p2d[MioInGpioGpio17];
2811 assign cio_gpio_gpio_p2d[18] = mio_p2d[MioInGpioGpio18];
2812 assign cio_gpio_gpio_p2d[19] = mio_p2d[MioInGpioGpio19];
2813 assign cio_gpio_gpio_p2d[20] = mio_p2d[MioInGpioGpio20];
2814 assign cio_gpio_gpio_p2d[21] = mio_p2d[MioInGpioGpio21];
2815 assign cio_gpio_gpio_p2d[22] = mio_p2d[MioInGpioGpio22];
2816 assign cio_gpio_gpio_p2d[23] = mio_p2d[MioInGpioGpio23];
2817 assign cio_gpio_gpio_p2d[24] = mio_p2d[MioInGpioGpio24];
2818 assign cio_gpio_gpio_p2d[25] = mio_p2d[MioInGpioGpio25];
2819 assign cio_gpio_gpio_p2d[26] = mio_p2d[MioInGpioGpio26];
2820 assign cio_gpio_gpio_p2d[27] = mio_p2d[MioInGpioGpio27];
2821 assign cio_gpio_gpio_p2d[28] = mio_p2d[MioInGpioGpio28];
2822 assign cio_gpio_gpio_p2d[29] = mio_p2d[MioInGpioGpio29];
2823 assign cio_gpio_gpio_p2d[30] = mio_p2d[MioInGpioGpio30];
2824 assign cio_gpio_gpio_p2d[31] = mio_p2d[MioInGpioGpio31];
2825 assign cio_i2c0_sda_p2d = mio_p2d[MioInI2c0Sda];
2826 assign cio_i2c0_scl_p2d = mio_p2d[MioInI2c0Scl];
2827 assign cio_i2c1_sda_p2d = mio_p2d[MioInI2c1Sda];
2828 assign cio_i2c1_scl_p2d = mio_p2d[MioInI2c1Scl];
2829 assign cio_i2c2_sda_p2d = mio_p2d[MioInI2c2Sda];
2830 assign cio_i2c2_scl_p2d = mio_p2d[MioInI2c2Scl];
2831 assign cio_spi_host1_sd_p2d[0] = mio_p2d[MioInSpiHost1Sd0];
2832 assign cio_spi_host1_sd_p2d[1] = mio_p2d[MioInSpiHost1Sd1];
2833 assign cio_spi_host1_sd_p2d[2] = mio_p2d[MioInSpiHost1Sd2];
2834 assign cio_spi_host1_sd_p2d[3] = mio_p2d[MioInSpiHost1Sd3];
2835 assign cio_uart0_rx_p2d = mio_p2d[MioInUart0Rx];
2836 assign cio_uart1_rx_p2d = mio_p2d[MioInUart1Rx];
2837 assign cio_uart2_rx_p2d = mio_p2d[MioInUart2Rx];
2838 assign cio_uart3_rx_p2d = mio_p2d[MioInUart3Rx];
2839 assign cio_flash_ctrl_tck_p2d = mio_p2d[MioInFlashCtrlTck];
2840 assign cio_flash_ctrl_tms_p2d = mio_p2d[MioInFlashCtrlTms];
2841 assign cio_flash_ctrl_tdi_p2d = mio_p2d[MioInFlashCtrlTdi];
Michael Schaffnere029a682021-04-06 16:21:30 -07002842 assign cio_sysrst_ctrl_aon_ac_present_p2d = mio_p2d[MioInSysrstCtrlAonAcPresent];
2843 assign cio_sysrst_ctrl_aon_ec_rst_in_l_p2d = mio_p2d[MioInSysrstCtrlAonEcRstInL];
2844 assign cio_sysrst_ctrl_aon_key0_in_p2d = mio_p2d[MioInSysrstCtrlAonKey0In];
2845 assign cio_sysrst_ctrl_aon_key1_in_p2d = mio_p2d[MioInSysrstCtrlAonKey1In];
2846 assign cio_sysrst_ctrl_aon_key2_in_p2d = mio_p2d[MioInSysrstCtrlAonKey2In];
2847 assign cio_sysrst_ctrl_aon_pwrb_in_p2d = mio_p2d[MioInSysrstCtrlAonPwrbIn];
Eunchan Kim769065e2019-10-29 17:29:26 -07002848
Michael Schaffner74c4ff22021-03-30 15:43:46 -07002849 // All muxed outputs
2850 assign mio_d2p[MioOutGpioGpio0] = cio_gpio_gpio_d2p[0];
2851 assign mio_d2p[MioOutGpioGpio1] = cio_gpio_gpio_d2p[1];
2852 assign mio_d2p[MioOutGpioGpio2] = cio_gpio_gpio_d2p[2];
2853 assign mio_d2p[MioOutGpioGpio3] = cio_gpio_gpio_d2p[3];
2854 assign mio_d2p[MioOutGpioGpio4] = cio_gpio_gpio_d2p[4];
2855 assign mio_d2p[MioOutGpioGpio5] = cio_gpio_gpio_d2p[5];
2856 assign mio_d2p[MioOutGpioGpio6] = cio_gpio_gpio_d2p[6];
2857 assign mio_d2p[MioOutGpioGpio7] = cio_gpio_gpio_d2p[7];
2858 assign mio_d2p[MioOutGpioGpio8] = cio_gpio_gpio_d2p[8];
2859 assign mio_d2p[MioOutGpioGpio9] = cio_gpio_gpio_d2p[9];
2860 assign mio_d2p[MioOutGpioGpio10] = cio_gpio_gpio_d2p[10];
2861 assign mio_d2p[MioOutGpioGpio11] = cio_gpio_gpio_d2p[11];
2862 assign mio_d2p[MioOutGpioGpio12] = cio_gpio_gpio_d2p[12];
2863 assign mio_d2p[MioOutGpioGpio13] = cio_gpio_gpio_d2p[13];
2864 assign mio_d2p[MioOutGpioGpio14] = cio_gpio_gpio_d2p[14];
2865 assign mio_d2p[MioOutGpioGpio15] = cio_gpio_gpio_d2p[15];
2866 assign mio_d2p[MioOutGpioGpio16] = cio_gpio_gpio_d2p[16];
2867 assign mio_d2p[MioOutGpioGpio17] = cio_gpio_gpio_d2p[17];
2868 assign mio_d2p[MioOutGpioGpio18] = cio_gpio_gpio_d2p[18];
2869 assign mio_d2p[MioOutGpioGpio19] = cio_gpio_gpio_d2p[19];
2870 assign mio_d2p[MioOutGpioGpio20] = cio_gpio_gpio_d2p[20];
2871 assign mio_d2p[MioOutGpioGpio21] = cio_gpio_gpio_d2p[21];
2872 assign mio_d2p[MioOutGpioGpio22] = cio_gpio_gpio_d2p[22];
2873 assign mio_d2p[MioOutGpioGpio23] = cio_gpio_gpio_d2p[23];
2874 assign mio_d2p[MioOutGpioGpio24] = cio_gpio_gpio_d2p[24];
2875 assign mio_d2p[MioOutGpioGpio25] = cio_gpio_gpio_d2p[25];
2876 assign mio_d2p[MioOutGpioGpio26] = cio_gpio_gpio_d2p[26];
2877 assign mio_d2p[MioOutGpioGpio27] = cio_gpio_gpio_d2p[27];
2878 assign mio_d2p[MioOutGpioGpio28] = cio_gpio_gpio_d2p[28];
2879 assign mio_d2p[MioOutGpioGpio29] = cio_gpio_gpio_d2p[29];
2880 assign mio_d2p[MioOutGpioGpio30] = cio_gpio_gpio_d2p[30];
2881 assign mio_d2p[MioOutGpioGpio31] = cio_gpio_gpio_d2p[31];
2882 assign mio_d2p[MioOutI2c0Sda] = cio_i2c0_sda_d2p;
2883 assign mio_d2p[MioOutI2c0Scl] = cio_i2c0_scl_d2p;
2884 assign mio_d2p[MioOutI2c1Sda] = cio_i2c1_sda_d2p;
2885 assign mio_d2p[MioOutI2c1Scl] = cio_i2c1_scl_d2p;
2886 assign mio_d2p[MioOutI2c2Sda] = cio_i2c2_sda_d2p;
2887 assign mio_d2p[MioOutI2c2Scl] = cio_i2c2_scl_d2p;
2888 assign mio_d2p[MioOutSpiHost1Sd0] = cio_spi_host1_sd_d2p[0];
2889 assign mio_d2p[MioOutSpiHost1Sd1] = cio_spi_host1_sd_d2p[1];
2890 assign mio_d2p[MioOutSpiHost1Sd2] = cio_spi_host1_sd_d2p[2];
2891 assign mio_d2p[MioOutSpiHost1Sd3] = cio_spi_host1_sd_d2p[3];
2892 assign mio_d2p[MioOutUart0Tx] = cio_uart0_tx_d2p;
2893 assign mio_d2p[MioOutUart1Tx] = cio_uart1_tx_d2p;
2894 assign mio_d2p[MioOutUart2Tx] = cio_uart2_tx_d2p;
2895 assign mio_d2p[MioOutUart3Tx] = cio_uart3_tx_d2p;
2896 assign mio_d2p[MioOutPattgenPda0Tx] = cio_pattgen_pda0_tx_d2p;
2897 assign mio_d2p[MioOutPattgenPcl0Tx] = cio_pattgen_pcl0_tx_d2p;
2898 assign mio_d2p[MioOutPattgenPda1Tx] = cio_pattgen_pda1_tx_d2p;
2899 assign mio_d2p[MioOutPattgenPcl1Tx] = cio_pattgen_pcl1_tx_d2p;
2900 assign mio_d2p[MioOutSpiHost1Sck] = cio_spi_host1_sck_d2p;
2901 assign mio_d2p[MioOutSpiHost1Csb] = cio_spi_host1_csb_d2p;
2902 assign mio_d2p[MioOutFlashCtrlTdo] = cio_flash_ctrl_tdo_d2p;
2903 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut0] = cio_sensor_ctrl_aon_ast_debug_out_d2p[0];
2904 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut1] = cio_sensor_ctrl_aon_ast_debug_out_d2p[1];
2905 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut2] = cio_sensor_ctrl_aon_ast_debug_out_d2p[2];
2906 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut3] = cio_sensor_ctrl_aon_ast_debug_out_d2p[3];
2907 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut4] = cio_sensor_ctrl_aon_ast_debug_out_d2p[4];
2908 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut5] = cio_sensor_ctrl_aon_ast_debug_out_d2p[5];
2909 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut6] = cio_sensor_ctrl_aon_ast_debug_out_d2p[6];
2910 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut7] = cio_sensor_ctrl_aon_ast_debug_out_d2p[7];
2911 assign mio_d2p[MioOutSensorCtrlAonAstDebugOut8] = cio_sensor_ctrl_aon_ast_debug_out_d2p[8];
Martin Lueker-Boden0d63fe02021-03-10 17:30:37 -08002912 assign mio_d2p[MioOutPwmAonPwm0] = cio_pwm_aon_pwm_d2p[0];
2913 assign mio_d2p[MioOutPwmAonPwm1] = cio_pwm_aon_pwm_d2p[1];
2914 assign mio_d2p[MioOutPwmAonPwm2] = cio_pwm_aon_pwm_d2p[2];
2915 assign mio_d2p[MioOutPwmAonPwm3] = cio_pwm_aon_pwm_d2p[3];
2916 assign mio_d2p[MioOutPwmAonPwm4] = cio_pwm_aon_pwm_d2p[4];
2917 assign mio_d2p[MioOutPwmAonPwm5] = cio_pwm_aon_pwm_d2p[5];
Michael Schaffnere029a682021-04-06 16:21:30 -07002918 assign mio_d2p[MioOutSysrstCtrlAonBatDisable] = cio_sysrst_ctrl_aon_bat_disable_d2p;
2919 assign mio_d2p[MioOutSysrstCtrlAonKey0Out] = cio_sysrst_ctrl_aon_key0_out_d2p;
2920 assign mio_d2p[MioOutSysrstCtrlAonKey1Out] = cio_sysrst_ctrl_aon_key1_out_d2p;
2921 assign mio_d2p[MioOutSysrstCtrlAonKey2Out] = cio_sysrst_ctrl_aon_key2_out_d2p;
Michael Schaffner920e4cc2020-04-28 22:58:12 -07002922
Michael Schaffner74c4ff22021-03-30 15:43:46 -07002923 // All muxed output enables
2924 assign mio_en_d2p[MioOutGpioGpio0] = cio_gpio_gpio_en_d2p[0];
2925 assign mio_en_d2p[MioOutGpioGpio1] = cio_gpio_gpio_en_d2p[1];
2926 assign mio_en_d2p[MioOutGpioGpio2] = cio_gpio_gpio_en_d2p[2];
2927 assign mio_en_d2p[MioOutGpioGpio3] = cio_gpio_gpio_en_d2p[3];
2928 assign mio_en_d2p[MioOutGpioGpio4] = cio_gpio_gpio_en_d2p[4];
2929 assign mio_en_d2p[MioOutGpioGpio5] = cio_gpio_gpio_en_d2p[5];
2930 assign mio_en_d2p[MioOutGpioGpio6] = cio_gpio_gpio_en_d2p[6];
2931 assign mio_en_d2p[MioOutGpioGpio7] = cio_gpio_gpio_en_d2p[7];
2932 assign mio_en_d2p[MioOutGpioGpio8] = cio_gpio_gpio_en_d2p[8];
2933 assign mio_en_d2p[MioOutGpioGpio9] = cio_gpio_gpio_en_d2p[9];
2934 assign mio_en_d2p[MioOutGpioGpio10] = cio_gpio_gpio_en_d2p[10];
2935 assign mio_en_d2p[MioOutGpioGpio11] = cio_gpio_gpio_en_d2p[11];
2936 assign mio_en_d2p[MioOutGpioGpio12] = cio_gpio_gpio_en_d2p[12];
2937 assign mio_en_d2p[MioOutGpioGpio13] = cio_gpio_gpio_en_d2p[13];
2938 assign mio_en_d2p[MioOutGpioGpio14] = cio_gpio_gpio_en_d2p[14];
2939 assign mio_en_d2p[MioOutGpioGpio15] = cio_gpio_gpio_en_d2p[15];
2940 assign mio_en_d2p[MioOutGpioGpio16] = cio_gpio_gpio_en_d2p[16];
2941 assign mio_en_d2p[MioOutGpioGpio17] = cio_gpio_gpio_en_d2p[17];
2942 assign mio_en_d2p[MioOutGpioGpio18] = cio_gpio_gpio_en_d2p[18];
2943 assign mio_en_d2p[MioOutGpioGpio19] = cio_gpio_gpio_en_d2p[19];
2944 assign mio_en_d2p[MioOutGpioGpio20] = cio_gpio_gpio_en_d2p[20];
2945 assign mio_en_d2p[MioOutGpioGpio21] = cio_gpio_gpio_en_d2p[21];
2946 assign mio_en_d2p[MioOutGpioGpio22] = cio_gpio_gpio_en_d2p[22];
2947 assign mio_en_d2p[MioOutGpioGpio23] = cio_gpio_gpio_en_d2p[23];
2948 assign mio_en_d2p[MioOutGpioGpio24] = cio_gpio_gpio_en_d2p[24];
2949 assign mio_en_d2p[MioOutGpioGpio25] = cio_gpio_gpio_en_d2p[25];
2950 assign mio_en_d2p[MioOutGpioGpio26] = cio_gpio_gpio_en_d2p[26];
2951 assign mio_en_d2p[MioOutGpioGpio27] = cio_gpio_gpio_en_d2p[27];
2952 assign mio_en_d2p[MioOutGpioGpio28] = cio_gpio_gpio_en_d2p[28];
2953 assign mio_en_d2p[MioOutGpioGpio29] = cio_gpio_gpio_en_d2p[29];
2954 assign mio_en_d2p[MioOutGpioGpio30] = cio_gpio_gpio_en_d2p[30];
2955 assign mio_en_d2p[MioOutGpioGpio31] = cio_gpio_gpio_en_d2p[31];
2956 assign mio_en_d2p[MioOutI2c0Sda] = cio_i2c0_sda_en_d2p;
2957 assign mio_en_d2p[MioOutI2c0Scl] = cio_i2c0_scl_en_d2p;
2958 assign mio_en_d2p[MioOutI2c1Sda] = cio_i2c1_sda_en_d2p;
2959 assign mio_en_d2p[MioOutI2c1Scl] = cio_i2c1_scl_en_d2p;
2960 assign mio_en_d2p[MioOutI2c2Sda] = cio_i2c2_sda_en_d2p;
2961 assign mio_en_d2p[MioOutI2c2Scl] = cio_i2c2_scl_en_d2p;
2962 assign mio_en_d2p[MioOutSpiHost1Sd0] = cio_spi_host1_sd_en_d2p[0];
2963 assign mio_en_d2p[MioOutSpiHost1Sd1] = cio_spi_host1_sd_en_d2p[1];
2964 assign mio_en_d2p[MioOutSpiHost1Sd2] = cio_spi_host1_sd_en_d2p[2];
2965 assign mio_en_d2p[MioOutSpiHost1Sd3] = cio_spi_host1_sd_en_d2p[3];
2966 assign mio_en_d2p[MioOutUart0Tx] = cio_uart0_tx_en_d2p;
2967 assign mio_en_d2p[MioOutUart1Tx] = cio_uart1_tx_en_d2p;
2968 assign mio_en_d2p[MioOutUart2Tx] = cio_uart2_tx_en_d2p;
2969 assign mio_en_d2p[MioOutUart3Tx] = cio_uart3_tx_en_d2p;
2970 assign mio_en_d2p[MioOutPattgenPda0Tx] = cio_pattgen_pda0_tx_en_d2p;
2971 assign mio_en_d2p[MioOutPattgenPcl0Tx] = cio_pattgen_pcl0_tx_en_d2p;
2972 assign mio_en_d2p[MioOutPattgenPda1Tx] = cio_pattgen_pda1_tx_en_d2p;
2973 assign mio_en_d2p[MioOutPattgenPcl1Tx] = cio_pattgen_pcl1_tx_en_d2p;
2974 assign mio_en_d2p[MioOutSpiHost1Sck] = cio_spi_host1_sck_en_d2p;
2975 assign mio_en_d2p[MioOutSpiHost1Csb] = cio_spi_host1_csb_en_d2p;
2976 assign mio_en_d2p[MioOutFlashCtrlTdo] = cio_flash_ctrl_tdo_en_d2p;
2977 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut0] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[0];
2978 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut1] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[1];
2979 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut2] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[2];
2980 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut3] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[3];
2981 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut4] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[4];
2982 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut5] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[5];
2983 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut6] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[6];
2984 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut7] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[7];
2985 assign mio_en_d2p[MioOutSensorCtrlAonAstDebugOut8] = cio_sensor_ctrl_aon_ast_debug_out_en_d2p[8];
Martin Lueker-Boden0d63fe02021-03-10 17:30:37 -08002986 assign mio_en_d2p[MioOutPwmAonPwm0] = cio_pwm_aon_pwm_en_d2p[0];
2987 assign mio_en_d2p[MioOutPwmAonPwm1] = cio_pwm_aon_pwm_en_d2p[1];
2988 assign mio_en_d2p[MioOutPwmAonPwm2] = cio_pwm_aon_pwm_en_d2p[2];
2989 assign mio_en_d2p[MioOutPwmAonPwm3] = cio_pwm_aon_pwm_en_d2p[3];
2990 assign mio_en_d2p[MioOutPwmAonPwm4] = cio_pwm_aon_pwm_en_d2p[4];
2991 assign mio_en_d2p[MioOutPwmAonPwm5] = cio_pwm_aon_pwm_en_d2p[5];
Michael Schaffnere029a682021-04-06 16:21:30 -07002992 assign mio_en_d2p[MioOutSysrstCtrlAonBatDisable] = cio_sysrst_ctrl_aon_bat_disable_en_d2p;
2993 assign mio_en_d2p[MioOutSysrstCtrlAonKey0Out] = cio_sysrst_ctrl_aon_key0_out_en_d2p;
2994 assign mio_en_d2p[MioOutSysrstCtrlAonKey1Out] = cio_sysrst_ctrl_aon_key1_out_en_d2p;
2995 assign mio_en_d2p[MioOutSysrstCtrlAonKey2Out] = cio_sysrst_ctrl_aon_key2_out_en_d2p;
Michael Schaffner920e4cc2020-04-28 22:58:12 -07002996
Michael Schaffner74c4ff22021-03-30 15:43:46 -07002997 // All dedicated inputs
Timothy Chen22c18562021-04-09 14:52:12 -07002998 logic [23:0] unused_dio_p2d;
Timothy Chenb3d45f62021-04-10 00:29:49 -07002999 assign unused_dio_p2d = dio_p2d;
Michael Schaffner74c4ff22021-03-30 15:43:46 -07003000 assign cio_spi_host0_sd_p2d[0] = dio_p2d[DioSpiHost0Sd0];
3001 assign cio_spi_host0_sd_p2d[1] = dio_p2d[DioSpiHost0Sd1];
3002 assign cio_spi_host0_sd_p2d[2] = dio_p2d[DioSpiHost0Sd2];
3003 assign cio_spi_host0_sd_p2d[3] = dio_p2d[DioSpiHost0Sd3];
3004 assign cio_spi_device_sd_p2d[0] = dio_p2d[DioSpiDeviceSd0];
3005 assign cio_spi_device_sd_p2d[1] = dio_p2d[DioSpiDeviceSd1];
3006 assign cio_spi_device_sd_p2d[2] = dio_p2d[DioSpiDeviceSd2];
3007 assign cio_spi_device_sd_p2d[3] = dio_p2d[DioSpiDeviceSd3];
3008 assign cio_usbdev_d_p2d = dio_p2d[DioUsbdevD];
3009 assign cio_usbdev_dp_p2d = dio_p2d[DioUsbdevDp];
3010 assign cio_usbdev_dn_p2d = dio_p2d[DioUsbdevDn];
3011 assign cio_spi_device_sck_p2d = dio_p2d[DioSpiDeviceSck];
3012 assign cio_spi_device_csb_p2d = dio_p2d[DioSpiDeviceCsb];
3013 assign cio_usbdev_sense_p2d = dio_p2d[DioUsbdevSense];
Michael Schaffner74c4ff22021-03-30 15:43:46 -07003014
3015 // All dedicated outputs
3016 assign dio_d2p[DioSpiHost0Sd0] = cio_spi_host0_sd_d2p[0];
3017 assign dio_d2p[DioSpiHost0Sd1] = cio_spi_host0_sd_d2p[1];
3018 assign dio_d2p[DioSpiHost0Sd2] = cio_spi_host0_sd_d2p[2];
3019 assign dio_d2p[DioSpiHost0Sd3] = cio_spi_host0_sd_d2p[3];
3020 assign dio_d2p[DioSpiDeviceSd0] = cio_spi_device_sd_d2p[0];
3021 assign dio_d2p[DioSpiDeviceSd1] = cio_spi_device_sd_d2p[1];
3022 assign dio_d2p[DioSpiDeviceSd2] = cio_spi_device_sd_d2p[2];
3023 assign dio_d2p[DioSpiDeviceSd3] = cio_spi_device_sd_d2p[3];
3024 assign dio_d2p[DioUsbdevD] = cio_usbdev_d_d2p;
3025 assign dio_d2p[DioUsbdevDp] = cio_usbdev_dp_d2p;
3026 assign dio_d2p[DioUsbdevDn] = cio_usbdev_dn_d2p;
3027 assign dio_d2p[DioSpiDeviceSck] = 1'b0;
3028 assign dio_d2p[DioSpiDeviceCsb] = 1'b0;
3029 assign dio_d2p[DioUsbdevSense] = 1'b0;
3030 assign dio_d2p[DioSpiHost0Sck] = cio_spi_host0_sck_d2p;
3031 assign dio_d2p[DioSpiHost0Csb] = cio_spi_host0_csb_d2p;
3032 assign dio_d2p[DioUsbdevSe0] = cio_usbdev_se0_d2p;
3033 assign dio_d2p[DioUsbdevDpPullup] = cio_usbdev_dp_pullup_d2p;
3034 assign dio_d2p[DioUsbdevDnPullup] = cio_usbdev_dn_pullup_d2p;
3035 assign dio_d2p[DioUsbdevTxModeSe] = cio_usbdev_tx_mode_se_d2p;
3036 assign dio_d2p[DioUsbdevSuspend] = cio_usbdev_suspend_d2p;
Timothy Chen22c18562021-04-09 14:52:12 -07003037 assign dio_d2p[DioUsbdevRxEnable] = cio_usbdev_rx_enable_d2p;
Michael Schaffnere029a682021-04-06 16:21:30 -07003038 assign dio_d2p[DioSysrstCtrlAonEcRstOutL] = cio_sysrst_ctrl_aon_ec_rst_out_l_d2p;
Michael Schaffner3b1c0302021-04-02 18:01:15 -07003039 assign dio_d2p[DioSysrstCtrlAonPwrbOut] = cio_sysrst_ctrl_aon_pwrb_out_d2p;
Michael Schaffner74c4ff22021-03-30 15:43:46 -07003040
3041 // All dedicated output enables
3042 assign dio_en_d2p[DioSpiHost0Sd0] = cio_spi_host0_sd_en_d2p[0];
3043 assign dio_en_d2p[DioSpiHost0Sd1] = cio_spi_host0_sd_en_d2p[1];
3044 assign dio_en_d2p[DioSpiHost0Sd2] = cio_spi_host0_sd_en_d2p[2];
3045 assign dio_en_d2p[DioSpiHost0Sd3] = cio_spi_host0_sd_en_d2p[3];
3046 assign dio_en_d2p[DioSpiDeviceSd0] = cio_spi_device_sd_en_d2p[0];
3047 assign dio_en_d2p[DioSpiDeviceSd1] = cio_spi_device_sd_en_d2p[1];
3048 assign dio_en_d2p[DioSpiDeviceSd2] = cio_spi_device_sd_en_d2p[2];
3049 assign dio_en_d2p[DioSpiDeviceSd3] = cio_spi_device_sd_en_d2p[3];
3050 assign dio_en_d2p[DioUsbdevD] = cio_usbdev_d_en_d2p;
3051 assign dio_en_d2p[DioUsbdevDp] = cio_usbdev_dp_en_d2p;
3052 assign dio_en_d2p[DioUsbdevDn] = cio_usbdev_dn_en_d2p;
3053 assign dio_en_d2p[DioSpiDeviceSck] = 1'b0;
3054 assign dio_en_d2p[DioSpiDeviceCsb] = 1'b0;
3055 assign dio_en_d2p[DioUsbdevSense] = 1'b0;
3056 assign dio_en_d2p[DioSpiHost0Sck] = cio_spi_host0_sck_en_d2p;
3057 assign dio_en_d2p[DioSpiHost0Csb] = cio_spi_host0_csb_en_d2p;
3058 assign dio_en_d2p[DioUsbdevSe0] = cio_usbdev_se0_en_d2p;
3059 assign dio_en_d2p[DioUsbdevDpPullup] = cio_usbdev_dp_pullup_en_d2p;
3060 assign dio_en_d2p[DioUsbdevDnPullup] = cio_usbdev_dn_pullup_en_d2p;
3061 assign dio_en_d2p[DioUsbdevTxModeSe] = cio_usbdev_tx_mode_se_en_d2p;
3062 assign dio_en_d2p[DioUsbdevSuspend] = cio_usbdev_suspend_en_d2p;
Timothy Chen22c18562021-04-09 14:52:12 -07003063 assign dio_en_d2p[DioUsbdevRxEnable] = cio_usbdev_rx_enable_en_d2p;
Michael Schaffnere029a682021-04-06 16:21:30 -07003064 assign dio_en_d2p[DioSysrstCtrlAonEcRstOutL] = cio_sysrst_ctrl_aon_ec_rst_out_l_en_d2p;
Michael Schaffner3b1c0302021-04-02 18:01:15 -07003065 assign dio_en_d2p[DioSysrstCtrlAonPwrbOut] = cio_sysrst_ctrl_aon_pwrb_out_en_d2p;
Michael Schaffner74c4ff22021-03-30 15:43:46 -07003066
Eunchan Kim769065e2019-10-29 17:29:26 -07003067
Nils Graf78607aa2019-09-16 15:47:23 -07003068 // make sure scanmode_i is never X (including during reset)
Eunchan Kim5511bbe2020-08-07 14:04:20 -07003069 `ASSERT_KNOWN(scanmodeKnown, scanmode_i, clk_main_i, 0)
Nils Graf78607aa2019-09-16 15:47:23 -07003070
lowRISC Contributors802543a2019-08-31 12:12:56 +01003071endmodule