OpenCores
URL https://opencores.org/ocsvn/yifive/yifive/trunk

Subversion Repositories yifive

[/] [yifive/] [trunk/] [caravel_yifive/] [verilog/] [rtl/] [syntacore/] [scr1/] [src/] [includes/] [scr1_arch_types.svh] - Blame information for rev 21

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 dinesha
/// Copyright by Syntacore LLC © 2016-2021. See LICENSE for details
2
/// @file       
3
/// @brief      Pipeline types description file
4
///
5
 
6
`ifndef SCR1_ARCH_TYPES_SVH
7
`define SCR1_ARCH_TYPES_SVH
8
 
9
`include "scr1_arch_description.svh"
10
 
11
//-------------------------------------------------------------------------------
12
// MPRF and CSR parameters
13
//-------------------------------------------------------------------------------
14
 
15
`ifdef SCR1_RVE_EXT
16
  `define SCR1_MPRF_AWIDTH    4
17
  `define SCR1_MPRF_SIZE      16
18
`else // SCR1_RVE_EXT
19
  `define SCR1_MPRF_AWIDTH    5
20
  `define SCR1_MPRF_SIZE      32
21
`endif // SCR1_RVE_EXT
22
 
23 21 dinesha
// Masked due to iverilog issue
24
//typedef logic [`SCR1_XLEN-1:0]  type_scr1_mprf_v;
25
//typedef logic [`SCR1_XLEN-1:0]  type_scr1_pc_v;
26 11 dinesha
 
27
parameter int unsigned  SCR1_CSR_ADDR_WIDTH             = 12;
28
parameter int unsigned  SCR1_CSR_MTVEC_BASE_ZERO_BITS   = 6;
29
parameter int unsigned  SCR1_CSR_MTVEC_BASE_VAL_BITS    = `SCR1_XLEN-SCR1_CSR_MTVEC_BASE_ZERO_BITS;
30
parameter bit [`SCR1_XLEN-1:SCR1_CSR_MTVEC_BASE_ZERO_BITS]  SCR1_CSR_MTVEC_BASE_WR_RST_VAL    =
31
                                      SCR1_CSR_MTVEC_BASE_VAL_BITS'(SCR1_ARCH_MTVEC_BASE >> SCR1_CSR_MTVEC_BASE_ZERO_BITS);
32
parameter int unsigned  SCR1_CSR_MTVEC_BASE_RO_BITS = (`SCR1_XLEN-(SCR1_CSR_MTVEC_BASE_ZERO_BITS+SCR1_MTVEC_BASE_WR_BITS));
33
 
34
`define SCR1_MTVAL_ILLEGAL_INSTR_EN
35
 
36
//-------------------------------------------------------------------------------
37
// Exception and IRQ codes
38
//-------------------------------------------------------------------------------
39
parameter int unsigned SCR1_EXC_CODE_WIDTH_E    = 4;
40
 
41
// Exceptions
42
typedef enum logic [SCR1_EXC_CODE_WIDTH_E-1:0] {
43
    SCR1_EXC_CODE_INSTR_MISALIGN        = 4'd0,     // from EXU
44
    SCR1_EXC_CODE_INSTR_ACCESS_FAULT    = 4'd1,     // from IFU
45
    SCR1_EXC_CODE_ILLEGAL_INSTR         = 4'd2,     // from IDU or CSR
46
    SCR1_EXC_CODE_BREAKPOINT            = 4'd3,     // from IDU or BRKM
47
    SCR1_EXC_CODE_LD_ADDR_MISALIGN      = 4'd4,     // from LSU
48
    SCR1_EXC_CODE_LD_ACCESS_FAULT       = 4'd5,     // from LSU
49
    SCR1_EXC_CODE_ST_ADDR_MISALIGN      = 4'd6,     // from LSU
50
    SCR1_EXC_CODE_ST_ACCESS_FAULT       = 4'd7,     // from LSU
51
    SCR1_EXC_CODE_ECALL_M               = 4'd11     // from IDU
52
} type_scr1_exc_code_e;
53
 
54
// IRQs, reset
55
parameter bit [SCR1_EXC_CODE_WIDTH_E-1:0] SCR1_EXC_CODE_IRQ_M_SOFTWARE      = 4'd3;
56
parameter bit [SCR1_EXC_CODE_WIDTH_E-1:0] SCR1_EXC_CODE_IRQ_M_TIMER         = 4'd7;
57
parameter bit [SCR1_EXC_CODE_WIDTH_E-1:0] SCR1_EXC_CODE_IRQ_M_EXTERNAL      = 4'd11;
58
parameter bit [SCR1_EXC_CODE_WIDTH_E-1:0] SCR1_EXC_CODE_RESET               = 4'd0;
59
 
60
//-------------------------------------------------------------------------------
61
// Operand width for BRKM
62
//-------------------------------------------------------------------------------
63
typedef enum logic [1:0] {
64
    SCR1_OP_WIDTH_BYTE  = 2'b00,
65
    SCR1_OP_WIDTH_HALF  = 2'b01,
66
    SCR1_OP_WIDTH_WORD  = 2'b10
67
`ifdef SCR1_XPROP_EN
68
    ,
69
    SCR1_OP_WIDTH_ERROR = 'x
70
`endif // SCR1_XPROP_EN
71
} type_scr1_op_width_e;
72
 
73
`endif //SCR1_ARCH_TYPES_SVH

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.