Enable Vivado's xsim to run on some simpler testcases for better compile-check coverage. #7
This commit is contained in:
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user