hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_pkg.sv Cov: 100%

   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 Package auto-generated by `reggen` containing data structure
   6: 
   7: package pinmux_reg_pkg;
   8: 
   9:   // Param list
  10:   localparam int NPeriphIn = 32;
  11:   localparam int NPeriphOut = 32;
  12:   localparam int NMioPads = 32;
  13: 
  14:   ////////////////////////////
  15:   // Typedefs for registers //
  16:   ////////////////////////////
  17:   typedef struct packed {
  18:     logic [5:0]  q;
  19:   } pinmux_reg2hw_periph_insel_mreg_t;
  20: 
  21:   typedef struct packed {
  22:     logic [5:0]  q;
  23:   } pinmux_reg2hw_mio_outsel_mreg_t;
  24: 
  25: 
  26: 
  27:   ///////////////////////////////////////
  28:   // Register to internal design logic //
  29:   ///////////////////////////////////////
  30:   typedef struct packed {
  31:     pinmux_reg2hw_periph_insel_mreg_t [31:0] periph_insel; // [383:192]
  32:     pinmux_reg2hw_mio_outsel_mreg_t [31:0] mio_outsel; // [191:0]
  33:   } pinmux_reg2hw_t;
  34: 
  35:   ///////////////////////////////////////
  36:   // Internal design logic to register //
  37:   ///////////////////////////////////////
  38: 
  39:   // Register Address
  40:   parameter PINMUX_REGEN_OFFSET = 6'h 0;
  41:   parameter PINMUX_PERIPH_INSEL0_OFFSET = 6'h 4;
  42:   parameter PINMUX_PERIPH_INSEL1_OFFSET = 6'h 8;
  43:   parameter PINMUX_PERIPH_INSEL2_OFFSET = 6'h c;
  44:   parameter PINMUX_PERIPH_INSEL3_OFFSET = 6'h 10;
  45:   parameter PINMUX_PERIPH_INSEL4_OFFSET = 6'h 14;
  46:   parameter PINMUX_PERIPH_INSEL5_OFFSET = 6'h 18;
  47:   parameter PINMUX_PERIPH_INSEL6_OFFSET = 6'h 1c;
  48:   parameter PINMUX_MIO_OUTSEL0_OFFSET = 6'h 20;
  49:   parameter PINMUX_MIO_OUTSEL1_OFFSET = 6'h 24;
  50:   parameter PINMUX_MIO_OUTSEL2_OFFSET = 6'h 28;
  51:   parameter PINMUX_MIO_OUTSEL3_OFFSET = 6'h 2c;
  52:   parameter PINMUX_MIO_OUTSEL4_OFFSET = 6'h 30;
  53:   parameter PINMUX_MIO_OUTSEL5_OFFSET = 6'h 34;
  54:   parameter PINMUX_MIO_OUTSEL6_OFFSET = 6'h 38;
  55: 
  56: 
  57:   // Register Index
  58:   typedef enum int {
  59:     PINMUX_REGEN,
  60:     PINMUX_PERIPH_INSEL0,
  61:     PINMUX_PERIPH_INSEL1,
  62:     PINMUX_PERIPH_INSEL2,
  63:     PINMUX_PERIPH_INSEL3,
  64:     PINMUX_PERIPH_INSEL4,
  65:     PINMUX_PERIPH_INSEL5,
  66:     PINMUX_PERIPH_INSEL6,
  67:     PINMUX_MIO_OUTSEL0,
  68:     PINMUX_MIO_OUTSEL1,
  69:     PINMUX_MIO_OUTSEL2,
  70:     PINMUX_MIO_OUTSEL3,
  71:     PINMUX_MIO_OUTSEL4,
  72:     PINMUX_MIO_OUTSEL5,
  73:     PINMUX_MIO_OUTSEL6
  74:   } pinmux_id_e;
  75: 
  76:   // Register width information to check illegal writes
  77:   localparam logic [3:0] PINMUX_PERMIT [15] = '{
  78:     4'b 0001, // index[ 0] PINMUX_REGEN
  79:     4'b 1111, // index[ 1] PINMUX_PERIPH_INSEL0
  80:     4'b 1111, // index[ 2] PINMUX_PERIPH_INSEL1
  81:     4'b 1111, // index[ 3] PINMUX_PERIPH_INSEL2
  82:     4'b 1111, // index[ 4] PINMUX_PERIPH_INSEL3
  83:     4'b 1111, // index[ 5] PINMUX_PERIPH_INSEL4
  84:     4'b 1111, // index[ 6] PINMUX_PERIPH_INSEL5
  85:     4'b 0011, // index[ 7] PINMUX_PERIPH_INSEL6
  86:     4'b 1111, // index[ 8] PINMUX_MIO_OUTSEL0
  87:     4'b 1111, // index[ 9] PINMUX_MIO_OUTSEL1
  88:     4'b 1111, // index[10] PINMUX_MIO_OUTSEL2
  89:     4'b 1111, // index[11] PINMUX_MIO_OUTSEL3
  90:     4'b 1111, // index[12] PINMUX_MIO_OUTSEL4
  91:     4'b 1111, // index[13] PINMUX_MIO_OUTSEL5
  92:     4'b 0011  // index[14] PINMUX_MIO_OUTSEL6
  93:   };
  94: endpackage
  95: 
  96: