@@ -69,11 +69,8 @@ module instr_scan #(
69
69
} ;
70
70
endfunction
71
71
72
- logic is_rvc;
73
- assign is_rvc = (instr_i[1 : 0 ] != 2'b11 );
74
-
75
72
logic rv32_rvc_jal;
76
- assign rv32_rvc_jal = (CVA6Cfg.XLEN == 32 ) & ((instr_i[15 : 13 ] == riscv :: OpcodeC1Jal) & is_rvc & (instr_i[1 : 0 ] == riscv :: OpcodeC1));
73
+ assign rv32_rvc_jal = (CVA6Cfg.XLEN == 32 ) & ((instr_i[15 : 13 ] == riscv :: OpcodeC1Jal) & (instr_i[1 : 0 ] == riscv :: OpcodeC1));
77
74
78
75
logic is_xret;
79
76
assign is_xret = logic '(instr_i[31 : 30 ] == 2'b00 ) & logic '(instr_i[28 : 0 ] == 29'b10000001000000000000001110011 );
@@ -90,22 +87,20 @@ module instr_scan #(
90
87
assign rvi_jump_o = logic '(instr_i[6 : 0 ] == riscv :: OpcodeJal) | is_xret;
91
88
92
89
// opcode JAL
93
- assign rvc_jump_o = ((instr_i[15 : 13 ] == riscv :: OpcodeC1J) & is_rvc & (instr_i[1 : 0 ] == riscv :: OpcodeC1)) | rv32_rvc_jal;
90
+ assign rvc_jump_o = ((instr_i[15 : 13 ] == riscv :: OpcodeC1J) & (instr_i[1 : 0 ] == riscv :: OpcodeC1)) | rv32_rvc_jal;
94
91
95
92
// always links to register 0
96
93
logic is_jal_r;
97
94
assign is_jal_r = (instr_i[15 : 13 ] == riscv :: OpcodeC2JalrMvAdd)
98
95
& (instr_i[6 : 2 ] == 5'b00000 )
99
- & (instr_i[1 : 0 ] == riscv :: OpcodeC2)
100
- & is_rvc;
96
+ & (instr_i[1 : 0 ] == riscv :: OpcodeC2);
101
97
assign rvc_jr_o = is_jal_r & ~ instr_i[12 ];
102
98
// always links to register 1 e.g.: it is a jump
103
99
assign rvc_jalr_o = is_jal_r & instr_i[12 ];
104
100
assign rvc_call_o = rvc_jalr_o | rv32_rvc_jal;
105
101
106
102
assign rvc_branch_o = ((instr_i[15 : 13 ] == riscv :: OpcodeC1Beqz) | (instr_i[15 : 13 ] == riscv :: OpcodeC1Bnez))
107
- & (instr_i[1 : 0 ] == riscv :: OpcodeC1)
108
- & is_rvc;
103
+ & (instr_i[1 : 0 ] == riscv :: OpcodeC1);
109
104
// check that rs1 is x1 or x5
110
105
assign rvc_return_o = ((instr_i[11 : 7 ] == 5'd1 ) | (instr_i[11 : 7 ] == 5'd5 )) & rvc_jr_o;
111
106
0 commit comments