Enable Vivado's xsim to run on some simpler testcases for better compile-check coverage. #7

This commit is contained in:
Alex Mykyta
2022-05-02 20:22:55 -07:00
parent 19edc135e3
commit a1808298ae
4 changed files with 32 additions and 5 deletions

View File

@@ -53,7 +53,7 @@ jobs:
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v2 uses: actions/setup-python@v2
with: with:
python-version: 3.8 python-version: "3.10"
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -75,7 +75,7 @@ jobs:
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v2 uses: actions/setup-python@v2
with: with:
python-version: 3.8 python-version: "3.10"
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -99,7 +99,7 @@ jobs:
- uses: actions/setup-python@v2 - uses: actions/setup-python@v2
name: Install Python name: Install Python
with: with:
python-version: 3.8 python-version: "3.10"
- name: Build sdist - name: Build sdist
run: python setup.py sdist run: python setup.py sdist

View File

@@ -159,7 +159,7 @@ class FlatStructGenerator(StructGenerator):
super().__init__() super().__init__()
self.typedefs = OrderedDict() # type: OrderedDict[str, _TypedefStruct] self.typedefs = OrderedDict() # type: OrderedDict[str, _TypedefStruct]
def push_struct(self, type_name: str, inst_name: str, array_dimensions: Optional[List[int]] = None) -> None: # type: ignore # pylint: disable=arguments-differ def push_struct(self, type_name: str, inst_name: str, array_dimensions: Optional[List[int]] = None) -> None: # type: ignore # pylint: disable=arguments-renamed
s = _TypedefStruct(type_name, inst_name, array_dimensions) s = _TypedefStruct(type_name, inst_name, array_dimensions)
self._struct_stack.append(s) self._struct_stack.append(s)

View File

@@ -20,6 +20,8 @@ class SimTestCase(BaseTestCase):
simulator_cls = SIM_CLS simulator_cls = SIM_CLS
tb_template_file = "tb_template.sv"
@classmethod @classmethod
def _generate_tb(cls): def _generate_tb(cls):
""" """
@@ -41,7 +43,7 @@ class SimTestCase(BaseTestCase):
} }
# template path needs to be relative to the Jinja loader root # template path needs to be relative to the Jinja loader root
template_path = os.path.join(cls.get_testcase_dir(), "tb_template.sv") template_path = os.path.join(cls.get_testcase_dir(), cls.tb_template_file)
template_path = os.path.relpath(template_path, template_root_path) template_path = os.path.relpath(template_path, template_root_path)
template = jj_env.get_template(template_path) template = jj_env.get_template(template_path)

View File

@@ -1,8 +1,12 @@
import os
from parameterized import parameterized_class from parameterized import parameterized_class
from ..lib.sim_testcase import SimTestCase from ..lib.sim_testcase import SimTestCase
from ..lib.synth_testcase import SynthTestCase from ..lib.synth_testcase import SynthTestCase
from ..lib.test_params import TEST_PARAMS from ..lib.test_params import TEST_PARAMS
from ..lib.simulators.xilinx import Xilinx
import pytest
@parameterized_class(TEST_PARAMS) @parameterized_class(TEST_PARAMS)
class Test(SimTestCase): class Test(SimTestCase):
@@ -13,3 +17,24 @@ class Test(SimTestCase):
class TestSynth(SynthTestCase): class TestSynth(SynthTestCase):
def test_dut(self): def test_dut(self):
self.run_synth() self.run_synth()
@pytest.mark.skipif(os.environ.get("STUB_SIMULATOR", False), reason="user skipped")
@parameterized_class(TEST_PARAMS)
class TestVivado(SimTestCase):
"""
Vivado XSIM's implementation of clocking blocks is broken, which is heavily used
by the testbench infrastructure in most testcases.
Since this group of tests does not rely on writing HWIF values, the bugs in
xsim are avoided.
Run this testcase using xsim to get some cross-simulator coverage.
Goal is to validate the generated RTL doesn't use constructs that offend xsim.
This is skipped in CI stub tests as it doesn't add value
"""
simulator_cls = Xilinx
def test_dut(self):
self.run_test()