2 sys
.path
.append("../src")
3 sys
.path
.append("../../TestUtil")
5 from nmigen
.compat
.sim
import run_simulation
9 from test_helper
import assert_eq
, assert_ne
11 def set_cam(dut
, c
, a
, k
, d
):
13 yield dut
.command
.eq(c
)
14 yield dut
.address
.eq(a
)
15 yield dut
.key_in
.eq(k
)
16 yield dut
.data_in
.eq(d
)
18 yield dut
.command
.eq(0)
19 yield dut
.address
.eq(0)
20 yield dut
.key_in
.eq(0)
21 yield dut
.data_in
.eq(0)
24 def check_data_hit(dut
, dh
, op
):
25 out_dh
= yield dut
.data_hit
27 assert_eq("Data Hit", out_dh
, dh
)
29 assert_ne("Data Hit", out_dh
, dh
)
31 def check_data(dut
, d
, op
):
32 out_d
= yield dut
.data_out
34 assert_eq("Data", out_d
, d
)
36 assert_ne("Data", out_d
, d
)
38 def check_all(dut
, data_hit
, data
, dh_op
, d_op
):
39 yield from check_data_hit(dut
, data_hit
, dh_op
)
40 yield from check_data(dut
, data
, d_op
)
50 yield from set_cam(dut
, command
, address
, key
, data
)
51 #yield from check_data_hit(dut, data_hit, 0)
59 yield from set_cam(dut
, command
, address
, key
, data
)
60 #yield from check_data_hit(dut, data_hit, 0)
68 yield from set_cam(dut
, command
, address
, key
, data
)
69 #yield from check_data_hit(dut, data_hit, 0)
77 yield from set_cam(dut
, command
, address
, key
, data
)
78 #yield from check_all(dut, data_hit, data, 0, 0)
86 yield from set_cam(dut
, command
, address
, key
, data
)
87 #yield from check_all(dut, data_hit, data, 0, 0)
92 if __name__
== "__main__":
94 run_simulation(dut
, testbench(dut
), vcd_name
="Waveforms/cam_test.vcd")
95 print("Cam Unit Test Success")