begin experimental ariane mmu.sv conversion
[soc.git] / TLB / src / ariane / test_tlb.py
1 from nmigen.compat.sim import run_simulation
2
3 from tlb import TLB
4
5 def set_vaddr(addr):
6 yield dut.lu_vaddr_i.eq(addr)
7 yield dut.update_i.vpn.eq(addr>>12)
8
9
10 def testbench(dut):
11 yield dut.lu_access_i.eq(1)
12 yield dut.lu_asid_i.eq(1)
13 yield dut.update_i.valid.eq(1)
14 yield dut.update_i.is_1G.eq(0)
15 yield dut.update_i.is_2M.eq(0)
16 yield dut.update_i.asid.eq(1)
17 yield dut.update_i.content.ppn.eq(0)
18 yield dut.update_i.content.rsw.eq(0)
19 yield dut.update_i.content.r.eq(1)
20
21 yield
22
23 addr = 0x80000
24 yield from set_vaddr(addr)
25 yield
26
27 addr = 0x90001
28 yield from set_vaddr(addr)
29 yield
30
31 addr = 0x28000000
32 yield from set_vaddr(addr)
33 yield
34
35 addr = 0x28000001
36 yield from set_vaddr(addr)
37
38 addr = 0x28000001
39 yield from set_vaddr(addr)
40 yield
41
42 addr = 0x1000040000
43 yield from set_vaddr(addr)
44 yield
45
46 addr = 0x1000040001
47 yield from set_vaddr(addr)
48 yield
49
50 yield dut.update_i.is_1G.eq(1)
51 addr = 0x2040000
52 yield from set_vaddr(addr)
53 yield
54
55 yield dut.update_i.is_1G.eq(1)
56 addr = 0x2040001
57 yield from set_vaddr(addr)
58 yield
59
60 yield
61
62
63 if __name__ == "__main__":
64 dut = TLB()
65 run_simulation(dut, testbench(dut), vcd_name="test_tlb.vcd")