Line 55... |
Line 55... |
//-------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------
|
// Local signals declaration
|
// Local signals declaration
|
//-------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------
|
|
|
logic [`SCR1_IMEM_DWIDTH-1:0] instr;
|
logic [`SCR1_IMEM_DWIDTH-1:0] instr;
|
type_scr1_instr_type_e instr_type;
|
logic [1:0] instr_type;
|
type_scr1_rvi_opcode_e rvi_opcode;
|
logic [6:2] rvi_opcode;
|
logic rvi_illegal;
|
logic rvi_illegal;
|
logic [2:0] funct3;
|
logic [2:0] funct3;
|
logic [6:0] funct7;
|
logic [6:0] funct7;
|
logic [11:0] funct12;
|
logic [11:0] funct12;
|
logic [4:0] shamt;
|
logic [4:0] shamt;
|
Line 78... |
Line 78... |
assign idu2ifu_rdy_o = exu2idu_rdy_i;
|
assign idu2ifu_rdy_o = exu2idu_rdy_i;
|
assign idu2exu_req_o = ifu2idu_vd_i;
|
assign idu2exu_req_o = ifu2idu_vd_i;
|
assign instr = ifu2idu_instr_i;
|
assign instr = ifu2idu_instr_i;
|
|
|
// RVI / RVC
|
// RVI / RVC
|
`ifdef YOSYS
|
assign instr_type = instr[1:0];
|
assign instr_type = 2'(instr[1:0]);
|
|
`else
|
|
|
|
assign instr_type = type_scr1_instr_type_e'(instr[1:0]);
|
|
`endif
|
|
|
|
// RVI / RVC fields
|
// RVI / RVC fields
|
`ifdef YOSYS
|
assign rvi_opcode = instr[6:2]; // RVI
|
assign rvi_opcode = 5'(instr[6:2]); // RVI
|
|
`else
|
|
assign rvi_opcode = type_scr1_rvi_opcode_e'(instr[6:2]); // RVI
|
|
`endif
|
|
assign funct3 = (instr_type == SCR1_INSTR_RVI) ? instr[14:12] : instr[15:13]; // RVI / RVC
|
assign funct3 = (instr_type == SCR1_INSTR_RVI) ? instr[14:12] : instr[15:13]; // RVI / RVC
|
assign funct7 = instr[31:25]; // RVI
|
assign funct7 = instr[31:25]; // RVI
|
assign funct12 = instr[31:20]; // RVI (SYSTEM)
|
assign funct12 = instr[31:20]; // RVI (SYSTEM)
|
assign shamt = instr[24:20]; // RVI
|
assign shamt = instr[24:20]; // RVI
|
|
|