testcase framework

This commit is contained in:
Alex Mykyta
2021-11-21 19:00:47 -08:00
parent d3c876a491
commit f70bdf774c
69 changed files with 1730 additions and 403 deletions

View File

View File

@@ -0,0 +1,10 @@
addrmap top #(
longint N_REGS = 1,
longint REGWIDTH = 32
) {
reg reg_t {
regwidth = REGWIDTH;
field {sw=rw; hw=na;} f[REGWIDTH] = 1;
};
reg_t regs[N_REGS];
};

View File

@@ -0,0 +1,31 @@
{% extends "lib/templates/tb_base.sv" %}
{%- block declarations %}
localparam REGWIDTH = {{cls.regwidth}};
localparam STRIDE = REGWIDTH/8;
localparam N_REGS = {{cls.n_regs}};
{%- endblock %}
{% block seq %}
bit [REGWIDTH-1:0] data[N_REGS];
##1;
cb.rst <= '0;
##1;
foreach(data[i]) data[i] = {$urandom(), $urandom(), $urandom(), $urandom()};
for(int i=0; i<N_REGS; i++) begin
cpuif.assert_read(i*STRIDE, 'h1);
end
for(int i=0; i<N_REGS; i++) begin
cpuif.write(i*STRIDE, data[i]);
end
for(int i=0; i<N_REGS; i++) begin
cpuif.assert_read(i*STRIDE, data[i]);
end
assert($bits(dut.cpuif_wr_data) == REGWIDTH);
{% endblock %}

View File

@@ -0,0 +1,37 @@
from parameterized import parameterized_class
from ..lib.regblock_testcase import RegblockTestCase
from ..lib.test_params import get_permutations
PARAMS = get_permutations({
"regwidth" : [8, 16, 32, 64],
})
@parameterized_class(PARAMS)
class TestFanin(RegblockTestCase):
retime_read_fanin = False
n_regs = 20
regwidth = 32
@classmethod
def setUpClass(cls):
cls.rdl_elab_params = {
"N_REGS": cls.n_regs,
"REGWIDTH": cls.regwidth,
}
super().setUpClass()
def test_dut(self):
self.run_test()
PARAMS = get_permutations({
"n_regs" : [1, 4, 7, 9, 11],
"regwidth" : [8, 16, 32, 64],
})
@parameterized_class(PARAMS)
class TestRetimedFanin(TestFanin):
retime_read_fanin = True
def test_dut(self):
self.run_test()