-
Notifications
You must be signed in to change notification settings - Fork 0
/
conftest.py
59 lines (44 loc) · 2.34 KB
/
conftest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#=========================================================================
# conftest.py
#=========================================================================
# SPDX-License-Identifier: MIT
# Author : Christopher Batten, NVIDIA
# Date : May 20, 2024
import pytest
#-------------------------------------------------------------------------
# pytest Command Line Options
#-------------------------------------------------------------------------
def pytest_addoption(parser):
parser.addoption( "--verilog", action="store", default=None,
help="Verilog file name to test" )
parser.addoption( "--pymtl", action="store", default=None,
help="PyMTL file name to test" )
parser.addoption( "--pyrtl", action="store", default=None,
help="PyRTL file name to test" )
parser.addoption( "--myhdl", action="store", default=None,
help="MyHDL file name to test" )
parser.addoption( "--migen", action="store", default=None,
help="Migen file name to test" )
parser.addoption( "--amaranth", action="store", default=None,
help="Amaranth file name to test" )
#-------------------------------------------------------------------------
# Assertion Rewriting
#-------------------------------------------------------------------------
# Enable assertion rewriting in our pyhdl_eval test harness
pytest.register_assert_rewrite("pyhdl_eval.core")
#-------------------------------------------------------------------------
# multi_reset
#-------------------------------------------------------------------------
# PyRTL can only reset a module at the very beginning of the simulation,
# but some of our tests reset a module multiple times during a simulat.
# We need to mark these tests and skip them when using PyRTL.
def pytest_configure(config):
config.addinivalue_line(
"markers", "multi_reset: mark test with multiple resets in single simulation" )
def pytest_collection_modifyitems(config, items):
if config.getoption("pyrtl"):
skip_multi_reset = pytest.mark.skip(
reason="PyRTL cannot handle multiple resets in single simulation" )
for item in items:
if "multi_reset" in item.keywords:
item.add_marker(skip_multi_reset)