begin experimental ariane mmu.sv conversion
[soc.git] / TLB / src / ariane / test_tlb.py
index 87cb3216fd0e219e9f2e05afc6966dc25ae4b97b..bebca7f06b7131a369a8de339ed30061a30488a8 100644 (file)
@@ -2,15 +2,17 @@ from nmigen.compat.sim import run_simulation
 
 from tlb import TLB
 
+def set_vaddr(addr):
+    yield dut.lu_vaddr_i.eq(addr)
+    yield dut.update_i.vpn.eq(addr>>12)
+
 
 def testbench(dut):
     yield dut.lu_access_i.eq(1)
     yield dut.lu_asid_i.eq(1)
-    yield dut.lu_vaddr_i.eq(0x80000)
     yield dut.update_i.valid.eq(1)
     yield dut.update_i.is_1G.eq(0)
     yield dut.update_i.is_2M.eq(0)
-    yield dut.update_i.vpn.eq(0x80000)
     yield dut.update_i.asid.eq(1)
     yield dut.update_i.content.ppn.eq(0)
     yield dut.update_i.content.rsw.eq(0)
@@ -18,21 +20,43 @@ def testbench(dut):
 
     yield
 
-    yield dut.lu_vaddr_i.eq(0x80000)
-    yield dut.update_i.vpn.eq(0x80000)
+    addr = 0x80000
+    yield from set_vaddr(addr)
+    yield
+
+    addr = 0x90001
+    yield from set_vaddr(addr)
     yield
 
-    yield dut.lu_vaddr_i.eq(0x280000)
-    yield dut.update_i.vpn.eq(0x280000)
+    addr = 0x28000000
+    yield from set_vaddr(addr)
     yield
 
-    yield dut.lu_vaddr_i.eq(0x040000)
-    yield dut.update_i.vpn.eq(0x040000)
+    addr = 0x28000001
+    yield from set_vaddr(addr)
+
+    addr = 0x28000001
+    yield from set_vaddr(addr)
+    yield
+
+    addr = 0x1000040000
+    yield from set_vaddr(addr)
+    yield
+
+    addr = 0x1000040001
+    yield from set_vaddr(addr)
+    yield
+
+    yield dut.update_i.is_1G.eq(1)
+    addr = 0x2040000
+    yield from set_vaddr(addr)
     yield
 
     yield dut.update_i.is_1G.eq(1)
-    yield dut.lu_vaddr_i.eq(0x2040000)
-    yield dut.update_i.vpn.eq(0x02040000)
+    addr = 0x2040001
+    yield from set_vaddr(addr)
+    yield
+
     yield