From 59574804ba2898fd2afe2512c93c6c474d5aceb2 Mon Sep 17 00:00:00 2001 From: Lenny Truong Date: Wed, 1 Jun 2022 15:21:06 -0700 Subject: [PATCH] Call expect_sequences_finished by default --- fault/ready_valid.py | 7 ++++++- tests/test_ready_valid.py | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/fault/ready_valid.py b/fault/ready_valid.py index d2ede5a7..74f3fc1f 100644 --- a/fault/ready_valid.py +++ b/fault/ready_valid.py @@ -110,15 +110,20 @@ def __init__(self, ckt: m.DefineCircuitKind, sequences: Mapping, *args, **kwargs): self.wrapped = wrap_with_sequence(ckt, sequences) super().__init__(self.wrapped, *args, **kwargs) + self._sequence_finish_expected = False def finish_sequences(self, timeout=1000): self.wait_until_high(self.wrapped._fault_rv_tester_done_, timeout=timeout) def expect_sequences_finished(self): - self.expect(self.wrapped._fault_rv_tester_done_, 1) + self.expect(self.wrapped._fault_rv_tester_done_, 1, + msg="ERROR: ReadyValidTester sequences not finished") + self._sequence_finish_expected = True def compile_and_run(self, target, *args, **kwargs): if target == "verilator": kwargs = _add_verilator_assert_flag(kwargs) + if not self._sequence_finish_expected: + self.expect_sequences_finished() super().compile_and_run(*args, **kwargs) diff --git a/tests/test_ready_valid.py b/tests/test_ready_valid.py index 86b8e035..604200b7 100644 --- a/tests/test_ready_valid.py +++ b/tests/test_ready_valid.py @@ -91,3 +91,14 @@ def test_lifted_ready_valid_sequence_changing_inc(): tester.advance_cycle() tester.expect_sequences_finished() tester.compile_and_run("verilator", disp_type="realtime") + + +def test_default_expect_finished(): + if verilator_version() < 4.0: + pytest.skip("Untested with earlier verilator versions") + I = [BitVector.random(8) for _ in range(8)] + [0] + O = [0] + [i + 2 for i in I[:-1]] + tester = f.ReadyValidTester(Main2, {"I": I, "O": O}) + tester.circuit.inc = 2 + with pytest.raises(AssertionError): + tester.compile_and_run("verilator", disp_type="realtime")