Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 1 | // Copyright lowRISC contributors. |
| 2 | // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| 3 | // SPDX-License-Identifier: Apache-2.0 |
| 4 | // |
| 5 | // Description: edn top level wrapper file |
| 6 | |
Mark Branstad | 4e4faa0 | 2020-12-03 10:52:47 -0800 | [diff] [blame] | 7 | `include "prim_assert.sv" |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 8 | |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 9 | module edn |
| 10 | import edn_pkg::*; |
| 11 | import edn_reg_pkg::*; |
| 12 | #( |
Greg Chadwick | cc0dd2a | 2021-03-10 15:55:58 +0000 | [diff] [blame] | 13 | parameter int NumEndPoints = 7, |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 14 | parameter logic [NumAlerts-1:0] AlertAsyncOn = {NumAlerts{1'b1}}, |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 15 | parameter int BootInsCmd = 32'h0000_0001, |
Mark Branstad | 67d2915 | 2021-03-05 11:06:38 -0800 | [diff] [blame] | 16 | parameter int BootGenCmd = 32'h00ff_f003 |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 17 | ) ( |
| 18 | input logic clk_i, |
| 19 | input logic rst_ni, |
| 20 | |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 21 | // Tilelink Bus registers |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 22 | input tlul_pkg::tl_h2d_t tl_i, |
| 23 | output tlul_pkg::tl_d2h_t tl_o, |
| 24 | |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 25 | // EDN interfaces |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 26 | input edn_req_t [NumEndPoints-1:0] edn_i, |
| 27 | output edn_rsp_t [NumEndPoints-1:0] edn_o, |
| 28 | |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 29 | // CSRNG Application Interface |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 30 | output csrng_pkg::csrng_req_t csrng_cmd_o, |
| 31 | input csrng_pkg::csrng_rsp_t csrng_cmd_i, |
| 32 | |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 33 | // Alerts |
| 34 | input prim_alert_pkg::alert_rx_t [NumAlerts-1:0] alert_rx_i, |
| 35 | output prim_alert_pkg::alert_tx_t [NumAlerts-1:0] alert_tx_o, |
| 36 | |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 37 | // Interrupts |
| 38 | output logic intr_edn_cmd_req_done_o, |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 39 | output logic intr_edn_fatal_err_o |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 40 | ); |
| 41 | |
| 42 | import edn_reg_pkg::*; |
| 43 | |
| 44 | edn_reg2hw_t reg2hw; |
| 45 | edn_hw2reg_t hw2reg; |
| 46 | |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 47 | logic alert; |
| 48 | logic alert_test; |
Michael Schaffner | 3169df8 | 2021-06-07 15:37:15 -0700 | [diff] [blame] | 49 | logic intg_err_alert; |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 50 | |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 51 | edn_reg_top u_reg ( |
| 52 | .clk_i, |
| 53 | .rst_ni, |
| 54 | .tl_i, |
| 55 | .tl_o, |
| 56 | .reg2hw, |
| 57 | .hw2reg, |
Michael Schaffner | 3169df8 | 2021-06-07 15:37:15 -0700 | [diff] [blame] | 58 | .intg_err_o(intg_err_alert), |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 59 | .devmode_i(1'b1) |
| 60 | ); |
| 61 | |
| 62 | edn_core #( |
Mark Branstad | 64e0819 | 2020-11-17 15:14:45 -0800 | [diff] [blame] | 63 | .NumEndPoints(NumEndPoints), |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 64 | .BootInsCmd(BootInsCmd), |
| 65 | .BootGenCmd(BootGenCmd) |
| 66 | ) u_edn_core ( |
| 67 | .clk_i, |
| 68 | .rst_ni, |
| 69 | .reg2hw, |
| 70 | .hw2reg, |
| 71 | |
| 72 | .edn_i, |
| 73 | .edn_o, |
| 74 | |
| 75 | .csrng_cmd_o, |
| 76 | .csrng_cmd_i, |
| 77 | |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 78 | // Alerts |
| 79 | .alert_test_o(alert_test), |
| 80 | .fatal_alert_o(alert), |
| 81 | |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 82 | .intr_edn_cmd_req_done_o, |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 83 | .intr_edn_fatal_err_o |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 84 | ); |
| 85 | |
Mark Branstad | 4e4faa0 | 2020-12-03 10:52:47 -0800 | [diff] [blame] | 86 | |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 87 | prim_alert_sender #( |
| 88 | .AsyncOn(AlertAsyncOn[0]), |
| 89 | .IsFatal(1) |
| 90 | ) u_prim_alert_sender ( |
| 91 | .clk_i, |
| 92 | .rst_ni, |
Michael Schaffner | 3169df8 | 2021-06-07 15:37:15 -0700 | [diff] [blame] | 93 | .alert_test_i ( alert_test ), |
| 94 | .alert_req_i ( alert || intg_err_alert ), |
| 95 | .alert_ack_o ( ), |
| 96 | .alert_state_o ( ), |
| 97 | .alert_rx_i ( alert_rx_i[0] ), |
| 98 | .alert_tx_o ( alert_tx_o[0] ) |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 99 | ); |
| 100 | |
Mark Branstad | 4e4faa0 | 2020-12-03 10:52:47 -0800 | [diff] [blame] | 101 | // Assertions |
| 102 | |
| 103 | `ASSERT_KNOWN(TlDValidKnownO_A, tl_o.d_valid) |
| 104 | `ASSERT_KNOWN(TlAReadyKnownO_A, tl_o.a_ready) |
| 105 | |
| 106 | // Endpoint Asserts |
| 107 | for (genvar i = 0; i < NumEndPoints; i = i+1) begin : gen_edn_if_asserts |
| 108 | `ASSERT_KNOWN(EdnEndPointOut_A, edn_o[i]) |
| 109 | end : gen_edn_if_asserts |
| 110 | |
| 111 | // CSRNG Asserts |
| 112 | `ASSERT_KNOWN(CsrngAppIfOut_A, csrng_cmd_o) |
| 113 | |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 114 | // Alerts |
| 115 | `ASSERT_KNOWN(AlertTxKnownO_A, alert_tx_o) |
| 116 | |
Mark Branstad | 4e4faa0 | 2020-12-03 10:52:47 -0800 | [diff] [blame] | 117 | // Interrupt Asserts |
| 118 | `ASSERT_KNOWN(IntrEdnCmdReqDoneKnownO_A, intr_edn_cmd_req_done_o) |
Mark Branstad | 1e7fa2e | 2021-02-18 08:41:37 -0800 | [diff] [blame] | 119 | `ASSERT_KNOWN(IntrEdnFifoErrKnownO_A, intr_edn_fatal_err_o) |
Mark Branstad | 4e4faa0 | 2020-12-03 10:52:47 -0800 | [diff] [blame] | 120 | |
Mark Branstad | b6acfab | 2020-11-06 07:06:39 -0800 | [diff] [blame] | 121 | endmodule |