Skip to content

Commit b25688e

Browse files
committed
Fix C.ADDI encoding to match spike
1 parent 42f0cb0 commit b25688e

File tree

5 files changed

+2
-103
lines changed

5 files changed

+2
-103
lines changed

insns/generate.py

+1-14
Original file line numberDiff line numberDiff line change
@@ -523,18 +523,6 @@ def insn_c_s(insn, funct3, numbytes):
523523

524524
footer(f)
525525

526-
def insn_c_nop(insn="c_nop"):
527-
with open("insn_%s.v" % insn, "w") as f:
528-
header(f, insn)
529-
format_ci(f)
530-
531-
print("", file=f)
532-
print(" // %s instruction" % insn.upper(), file=f)
533-
assign(f, "spec_valid", "rvfi_valid && insn_funct3 == 3'b 000 && insn_opcode == 2'b 01 && !insn_rs1_rd && !insn_imm")
534-
assign(f, "spec_pc_wdata", "rvfi_pc_rdata + 2")
535-
536-
footer(f)
537-
538526
def insn_c_addi(insn="c_addi"):
539527
with open("insn_%s.v" % insn, "w") as f:
540528
header(f, insn)
@@ -543,7 +531,7 @@ def insn_c_addi(insn="c_addi"):
543531
print("", file=f)
544532
print(" // %s instruction" % insn.upper(), file=f)
545533
print(" wire [`RISCV_FORMAL_XLEN-1:0] result = rvfi_rs1_rdata + insn_imm;", file=f)
546-
assign(f, "spec_valid", "rvfi_valid && insn_funct3 == 3'b 000 && insn_opcode == 2'b 01 && insn_rs1_rd")
534+
assign(f, "spec_valid", "rvfi_valid && insn_funct3 == 3'b 000 && insn_opcode == 2'b 01")
547535
assign(f, "spec_rs1_addr", "insn_rs1_rd")
548536
assign(f, "spec_rd_addr", "insn_rs1_rd")
549537
assign(f, "spec_rd_wdata", "spec_rd_addr ? result : 0")
@@ -830,7 +818,6 @@ def insn_c_mvadd(insn, funct4, add):
830818
insn_c_addi4spn()
831819
insn_c_l("c_lw", "010", 4, True)
832820
insn_c_s("c_sw", "110", 4)
833-
insn_c_nop()
834821
insn_c_addi()
835822
insn_c_jal("c_jal", "001", True)
836823
insn_c_li()

insns/insn_c_addi.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ module rvfi_insn_c_addi (
2929

3030
// C_ADDI instruction
3131
wire [`RISCV_FORMAL_XLEN-1:0] result = rvfi_rs1_rdata + insn_imm;
32-
assign spec_valid = rvfi_valid && insn_funct3 == 3'b 000 && insn_opcode == 2'b 01 && insn_rs1_rd;
32+
assign spec_valid = rvfi_valid && insn_funct3 == 3'b 000 && insn_opcode == 2'b 01;
3333
assign spec_rs1_addr = insn_rs1_rd;
3434
assign spec_rd_addr = insn_rs1_rd;
3535
assign spec_rd_wdata = spec_rd_addr ? result : 0;

insns/insn_c_nop.v

-44
This file was deleted.

insns/isa_rv32ic.txt

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ c_lui
2626
c_lw
2727
c_lwsp
2828
c_mv
29-
c_nop
3029
c_or
3130
c_slli
3231
c_srai

insns/isa_rv32ic.v

-43
Original file line numberDiff line numberDiff line change
@@ -916,38 +916,6 @@ module rvfi_isa_rv32ic (
916916
.spec_mem_wdata(spec_insn_c_mv_mem_wdata)
917917
);
918918

919-
wire spec_insn_c_nop_valid;
920-
wire spec_insn_c_nop_trap;
921-
wire [ 4 : 0] spec_insn_c_nop_rs1_addr;
922-
wire [ 4 : 0] spec_insn_c_nop_rs2_addr;
923-
wire [ 4 : 0] spec_insn_c_nop_rd_addr;
924-
wire [`RISCV_FORMAL_XLEN - 1 : 0] spec_insn_c_nop_rd_wdata;
925-
wire [`RISCV_FORMAL_XLEN - 1 : 0] spec_insn_c_nop_pc_wdata;
926-
wire [`RISCV_FORMAL_XLEN - 1 : 0] spec_insn_c_nop_mem_addr;
927-
wire [`RISCV_FORMAL_XLEN/8 - 1 : 0] spec_insn_c_nop_mem_rmask;
928-
wire [`RISCV_FORMAL_XLEN/8 - 1 : 0] spec_insn_c_nop_mem_wmask;
929-
wire [`RISCV_FORMAL_XLEN - 1 : 0] spec_insn_c_nop_mem_wdata;
930-
931-
rvfi_insn_c_nop insn_c_nop (
932-
.rvfi_valid(rvfi_valid),
933-
.rvfi_insn(rvfi_insn),
934-
.rvfi_pc_rdata(rvfi_pc_rdata),
935-
.rvfi_rs1_rdata(rvfi_rs1_rdata),
936-
.rvfi_rs2_rdata(rvfi_rs2_rdata),
937-
.rvfi_mem_rdata(rvfi_mem_rdata),
938-
.spec_valid(spec_insn_c_nop_valid),
939-
.spec_trap(spec_insn_c_nop_trap),
940-
.spec_rs1_addr(spec_insn_c_nop_rs1_addr),
941-
.spec_rs2_addr(spec_insn_c_nop_rs2_addr),
942-
.spec_rd_addr(spec_insn_c_nop_rd_addr),
943-
.spec_rd_wdata(spec_insn_c_nop_rd_wdata),
944-
.spec_pc_wdata(spec_insn_c_nop_pc_wdata),
945-
.spec_mem_addr(spec_insn_c_nop_mem_addr),
946-
.spec_mem_rmask(spec_insn_c_nop_mem_rmask),
947-
.spec_mem_wmask(spec_insn_c_nop_mem_wmask),
948-
.spec_mem_wdata(spec_insn_c_nop_mem_wdata)
949-
);
950-
951919
wire spec_insn_c_or_valid;
952920
wire spec_insn_c_or_trap;
953921
wire [ 4 : 0] spec_insn_c_or_rs1_addr;
@@ -2065,7 +2033,6 @@ module rvfi_isa_rv32ic (
20652033
spec_insn_c_lw_valid ? spec_insn_c_lw_valid :
20662034
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_valid :
20672035
spec_insn_c_mv_valid ? spec_insn_c_mv_valid :
2068-
spec_insn_c_nop_valid ? spec_insn_c_nop_valid :
20692036
spec_insn_c_or_valid ? spec_insn_c_or_valid :
20702037
spec_insn_c_slli_valid ? spec_insn_c_slli_valid :
20712038
spec_insn_c_srai_valid ? spec_insn_c_srai_valid :
@@ -2129,7 +2096,6 @@ module rvfi_isa_rv32ic (
21292096
spec_insn_c_lw_valid ? spec_insn_c_lw_trap :
21302097
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_trap :
21312098
spec_insn_c_mv_valid ? spec_insn_c_mv_trap :
2132-
spec_insn_c_nop_valid ? spec_insn_c_nop_trap :
21332099
spec_insn_c_or_valid ? spec_insn_c_or_trap :
21342100
spec_insn_c_slli_valid ? spec_insn_c_slli_trap :
21352101
spec_insn_c_srai_valid ? spec_insn_c_srai_trap :
@@ -2193,7 +2159,6 @@ module rvfi_isa_rv32ic (
21932159
spec_insn_c_lw_valid ? spec_insn_c_lw_rs1_addr :
21942160
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_rs1_addr :
21952161
spec_insn_c_mv_valid ? spec_insn_c_mv_rs1_addr :
2196-
spec_insn_c_nop_valid ? spec_insn_c_nop_rs1_addr :
21972162
spec_insn_c_or_valid ? spec_insn_c_or_rs1_addr :
21982163
spec_insn_c_slli_valid ? spec_insn_c_slli_rs1_addr :
21992164
spec_insn_c_srai_valid ? spec_insn_c_srai_rs1_addr :
@@ -2257,7 +2222,6 @@ module rvfi_isa_rv32ic (
22572222
spec_insn_c_lw_valid ? spec_insn_c_lw_rs2_addr :
22582223
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_rs2_addr :
22592224
spec_insn_c_mv_valid ? spec_insn_c_mv_rs2_addr :
2260-
spec_insn_c_nop_valid ? spec_insn_c_nop_rs2_addr :
22612225
spec_insn_c_or_valid ? spec_insn_c_or_rs2_addr :
22622226
spec_insn_c_slli_valid ? spec_insn_c_slli_rs2_addr :
22632227
spec_insn_c_srai_valid ? spec_insn_c_srai_rs2_addr :
@@ -2321,7 +2285,6 @@ module rvfi_isa_rv32ic (
23212285
spec_insn_c_lw_valid ? spec_insn_c_lw_rd_addr :
23222286
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_rd_addr :
23232287
spec_insn_c_mv_valid ? spec_insn_c_mv_rd_addr :
2324-
spec_insn_c_nop_valid ? spec_insn_c_nop_rd_addr :
23252288
spec_insn_c_or_valid ? spec_insn_c_or_rd_addr :
23262289
spec_insn_c_slli_valid ? spec_insn_c_slli_rd_addr :
23272290
spec_insn_c_srai_valid ? spec_insn_c_srai_rd_addr :
@@ -2385,7 +2348,6 @@ module rvfi_isa_rv32ic (
23852348
spec_insn_c_lw_valid ? spec_insn_c_lw_rd_wdata :
23862349
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_rd_wdata :
23872350
spec_insn_c_mv_valid ? spec_insn_c_mv_rd_wdata :
2388-
spec_insn_c_nop_valid ? spec_insn_c_nop_rd_wdata :
23892351
spec_insn_c_or_valid ? spec_insn_c_or_rd_wdata :
23902352
spec_insn_c_slli_valid ? spec_insn_c_slli_rd_wdata :
23912353
spec_insn_c_srai_valid ? spec_insn_c_srai_rd_wdata :
@@ -2449,7 +2411,6 @@ module rvfi_isa_rv32ic (
24492411
spec_insn_c_lw_valid ? spec_insn_c_lw_pc_wdata :
24502412
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_pc_wdata :
24512413
spec_insn_c_mv_valid ? spec_insn_c_mv_pc_wdata :
2452-
spec_insn_c_nop_valid ? spec_insn_c_nop_pc_wdata :
24532414
spec_insn_c_or_valid ? spec_insn_c_or_pc_wdata :
24542415
spec_insn_c_slli_valid ? spec_insn_c_slli_pc_wdata :
24552416
spec_insn_c_srai_valid ? spec_insn_c_srai_pc_wdata :
@@ -2513,7 +2474,6 @@ module rvfi_isa_rv32ic (
25132474
spec_insn_c_lw_valid ? spec_insn_c_lw_mem_addr :
25142475
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_mem_addr :
25152476
spec_insn_c_mv_valid ? spec_insn_c_mv_mem_addr :
2516-
spec_insn_c_nop_valid ? spec_insn_c_nop_mem_addr :
25172477
spec_insn_c_or_valid ? spec_insn_c_or_mem_addr :
25182478
spec_insn_c_slli_valid ? spec_insn_c_slli_mem_addr :
25192479
spec_insn_c_srai_valid ? spec_insn_c_srai_mem_addr :
@@ -2577,7 +2537,6 @@ module rvfi_isa_rv32ic (
25772537
spec_insn_c_lw_valid ? spec_insn_c_lw_mem_rmask :
25782538
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_mem_rmask :
25792539
spec_insn_c_mv_valid ? spec_insn_c_mv_mem_rmask :
2580-
spec_insn_c_nop_valid ? spec_insn_c_nop_mem_rmask :
25812540
spec_insn_c_or_valid ? spec_insn_c_or_mem_rmask :
25822541
spec_insn_c_slli_valid ? spec_insn_c_slli_mem_rmask :
25832542
spec_insn_c_srai_valid ? spec_insn_c_srai_mem_rmask :
@@ -2641,7 +2600,6 @@ module rvfi_isa_rv32ic (
26412600
spec_insn_c_lw_valid ? spec_insn_c_lw_mem_wmask :
26422601
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_mem_wmask :
26432602
spec_insn_c_mv_valid ? spec_insn_c_mv_mem_wmask :
2644-
spec_insn_c_nop_valid ? spec_insn_c_nop_mem_wmask :
26452603
spec_insn_c_or_valid ? spec_insn_c_or_mem_wmask :
26462604
spec_insn_c_slli_valid ? spec_insn_c_slli_mem_wmask :
26472605
spec_insn_c_srai_valid ? spec_insn_c_srai_mem_wmask :
@@ -2705,7 +2663,6 @@ module rvfi_isa_rv32ic (
27052663
spec_insn_c_lw_valid ? spec_insn_c_lw_mem_wdata :
27062664
spec_insn_c_lwsp_valid ? spec_insn_c_lwsp_mem_wdata :
27072665
spec_insn_c_mv_valid ? spec_insn_c_mv_mem_wdata :
2708-
spec_insn_c_nop_valid ? spec_insn_c_nop_mem_wdata :
27092666
spec_insn_c_or_valid ? spec_insn_c_or_mem_wdata :
27102667
spec_insn_c_slli_valid ? spec_insn_c_slli_mem_wdata :
27112668
spec_insn_c_srai_valid ? spec_insn_c_srai_mem_wdata :

0 commit comments

Comments
 (0)