2 sys
.path
.append("../src")
3 sys
.path
.append("../../../TestUtil")
5 from nmigen
.compat
.sim
import run_simulation
7 from TLB
.ariane
.ptw
import PTW
, PTE
9 # unit was changed, test needs to be changed
19 yield dut
.req_port_i
.data_gnt
.eq(1)
20 yield dut
.req_port_i
.data_rvalid
.eq(1)
21 yield dut
.req_port_i
.data_rdata
.eq(0x43)#pte.flatten())
24 yield dut
.en_ld_st_translation_i
.eq(1)
25 yield dut
.asid_i
.eq(1)
27 yield dut
.dtlb_access_i
.eq(1)
28 yield dut
.dtlb_hit_i
.eq(0)
29 yield dut
.dtlb_vaddr_i
.eq(0x400000000)
35 yield dut
.dtlb_access_i
.eq(1)
36 yield dut
.dtlb_hit_i
.eq(0)
37 yield dut
.dtlb_vaddr_i
.eq(0x200000)
43 yield dut
.req_port_i
.data_gnt
.eq(0)
44 yield dut
.dtlb_access_i
.eq(1)
45 yield dut
.dtlb_hit_i
.eq(0)
46 yield dut
.dtlb_vaddr_i
.eq(0x400000011)
49 yield dut
.req_port_i
.data_gnt
.eq(1)
53 # data lookup, PTW levels 1-2-3
55 yield dut
.dtlb_vaddr_i
.eq(addr
)
56 yield dut
.mxr_i
.eq(0x1)
57 yield dut
.req_port_i
.data_gnt
.eq(1)
58 yield dut
.req_port_i
.data_rvalid
.eq(1)
59 yield dut
.req_port_i
.data_rdata
.eq(0x41 |
(addr
>>12)<<10)#pte.flatten())
61 yield dut
.en_ld_st_translation_i
.eq(1)
62 yield dut
.asid_i
.eq(1)
64 yield dut
.dtlb_access_i
.eq(1)
65 yield dut
.dtlb_hit_i
.eq(0)
66 yield dut
.dtlb_vaddr_i
.eq(addr
)
77 yield dut
.req_port_i
.data_gnt
.eq(0)
78 yield dut
.dtlb_access_i
.eq(1)
79 yield dut
.dtlb_hit_i
.eq(0)
80 yield dut
.dtlb_vaddr_i
.eq(0x400000011)
83 yield dut
.req_port_i
.data_gnt
.eq(1)
91 yield dut
.en_ld_st_translation_i
.eq(0)
92 yield dut
.enable_translation_i
.eq(1)
93 yield dut
.asid_i
.eq(1)
95 yield dut
.itlb_access_i
.eq(1)
96 yield dut
.itlb_hit_i
.eq(0)
97 yield dut
.itlb_vaddr_i
.eq(0x800000)
103 yield dut
.itlb_access_i
.eq(1)
104 yield dut
.itlb_hit_i
.eq(0)
105 yield dut
.itlb_vaddr_i
.eq(0x200000)
111 yield dut
.req_port_i
.data_gnt
.eq(0)
112 yield dut
.itlb_access_i
.eq(1)
113 yield dut
.itlb_hit_i
.eq(0)
114 yield dut
.itlb_vaddr_i
.eq(0x800011)
117 yield dut
.req_port_i
.data_gnt
.eq(1)
126 run_simulation(dut
, tbench(dut
), vcd_name
="test_ptw.vcd")
127 print("PTW Unit Test Success")
129 if __name__
== "__main__":