rename core_parameters.bsv
[shakti-core.git] / src / core / core_parameters.bsv
diff --git a/src/core/core_parameters.bsv b/src/core/core_parameters.bsv
new file mode 100644 (file)
index 0000000..d4afdb0
--- /dev/null
@@ -0,0 +1,456 @@
+`define RegFileSize 32 // describes the size of ht register file in the processor.
+`ifdef spfpu
+       `define FLEN 32
+`endif
+`ifdef dpfpu
+       `define FLEN 64
+`endif
+//`define fpu_hierarchical //Define this if you want hierarchical modules in verilog
+
+`include "instance_defines.bsv"
+
+//`define MMU
+`define PRFDEPTH 6
+`ifdef RV64
+       `define Burst_length_bits 8
+       `define byte_offset 2
+       `define DCACHE_ADDR 64
+       `define DCACHE_BLOCK_SIZE 4
+       `define DCACHE_WORD_SIZE 8
+/////////////////////////////MMU parameters///////////////////////////////////
+`define OFFSET 12
+`define ASID           8
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+       // TLM2 Request Response definitions for Processor to Bus connection
+       `define TLM_PRM_CPU_REQ 4, 64, 64, 5, Bit #(0)
+       `define TLM_PRM_CPU_RSP 4, 64, 64, 5, Bit #(0)
+
+       // TLM2 Request Response definitions for Memory to Bus connection
+       `define TLM_PRM_MEM_REQ 4, 64, 64, 5, Bit #(0)
+       `define TLM_PRM_MEM_RSP 4, 64, 64, 5, Bit #(0)
+
+       // Axi Request Response definitions for Processor as a Master
+       `define AXI_PRM_CPU     4, 64, 64, 5, Bit #(0)  // Fabric Interface
+       `define AXI_XTR_CPU TLMRequest #(`TLM_PRM_CPU_REQ), TLMResponse #(`TLM_PRM_CPU_RSP), `AXI_PRM_CPU // Transactor Interface
+
+       // Axi Request Response definitions for Memory as a Slave
+       `define AXI_PRM_MEM     4, 64, 64, 5, Bit #(0)  // Fabric Interface
+       `define AXI_XTR_MEM TLMRequest #(`TLM_PRM_MEM_REQ), TLMResponse #(`TLM_PRM_MEM_RSP), `AXI_PRM_MEM // Transactor Interface
+///////////////////////////////////////////////////////////////////////////////
+`else
+       `define byte_offset 1
+       `define Addr_width 32 // the address width
+       `define DCACHE_ADDR 32
+       `define DCACHE_BLOCK_SIZE 8
+       `define DCACHE_WORD_SIZE 4
+///////////////////////////////////////////////////////////////////////////////
+       // TLM2 Request Response definitions for Processor to Bus connection
+       `define TLM_PRM_CPU_REQ 4, 32, 32, 5, Bit #(0)
+       `define TLM_PRM_CPU_RSP 4, 32, 32, 5, Bit #(0)
+
+       // TLM2 Request Response definitions for Memory to Bus connection
+       `define TLM_PRM_MEM_REQ 4, 32, 32, 5, Bit #(0)
+       `define TLM_PRM_MEM_RSP 4, 32, 32, 5, Bit #(0)
+
+       // Axi Request Response definitions for Processor as a Master
+       `define AXI_PRM_CPU     4, 32, 32, 5, Bit #(0)  // Fabric Interface
+       `define AXI_XTR_CPU TLMRequest #(`TLM_PRM_CPU_REQ), TLMResponse #(`TLM_PRM_CPU_RSP), `AXI_PRM_CPU // Transactor Interface
+
+       // Axi Request Response definitions for Memory as a Slave
+       `define AXI_PRM_MEM     4, 32, 32, 5, Bit #(0)  // Fabric Interface
+       `define AXI_XTR_MEM TLMRequest #(`TLM_PRM_MEM_REQ), TLMResponse #(`TLM_PRM_MEM_RSP), `AXI_PRM_MEM // Transactor Interface
+///////////////////////////////////////////////////////////////////////////////
+`endif
+
+`define Loop 1
+`define BAUD_RATE 130
+`ifdef verilog
+       `define Addr_space 22   //since we are leaving off the lower 2 bits of address(byte addressable memory), we have to 
+`else
+       `define Addr_space 30
+`endif
+`ifdef simulate
+  `define BAUD_RATE 5 //130 //
+`endif
+`define INTERRUPT_PINS 64 
+
+// Branch_predictor_paramters
+/////////////////////////// CACHE RELATED PARAMETERS ////////////////////////////////
+`define DCACHE_WAYS 4
+`define DCACHE_SETS 512
+
+`define ICACHE_WAYS 4                  // way_bits =2
+`define ICACHE_BLOCK_SIZE 8    // word_bits = 3
+`define ICACHE_SETS 512                        // set_bits     =7
+`define ICACHE_WORD_SIZE 4             // byte_bits=2
+`define ICACHE_TAG_BITS 20             // tag_bits = 52
+`define DCACHE_TAG_BITS 20             // tag_bits = 52
+`define BTB_DEPTH                      256
+`define RAS_DEPTH                      8
+/////////////////////////////////////////////////////////////////////////////////////
+`ifdef RV64
+       `define MISA_BITS   'h141129 //'h082C849//// 'h40101121 // A + F + I + M + U 
+       `define MXL_BITS                'h2
+`else
+       `define MISA_BITS   'h082C849 // 'h40101121 // A + F + I + M + U 
+       `define MXL_BITS                'h1
+`endif
+`define MTVEC_DEFAULT       'h00000000
+`define STVEC_DEFAULT       'h00000000
+`define UTVEC_DEFAULT       'h00000000
+/////////////////////////// Register Mapping for Machine Mode Regs /////////////////
+`define MSTATUS                        'h00 //'h300 // Machine Status register                                
+`define MISA                           'h01 //'h301 // ISA and extensions                                     
+`define MEDELEG                        'h02 //'h302 // Machine exception delegation                               
+`define MIDELEG                        'h03 //'h303 // Machine interrupt delegation                               
+`define MIE                                    'h04 //'h304 // Machine interrupt enable                                   
+`define MTVEC                          'h05 //'h305 // Machine trap-handler base address                          
+`define MCOUNTEREN             'h06 //'h306 // Machine counter setup register                                  
+`define MHPMEVENTSTART 'h23 //'h323 // statr of event selectors
+`define MHPMEVENTEND           'h26 //'h326 // end of event selectors
+`define MSCRATCH                       'h40 //'h340 // Scratch rgister for machine trap hanglers                  
+`define MEPC                           'h41 //'h341 // Machine exception program counter                          
+`define MCAUSE                         'h42 //'h342 // Machine trap cause                                         
+`define MTVAL                          'h43 //'h343 // Machine bad address                                        
+`define MIP                                    'h44 //'h344 // Machine interrupt pending
+`define MPOWERCONTROL  'h45 //'h345 // 2 bits to control the power switches.
+`define PMPCFG0                        'hA0 //'h3A0 // 
+`ifndef RV64
+       `define PMPCFG1                 'hA1 //'h3A1 // Physical Memory Protection Configuration Registers 
+`endif
+`define PMPCFG2                        'hA2 //'h3A2 // Physical Memory Protection Configuration Registers 
+`ifndef RV64
+       `define PMPCFG3                 'hA3 //'h3A3 // Physical Memory Protection Configuration Registers 
+`endif
+`define PMPADDRSTART 'hB0 //PMP Address array start 
+`define PMPADDREND   'hB7 //PMP Address array end
+`define MCYCLE                         'h00 //'hB00 // Machine cycle counter                                      
+`define MTIME                          'h01 //'hB01    // mtime register (Non-standard r/w)
+`define MINSTRET                       'h02 //'hB02 // Machine instructions retired.                              
+`define MHPMCOUNTSTART         'h03 //'hB03 // start address for performance counters
+`define MHPMCOUNTEND   'h05 //'hB05 // end address for performance counters
+`define MTIMECMP                       'h20 //'hB20 //  time compare register (Non-standard r/w)
+`define MCYCLEH                        'h80 //'hB80 // Upper 32 bits of mcycle                                   
+`define MTIMEH                         'h81 //'hB81    // mtime hi-register (Non-standard r/w)
+`define MINSTRETH                      'h82 //'hB82 // Upper 32 bits of minstret.                                 
+`define MHPMCOUNTHSTART 'h83 //'hB83 // start address for performance counters higher bits
+`define MHPMCOUNTHEND  'h85 //'hB86 // end address for performance counters higher bits
+`define MTIMECMPH                      'hA0 //'hBA0 //  time compare hi-register (Non-standard r/w)
+`define MHPMTHRESSTART 'hA3 //'hBA3 // start of counter-thresholds
+`define MHPMTHRESEND           'hA5 //'hBA6 // end of counter-thresholds
+`define MVENDORID                      'h11 //'hF11 // Vendor ID                                                  
+`define MARCHID                        'h12 //'hF12 // Architecture ID                                           
+`define MIMPID                         'h13 //'hF13 // Implementation ID                                        
+`define MHARTID                        'h14 //'hF14 // Hardware Thread ID                                      
+`define MBOOTSEQ                       'h15 //'hF15 // Hardware Thread ID                                      
+
+`define MHPMTHRESHSTART        'hE0 //'h7E0 // start of counter-thresholds
+`define MHPMTHRESHEND  'hE2 //'h7FC // end of counter-thresholds
+/////////////////////////// Register Mapping for Supervisor Mode Regs /////////////////
+`define SSTATUS     'h00 //'h100 // Supervisor Status register                                
+`define SEDELEG     'h02 //'h102 // Supervisor exception delegation                               
+`define SIDELEG     'h03 //'h103 // Supervisor interrupt delegation                               
+`define SIE         'h04 //'h104 // Supervisor interrupt enable                                   
+`define STVEC       'h05 //'h105 // Supervisor trap-handler base address                          
+`define SCOUNTEREN  'h06 //'h106 // Supervisor counter setup register                                  
+`define SSCRATCH    'h40 //'h140 // Scratch register for supervisor trap hanglers                  
+`define SEPC        'h41 //'h141 // Supervisor exception program counter                          
+`define SCAUSE      'h42 //'h142 // Supervisor trap cause                                         
+`define STVAL            'h43 //'h143 // Supervisor bad address or illegal instruction                                  
+`define SIP         'h44 //'h144 // Supervisor interrupt pending                                  
+`define SATP        'h80 //'h180 // Supervisor interrupt pending                                  
+
+/////////////////////////// Register Mapping for User Mode Regs /////////////////
+`define USTATUS                'h00 //'h000 // User status register
+`define FFLAGS                 'h01 //'h001 // FP Accrued exceptions
+`define FRM                            'h02 //'h002 // FP Dynamic rounding mode
+`define FCSR                   'h03 //'h003 // FP Control and status register
+`define UIE                            'h04 //'h004 // User interrupt enable register
+`define UTVEC                  'h05 //'h005 // User trap handler base address
+`define USCRATCH               'h40 //'h040 // Scratch register for user trap handlers
+`define UEPC                   'h41 //'h041 // User exception program counter
+`define UCAUSE                 'h42 //'h042 // User trap cause
+`define UTVAL                  'h43 //'h043 // User bad address or illegal instruction
+`define UIP                            'h44 //'h044 // User interrupt pending
+`define UMEMSE                 'h45 //'h045 // Machine Memory Structures enable
+`define UCYCLE                 'h00 //'hC00 // cycle counter for RDCYCLE instruction.
+`define UTIME                  'h01 //'hC01 // Tiemr for RDTIME instruction
+`define UINSTRET               'h02 //'hC02 // Instruction retired counter for RDINSTRET
+`define UCYCLEH                'h80 //'hC80 // Upper 32bits of UCYCLE
+`define UTIMEH                 'h81 //'hC81 // Upper 32bits of UTIME
+`define UINSTRETH              'h82 //'hC82 // Upper 32bits of UINSTRET
+`define HPMCOUNTSTART  'h03    //'hC03 // start address for performance counters
+`define HPMCOUNTEND            'h05  //'hC06 // start address for performance counters
+`define HPMCOUNTHSTART 'h83    //'hC83 // start address for performance counters higher bits
+`define HPMCOUNTHEND           'h85  //'hC86 // end address for performance counters higher bits
+
+////////////////////////////////////////////////////////////////////////////////////
+/////////// Debug registers //////////////////////////
+`define DCSR           'hb0 //'h7b0
+`define DPC                    'hb1 //'h7b1
+`define DSCRATCH0      'hb2 //'h7b2
+`define DSCRATCH1      'hb3 //'h7b3
+`define DENTRY         'hb4 //'h7b4 // holds the address of the debug entry for self loop
+`define TSELECT        'ha0 // 'h7a0 // holds the tselect information
+`define TDATA1         'ha1 // 'h7a1 // holds the first trigger data
+`define TDATA2         'ha2 // 'h7a2 // holds the first trigger data
+////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////// funct3 defintions for ISA ////////////////////
+`define JALR_f3 'b000
+`define BEQ_f3 'b000
+`define BNE_f3         'b001
+`define BLT_f3 'b100
+`define BGE_f3 'b101
+`define BLTU_f3        'b110
+`define BGEU_f3        'b111
+`define LB_f3          'b000
+`define Lh_f3          'b001
+`define LW_f3          'b010
+`define LBU_f3 'b100
+`define LHU_f3 'b101
+`define LWU_f3 'b110
+`define SB_f3          'b000
+`define SH_f3          'b001
+`define SW_f3          'b010
+`define ADD_SUB_f3     'b000
+`define SLT_SLTI_f3    'b010
+`define SLTU_SLTIU_f3  'b011
+`define XOR_XORI_f3    'b100
+`define OR_ORI_f3      'b110
+`define AND_ANDI_f3    'b111
+`define SLL_SLLI_f3    'b001
+`define SR_SRI_f3      'b101
+`define ECALL_f3       'b000
+`define EBREAK_f3      'b000
+`define CSRRW_f3       'b001
+`define CSRRS_f3       'b010
+`define CSRRC_f3       'b011
+`define CSRRWI_f3      'b101
+`define CSRRSI_f3      'b110
+`define CSRRCI_f3      'b111
+`define MUL_f3         'b000
+`define MULH_f3                'b001
+`define MULHSU_f3      'b010
+`define MULHU_f3       'b011
+`define DIV_f3         'b100
+`define DIVU_f3                'b101
+`define REM_f3         'b110
+`define REMU_f3                'b111
+`define ATOMIC_f3      'b010
+`define FENCE_f3       'b000
+`define        FENCEI_f3       'b001
+/////////////////////////////////////////////////////////////////////////
+////////////////////// opcode definitions of ISA ////////////////////////
+`define LUI_op                         'b01101
+`define AUIPC_op                       'b00101
+`define JAL_op                         'b11011
+`define JALR_op                                'b11001
+`define BRANCH_op                      'b11000
+`define LOAD_op                                'b00000
+`define FLOAD_op                       'b00001
+`define STORE_op                       'b01000
+`define FSTORE_op                      'b01001
+`define IMM_ARITH_op   'b00100
+`define        ARITH_op                        'b01100
+`ifdef RV64
+       `define IMM_ARITHW_op   'b00110
+       `define ARITHW_op                       'b01110
+       `define MULDIVW_op              'b01110
+`endif
+`define        CSR_op                          'b11100
+`define        MULDIV_op                       'b01100
+`define        ATOMIC_op                       'b01011
+`define        FMADD_op                'b10000
+`define        FMSUB_op                        'b10001
+`define        FNMSUB_op                       'b10010
+`define        FNMADD_op                       'b10011
+`define        FLOAT_op                'b10100
+`define        FENCE_op                        'b00011
+//////////////////////////////////////////////////////////////////////////
+/////////////// funct7 deifnition of ISA /////////////////////////////////
+`define        SLLI_f7         'b0000000
+`define        LOGIC_SHIFT_f7          'b0000000
+`define        ARITH_SHIFT_f7          'b0100000
+`define        ARITH_f7                'b0000000
+`define        SUB_f7                  'b0100000
+`define        MULDIV_f7               'b0000001
+`define        SFENCE_VMA      'b0001001
+`define        LR_f5                           'b00010
+`define        SC_f5                           'b00011
+`define        AMOSWAP_f5      'b00001
+`define        AMOADD_f5               'b00000
+`define        AMOXOR_f5               'b00100
+`define        AMOAND_f5               'b01100
+`define        AMOOR_f5                'b01000
+`define        AMOMIN_f5               'b10000
+`define        AMOMAX_f5               'b10100
+`define        AMOMINU_f5      'b11000
+`define        AMOMAXU_f5      'b11100
+`define        AMOMIN_f5       'b10000
+`define        AMOMAX_f5       'b10100
+
+
+`define FADD_f5         'b00000
+`define FSUB_f5         'b00001
+`define FMUL_f5         'b00010
+`define FDIV_f5         'b00011
+`define FSQRT_f5        'b01011
+`define FP_OPCODE       'b0100
+`define FCMP_f5         'b10100
+`define FMMAX_f5        'b00101
+`define FCVT_F_I_f5     'b11010
+`define FCVT_I_F_f5     'b11000
+`define FSGNJN_f5       'b00100
+`define FCLASS_f5       'b11100
+`define FCVT_S_D_f5     'b01000
+`define FMV_X_S_f7      'b1110000
+`define FMV_S_X_f7      'b1111000
+`define FMV_X_D_f7      'b1110001
+`define FMV_D_X_f7      'b1111001
+
+
+
+
+///////////////////////////////////////////////////////////////////////////
+///////////////// Event Values of Performance Counters ////////////////////
+`define PERFMONITORS                                                   64
+`define        CYCLECOUNTERS                                           13
+`define ICACHE_MISS                                                    0
+`define ICACHE_CACHEABLE                                       `ICACHE_MISS+1  
+`define ICACHE_LINEREPLACE                             `ICACHE_CACHEABLE+1
+`define ICACHE_TLBMISS                                         `ICACHE_LINEREPLACE+1
+`define ICACHE_MISALIGNED                                      `ICACHE_TLBMISS+1
+`define ICACHE_PREFETCHMISS                            `ICACHE_MISALIGNED+1
+`define COND_BRANCH                                                    `ICACHE_PREFETCHMISS+1
+`define COND_BRANCH_TAKEN                                      `COND_BRANCH+1
+`define COND_BRANCH_MISPREDICTED                       `COND_BRANCH_TAKEN+1
+`define TAKEN_BRANCH_MISPREDICTED              `COND_BRANCH_MISPREDICTED+1
+`define UNCOND_JUMPS                                                   `TAKEN_BRANCH_MISPREDICTED+1
+`define SPFPU_INST                                                     `UNCOND_JUMPS+1
+`define DPFPU_INST                                                     `SPFPU_INST+1
+`define DCACHE_TLBMISS                                         `DPFPU_INST+1
+`define TOTAL_LOADS                                                    `DCACHE_TLBMISS+1
+`define TOTAL_STORES                                                   `TOTAL_LOADS+1
+`define TOTAL_ATOMIC                                                   `TOTAL_STORES+1
+`define DCACHE_LOAD_MISS                                       `TOTAL_ATOMIC+1
+`define DCACHE_STORE_MISS                                      `DCACHE_LOAD_MISS+1
+`define DCACHE_ATOMIC_MISS                                     `DCACHE_STORE_MISS+1
+`define DCACHE_CACHEABLE_LOAD                          `DCACHE_ATOMIC_MISS+1
+`define DCACHE_CACHEABLE_STORE                 `DCACHE_CACHEABLE_LOAD+1
+`define DCACHE_CACHEABLE_ATOMIC                        `DCACHE_CACHEABLE_STORE+1
+`define DCACHE_WRITEBACKS                                      `DCACHE_CACHEABLE_ATOMIC+1
+`define DCACHE_LINEREPLACE                                     `DCACHE_WRITEBACKS+1
+`define DCACHE_MISALIGNED                                      `DCACHE_LINEREPLACE+1
+`define EXCEPTIONS_TAKEN                                       `DCACHE_MISALIGNED+1
+`define INTERRUPTS_TAKEN                                       `EXCEPTIONS_TAKEN+1
+`define MULDIV_INSTRUCTIONS                            `INTERRUPTS_TAKEN+1
+`define MEMORY_INSTRUCTIONS                            `MULDIV_INSTRUCTIONS+1
+`define EXEC_FLUSHES                                                   `MEMORY_INSTRUCTIONS+1
+`define WB_FLUSHES                                                     `EXEC_FLUSHES+1
+
+`define USERMODE_CYCLES                                                30
+`define SUPERVISORMODE_CYCLES                          31
+`define MACHINEMODE_CYLES                                      32
+`define MISPREDICTION_STALLS                           33
+`define INTERRUPT_STALLS                                       34
+`define DFENCE_CYCLES                                          35      
+`define IFENCE_CYCLES                                          36
+`define DCACHE_MISS_CYCLES                                     37
+`define ICACHE_MISS_CYCLES                                     38
+`define FPBUSY_CYCLES                                          39
+`define DIVISIONBUSY_CYCLES                            40
+`define TOTAL_STALL_CYCLES                                     41
+`define PAGEWALK_CYCLES                                                42
+`define COREBUS_CYCLES                                         43
+
+///////////////////////////////////////////////////////////////////////////////////
+/*====== Define the slave number of each peripheral=== */
+//`ifdef simulate
+//     `define Sdram_slave_num                                 0 
+//     `define Sdram_cfg_slave_num             `Sdram_slave_num 
+//     `define BootRom_slave_num                       `Sdram_cfg_slave_num+1
+//     `define Uart0_slave_num                         `BootRom_slave_num+1
+//     `define Uart1_slave_num                         `Uart0_slave_num+1
+//     `define Debug_slave_num                         `Uart1_slave_num+1
+//     `define Plic_slave_num                          `Debug_slave_num+1
+//     `define Qspi0_slave_num          `Plic_slave_num 
+//     `define Qspi1_slave_num          `Qspi0_slave_num
+//     `define Num_Slaves                                      `Qspi1_slave_num
+//`else
+//     `define Uart0_slave_num           0
+//     `define Uart1_slave_num           1
+//     `define Qspi0_slave_num           2
+//     `define Qspi1_slave_num           3
+//     `define I2c0_slave_num                           4
+//     `define I2c1_slave_num            5
+//     `define Sdram_slave_num           6
+//     `define Sdram_cfg_slave_num              7
+//     `define Dma_slave_num                            8
+//     `define Hyperflash_mem_slave_num  9
+//     `define Hyperflash_reg_slave_num  10
+//     `define Debug_slave_num                         11
+//     `define AxiExp1_slave_num                       12
+//     `define GPIO_slave_num                          13
+//     `define BootRom_slave_num                       14
+//     `define PLIC_slave_num                          15
+//     `define TCM_slave_num                           16
+//`endif
+/*=================================================== */
+
+/*===== Define the base address of each peripheral === */
+       `define DebugBase               'h00000000
+       `define DebugEnd                'h000000FF
+       `define BootRomBase  'h00001000
+       `define BootRomEnd   'h00010FFF
+       `define DMABase         'h00011600
+       `define DMAEnd                  'h000116FF // TODO
+       `define SDRAMCfgBase    'h00011700
+       `define SDRAMCfgEnd  'h000117FF // 12 32-bit registers
+       `define TCMBase         'h00020000 // 
+       `define TCMEnd                  'h00040000 // 128KB
+  `define VMEBase      'h40000000      
+       `define  VMEEnd  'h4FFFFFFF // 1GB
+    `ifdef FlexBus_verify
+        `define FlexBusBase 'h80000000
+        `define FlexBusEnd 'h8FFFFFFF
+    `else
+        `define FlexBusBase 'h50000000
+        `define FlexBusEnd 'h5FFFFFFF
+    `endif
+    `ifdef FlexBus_verify
+           `define SDRAMMemBase        'h50000000      
+           `define SDRAMMemEnd  'h5FFFFFFF // 1GB
+    `else
+           `define SDRAMMemBase        'h80000000      
+           `define SDRAMMemEnd  'h8FFFFFFF // 1GB
+    `endif
+       `define AxiExp1Base     'hC0000000
+       `define AxiExp1End      'hFFFFFFFF
+/*=================================================== */
+/*== Define the range of bytes per peripheral==== 
+`ifdef simulate
+       `define MemCRange               'h7FFFFFFF
+       `define ConfigMRange    'h3000
+       `define DebugRange              'h44  
+`else
+    `define BootRomRange       'hFFF         //4KB for Now
+        `define GPIORange                       'h8                            //2 registers for GPIO
+    `define UART0Range         'h38          //8 Registers
+    `define UART1Range         'h38          //2 registers
+    `define I2C0Range          'h38          //6 Registers. Adding +2 to just have a backup, if at all it might be required 
+    `define I2C1Range          'h38          //8 registers
+    `define DMARange           'hFF          
+    `define SDRAMCfgRange      'h58          //12 registers
+    `define QSPI0CfgRange      'h60          //13 registers
+    `define QSPI1CfgRange      'h60          //13 registers
+    `define HyperCfgRange      'h70          //15 registers
+    `define SDRAMMemRange      'hFFFFFFF     //512 MB
+    `define HyperMemRange      'hFFFFFFF     //512 MB
+        `define QSPI0MemRange      'h7FFFFFFF    //2 GB
+    `define QSPI1MemRange          'h7FFFFFFF    //2 GB
+    `define AxiExpRange                         'hFFFFFFFF    //512 MB for now!
+    `define DebugRange         'h44          //16 Registers -- 32 bit
+`endif
+       /*=================================================== */
+