../src/lowrisc_top_earlgrey_padctrl_reg_0.1/rtl/autogen/padctrl_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 padctrl_reg_pkg;
   8: 
   9:   // Param list
  10:   parameter int NDioPads = 15;
  11:   parameter int NMioPads = 32;
  12:   parameter int AttrDw = 8;
  13: 
  14:   ////////////////////////////
  15:   // Typedefs for registers //
  16:   ////////////////////////////
  17:   typedef struct packed {
  18:     logic [7:0]  q;
  19:     logic        qe;
  20:   } padctrl_reg2hw_dio_pads_mreg_t;
  21: 
  22:   typedef struct packed {
  23:     logic [7:0]  q;
  24:     logic        qe;
  25:   } padctrl_reg2hw_mio_pads_mreg_t;
  26: 
  27: 
  28:   typedef struct packed {
  29:     logic [7:0]  d;
  30:   } padctrl_hw2reg_dio_pads_mreg_t;
  31: 
  32:   typedef struct packed {
  33:     logic [7:0]  d;
  34:   } padctrl_hw2reg_mio_pads_mreg_t;
  35: 
  36: 
  37:   ///////////////////////////////////////
  38:   // Register to internal design logic //
  39:   ///////////////////////////////////////
  40:   typedef struct packed {
  41:     padctrl_reg2hw_dio_pads_mreg_t [14:0] dio_pads; // [422:288]
  42:     padctrl_reg2hw_mio_pads_mreg_t [31:0] mio_pads; // [287:0]
  43:   } padctrl_reg2hw_t;
  44: 
  45:   ///////////////////////////////////////
  46:   // Internal design logic to register //
  47:   ///////////////////////////////////////
  48:   typedef struct packed {
  49:     padctrl_hw2reg_dio_pads_mreg_t [14:0] dio_pads; // [375:256]
  50:     padctrl_hw2reg_mio_pads_mreg_t [31:0] mio_pads; // [255:0]
  51:   } padctrl_hw2reg_t;
  52: 
  53:   // Register Address
  54:   parameter logic [5:0] PADCTRL_REGEN_OFFSET = 6'h 0;
  55:   parameter logic [5:0] PADCTRL_DIO_PADS0_OFFSET = 6'h 4;
  56:   parameter logic [5:0] PADCTRL_DIO_PADS1_OFFSET = 6'h 8;
  57:   parameter logic [5:0] PADCTRL_DIO_PADS2_OFFSET = 6'h c;
  58:   parameter logic [5:0] PADCTRL_DIO_PADS3_OFFSET = 6'h 10;
  59:   parameter logic [5:0] PADCTRL_MIO_PADS0_OFFSET = 6'h 14;
  60:   parameter logic [5:0] PADCTRL_MIO_PADS1_OFFSET = 6'h 18;
  61:   parameter logic [5:0] PADCTRL_MIO_PADS2_OFFSET = 6'h 1c;
  62:   parameter logic [5:0] PADCTRL_MIO_PADS3_OFFSET = 6'h 20;
  63:   parameter logic [5:0] PADCTRL_MIO_PADS4_OFFSET = 6'h 24;
  64:   parameter logic [5:0] PADCTRL_MIO_PADS5_OFFSET = 6'h 28;
  65:   parameter logic [5:0] PADCTRL_MIO_PADS6_OFFSET = 6'h 2c;
  66:   parameter logic [5:0] PADCTRL_MIO_PADS7_OFFSET = 6'h 30;
  67: 
  68: 
  69:   // Register Index
  70:   typedef enum int {
  71:     PADCTRL_REGEN,
  72:     PADCTRL_DIO_PADS0,
  73:     PADCTRL_DIO_PADS1,
  74:     PADCTRL_DIO_PADS2,
  75:     PADCTRL_DIO_PADS3,
  76:     PADCTRL_MIO_PADS0,
  77:     PADCTRL_MIO_PADS1,
  78:     PADCTRL_MIO_PADS2,
  79:     PADCTRL_MIO_PADS3,
  80:     PADCTRL_MIO_PADS4,
  81:     PADCTRL_MIO_PADS5,
  82:     PADCTRL_MIO_PADS6,
  83:     PADCTRL_MIO_PADS7
  84:   } padctrl_id_e;
  85: 
  86:   // Register width information to check illegal writes
  87:   parameter logic [3:0] PADCTRL_PERMIT [13] = '{
  88:     4'b 0001, // index[ 0] PADCTRL_REGEN
  89:     4'b 1111, // index[ 1] PADCTRL_DIO_PADS0
  90:     4'b 1111, // index[ 2] PADCTRL_DIO_PADS1
  91:     4'b 1111, // index[ 3] PADCTRL_DIO_PADS2
  92:     4'b 0111, // index[ 4] PADCTRL_DIO_PADS3
  93:     4'b 1111, // index[ 5] PADCTRL_MIO_PADS0
  94:     4'b 1111, // index[ 6] PADCTRL_MIO_PADS1
  95:     4'b 1111, // index[ 7] PADCTRL_MIO_PADS2
  96:     4'b 1111, // index[ 8] PADCTRL_MIO_PADS3
  97:     4'b 1111, // index[ 9] PADCTRL_MIO_PADS4
  98:     4'b 1111, // index[10] PADCTRL_MIO_PADS5
  99:     4'b 1111, // index[11] PADCTRL_MIO_PADS6
 100:     4'b 1111  // index[12] PADCTRL_MIO_PADS7
 101:   };
 102: endpackage
 103: 
 104: