def test_tester_basic(target, simulator): circ = TestBasicCircuit tester = fault.Tester(circ) tester.zero_inputs() check(tester.actions[0], Poke(circ.I, 0)) tester.poke(circ.I, 1) tester.eval() tester.expect(circ.O, 1) tester.print("%08x", circ.O) check(tester.actions[1], Poke(circ.I, 1)) check(tester.actions[2], Eval()) check(tester.actions[3], Expect(circ.O, 1)) print(tester.actions[4]) print(Print("%08x", circ.O)) check(tester.actions[4], Print("%08x", circ.O)) tester.eval() check(tester.actions[5], Eval()) tester.poke(circ.I, 0) tester.eval() tester.expect(circ.O, 0) tester.poke(circ.I, True) tester.eval() tester.expect(circ.O, True) tester.poke(circ.I, False) tester.eval() tester.expect(circ.O, False) tester.poke(circ.I, False) tester.eval() tester.expect(circ.O, False) tester.poke(circ.I, hwtypes.Bit(1)) tester.eval() tester.expect(circ.O, hwtypes.Bit(1)) tester.poke(circ.I, hwtypes.Bit(0)) tester.eval() tester.expect(circ.O, hwtypes.Bit(0)) 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}) tester.compile_and_run("coreir") tester.clear() assert tester.actions == []
def simulate(self, value_store, state_store): I0 = ht.Bit(value_store.get_value(self.I0)) I1 = ht.Bit(value_store.get_value(self.I1)) #O = python_op(I0, I1).as_bool_list()[0] O = int(python_op(I0, I1)) value_store.set_value(self.O, O)
def simulate_bit_not(self, value_store, state_store): _in = ht.Bit(value_store.get_value(self.I)) #O = (~_in).as_bool_list()[0] O = ~_in value_store.set_value(self.O, bool(O))