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
18 yield dut
.req_port_i
.data_gnt
.eq(1)
19 yield dut
.req_port_i
.data_rvalid
.eq(1)
20 yield dut
.req_port_i
.data_rdata
.eq(0x43)#pte.flatten())
23 yield dut
.en_ld_st_translation_i
.eq(1)
24 yield dut
.asid_i
.eq(1)
26 yield dut
.dtlb_access_i
.eq(1)
27 yield dut
.dtlb_hit_i
.eq(0)
28 yield dut
.dtlb_vaddr_i
.eq(0x400000000)
34 yield dut
.dtlb_access_i
.eq(1)
35 yield dut
.dtlb_hit_i
.eq(0)
36 yield dut
.dtlb_vaddr_i
.eq(0x200000)
42 yield dut
.req_port_i
.data_gnt
.eq(0)
43 yield dut
.dtlb_access_i
.eq(1)
44 yield dut
.dtlb_hit_i
.eq(0)
45 yield dut
.dtlb_vaddr_i
.eq(0x400000011)
48 yield dut
.req_port_i
.data_gnt
.eq(1)
52 # data lookup, PTW levels 1-2-3
54 yield dut
.dtlb_vaddr_i
.eq(addr
)
55 yield dut
.mxr_i
.eq(0x1)
56 yield dut
.req_port_i
.data_gnt
.eq(1)
57 yield dut
.req_port_i
.data_rvalid
.eq(1)
58 yield dut
.req_port_i
.data_rdata
.eq(0x41 |
(addr
>>12)<<10)#pte.flatten())
60 yield dut
.en_ld_st_translation_i
.eq(1)
61 yield dut
.asid_i
.eq(1)
63 yield dut
.dtlb_access_i
.eq(1)
64 yield dut
.dtlb_hit_i
.eq(0)
65 yield dut
.dtlb_vaddr_i
.eq(addr
)
76 yield dut
.req_port_i
.data_gnt
.eq(0)
77 yield dut
.dtlb_access_i
.eq(1)
78 yield dut
.dtlb_hit_i
.eq(0)
79 yield dut
.dtlb_vaddr_i
.eq(0x400000011)
82 yield dut
.req_port_i
.data_gnt
.eq(1)
90 yield dut
.en_ld_st_translation_i
.eq(0)
91 yield dut
.enable_translation_i
.eq(1)
92 yield dut
.asid_i
.eq(1)
94 yield dut
.itlb_access_i
.eq(1)
95 yield dut
.itlb_hit_i
.eq(0)
96 yield dut
.itlb_vaddr_i
.eq(0x800000)
102 yield dut
.itlb_access_i
.eq(1)
103 yield dut
.itlb_hit_i
.eq(0)
104 yield dut
.itlb_vaddr_i
.eq(0x200000)
110 yield dut
.req_port_i
.data_gnt
.eq(0)
111 yield dut
.itlb_access_i
.eq(1)
112 yield dut
.itlb_hit_i
.eq(0)
113 yield dut
.itlb_vaddr_i
.eq(0x800011)
116 yield dut
.req_port_i
.data_gnt
.eq(1)
124 if __name__
== "__main__":
126 run_simulation(dut
, testbench(dut
), vcd_name
="test_ptw.vcd")
127 print("PTW Unit Test Success")