def test_action_strs(): circ = common.TestBasicClkCircuit assert str(Poke(circ.I, 1)) == 'Poke(BasicClkCircuit.I, 1)' assert str(Expect(circ.O, 1)) == 'Expect(BasicClkCircuit.O, 1)' assert str(Eval()) == 'Eval()' assert str(Step(circ.CLK, 1)) == 'Step(BasicClkCircuit.CLK, steps=1)' assert str(Print(circ.O, "%08x")) == 'Print(BasicClkCircuit.O, "%08x")' assert str(Peek(circ.O)) == 'Peek(BasicClkCircuit.O)' index = f"__fault_loop_var_action_0" assert str(Loop(12, index, [Peek(circ.O), Poke(circ.I, 1)])) == \ f'Loop(12, {index}, ' \ f'[Peek(BasicClkCircuit.O), Poke(BasicClkCircuit.I, 1)])' file = File("my_file", Tester(circ), "r", 1) assert str(FileOpen(file)) == 'FileOpen(File<"my_file">)' assert str(FileRead(file)) == 'FileRead(File<"my_file">)' assert str(FileWrite(file, 3)) == 'FileWrite(File<"my_file">, 3)' assert str(FileClose(file)) == 'FileClose(File<"my_file">)'
def test_action_strs(): circ = common.TestBasicClkCircuit assert str(Poke(circ.I, 1)) == 'Poke(BasicClkCircuit.I, 1)' assert str(Expect(circ.O, 1)) == 'Expect(BasicClkCircuit.O, 1)' assert str(Eval()) == 'Eval()' assert str(Step(circ.CLK, 1)) == 'Step(BasicClkCircuit.CLK, steps=1)' assert str(Print(circ.O, "%08x")) == 'Print(BasicClkCircuit.O, "%08x")' assert str(Peek(circ.O)) == 'Peek(BasicClkCircuit.O)'
def test_target_peek(target, simulator): circ = TestPeekCircuit actions = [] for i in range(3): x = random_bv(3) actions.append(Poke(circ.I, x)) actions.append(Eval()) actions.append(Expect(circ.O0, Peek(circ.O1))) run(circ, actions, target, simulator)
def test_verilator_peeks(): circ = common.TestBasicCircuit actions = [Poke(circ.I, 1), Expect(circ.O, Peek(circ.O))] flags = ["-Wno-lint"] with tempfile.TemporaryDirectory() as tempdir: m.compile(f"{tempdir}/{circ.name}", circ, output="coreir-verilog") target = fault.verilator_target.VerilatorTarget( circ, directory=f"{tempdir}/", flags=flags, skip_compile=True) target.run(actions)
def test_magma_simulator_target_peek(backend): circ = common.TestPeekCircuit actions = [] for i in range(3): x = random_bv(3) actions.append(Poke(circ.I, x)) actions.append(Eval()) actions.append(Expect(circ.O0, Peek(circ.O1))) run(circ, actions, None, backend)
def test_tester_clock(target, simulator): circ = TestPeekCircuit tester = fault.Tester(circ) tester.poke(circ.I, 0) tester.expect(circ.O0, tester.peek(circ.O1)) check(tester.actions[0], Poke(circ.I, 0)) check(tester.actions[1], Expect(circ.O0, Peek(circ.O1))) with tempfile.TemporaryDirectory(dir=".") as _dir: if target == "verilator": tester.compile_and_run(target, directory=_dir, flags=["-Wno-fatal"]) else: tester.compile_and_run(target, directory=_dir, simulator=simulator)
def test_tester_peek_input(target, simulator): circ = TestBasicCircuit tester = fault.Tester(circ) tester.poke(circ.I, 1) tester.eval() tester.expect(circ.O, tester.peek(circ.I)) check(tester.actions[0], Poke(circ.I, 1)) check(tester.actions[1], Eval()) check(tester.actions[2], Expect(circ.O, Peek(circ.I))) with tempfile.TemporaryDirectory(dir=".") as _dir: if target == "verilator": tester.compile_and_run(target, directory=_dir, flags=["-Wno-fatal"]) else: tester.compile_and_run(target, directory=_dir, simulator=simulator, magma_opts={"sv": True})