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