From f1768ee50b3a77a11e10cba4d443c3c9161de36e Mon Sep 17 00:00:00 2001 From: Noah Boorstin Date: Tue, 2 Feb 2021 06:06:03 +0000 Subject: [PATCH] Busybear: start checking CSRs scounteren and mcounteren are currenly manually deleted from the CSRs list (see slack channl #linux-bringup) and 3 of the CSRs referenced are skipped because of weird locations for them oh and this doesn't check their initial state, just their changing. This could be a problem --- .../testbench/testbench-busybear.sv | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/wally-pipelined/testbench/testbench-busybear.sv b/wally-pipelined/testbench/testbench-busybear.sv index 6d741fbdd..920a20443 100644 --- a/wally-pipelined/testbench/testbench-busybear.sv +++ b/wally-pipelined/testbench/testbench-busybear.sv @@ -162,21 +162,33 @@ module testbench_busybear(); end end - string CSRname; - logic [63:0] expectedCSR; - //CSR checking - always @(dut.priv.MTVEC_REGW) begin - if ($time != 1) begin - scan_file_csr = $fscanf(data_file_csr, "%s\n", CSRname); - scan_file_csr = $fscanf(data_file_csr, "%x\n", expectedCSR); - if(CSRname != "mtvec") begin - $display("%t ps, instr %0d: MTVEC changed, expected %s", $time, instrs, CSRname); - end - if(dut.priv.MTVEC_REGW != expectedCSR) begin - $display("%t ps, instr %0d: %s does not equal %s expected: %x, %x", $time, instrs, CSRname, CSRname, dut.priv.MTVEC_REGW, expectedCSR); - end - end - end + `define CHECK_CSR(CSR) \ + string CSR; \ + logic [63:0] expected``CSR``; \ + //CSR checking \ + always @(dut.priv.csr.``CSR``_REGW) begin \ + if ($time > 1) begin \ + scan_file_csr = $fscanf(data_file_csr, "%s\n", CSR); \ + scan_file_csr = $fscanf(data_file_csr, "%x\n", expected``CSR``); \ + if(CSR.icompare(`"CSR`")) begin \ + $display("%t ps, instr %0d: %s changed, expected %s", $time, instrs, `"CSR`", CSR); \ + end \ + if(dut.priv.csr.``CSR``_REGW != ``expected``CSR) begin \ + $display("%t ps, instr %0d: %s does not equal %s expected: %x, %x", $time, instrs, CSR, CSR, dut.priv.csr.``CSR``_REGW, ``expected``CSR); \ + end \ + end \ + end + + //`CHECK_CSR(FCSR) + `CHECK_CSR(MCOUNTEREN) + `CHECK_CSR(MEDELEG) + `CHECK_CSR(MIDELEG) + `CHECK_CSR(MIE) + //`CHECK_CSR(MSCRATCH) + `CHECK_CSR(MSTATUS) + `CHECK_CSR(MTVEC) + //`CHECK_CSR(SATP) + `CHECK_CSR(SCOUNTEREN) logic speculative; initial begin