-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add initial DCLS support and documentation #246
base: main
Are you sure you want to change the base?
Conversation
design/el2_veer_lockstep.sv
Outdated
.scan_mode(scan_mode) | ||
); | ||
|
||
assign corruption_detected = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
assign corruption_detected = 0; | |
assign corruption_detected = 0; |
input logic o_cpu_halt_ack, // Core Acknowledge to Halt request | ||
input logic o_cpu_halt_status, // 1'b1 indicates processor is halted | ||
input logic o_cpu_run_ack, // Core Acknowledge to run request | ||
input logic o_debug_mode_status, // Core to the PMU that core is in debug mode. When core is in debug mode, the PMU should refrain from sendng a halt or run request |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length exceeds max: 100; is: 168 [Style: line-length] [line-length]
input logic ic_rd_en, | ||
|
||
input logic [pt.ICACHE_BANKS_WAY-1:0][70:0] ic_wr_data, // Data to fill to the Icache. With ECC | ||
input logic [63:0] ic_rd_data , // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length exceeds max: 100; is: 126 [Style: line-length] [line-length]
|
||
input logic [pt.ICACHE_BANKS_WAY-1:0][70:0] ic_wr_data, // Data to fill to the Icache. With ECC | ||
input logic [63:0] ic_rd_data , // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC | ||
input logic [70:0] ic_debug_rd_data , // Data read from Icache. 2x64bits + parity bits. F2 stage. With ECC |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length exceeds max: 100; is: 132 [Style: line-length] [line-length]
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
design/lib/el2_regfile_if.sv
Outdated
); | ||
|
||
modport veer_tlu_rf( | ||
output pc, npc, mstatus, mie, mtvec, mscratch, mepc, mcause, mtval, mip, mcyclel, mcycleh, minstretl, minstreth, mrac |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length exceeds max: 100; is: 123 [Style: line-length] [line-length]
design/lib/el2_regfile_if.sv
Outdated
|
||
modport veer_rf_src( | ||
output ra, sp, fp, a0, a1, a2, a3, a4, a5, a6, a7, | ||
output pc, npc, mstatus, mie, mtvec, mscratch, mepc, mcause, mtval, mip, mcyclel, mcycleh, minstretl, minstreth, mrac |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length exceeds max: 100; is: 123 [Style: line-length] [line-length]
design/lib/el2_regfile_if.sv
Outdated
|
||
modport veer_rf_sink( | ||
input ra, sp, fp, a0, a1, a2, a3, a4, a5, a6, a7, | ||
input pc, npc, mstatus, mie, mtvec, mscratch, mepc, mcause, mtval, mip, mcyclel, mcycleh, minstretl, minstreth, mrac |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length exceeds max: 100; is: 122 [Style: line-length] [line-length]
design/dec/el2_dec.sv
Outdated
el2_regfile_if regfile_if (); | ||
assign regfile.ra = regfile_if.ra; | ||
assign regfile.sp = regfile_if.sp; | ||
assign regfile.fp = regfile_if.fp; | ||
assign regfile.a0 = regfile_if.a0; | ||
assign regfile.a1 = regfile_if.a1; | ||
assign regfile.a2 = regfile_if.a2; | ||
assign regfile.a3 = regfile_if.a3; | ||
assign regfile.a4 = regfile_if.a4; | ||
assign regfile.a5 = regfile_if.a5; | ||
assign regfile.a6 = regfile_if.a6; | ||
assign regfile.a7 = regfile_if.a7; | ||
|
||
assign regfile.pc = regfile_if.pc; | ||
assign regfile.npc = regfile_if.npc; | ||
assign regfile.mstatus = regfile_if.mstatus; | ||
assign regfile.mie = regfile_if.mie; | ||
assign regfile.mtvec = regfile_if.mtvec; | ||
assign regfile.mscratch = regfile_if.mscratch; | ||
assign regfile.mepc = regfile_if.mepc; | ||
assign regfile.mcause = regfile_if.mcause; | ||
assign regfile.mtval = regfile_if.mtval; | ||
assign regfile.mip = regfile_if.mip; | ||
assign regfile.mcyclel = regfile_if.mcyclel; | ||
assign regfile.mcycleh = regfile_if.mcycleh; | ||
assign regfile.minstretl = regfile_if.minstretl; | ||
assign regfile.minstreth = regfile_if.minstreth; | ||
assign regfile.mrac = regfile_if.mrac; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
el2_regfile_if regfile_if (); | |
assign regfile.ra = regfile_if.ra; | |
assign regfile.sp = regfile_if.sp; | |
assign regfile.fp = regfile_if.fp; | |
assign regfile.a0 = regfile_if.a0; | |
assign regfile.a1 = regfile_if.a1; | |
assign regfile.a2 = regfile_if.a2; | |
assign regfile.a3 = regfile_if.a3; | |
assign regfile.a4 = regfile_if.a4; | |
assign regfile.a5 = regfile_if.a5; | |
assign regfile.a6 = regfile_if.a6; | |
assign regfile.a7 = regfile_if.a7; | |
assign regfile.pc = regfile_if.pc; | |
assign regfile.npc = regfile_if.npc; | |
assign regfile.mstatus = regfile_if.mstatus; | |
assign regfile.mie = regfile_if.mie; | |
assign regfile.mtvec = regfile_if.mtvec; | |
assign regfile.mscratch = regfile_if.mscratch; | |
assign regfile.mepc = regfile_if.mepc; | |
assign regfile.mcause = regfile_if.mcause; | |
assign regfile.mtval = regfile_if.mtval; | |
assign regfile.mip = regfile_if.mip; | |
assign regfile.mcyclel = regfile_if.mcyclel; | |
assign regfile.mcycleh = regfile_if.mcycleh; | |
assign regfile.minstretl = regfile_if.minstretl; | |
assign regfile.minstreth = regfile_if.minstreth; | |
assign regfile.mrac = regfile_if.mrac; | |
el2_regfile_if regfile_if (); | |
assign regfile.ra = regfile_if.ra; | |
assign regfile.sp = regfile_if.sp; | |
assign regfile.fp = regfile_if.fp; | |
assign regfile.a0 = regfile_if.a0; | |
assign regfile.a1 = regfile_if.a1; | |
assign regfile.a2 = regfile_if.a2; | |
assign regfile.a3 = regfile_if.a3; | |
assign regfile.a4 = regfile_if.a4; | |
assign regfile.a5 = regfile_if.a5; | |
assign regfile.a6 = regfile_if.a6; | |
assign regfile.a7 = regfile_if.a7; | |
assign regfile.pc = regfile_if.pc; | |
assign regfile.npc = regfile_if.npc; | |
assign regfile.mstatus = regfile_if.mstatus; | |
assign regfile.mie = regfile_if.mie; | |
assign regfile.mtvec = regfile_if.mtvec; | |
assign regfile.mscratch = regfile_if.mscratch; | |
assign regfile.mepc = regfile_if.mepc; | |
assign regfile.mcause = regfile_if.mcause; | |
assign regfile.mtval = regfile_if.mtval; | |
assign regfile.mip = regfile_if.mip; | |
assign regfile.mcyclel = regfile_if.mcyclel; | |
assign regfile.mcycleh = regfile_if.mcycleh; | |
assign regfile.minstretl = regfile_if.minstretl; | |
assign regfile.minstreth = regfile_if.minstreth; | |
assign regfile.mrac = regfile_if.mrac; |
|
||
el2_dec_tlu_ctl #(.pt(pt)) tlu (.*); | ||
el2_dec_tlu_ctl #(.pt(pt) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
el2_dec_tlu_ctl #(.pt(pt) | |
el2_dec_tlu_ctl #( | |
.pt(pt) |
`ifdef RV_LOCKSTEP_REGFILE_ENABLE | ||
.regfile(regfile_if.veer_tlu_rf), | ||
`endif | ||
.*); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
.*); | |
.* | |
); |
.raddr0(dec_i0_rs1_d[4:0]), | ||
.raddr1(dec_i0_rs2_d[4:0]), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
.raddr0(dec_i0_rs1_d[4:0]), | |
.raddr1(dec_i0_rs2_d[4:0]), | |
.raddr0 (dec_i0_rs1_d[4:0]), | |
.raddr1 (dec_i0_rs2_d[4:0]), |
@@ -39,6 +39,10 @@ import el2_pkg::*; | |||
output logic [31:0] rd0, // read data |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
output logic [31:0] rd0, // read data | |
output logic [31:0] rd0, // read data |
design/el2_veer_wrapper.sv
Outdated
el2_regfile_if regfile (); | ||
// TODO: Connect to the Shadow Core | ||
initial begin | ||
$display("Dual Core Lockstep enabled!\n"); | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
el2_regfile_if regfile (); | |
// TODO: Connect to the Shadow Core | |
initial begin | |
$display("Dual Core Lockstep enabled!\n"); | |
end | |
el2_regfile_if regfile (); | |
// TODO: Connect to the Shadow Core | |
initial begin | |
$display("Dual Core Lockstep enabled!\n"); | |
end |
// Instantiate the el2_veer core | ||
el2_veer #(.pt(pt)) veer ( | ||
.clk(clk), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
// Instantiate the el2_veer core | |
el2_veer #(.pt(pt)) veer ( | |
.clk(clk), | |
// Instantiate the el2_veer core | |
el2_veer #( | |
.pt(pt) | |
) veer ( | |
.clk(clk), |
// Instantiate the el2_veer core | ||
el2_veer #(.pt(pt)) veer ( | ||
.clk(clk), | ||
`ifdef RV_LOCKSTEP_REGFILE_ENABLE | ||
.regfile(regfile.veer_rf_src), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
.regfile(regfile.veer_rf_src), | |
.regfile(regfile.veer_rf_src), |
design/lib/el2_regfile_if.sv
Outdated
logic [31:0] ra; // Return address | ||
logic [31:0] sp; // Stack pointer | ||
logic [31:0] fp; // Frame pointer | ||
logic [31:0] a0, a1; // Function arguments 0-1 / Return values 0-1 | ||
logic [31:0] a2, a3, a4, a5, a6, a7; // Function arguments 2-7 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [31:0] ra; // Return address | |
logic [31:0] sp; // Stack pointer | |
logic [31:0] fp; // Frame pointer | |
logic [31:0] a0, a1; // Function arguments 0-1 / Return values 0-1 | |
logic [31:0] a2, a3, a4, a5, a6, a7; // Function arguments 2-7 | |
logic [31:0] ra; // Return address | |
logic [31:0] sp; // Stack pointer | |
logic [31:0] fp; // Frame pointer | |
logic [31:0] a0, a1; // Function arguments 0-1 / Return values 0-1 | |
logic [31:0] a2, a3, a4, a5, a6, a7; // Function arguments 2-7 |
design/lib/el2_regfile_if.sv
Outdated
logic [31:0] pc, npc; // (Next) Program Counter | ||
logic [31:0] mstatus; // Machine status | ||
logic [31:0] mie; // Machine interrupt enable | ||
logic [31:0] mtvec; // Machine trap-handler base address | ||
logic [31:0] mscratch; // Scratch register for machine trap handlers | ||
logic [31:0] mepc; // Machine exception program counter | ||
logic [31:0] mcause; // Machine trap cause | ||
logic [31:0] mtval; // Machine bad address or instruction | ||
logic [31:0] mip; // Machine interrupt pending | ||
logic [31:0] mcyclel; // Machine cycle counter | ||
logic [31:0] mcycleh; // Machine cycle counter | ||
logic [31:0] minstretl; // Machine instructions-retired counter | ||
logic [31:0] minstreth; // Machine instructions-retired counter | ||
logic [31:0] mrac; // Region access control | ||
|
||
modport veer_gpr_rf( | ||
output ra, sp, fp, a0, a1, a2, a3, a4, a5, a6, a7 | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [31:0] pc, npc; // (Next) Program Counter | |
logic [31:0] mstatus; // Machine status | |
logic [31:0] mie; // Machine interrupt enable | |
logic [31:0] mtvec; // Machine trap-handler base address | |
logic [31:0] mscratch; // Scratch register for machine trap handlers | |
logic [31:0] mepc; // Machine exception program counter | |
logic [31:0] mcause; // Machine trap cause | |
logic [31:0] mtval; // Machine bad address or instruction | |
logic [31:0] mip; // Machine interrupt pending | |
logic [31:0] mcyclel; // Machine cycle counter | |
logic [31:0] mcycleh; // Machine cycle counter | |
logic [31:0] minstretl; // Machine instructions-retired counter | |
logic [31:0] minstreth; // Machine instructions-retired counter | |
logic [31:0] mrac; // Region access control | |
modport veer_gpr_rf( | |
output ra, sp, fp, a0, a1, a2, a3, a4, a5, a6, a7 | |
); | |
logic [31:0] pc, npc; // (Next) Program Counter | |
logic [31:0] mstatus; // Machine status | |
logic [31:0] mie; // Machine interrupt enable | |
logic [31:0] mtvec; // Machine trap-handler base address | |
logic [31:0] mscratch; // Scratch register for machine trap handlers | |
logic [31:0] mepc; // Machine exception program counter | |
logic [31:0] mcause; // Machine trap cause | |
logic [31:0] mtval; // Machine bad address or instruction | |
logic [31:0] mip; // Machine interrupt pending | |
logic [31:0] mcyclel; // Machine cycle counter | |
logic [31:0] mcycleh; // Machine cycle counter | |
logic [31:0] minstretl; // Machine instructions-retired counter | |
logic [31:0] minstreth; // Machine instructions-retired counter | |
logic [31:0] mrac; // Region access control | |
modport veer_gpr_rf(output ra, sp, fp, a0, a1, a2, a3, a4, a5, a6, a7); |
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
verible-verilog-format
verification/block/dcls/el2_veer_lockstep_wrapper.sv|166|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|172|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|175|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|188|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|191|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|196|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|200|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|213|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|222|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|235|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|238|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|243|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|247|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|260|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|266|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|269|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|276|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|279|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|282|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|288|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|291|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|300|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|307|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|315|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|320|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|329|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|334|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|343|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|346|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|349|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|356|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|359|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|367|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|373|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|383|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|386|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|390|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|392|
el2_regfile_if regfile_if (); | ||
assign regfile.gpr.ra = regfile_if.gpr.ra; | ||
assign regfile.gpr.sp = regfile_if.gpr.sp; | ||
assign regfile.gpr.fp = regfile_if.gpr.fp; | ||
assign regfile.gpr.a0 = regfile_if.gpr.a0; | ||
assign regfile.gpr.a1 = regfile_if.gpr.a1; | ||
assign regfile.gpr.a2 = regfile_if.gpr.a2; | ||
assign regfile.gpr.a3 = regfile_if.gpr.a3; | ||
assign regfile.gpr.a4 = regfile_if.gpr.a4; | ||
assign regfile.gpr.a5 = regfile_if.gpr.a5; | ||
assign regfile.gpr.a6 = regfile_if.gpr.a6; | ||
assign regfile.gpr.a7 = regfile_if.gpr.a7; | ||
|
||
assign regfile.tlu.pc = regfile_if.tlu.pc; | ||
assign regfile.tlu.npc = regfile_if.tlu.npc; | ||
assign regfile.tlu.mstatus = regfile_if.tlu.mstatus; | ||
assign regfile.tlu.mie = regfile_if.tlu.mie; | ||
assign regfile.tlu.mtvec = regfile_if.tlu.mtvec; | ||
assign regfile.tlu.mscratch = regfile_if.tlu.mscratch; | ||
assign regfile.tlu.mepc = regfile_if.tlu.mepc; | ||
assign regfile.tlu.mcause = regfile_if.tlu.mcause; | ||
assign regfile.tlu.mtval = regfile_if.tlu.mtval; | ||
assign regfile.tlu.mip = regfile_if.tlu.mip; | ||
assign regfile.tlu.mcyclel = regfile_if.tlu.mcyclel; | ||
assign regfile.tlu.mcycleh = regfile_if.tlu.mcycleh; | ||
assign regfile.tlu.minstretl = regfile_if.tlu.minstretl; | ||
assign regfile.tlu.minstreth = regfile_if.tlu.minstreth; | ||
assign regfile.tlu.mrac = regfile_if.tlu.mrac; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
el2_regfile_if regfile_if (); | |
assign regfile.gpr.ra = regfile_if.gpr.ra; | |
assign regfile.gpr.sp = regfile_if.gpr.sp; | |
assign regfile.gpr.fp = regfile_if.gpr.fp; | |
assign regfile.gpr.a0 = regfile_if.gpr.a0; | |
assign regfile.gpr.a1 = regfile_if.gpr.a1; | |
assign regfile.gpr.a2 = regfile_if.gpr.a2; | |
assign regfile.gpr.a3 = regfile_if.gpr.a3; | |
assign regfile.gpr.a4 = regfile_if.gpr.a4; | |
assign regfile.gpr.a5 = regfile_if.gpr.a5; | |
assign regfile.gpr.a6 = regfile_if.gpr.a6; | |
assign regfile.gpr.a7 = regfile_if.gpr.a7; | |
assign regfile.tlu.pc = regfile_if.tlu.pc; | |
assign regfile.tlu.npc = regfile_if.tlu.npc; | |
assign regfile.tlu.mstatus = regfile_if.tlu.mstatus; | |
assign regfile.tlu.mie = regfile_if.tlu.mie; | |
assign regfile.tlu.mtvec = regfile_if.tlu.mtvec; | |
assign regfile.tlu.mscratch = regfile_if.tlu.mscratch; | |
assign regfile.tlu.mepc = regfile_if.tlu.mepc; | |
assign regfile.tlu.mcause = regfile_if.tlu.mcause; | |
assign regfile.tlu.mtval = regfile_if.tlu.mtval; | |
assign regfile.tlu.mip = regfile_if.tlu.mip; | |
assign regfile.tlu.mcyclel = regfile_if.tlu.mcyclel; | |
assign regfile.tlu.mcycleh = regfile_if.tlu.mcycleh; | |
assign regfile.tlu.minstretl = regfile_if.tlu.minstretl; | |
assign regfile.tlu.minstreth = regfile_if.tlu.minstreth; | |
assign regfile.tlu.mrac = regfile_if.tlu.mrac; | |
el2_regfile_if regfile_if (); | |
assign regfile.gpr.ra = regfile_if.gpr.ra; | |
assign regfile.gpr.sp = regfile_if.gpr.sp; | |
assign regfile.gpr.fp = regfile_if.gpr.fp; | |
assign regfile.gpr.a0 = regfile_if.gpr.a0; | |
assign regfile.gpr.a1 = regfile_if.gpr.a1; | |
assign regfile.gpr.a2 = regfile_if.gpr.a2; | |
assign regfile.gpr.a3 = regfile_if.gpr.a3; | |
assign regfile.gpr.a4 = regfile_if.gpr.a4; | |
assign regfile.gpr.a5 = regfile_if.gpr.a5; | |
assign regfile.gpr.a6 = regfile_if.gpr.a6; | |
assign regfile.gpr.a7 = regfile_if.gpr.a7; | |
assign regfile.tlu.pc = regfile_if.tlu.pc; | |
assign regfile.tlu.npc = regfile_if.tlu.npc; | |
assign regfile.tlu.mstatus = regfile_if.tlu.mstatus; | |
assign regfile.tlu.mie = regfile_if.tlu.mie; | |
assign regfile.tlu.mtvec = regfile_if.tlu.mtvec; | |
assign regfile.tlu.mscratch = regfile_if.tlu.mscratch; | |
assign regfile.tlu.mepc = regfile_if.tlu.mepc; | |
assign regfile.tlu.mcause = regfile_if.tlu.mcause; | |
assign regfile.tlu.mtval = regfile_if.tlu.mtval; | |
assign regfile.tlu.mip = regfile_if.tlu.mip; | |
assign regfile.tlu.mcyclel = regfile_if.tlu.mcyclel; | |
assign regfile.tlu.mcycleh = regfile_if.tlu.mcycleh; | |
assign regfile.tlu.minstretl = regfile_if.tlu.minstretl; | |
assign regfile.tlu.minstreth = regfile_if.tlu.minstreth; | |
assign regfile.tlu.mrac = regfile_if.tlu.mrac; |
assign regfile.gpr.ra = gpr_out[1][31:0]; // x1 | ||
assign regfile.gpr.sp = gpr_out[2][31:0]; // x2 | ||
assign regfile.gpr.fp = gpr_out[8][31:0]; // x8 | ||
assign regfile.gpr.a0 = gpr_out[10][31:0]; // x10 | ||
assign regfile.gpr.a1 = gpr_out[11][31:0]; // x11 | ||
assign regfile.gpr.a2 = gpr_out[12][31:0]; // x12 | ||
assign regfile.gpr.a3 = gpr_out[13][31:0]; // x13 | ||
assign regfile.gpr.a4 = gpr_out[14][31:0]; // x14 | ||
assign regfile.gpr.a5 = gpr_out[15][31:0]; // x15 | ||
assign regfile.gpr.a6 = gpr_out[16][31:0]; // x16 | ||
assign regfile.gpr.a7 = gpr_out[17][31:0]; // x17 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
assign regfile.gpr.ra = gpr_out[1][31:0]; // x1 | |
assign regfile.gpr.sp = gpr_out[2][31:0]; // x2 | |
assign regfile.gpr.fp = gpr_out[8][31:0]; // x8 | |
assign regfile.gpr.a0 = gpr_out[10][31:0]; // x10 | |
assign regfile.gpr.a1 = gpr_out[11][31:0]; // x11 | |
assign regfile.gpr.a2 = gpr_out[12][31:0]; // x12 | |
assign regfile.gpr.a3 = gpr_out[13][31:0]; // x13 | |
assign regfile.gpr.a4 = gpr_out[14][31:0]; // x14 | |
assign regfile.gpr.a5 = gpr_out[15][31:0]; // x15 | |
assign regfile.gpr.a6 = gpr_out[16][31:0]; // x16 | |
assign regfile.gpr.a7 = gpr_out[17][31:0]; // x17 | |
assign regfile.gpr.ra = gpr_out[1][31:0]; // x1 | |
assign regfile.gpr.sp = gpr_out[2][31:0]; // x2 | |
assign regfile.gpr.fp = gpr_out[8][31:0]; // x8 | |
assign regfile.gpr.a0 = gpr_out[10][31:0]; // x10 | |
assign regfile.gpr.a1 = gpr_out[11][31:0]; // x11 | |
assign regfile.gpr.a2 = gpr_out[12][31:0]; // x12 | |
assign regfile.gpr.a3 = gpr_out[13][31:0]; // x13 | |
assign regfile.gpr.a4 = gpr_out[14][31:0]; // x14 | |
assign regfile.gpr.a5 = gpr_out[15][31:0]; // x15 | |
assign regfile.gpr.a6 = gpr_out[16][31:0]; // x16 | |
assign regfile.gpr.a7 = gpr_out[17][31:0]; // x17 |
delayed_main_core_regfile[i+1].gpr <= '0; | ||
delayed_main_core_regfile[i+1].tlu <= '0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
delayed_main_core_regfile[i+1].gpr <= '0; | |
delayed_main_core_regfile[i+1].tlu <= '0; | |
delayed_main_core_regfile[i+1].gpr <= '0; | |
delayed_main_core_regfile[i+1].tlu <= '0; |
.* | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
.* | |
); | |
.* | |
); |
design/el2_veer_wrapper.sv
Outdated
); | ||
|
||
`ifdef RV_LOCKSTEP_ENABLE | ||
logic lockstep_corruption_detected; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic lockstep_corruption_detected; | |
logic lockstep_corruption_detected; |
logic [ 31:0] lsu_axi_awaddr; | ||
logic [ 3:0] lsu_axi_awregion; | ||
logic [ 7:0] lsu_axi_awlen; | ||
logic [ 2:0] lsu_axi_awsize; | ||
logic [ 1:0] lsu_axi_awburst; | ||
logic lsu_axi_awlock; | ||
logic [ 3:0] lsu_axi_awcache; | ||
logic [ 2:0] lsu_axi_awprot; | ||
logic [ 3:0] lsu_axi_awqos; | ||
|
||
logic lsu_axi_wvalid; | ||
logic lsu_axi_wready; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [ 31:0] lsu_axi_awaddr; | |
logic [ 3:0] lsu_axi_awregion; | |
logic [ 7:0] lsu_axi_awlen; | |
logic [ 2:0] lsu_axi_awsize; | |
logic [ 1:0] lsu_axi_awburst; | |
logic lsu_axi_awlock; | |
logic [ 3:0] lsu_axi_awcache; | |
logic [ 2:0] lsu_axi_awprot; | |
logic [ 3:0] lsu_axi_awqos; | |
logic lsu_axi_wvalid; | |
logic lsu_axi_wready; | |
logic [31:0] lsu_axi_awaddr; | |
logic [3:0] lsu_axi_awregion; | |
logic [7:0] lsu_axi_awlen; | |
logic [2:0] lsu_axi_awsize; | |
logic [1:0] lsu_axi_awburst; | |
logic lsu_axi_awlock; | |
logic [3:0] lsu_axi_awcache; | |
logic [2:0] lsu_axi_awprot; | |
logic [3:0] lsu_axi_awqos; | |
logic lsu_axi_wvalid; | |
logic lsu_axi_wready; |
logic [ 7:0] lsu_axi_wstrb; | ||
logic lsu_axi_wlast; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [ 7:0] lsu_axi_wstrb; | |
logic lsu_axi_wlast; | |
logic [7:0] lsu_axi_wstrb; | |
logic lsu_axi_wlast; |
logic lsu_axi_bvalid; | ||
logic lsu_axi_bready; | ||
logic [ 1:0] lsu_axi_bresp; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic lsu_axi_bvalid; | |
logic lsu_axi_bready; | |
logic [ 1:0] lsu_axi_bresp; | |
logic lsu_axi_bvalid; | |
logic lsu_axi_bready; | |
logic [1:0] lsu_axi_bresp; |
// AXI Read Channels | ||
logic lsu_axi_arvalid; | ||
logic lsu_axi_arready; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
// AXI Read Channels | |
logic lsu_axi_arvalid; | |
logic lsu_axi_arready; | |
// AXI Read Channels | |
logic lsu_axi_arvalid; | |
logic lsu_axi_arready; |
logic [ 31:0] lsu_axi_araddr; | ||
logic [ 3:0] lsu_axi_arregion; | ||
logic [ 7:0] lsu_axi_arlen; | ||
logic [ 2:0] lsu_axi_arsize; | ||
logic [ 1:0] lsu_axi_arburst; | ||
logic lsu_axi_arlock; | ||
logic [ 3:0] lsu_axi_arcache; | ||
logic [ 2:0] lsu_axi_arprot; | ||
logic [ 3:0] lsu_axi_arqos; | ||
|
||
logic lsu_axi_rvalid; | ||
logic lsu_axi_rready; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [ 31:0] lsu_axi_araddr; | |
logic [ 3:0] lsu_axi_arregion; | |
logic [ 7:0] lsu_axi_arlen; | |
logic [ 2:0] lsu_axi_arsize; | |
logic [ 1:0] lsu_axi_arburst; | |
logic lsu_axi_arlock; | |
logic [ 3:0] lsu_axi_arcache; | |
logic [ 2:0] lsu_axi_arprot; | |
logic [ 3:0] lsu_axi_arqos; | |
logic lsu_axi_rvalid; | |
logic lsu_axi_rready; | |
logic [31:0] lsu_axi_araddr; | |
logic [3:0] lsu_axi_arregion; | |
logic [7:0] lsu_axi_arlen; | |
logic [2:0] lsu_axi_arsize; | |
logic [1:0] lsu_axi_arburst; | |
logic lsu_axi_arlock; | |
logic [3:0] lsu_axi_arcache; | |
logic [2:0] lsu_axi_arprot; | |
logic [3:0] lsu_axi_arqos; | |
logic lsu_axi_rvalid; | |
logic lsu_axi_rready; |
delayed_main_core_regfile[0].tlu <= main_core_regfile.tlu; | ||
end | ||
end | ||
for (genvar i = 0; i < LockstepDelay; i++) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All generate block statements must have a label [Style: generate-statements] [generate-label]
|
||
`ifdef RV_LOCKSTEP_REGFILE_ENABLE | ||
logic regfile_corrupted; | ||
assign regfile_corrupted = (delayed_main_core_regfile[LockstepDelay].gpr != shadow_core_regfile.gpr) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length exceeds max: 100; is: 104 [Style: line-length] [line-length]
`ifdef RV_LOCKSTEP_REGFILE_ENABLE | ||
logic regfile_corrupted; | ||
assign regfile_corrupted = (delayed_main_core_regfile[LockstepDelay].gpr != shadow_core_regfile.gpr) | ||
| (delayed_main_core_regfile[LockstepDelay].tlu != shadow_core_regfile.tlu); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length exceeds max: 100; is: 105 [Style: line-length] [line-length]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
verible-verilog-format
verification/block/dcls/el2_veer_lockstep_wrapper.sv|356|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|359|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|367|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|373|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|383|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|386|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|390|
verification/block/dcls/el2_veer_lockstep_wrapper.sv|392|
logic [ 63:0] lsu_axi_rdata; | ||
logic [ 1:0] lsu_axi_rresp; | ||
logic lsu_axi_rlast; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [ 63:0] lsu_axi_rdata; | |
logic [ 1:0] lsu_axi_rresp; | |
logic lsu_axi_rlast; | |
logic [63:0] lsu_axi_rdata; | |
logic [1:0] lsu_axi_rresp; | |
logic lsu_axi_rlast; |
logic ifu_axi_awvalid; | ||
logic ifu_axi_awready; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic ifu_axi_awvalid; | |
logic ifu_axi_awready; | |
logic ifu_axi_awvalid; | |
logic ifu_axi_awready; |
logic [ 31:0] ifu_axi_awaddr; | ||
logic [ 3:0] ifu_axi_awregion; | ||
logic [ 7:0] ifu_axi_awlen; | ||
logic [ 2:0] ifu_axi_awsize; | ||
logic [ 1:0] ifu_axi_awburst; | ||
logic ifu_axi_awlock; | ||
logic [ 3:0] ifu_axi_awcache; | ||
logic [ 2:0] ifu_axi_awprot; | ||
logic [ 3:0] ifu_axi_awqos; | ||
|
||
logic ifu_axi_wvalid; | ||
logic ifu_axi_wready; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [ 31:0] ifu_axi_awaddr; | |
logic [ 3:0] ifu_axi_awregion; | |
logic [ 7:0] ifu_axi_awlen; | |
logic [ 2:0] ifu_axi_awsize; | |
logic [ 1:0] ifu_axi_awburst; | |
logic ifu_axi_awlock; | |
logic [ 3:0] ifu_axi_awcache; | |
logic [ 2:0] ifu_axi_awprot; | |
logic [ 3:0] ifu_axi_awqos; | |
logic ifu_axi_wvalid; | |
logic ifu_axi_wready; | |
logic [31:0] ifu_axi_awaddr; | |
logic [3:0] ifu_axi_awregion; | |
logic [7:0] ifu_axi_awlen; | |
logic [2:0] ifu_axi_awsize; | |
logic [1:0] ifu_axi_awburst; | |
logic ifu_axi_awlock; | |
logic [3:0] ifu_axi_awcache; | |
logic [2:0] ifu_axi_awprot; | |
logic [3:0] ifu_axi_awqos; | |
logic ifu_axi_wvalid; | |
logic ifu_axi_wready; |
logic [ 7:0] ifu_axi_wstrb; | ||
logic ifu_axi_wlast; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [ 7:0] ifu_axi_wstrb; | |
logic ifu_axi_wlast; | |
logic [7:0] ifu_axi_wstrb; | |
logic ifu_axi_wlast; |
logic ifu_axi_bvalid; | ||
logic ifu_axi_bready; | ||
logic [ 1:0] ifu_axi_bresp; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic ifu_axi_bvalid; | |
logic ifu_axi_bready; | |
logic [ 1:0] ifu_axi_bresp; | |
logic ifu_axi_bvalid; | |
logic ifu_axi_bready; | |
logic [1:0] ifu_axi_bresp; |
logic lsu_hready; | ||
logic lsu_hresp; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic lsu_hready; | |
logic lsu_hresp; | |
logic lsu_hready; | |
logic lsu_hresp; |
logic [ 2:0] sb_hburst; | ||
logic sb_hmastlock; | ||
logic [ 3:0] sb_hprot; | ||
logic [ 2:0] sb_hsize; | ||
logic [ 1:0] sb_htrans; | ||
logic sb_hwrite; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [ 2:0] sb_hburst; | |
logic sb_hmastlock; | |
logic [ 3:0] sb_hprot; | |
logic [ 2:0] sb_hsize; | |
logic [ 1:0] sb_htrans; | |
logic sb_hwrite; | |
logic [2:0] sb_hburst; | |
logic sb_hmastlock; | |
logic [3:0] sb_hprot; | |
logic [2:0] sb_hsize; | |
logic [1:0] sb_htrans; | |
logic sb_hwrite; |
logic sb_hready; | ||
logic sb_hresp; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic sb_hready; | |
logic sb_hresp; | |
logic sb_hready; | |
logic sb_hresp; |
// DMA Slave | ||
logic dma_hsel; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
// DMA Slave | |
logic dma_hsel; | |
// DMA Slave | |
logic dma_hsel; |
logic [ 2:0] dma_hburst; | ||
logic dma_hmastlock; | ||
logic [ 3:0] dma_hprot; | ||
logic [ 2:0] dma_hsize; | ||
logic [ 1:0] dma_htrans; | ||
logic dma_hwrite; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic [ 2:0] dma_hburst; | |
logic dma_hmastlock; | |
logic [ 3:0] dma_hprot; | |
logic [ 2:0] dma_hsize; | |
logic [ 1:0] dma_htrans; | |
logic dma_hwrite; | |
logic [2:0] dma_hburst; | |
logic dma_hmastlock; | |
logic [3:0] dma_hprot; | |
logic [2:0] dma_hsize; | |
logic [1:0] dma_htrans; | |
logic dma_hwrite; |
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
logic [ 1:0] dma_htrans; | ||
logic dma_hwrite; | ||
logic [63:0] dma_hwdata; | ||
logic dma_hreadyin; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic dma_hreadyin; | |
logic dma_hreadyin; |
logic dma_hreadyout; | ||
logic dma_hresp; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic dma_hreadyout; | |
logic dma_hresp; | |
logic dma_hreadyout; | |
logic dma_hresp; |
logic dmi_reg_en; // read or write | ||
logic [ 6:0] dmi_reg_addr; // address of DM register | ||
logic dmi_reg_wr_en; // write instruction | ||
logic [31:0] dmi_reg_wdata; // write data |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
logic dmi_reg_en; // read or write | |
logic [ 6:0] dmi_reg_addr; // address of DM register | |
logic dmi_reg_wr_en; // write instruction | |
logic [31:0] dmi_reg_wdata; // write data | |
logic dmi_reg_en; // read or write | |
logic [6:0] dmi_reg_addr; // address of DM register | |
logic dmi_reg_wr_en; // write instruction | |
logic [31:0] dmi_reg_wdata; // write data |
logic [31:0] dmi_reg_wdata; // write data | ||
logic [31:0] dmi_reg_rdata; | ||
|
||
// ICCM/DCCM ECC status |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
// ICCM/DCCM ECC status | |
// ICCM/DCCM ECC status |
|
||
el2_regfile_if regfile (); | ||
|
||
el2_veer #(.pt(pt)) veer ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
el2_veer #(.pt(pt)) veer ( | |
el2_veer #( | |
.pt(pt) | |
) veer ( |
el2_veer #(.pt(pt)) veer ( | ||
`ifdef RV_LOCKSTEP_REGFILE_ENABLE | ||
.regfile(regfile.veer_rf_src), | ||
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE | |
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE |
.* | ||
); | ||
|
||
el2_veer_lockstep #(.pt(pt)) lockstep ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
el2_veer_lockstep #(.pt(pt)) lockstep ( | |
el2_veer_lockstep #( | |
.pt(pt) | |
) lockstep ( |
.main_core_regfile(regfile.veer_rf_sink), | ||
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
.main_core_regfile(regfile.veer_rf_sink), | |
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE | |
.main_core_regfile (regfile.veer_rf_sink), | |
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE |
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
1 similar comment
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
0b07999
to
65bcc28
Compare
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
delay_output_d[0] <= main_core_outputs; | ||
end | ||
end | ||
for (genvar i = 0; i < LockstepDelay; i++) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All generate block statements must have a label [Style: generate-statements] [generate-label]
// - IOs of Main Core and Shadow Core differ OR error injection is enabled | ||
// - Shadow Core is out of reset | ||
// - Shadow Core is enabled | ||
assign corruption_detected_o = ((corruption_detected | lockstep_err_injection_en_i) & rst_n) & ~disable_corruption_detection_i; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line length exceeds max: 100; is: 127 [Style: line-length] [line-length]
if (~rst_l) begin | ||
delay_input_d[0] <= veer_inputs_t'(0); | ||
delay_output_d[0] <= veer_outputs_t'(0); | ||
end else begin | ||
delay_input_d[0] <= main_core_inputs; | ||
delay_output_d[0] <= main_core_outputs; | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
if (~rst_l) begin | |
delay_input_d[0] <= veer_inputs_t'(0); | |
delay_output_d[0] <= veer_outputs_t'(0); | |
end else begin | |
delay_input_d[0] <= main_core_inputs; | |
delay_output_d[0] <= main_core_outputs; | |
end | |
if (~rst_l) begin | |
delay_input_d[0] <= veer_inputs_t'(0); | |
delay_output_d[0] <= veer_outputs_t'(0); | |
end else begin | |
delay_input_d[0] <= main_core_inputs; | |
delay_output_d[0] <= main_core_outputs; |
delay_output_d[0] <= main_core_outputs; | ||
end | ||
end | ||
for (genvar i = 0; i < LockstepDelay; i++) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
for (genvar i = 0; i < LockstepDelay; i++) begin | |
end | |
for (genvar i = 0; i < LockstepDelay; i++) begin |
delay_input_d[i+1] <= veer_inputs_t'(0); | ||
delay_output_d[i+1] <= veer_outputs_t'(0); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
delay_input_d[i+1] <= veer_inputs_t'(0); | |
delay_output_d[i+1] <= veer_outputs_t'(0); | |
delay_input_d[i+1] <= veer_inputs_t'(0); | |
delay_output_d[i+1] <= veer_outputs_t'(0); |
// Report corruption if all of the below requirements are fulfilled: | ||
// - IOs of Main Core and Shadow Core differ OR error injection is enabled | ||
// - Shadow Core is out of reset | ||
// - Shadow Core is enabled | ||
assign corruption_detected_o = ((corruption_detected | lockstep_err_injection_en_i) & rst_n) & ~disable_corruption_detection_i; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
// Report corruption if all of the below requirements are fulfilled: | |
// - IOs of Main Core and Shadow Core differ OR error injection is enabled | |
// - Shadow Core is out of reset | |
// - Shadow Core is enabled | |
assign corruption_detected_o = ((corruption_detected | lockstep_err_injection_en_i) & rst_n) & ~disable_corruption_detection_i; | |
// Report corruption if all of the below requirements are fulfilled: | |
// - IOs of Main Core and Shadow Core differ OR error injection is enabled | |
// - Shadow Core is out of reset | |
// - Shadow Core is enabled | |
assign corruption_detected_o = ((corruption_detected | lockstep_err_injection_en_i) & rst_n) & ~disable_corruption_detection_i; |
// Memory Export Interface | ||
el2_mem_if.veer_sram_src el2_mem_export, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
// Memory Export Interface | |
el2_mem_if.veer_sram_src el2_mem_export, | |
// Memory Export Interface | |
el2_mem_if.veer_sram_src el2_mem_export, |
@@ -871,11 +878,32 @@ | |||
logic [31:0] dmi_reg_wdata; | |||
logic [31:0] dmi_reg_rdata; | |||
|
|||
`ifdef RV_LOCKSTEP_REGFILE_ENABLE | |||
el2_regfile_if regfile (); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
el2_regfile_if regfile (); | |
el2_regfile_if regfile (); |
initial begin | ||
$display("Dual Core Lockstep enabled!\n"); | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
initial begin | |
$display("Dual Core Lockstep enabled!\n"); | |
end | |
initial begin | |
$display("Dual Core Lockstep enabled!\n"); | |
end |
input logic disable_corruption_detection_i, | ||
input logic lockstep_err_injection_en_i, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
input logic disable_corruption_detection_i, | |
input logic lockstep_err_injection_en_i, | |
input logic disable_corruption_detection_i, | |
input logic lockstep_err_injection_en_i, |
|
||
`ifdef RV_LOCKSTEP_REGFILE_ENABLE | ||
el2_regfile_if regfile (); | ||
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE | |
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE |
el2_veer_lockstep #(.pt(pt)) lockstep ( | ||
`ifdef RV_LOCKSTEP_REGFILE_ENABLE | ||
.main_core_regfile(regfile.veer_rf_sink), | ||
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE | |
`endif // `ifdef RV_LOCKSTEP_REGFILE_ENABLE |
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
234b0a7
to
6361ac9
Compare
// Excluding scan_mode from coverage as its usage is determined by the integrator of the VeeR core. | ||
/*verilator coverage_off*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
// Excluding scan_mode from coverage as its usage is determined by the integrator of the VeeR core. | |
/*verilator coverage_off*/ | |
// Excluding scan_mode from coverage as its usage is determined by the integrator of the VeeR core. | |
/*verilator coverage_off*/ |
input logic scan_mode | ||
/*verilator coverage_on*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶
input logic scan_mode | |
/*verilator coverage_on*/ | |
input logic scan_mode | |
/*verilator coverage_on*/ |
6361ac9
to
4737199
Compare
4737199
to
3185caa
Compare
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
Internal-tag: [#62496] Signed-off-by: Michal Czyz <[email protected]> Signed-off-by: Wiktoria Kuna <[email protected]>
Internal-tag: [#66891] Signed-off-by: Wiktoria Kuna <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
- Remove reduntant imports from RTL - Assign some hanging outputs to `unused_*` wires - Add explicit lint waivers for VeeR codebase - Add test-specific lint waivers for test wrappers - Build complex test design using multiple threads Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Signed-off-by: Robert Szczepanski <[email protected]>
Links to coverage and verification reports for this PR (#246) are available at https://chipsalliance.github.io/Cores-VeeR-EL2/ |
This PR adds a Dual Core Lockstep feature into VeeR CPU behind configuration options. The DCLS tracks inputs and outputs of the main CPU core and compares it with the expected states. There is a possibility to include and track copy of the register file in a shadow core. New feature is configurable via following flags:
-set lockstep_enable=1
that generatesRV_LOCKSTEP_ENABLE
which enables the DCLS feature,-set lockstep_delay=<2-4>
that generatesRV_LOCKSTEP_DELAY
which specifies the delay between the shadow core and the main core,-set lockstep_regfile_enable=1
that generatesRV_LOCKSTEP_REGFILE_ENABLE
which exposes the register file to top level and adds it to the equvalency checker.The Dual Core Lockstep is appended to the documentation and comes with a basic test for delayed reset functionality.
Additionally this PR includes a codebase cleanup:
unused_*
wires,