Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [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 | // Register Top module auto-generated by `reggen` |
| 6 | |
| 7 | module pinmux_reg_top ( |
| 8 | input clk_i, |
| 9 | input rst_ni, |
| 10 | |
| 11 | // Below Regster interface can be changed |
| 12 | input tlul_pkg::tl_h2d_t tl_i, |
| 13 | output tlul_pkg::tl_d2h_t tl_o, |
| 14 | // To HW |
| 15 | output pinmux_reg_pkg::pinmux_reg2hw_t reg2hw, // Write |
| 16 | |
| 17 | // Config |
| 18 | input devmode_i // If 1, explicit error return for unmapped register access |
| 19 | ); |
| 20 | |
| 21 | import pinmux_reg_pkg::* ; |
| 22 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 23 | localparam AW = 5; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 24 | localparam DW = 32; |
| 25 | localparam DBW = DW/8; // Byte Width |
| 26 | |
| 27 | // register signals |
| 28 | logic reg_we; |
| 29 | logic reg_re; |
| 30 | logic [AW-1:0] reg_addr; |
| 31 | logic [DW-1:0] reg_wdata; |
| 32 | logic [DBW-1:0] reg_be; |
| 33 | logic [DW-1:0] reg_rdata; |
| 34 | logic reg_error; |
| 35 | |
| 36 | logic addrmiss, wr_err; |
| 37 | |
| 38 | logic [DW-1:0] reg_rdata_next; |
| 39 | |
| 40 | tlul_pkg::tl_h2d_t tl_reg_h2d; |
| 41 | tlul_pkg::tl_d2h_t tl_reg_d2h; |
| 42 | |
| 43 | assign tl_reg_h2d = tl_i; |
| 44 | assign tl_o = tl_reg_d2h; |
| 45 | |
| 46 | tlul_adapter_reg #( |
| 47 | .RegAw(AW), |
| 48 | .RegDw(DW) |
| 49 | ) u_reg_if ( |
| 50 | .clk_i, |
| 51 | .rst_ni, |
| 52 | |
| 53 | .tl_i (tl_reg_h2d), |
| 54 | .tl_o (tl_reg_d2h), |
| 55 | |
| 56 | .we_o (reg_we), |
| 57 | .re_o (reg_re), |
| 58 | .addr_o (reg_addr), |
| 59 | .wdata_o (reg_wdata), |
| 60 | .be_o (reg_be), |
| 61 | .rdata_i (reg_rdata), |
| 62 | .error_i (reg_error) |
| 63 | ); |
| 64 | |
| 65 | assign reg_rdata = reg_rdata_next ; |
| 66 | assign reg_error = (devmode_i & addrmiss) | wr_err ; |
| 67 | |
| 68 | // Define SW related signals |
| 69 | // Format: <reg>_<field>_{wd|we|qs} |
| 70 | // or <reg>_{wd|we|qs} if field == 1 or 0 |
| 71 | logic regen_qs; |
| 72 | logic regen_wd; |
| 73 | logic regen_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 74 | logic [3:0] periph_insel0_in0_qs; |
| 75 | logic [3:0] periph_insel0_in0_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 76 | logic periph_insel0_in0_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 77 | logic [3:0] periph_insel0_in1_qs; |
| 78 | logic [3:0] periph_insel0_in1_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 79 | logic periph_insel0_in1_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 80 | logic [3:0] periph_insel0_in2_qs; |
| 81 | logic [3:0] periph_insel0_in2_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 82 | logic periph_insel0_in2_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 83 | logic [3:0] periph_insel0_in3_qs; |
| 84 | logic [3:0] periph_insel0_in3_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 85 | logic periph_insel0_in3_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 86 | logic [3:0] periph_insel0_in4_qs; |
| 87 | logic [3:0] periph_insel0_in4_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 88 | logic periph_insel0_in4_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 89 | logic [3:0] periph_insel0_in5_qs; |
| 90 | logic [3:0] periph_insel0_in5_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 91 | logic periph_insel0_in5_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 92 | logic [3:0] periph_insel0_in6_qs; |
| 93 | logic [3:0] periph_insel0_in6_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 94 | logic periph_insel0_in6_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 95 | logic [3:0] periph_insel0_in7_qs; |
| 96 | logic [3:0] periph_insel0_in7_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 97 | logic periph_insel0_in7_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 98 | logic [3:0] periph_insel1_in8_qs; |
| 99 | logic [3:0] periph_insel1_in8_wd; |
| 100 | logic periph_insel1_in8_we; |
| 101 | logic [3:0] periph_insel1_in9_qs; |
| 102 | logic [3:0] periph_insel1_in9_wd; |
| 103 | logic periph_insel1_in9_we; |
| 104 | logic [3:0] periph_insel1_in10_qs; |
| 105 | logic [3:0] periph_insel1_in10_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 106 | logic periph_insel1_in10_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 107 | logic [3:0] periph_insel1_in11_qs; |
| 108 | logic [3:0] periph_insel1_in11_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 109 | logic periph_insel1_in11_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 110 | logic [3:0] periph_insel1_in12_qs; |
| 111 | logic [3:0] periph_insel1_in12_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 112 | logic periph_insel1_in12_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 113 | logic [3:0] periph_insel1_in13_qs; |
| 114 | logic [3:0] periph_insel1_in13_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 115 | logic periph_insel1_in13_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 116 | logic [3:0] periph_insel1_in14_qs; |
| 117 | logic [3:0] periph_insel1_in14_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 118 | logic periph_insel1_in14_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 119 | logic [3:0] periph_insel1_in15_qs; |
| 120 | logic [3:0] periph_insel1_in15_wd; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 121 | logic periph_insel1_in15_we; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 122 | logic [4:0] mio_outsel0_out0_qs; |
| 123 | logic [4:0] mio_outsel0_out0_wd; |
| 124 | logic mio_outsel0_out0_we; |
| 125 | logic [4:0] mio_outsel0_out1_qs; |
| 126 | logic [4:0] mio_outsel0_out1_wd; |
| 127 | logic mio_outsel0_out1_we; |
| 128 | logic [4:0] mio_outsel0_out2_qs; |
| 129 | logic [4:0] mio_outsel0_out2_wd; |
| 130 | logic mio_outsel0_out2_we; |
| 131 | logic [4:0] mio_outsel0_out3_qs; |
| 132 | logic [4:0] mio_outsel0_out3_wd; |
| 133 | logic mio_outsel0_out3_we; |
| 134 | logic [4:0] mio_outsel0_out4_qs; |
| 135 | logic [4:0] mio_outsel0_out4_wd; |
| 136 | logic mio_outsel0_out4_we; |
| 137 | logic [4:0] mio_outsel0_out5_qs; |
| 138 | logic [4:0] mio_outsel0_out5_wd; |
| 139 | logic mio_outsel0_out5_we; |
| 140 | logic [4:0] mio_outsel1_out6_qs; |
| 141 | logic [4:0] mio_outsel1_out6_wd; |
| 142 | logic mio_outsel1_out6_we; |
| 143 | logic [4:0] mio_outsel1_out7_qs; |
| 144 | logic [4:0] mio_outsel1_out7_wd; |
| 145 | logic mio_outsel1_out7_we; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 146 | |
| 147 | // Register instances |
| 148 | // R[regen]: V(False) |
| 149 | |
| 150 | prim_subreg #( |
| 151 | .DW (1), |
Michael Schaffner | d86ff08 | 2019-10-01 17:22:59 -0700 | [diff] [blame] | 152 | .SWACCESS("W0C"), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 153 | .RESVAL (1'h1) |
| 154 | ) u_regen ( |
| 155 | .clk_i (clk_i ), |
| 156 | .rst_ni (rst_ni ), |
| 157 | |
| 158 | // from register interface |
| 159 | .we (regen_we), |
| 160 | .wd (regen_wd), |
| 161 | |
| 162 | // from internal hardware |
| 163 | .de (1'b0), |
| 164 | .d ('0 ), |
| 165 | |
| 166 | // to internal hardware |
| 167 | .qe (), |
| 168 | .q (), |
| 169 | |
| 170 | // to register interface (read) |
| 171 | .qs (regen_qs) |
| 172 | ); |
| 173 | |
| 174 | |
| 175 | |
| 176 | // Subregister 0 of Multireg periph_insel |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 177 | // R[periph_insel0]: V(False) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 178 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 179 | // F[in0]: 3:0 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 180 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 181 | .DW (4), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 182 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 183 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 184 | ) u_periph_insel0_in0 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 185 | .clk_i (clk_i ), |
| 186 | .rst_ni (rst_ni ), |
| 187 | |
| 188 | // from register interface (qualified with register enable) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 189 | .we (periph_insel0_in0_we & regen_qs), |
| 190 | .wd (periph_insel0_in0_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 191 | |
| 192 | // from internal hardware |
| 193 | .de (1'b0), |
| 194 | .d ('0 ), |
| 195 | |
| 196 | // to internal hardware |
| 197 | .qe (), |
| 198 | .q (reg2hw.periph_insel[0].q ), |
| 199 | |
| 200 | // to register interface (read) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 201 | .qs (periph_insel0_in0_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 202 | ); |
| 203 | |
| 204 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 205 | // F[in1]: 7:4 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 206 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 207 | .DW (4), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 208 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 209 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 210 | ) u_periph_insel0_in1 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 211 | .clk_i (clk_i ), |
| 212 | .rst_ni (rst_ni ), |
| 213 | |
| 214 | // from register interface (qualified with register enable) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 215 | .we (periph_insel0_in1_we & regen_qs), |
| 216 | .wd (periph_insel0_in1_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 217 | |
| 218 | // from internal hardware |
| 219 | .de (1'b0), |
| 220 | .d ('0 ), |
| 221 | |
| 222 | // to internal hardware |
| 223 | .qe (), |
| 224 | .q (reg2hw.periph_insel[1].q ), |
| 225 | |
| 226 | // to register interface (read) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 227 | .qs (periph_insel0_in1_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 228 | ); |
| 229 | |
| 230 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 231 | // F[in2]: 11:8 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 232 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 233 | .DW (4), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 234 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 235 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 236 | ) u_periph_insel0_in2 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 237 | .clk_i (clk_i ), |
| 238 | .rst_ni (rst_ni ), |
| 239 | |
| 240 | // from register interface (qualified with register enable) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 241 | .we (periph_insel0_in2_we & regen_qs), |
| 242 | .wd (periph_insel0_in2_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 243 | |
| 244 | // from internal hardware |
| 245 | .de (1'b0), |
| 246 | .d ('0 ), |
| 247 | |
| 248 | // to internal hardware |
| 249 | .qe (), |
| 250 | .q (reg2hw.periph_insel[2].q ), |
| 251 | |
| 252 | // to register interface (read) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 253 | .qs (periph_insel0_in2_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 254 | ); |
| 255 | |
| 256 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 257 | // F[in3]: 15:12 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 258 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 259 | .DW (4), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 260 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 261 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 262 | ) u_periph_insel0_in3 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 263 | .clk_i (clk_i ), |
| 264 | .rst_ni (rst_ni ), |
| 265 | |
| 266 | // from register interface (qualified with register enable) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 267 | .we (periph_insel0_in3_we & regen_qs), |
| 268 | .wd (periph_insel0_in3_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 269 | |
| 270 | // from internal hardware |
| 271 | .de (1'b0), |
| 272 | .d ('0 ), |
| 273 | |
| 274 | // to internal hardware |
| 275 | .qe (), |
| 276 | .q (reg2hw.periph_insel[3].q ), |
| 277 | |
| 278 | // to register interface (read) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 279 | .qs (periph_insel0_in3_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 280 | ); |
| 281 | |
| 282 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 283 | // F[in4]: 19:16 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 284 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 285 | .DW (4), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 286 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 287 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 288 | ) u_periph_insel0_in4 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 289 | .clk_i (clk_i ), |
| 290 | .rst_ni (rst_ni ), |
| 291 | |
| 292 | // from register interface (qualified with register enable) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 293 | .we (periph_insel0_in4_we & regen_qs), |
| 294 | .wd (periph_insel0_in4_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 295 | |
| 296 | // from internal hardware |
| 297 | .de (1'b0), |
| 298 | .d ('0 ), |
| 299 | |
| 300 | // to internal hardware |
| 301 | .qe (), |
| 302 | .q (reg2hw.periph_insel[4].q ), |
| 303 | |
| 304 | // to register interface (read) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 305 | .qs (periph_insel0_in4_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 306 | ); |
| 307 | |
| 308 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 309 | // F[in5]: 23:20 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 310 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 311 | .DW (4), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 312 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 313 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 314 | ) u_periph_insel0_in5 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 315 | .clk_i (clk_i ), |
| 316 | .rst_ni (rst_ni ), |
| 317 | |
| 318 | // from register interface (qualified with register enable) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 319 | .we (periph_insel0_in5_we & regen_qs), |
| 320 | .wd (periph_insel0_in5_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 321 | |
| 322 | // from internal hardware |
| 323 | .de (1'b0), |
| 324 | .d ('0 ), |
| 325 | |
| 326 | // to internal hardware |
| 327 | .qe (), |
| 328 | .q (reg2hw.periph_insel[5].q ), |
| 329 | |
| 330 | // to register interface (read) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 331 | .qs (periph_insel0_in5_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 332 | ); |
| 333 | |
| 334 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 335 | // F[in6]: 27:24 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 336 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 337 | .DW (4), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 338 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 339 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 340 | ) u_periph_insel0_in6 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 341 | .clk_i (clk_i ), |
| 342 | .rst_ni (rst_ni ), |
| 343 | |
| 344 | // from register interface (qualified with register enable) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 345 | .we (periph_insel0_in6_we & regen_qs), |
| 346 | .wd (periph_insel0_in6_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 347 | |
| 348 | // from internal hardware |
| 349 | .de (1'b0), |
| 350 | .d ('0 ), |
| 351 | |
| 352 | // to internal hardware |
| 353 | .qe (), |
| 354 | .q (reg2hw.periph_insel[6].q ), |
| 355 | |
| 356 | // to register interface (read) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 357 | .qs (periph_insel0_in6_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 358 | ); |
| 359 | |
| 360 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 361 | // F[in7]: 31:28 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 362 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 363 | .DW (4), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 364 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 365 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 366 | ) u_periph_insel0_in7 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 367 | .clk_i (clk_i ), |
| 368 | .rst_ni (rst_ni ), |
| 369 | |
| 370 | // from register interface (qualified with register enable) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 371 | .we (periph_insel0_in7_we & regen_qs), |
| 372 | .wd (periph_insel0_in7_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 373 | |
| 374 | // from internal hardware |
| 375 | .de (1'b0), |
| 376 | .d ('0 ), |
| 377 | |
| 378 | // to internal hardware |
| 379 | .qe (), |
| 380 | .q (reg2hw.periph_insel[7].q ), |
| 381 | |
| 382 | // to register interface (read) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 383 | .qs (periph_insel0_in7_qs) |
| 384 | ); |
| 385 | |
| 386 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 387 | // Subregister 8 of Multireg periph_insel |
| 388 | // R[periph_insel1]: V(False) |
| 389 | |
| 390 | // F[in8]: 3:0 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 391 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 392 | .DW (4), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 393 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 394 | .RESVAL (4'h0) |
| 395 | ) u_periph_insel1_in8 ( |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 396 | .clk_i (clk_i ), |
| 397 | .rst_ni (rst_ni ), |
| 398 | |
| 399 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 400 | .we (periph_insel1_in8_we & regen_qs), |
| 401 | .wd (periph_insel1_in8_wd), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 402 | |
| 403 | // from internal hardware |
| 404 | .de (1'b0), |
| 405 | .d ('0 ), |
| 406 | |
| 407 | // to internal hardware |
| 408 | .qe (), |
| 409 | .q (reg2hw.periph_insel[8].q ), |
| 410 | |
| 411 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 412 | .qs (periph_insel1_in8_qs) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 413 | ); |
| 414 | |
| 415 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 416 | // F[in9]: 7:4 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 417 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 418 | .DW (4), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 419 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 420 | .RESVAL (4'h0) |
| 421 | ) u_periph_insel1_in9 ( |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 422 | .clk_i (clk_i ), |
| 423 | .rst_ni (rst_ni ), |
| 424 | |
| 425 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 426 | .we (periph_insel1_in9_we & regen_qs), |
| 427 | .wd (periph_insel1_in9_wd), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 428 | |
| 429 | // from internal hardware |
| 430 | .de (1'b0), |
| 431 | .d ('0 ), |
| 432 | |
| 433 | // to internal hardware |
| 434 | .qe (), |
| 435 | .q (reg2hw.periph_insel[9].q ), |
| 436 | |
| 437 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 438 | .qs (periph_insel1_in9_qs) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 439 | ); |
| 440 | |
| 441 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 442 | // F[in10]: 11:8 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 443 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 444 | .DW (4), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 445 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 446 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 447 | ) u_periph_insel1_in10 ( |
| 448 | .clk_i (clk_i ), |
| 449 | .rst_ni (rst_ni ), |
| 450 | |
| 451 | // from register interface (qualified with register enable) |
| 452 | .we (periph_insel1_in10_we & regen_qs), |
| 453 | .wd (periph_insel1_in10_wd), |
| 454 | |
| 455 | // from internal hardware |
| 456 | .de (1'b0), |
| 457 | .d ('0 ), |
| 458 | |
| 459 | // to internal hardware |
| 460 | .qe (), |
| 461 | .q (reg2hw.periph_insel[10].q ), |
| 462 | |
| 463 | // to register interface (read) |
| 464 | .qs (periph_insel1_in10_qs) |
| 465 | ); |
| 466 | |
| 467 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 468 | // F[in11]: 15:12 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 469 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 470 | .DW (4), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 471 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 472 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 473 | ) u_periph_insel1_in11 ( |
| 474 | .clk_i (clk_i ), |
| 475 | .rst_ni (rst_ni ), |
| 476 | |
| 477 | // from register interface (qualified with register enable) |
| 478 | .we (periph_insel1_in11_we & regen_qs), |
| 479 | .wd (periph_insel1_in11_wd), |
| 480 | |
| 481 | // from internal hardware |
| 482 | .de (1'b0), |
| 483 | .d ('0 ), |
| 484 | |
| 485 | // to internal hardware |
| 486 | .qe (), |
| 487 | .q (reg2hw.periph_insel[11].q ), |
| 488 | |
| 489 | // to register interface (read) |
| 490 | .qs (periph_insel1_in11_qs) |
| 491 | ); |
| 492 | |
| 493 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 494 | // F[in12]: 19:16 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 495 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 496 | .DW (4), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 497 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 498 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 499 | ) u_periph_insel1_in12 ( |
| 500 | .clk_i (clk_i ), |
| 501 | .rst_ni (rst_ni ), |
| 502 | |
| 503 | // from register interface (qualified with register enable) |
| 504 | .we (periph_insel1_in12_we & regen_qs), |
| 505 | .wd (periph_insel1_in12_wd), |
| 506 | |
| 507 | // from internal hardware |
| 508 | .de (1'b0), |
| 509 | .d ('0 ), |
| 510 | |
| 511 | // to internal hardware |
| 512 | .qe (), |
| 513 | .q (reg2hw.periph_insel[12].q ), |
| 514 | |
| 515 | // to register interface (read) |
| 516 | .qs (periph_insel1_in12_qs) |
| 517 | ); |
| 518 | |
| 519 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 520 | // F[in13]: 23:20 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 521 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 522 | .DW (4), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 523 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 524 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 525 | ) u_periph_insel1_in13 ( |
| 526 | .clk_i (clk_i ), |
| 527 | .rst_ni (rst_ni ), |
| 528 | |
| 529 | // from register interface (qualified with register enable) |
| 530 | .we (periph_insel1_in13_we & regen_qs), |
| 531 | .wd (periph_insel1_in13_wd), |
| 532 | |
| 533 | // from internal hardware |
| 534 | .de (1'b0), |
| 535 | .d ('0 ), |
| 536 | |
| 537 | // to internal hardware |
| 538 | .qe (), |
| 539 | .q (reg2hw.periph_insel[13].q ), |
| 540 | |
| 541 | // to register interface (read) |
| 542 | .qs (periph_insel1_in13_qs) |
| 543 | ); |
| 544 | |
| 545 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 546 | // F[in14]: 27:24 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 547 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 548 | .DW (4), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 549 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 550 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 551 | ) u_periph_insel1_in14 ( |
| 552 | .clk_i (clk_i ), |
| 553 | .rst_ni (rst_ni ), |
| 554 | |
| 555 | // from register interface (qualified with register enable) |
| 556 | .we (periph_insel1_in14_we & regen_qs), |
| 557 | .wd (periph_insel1_in14_wd), |
| 558 | |
| 559 | // from internal hardware |
| 560 | .de (1'b0), |
| 561 | .d ('0 ), |
| 562 | |
| 563 | // to internal hardware |
| 564 | .qe (), |
| 565 | .q (reg2hw.periph_insel[14].q ), |
| 566 | |
| 567 | // to register interface (read) |
| 568 | .qs (periph_insel1_in14_qs) |
| 569 | ); |
| 570 | |
| 571 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 572 | // F[in15]: 31:28 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 573 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 574 | .DW (4), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 575 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 576 | .RESVAL (4'h0) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 577 | ) u_periph_insel1_in15 ( |
| 578 | .clk_i (clk_i ), |
| 579 | .rst_ni (rst_ni ), |
| 580 | |
| 581 | // from register interface (qualified with register enable) |
| 582 | .we (periph_insel1_in15_we & regen_qs), |
| 583 | .wd (periph_insel1_in15_wd), |
| 584 | |
| 585 | // from internal hardware |
| 586 | .de (1'b0), |
| 587 | .d ('0 ), |
| 588 | |
| 589 | // to internal hardware |
| 590 | .qe (), |
| 591 | .q (reg2hw.periph_insel[15].q ), |
| 592 | |
| 593 | // to register interface (read) |
| 594 | .qs (periph_insel1_in15_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 595 | ); |
| 596 | |
| 597 | |
| 598 | |
| 599 | |
| 600 | // Subregister 0 of Multireg mio_outsel |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 601 | // R[mio_outsel0]: V(False) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 602 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 603 | // F[out0]: 4:0 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 604 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 605 | .DW (5), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 606 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 607 | .RESVAL (5'h2) |
| 608 | ) u_mio_outsel0_out0 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 609 | .clk_i (clk_i ), |
| 610 | .rst_ni (rst_ni ), |
| 611 | |
| 612 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 613 | .we (mio_outsel0_out0_we & regen_qs), |
| 614 | .wd (mio_outsel0_out0_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 615 | |
| 616 | // from internal hardware |
| 617 | .de (1'b0), |
| 618 | .d ('0 ), |
| 619 | |
| 620 | // to internal hardware |
| 621 | .qe (), |
| 622 | .q (reg2hw.mio_outsel[0].q ), |
| 623 | |
| 624 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 625 | .qs (mio_outsel0_out0_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 626 | ); |
| 627 | |
| 628 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 629 | // F[out1]: 9:5 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 630 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 631 | .DW (5), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 632 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 633 | .RESVAL (5'h2) |
| 634 | ) u_mio_outsel0_out1 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 635 | .clk_i (clk_i ), |
| 636 | .rst_ni (rst_ni ), |
| 637 | |
| 638 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 639 | .we (mio_outsel0_out1_we & regen_qs), |
| 640 | .wd (mio_outsel0_out1_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 641 | |
| 642 | // from internal hardware |
| 643 | .de (1'b0), |
| 644 | .d ('0 ), |
| 645 | |
| 646 | // to internal hardware |
| 647 | .qe (), |
| 648 | .q (reg2hw.mio_outsel[1].q ), |
| 649 | |
| 650 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 651 | .qs (mio_outsel0_out1_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 652 | ); |
| 653 | |
| 654 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 655 | // F[out2]: 14:10 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 656 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 657 | .DW (5), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 658 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 659 | .RESVAL (5'h2) |
| 660 | ) u_mio_outsel0_out2 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 661 | .clk_i (clk_i ), |
| 662 | .rst_ni (rst_ni ), |
| 663 | |
| 664 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 665 | .we (mio_outsel0_out2_we & regen_qs), |
| 666 | .wd (mio_outsel0_out2_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 667 | |
| 668 | // from internal hardware |
| 669 | .de (1'b0), |
| 670 | .d ('0 ), |
| 671 | |
| 672 | // to internal hardware |
| 673 | .qe (), |
| 674 | .q (reg2hw.mio_outsel[2].q ), |
| 675 | |
| 676 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 677 | .qs (mio_outsel0_out2_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 678 | ); |
| 679 | |
| 680 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 681 | // F[out3]: 19:15 |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 682 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 683 | .DW (5), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 684 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 685 | .RESVAL (5'h2) |
| 686 | ) u_mio_outsel0_out3 ( |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 687 | .clk_i (clk_i ), |
| 688 | .rst_ni (rst_ni ), |
| 689 | |
| 690 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 691 | .we (mio_outsel0_out3_we & regen_qs), |
| 692 | .wd (mio_outsel0_out3_wd), |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 693 | |
| 694 | // from internal hardware |
| 695 | .de (1'b0), |
| 696 | .d ('0 ), |
| 697 | |
| 698 | // to internal hardware |
| 699 | .qe (), |
| 700 | .q (reg2hw.mio_outsel[3].q ), |
| 701 | |
| 702 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 703 | .qs (mio_outsel0_out3_qs) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 704 | ); |
| 705 | |
| 706 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 707 | // F[out4]: 24:20 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 708 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 709 | .DW (5), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 710 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 711 | .RESVAL (5'h2) |
| 712 | ) u_mio_outsel0_out4 ( |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 713 | .clk_i (clk_i ), |
| 714 | .rst_ni (rst_ni ), |
| 715 | |
| 716 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 717 | .we (mio_outsel0_out4_we & regen_qs), |
| 718 | .wd (mio_outsel0_out4_wd), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 719 | |
| 720 | // from internal hardware |
| 721 | .de (1'b0), |
| 722 | .d ('0 ), |
| 723 | |
| 724 | // to internal hardware |
| 725 | .qe (), |
| 726 | .q (reg2hw.mio_outsel[4].q ), |
| 727 | |
| 728 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 729 | .qs (mio_outsel0_out4_qs) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 730 | ); |
| 731 | |
| 732 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 733 | // F[out5]: 29:25 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 734 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 735 | .DW (5), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 736 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 737 | .RESVAL (5'h2) |
| 738 | ) u_mio_outsel0_out5 ( |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 739 | .clk_i (clk_i ), |
| 740 | .rst_ni (rst_ni ), |
| 741 | |
| 742 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 743 | .we (mio_outsel0_out5_we & regen_qs), |
| 744 | .wd (mio_outsel0_out5_wd), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 745 | |
| 746 | // from internal hardware |
| 747 | .de (1'b0), |
| 748 | .d ('0 ), |
| 749 | |
| 750 | // to internal hardware |
| 751 | .qe (), |
| 752 | .q (reg2hw.mio_outsel[5].q ), |
| 753 | |
| 754 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 755 | .qs (mio_outsel0_out5_qs) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 756 | ); |
| 757 | |
| 758 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 759 | // Subregister 6 of Multireg mio_outsel |
| 760 | // R[mio_outsel1]: V(False) |
| 761 | |
| 762 | // F[out6]: 4:0 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 763 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 764 | .DW (5), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 765 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 766 | .RESVAL (5'h2) |
| 767 | ) u_mio_outsel1_out6 ( |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 768 | .clk_i (clk_i ), |
| 769 | .rst_ni (rst_ni ), |
| 770 | |
| 771 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 772 | .we (mio_outsel1_out6_we & regen_qs), |
| 773 | .wd (mio_outsel1_out6_wd), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 774 | |
| 775 | // from internal hardware |
| 776 | .de (1'b0), |
| 777 | .d ('0 ), |
| 778 | |
| 779 | // to internal hardware |
| 780 | .qe (), |
| 781 | .q (reg2hw.mio_outsel[6].q ), |
| 782 | |
| 783 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 784 | .qs (mio_outsel1_out6_qs) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 785 | ); |
| 786 | |
| 787 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 788 | // F[out7]: 9:5 |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 789 | prim_subreg #( |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 790 | .DW (5), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 791 | .SWACCESS("RW"), |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 792 | .RESVAL (5'h2) |
| 793 | ) u_mio_outsel1_out7 ( |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 794 | .clk_i (clk_i ), |
| 795 | .rst_ni (rst_ni ), |
| 796 | |
| 797 | // from register interface (qualified with register enable) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 798 | .we (mio_outsel1_out7_we & regen_qs), |
| 799 | .wd (mio_outsel1_out7_wd), |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 800 | |
| 801 | // from internal hardware |
| 802 | .de (1'b0), |
| 803 | .d ('0 ), |
| 804 | |
| 805 | // to internal hardware |
| 806 | .qe (), |
| 807 | .q (reg2hw.mio_outsel[7].q ), |
| 808 | |
| 809 | // to register interface (read) |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 810 | .qs (mio_outsel1_out7_qs) |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 811 | ); |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 812 | |
| 813 | |
| 814 | |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 815 | |
| 816 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 817 | logic [4:0] addr_hit; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 818 | always_comb begin |
| 819 | addr_hit = '0; |
| 820 | addr_hit[0] = (reg_addr == PINMUX_REGEN_OFFSET); |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 821 | addr_hit[1] = (reg_addr == PINMUX_PERIPH_INSEL0_OFFSET); |
| 822 | addr_hit[2] = (reg_addr == PINMUX_PERIPH_INSEL1_OFFSET); |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 823 | addr_hit[3] = (reg_addr == PINMUX_MIO_OUTSEL0_OFFSET); |
| 824 | addr_hit[4] = (reg_addr == PINMUX_MIO_OUTSEL1_OFFSET); |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 825 | end |
| 826 | |
| 827 | assign addrmiss = (reg_re || reg_we) ? ~|addr_hit : 1'b0 ; |
| 828 | |
| 829 | // Check sub-word write is permitted |
| 830 | always_comb begin |
| 831 | wr_err = 1'b0; |
| 832 | if (addr_hit[0] && reg_we && (PINMUX_PERMIT[0] != (PINMUX_PERMIT[0] & reg_be))) wr_err = 1'b1 ; |
| 833 | if (addr_hit[1] && reg_we && (PINMUX_PERMIT[1] != (PINMUX_PERMIT[1] & reg_be))) wr_err = 1'b1 ; |
| 834 | if (addr_hit[2] && reg_we && (PINMUX_PERMIT[2] != (PINMUX_PERMIT[2] & reg_be))) wr_err = 1'b1 ; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 835 | if (addr_hit[3] && reg_we && (PINMUX_PERMIT[3] != (PINMUX_PERMIT[3] & reg_be))) wr_err = 1'b1 ; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 836 | if (addr_hit[4] && reg_we && (PINMUX_PERMIT[4] != (PINMUX_PERMIT[4] & reg_be))) wr_err = 1'b1 ; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 837 | end |
| 838 | |
| 839 | assign regen_we = addr_hit[0] & reg_we & ~wr_err; |
| 840 | assign regen_wd = reg_wdata[0]; |
| 841 | |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 842 | assign periph_insel0_in0_we = addr_hit[1] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 843 | assign periph_insel0_in0_wd = reg_wdata[3:0]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 844 | |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 845 | assign periph_insel0_in1_we = addr_hit[1] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 846 | assign periph_insel0_in1_wd = reg_wdata[7:4]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 847 | |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 848 | assign periph_insel0_in2_we = addr_hit[1] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 849 | assign periph_insel0_in2_wd = reg_wdata[11:8]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 850 | |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 851 | assign periph_insel0_in3_we = addr_hit[1] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 852 | assign periph_insel0_in3_wd = reg_wdata[15:12]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 853 | |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 854 | assign periph_insel0_in4_we = addr_hit[1] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 855 | assign periph_insel0_in4_wd = reg_wdata[19:16]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 856 | |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 857 | assign periph_insel0_in5_we = addr_hit[1] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 858 | assign periph_insel0_in5_wd = reg_wdata[23:20]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 859 | |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 860 | assign periph_insel0_in6_we = addr_hit[1] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 861 | assign periph_insel0_in6_wd = reg_wdata[27:24]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 862 | |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 863 | assign periph_insel0_in7_we = addr_hit[1] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 864 | assign periph_insel0_in7_wd = reg_wdata[31:28]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 865 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 866 | assign periph_insel1_in8_we = addr_hit[2] & reg_we & ~wr_err; |
| 867 | assign periph_insel1_in8_wd = reg_wdata[3:0]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 868 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 869 | assign periph_insel1_in9_we = addr_hit[2] & reg_we & ~wr_err; |
| 870 | assign periph_insel1_in9_wd = reg_wdata[7:4]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 871 | |
| 872 | assign periph_insel1_in10_we = addr_hit[2] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 873 | assign periph_insel1_in10_wd = reg_wdata[11:8]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 874 | |
| 875 | assign periph_insel1_in11_we = addr_hit[2] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 876 | assign periph_insel1_in11_wd = reg_wdata[15:12]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 877 | |
| 878 | assign periph_insel1_in12_we = addr_hit[2] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 879 | assign periph_insel1_in12_wd = reg_wdata[19:16]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 880 | |
| 881 | assign periph_insel1_in13_we = addr_hit[2] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 882 | assign periph_insel1_in13_wd = reg_wdata[23:20]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 883 | |
| 884 | assign periph_insel1_in14_we = addr_hit[2] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 885 | assign periph_insel1_in14_wd = reg_wdata[27:24]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 886 | |
| 887 | assign periph_insel1_in15_we = addr_hit[2] & reg_we & ~wr_err; |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 888 | assign periph_insel1_in15_wd = reg_wdata[31:28]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 889 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 890 | assign mio_outsel0_out0_we = addr_hit[3] & reg_we & ~wr_err; |
| 891 | assign mio_outsel0_out0_wd = reg_wdata[4:0]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 892 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 893 | assign mio_outsel0_out1_we = addr_hit[3] & reg_we & ~wr_err; |
| 894 | assign mio_outsel0_out1_wd = reg_wdata[9:5]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 895 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 896 | assign mio_outsel0_out2_we = addr_hit[3] & reg_we & ~wr_err; |
| 897 | assign mio_outsel0_out2_wd = reg_wdata[14:10]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 898 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 899 | assign mio_outsel0_out3_we = addr_hit[3] & reg_we & ~wr_err; |
| 900 | assign mio_outsel0_out3_wd = reg_wdata[19:15]; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 901 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 902 | assign mio_outsel0_out4_we = addr_hit[3] & reg_we & ~wr_err; |
| 903 | assign mio_outsel0_out4_wd = reg_wdata[24:20]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 904 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 905 | assign mio_outsel0_out5_we = addr_hit[3] & reg_we & ~wr_err; |
| 906 | assign mio_outsel0_out5_wd = reg_wdata[29:25]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 907 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 908 | assign mio_outsel1_out6_we = addr_hit[4] & reg_we & ~wr_err; |
| 909 | assign mio_outsel1_out6_wd = reg_wdata[4:0]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 910 | |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 911 | assign mio_outsel1_out7_we = addr_hit[4] & reg_we & ~wr_err; |
| 912 | assign mio_outsel1_out7_wd = reg_wdata[9:5]; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 913 | |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 914 | // Read data return |
| 915 | always_comb begin |
| 916 | reg_rdata_next = '0; |
| 917 | unique case (1'b1) |
| 918 | addr_hit[0]: begin |
| 919 | reg_rdata_next[0] = regen_qs; |
| 920 | end |
| 921 | |
| 922 | addr_hit[1]: begin |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 923 | reg_rdata_next[3:0] = periph_insel0_in0_qs; |
| 924 | reg_rdata_next[7:4] = periph_insel0_in1_qs; |
| 925 | reg_rdata_next[11:8] = periph_insel0_in2_qs; |
| 926 | reg_rdata_next[15:12] = periph_insel0_in3_qs; |
| 927 | reg_rdata_next[19:16] = periph_insel0_in4_qs; |
| 928 | reg_rdata_next[23:20] = periph_insel0_in5_qs; |
| 929 | reg_rdata_next[27:24] = periph_insel0_in6_qs; |
| 930 | reg_rdata_next[31:28] = periph_insel0_in7_qs; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 931 | end |
| 932 | |
| 933 | addr_hit[2]: begin |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 934 | reg_rdata_next[3:0] = periph_insel1_in8_qs; |
| 935 | reg_rdata_next[7:4] = periph_insel1_in9_qs; |
| 936 | reg_rdata_next[11:8] = periph_insel1_in10_qs; |
| 937 | reg_rdata_next[15:12] = periph_insel1_in11_qs; |
| 938 | reg_rdata_next[19:16] = periph_insel1_in12_qs; |
| 939 | reg_rdata_next[23:20] = periph_insel1_in13_qs; |
| 940 | reg_rdata_next[27:24] = periph_insel1_in14_qs; |
| 941 | reg_rdata_next[31:28] = periph_insel1_in15_qs; |
Michael Schaffner | fb80193 | 2019-10-02 10:49:15 -0700 | [diff] [blame] | 942 | end |
| 943 | |
| 944 | addr_hit[3]: begin |
Michael Schaffner | 7fac2d3 | 2019-10-04 10:14:50 -0700 | [diff] [blame] | 945 | reg_rdata_next[4:0] = mio_outsel0_out0_qs; |
| 946 | reg_rdata_next[9:5] = mio_outsel0_out1_qs; |
| 947 | reg_rdata_next[14:10] = mio_outsel0_out2_qs; |
| 948 | reg_rdata_next[19:15] = mio_outsel0_out3_qs; |
| 949 | reg_rdata_next[24:20] = mio_outsel0_out4_qs; |
| 950 | reg_rdata_next[29:25] = mio_outsel0_out5_qs; |
| 951 | end |
| 952 | |
| 953 | addr_hit[4]: begin |
| 954 | reg_rdata_next[4:0] = mio_outsel1_out6_qs; |
| 955 | reg_rdata_next[9:5] = mio_outsel1_out7_qs; |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 956 | end |
| 957 | |
| 958 | default: begin |
| 959 | reg_rdata_next = '1; |
| 960 | end |
| 961 | endcase |
| 962 | end |
| 963 | |
| 964 | // Assertions for Register Interface |
| 965 | `ASSERT_PULSE(wePulse, reg_we, clk_i, !rst_ni) |
| 966 | `ASSERT_PULSE(rePulse, reg_re, clk_i, !rst_ni) |
| 967 | |
| 968 | `ASSERT(reAfterRv, $rose(reg_re || reg_we) |=> tl_o.d_valid, clk_i, !rst_ni) |
| 969 | |
| 970 | `ASSERT(en2addrHit, (reg_we || reg_re) |-> $onehot0(addr_hit), clk_i, !rst_ni) |
| 971 | |
Michael Schaffner | ee9e8db | 2019-10-22 17:49:51 -0700 | [diff] [blame^] | 972 | // this is formulated as an assumption such that the FPV testbenches do disprove this |
| 973 | // property by mistake |
| 974 | `ASSUME(reqParity, tl_reg_h2d.a_valid |-> tl_reg_h2d.a_user.parity_en == 1'b0, clk_i, !rst_ni) |
Michael Schaffner | 51c6144 | 2019-10-01 15:49:10 -0700 | [diff] [blame] | 975 | |
| 976 | endmodule |