From: Cole Poirier Date: Wed, 12 Aug 2020 18:55:20 +0000 (-0700) Subject: mmu.py add skeleton sim and test functions from regfile/regfile.py X-Git-Tag: semi_working_ecp5~383 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1b78bc88e26f4fbf87faf3321fc5da582c857d34;p=soc.git mmu.py add skeleton sim and test functions from regfile/regfile.py --- diff --git a/src/soc/experiment/mmu.py b/src/soc/experiment/mmu.py index f0b15bc3..9b36c17a 100644 --- a/src/soc/experiment/mmu.py +++ b/src/soc/experiment/mmu.py @@ -1152,3 +1152,51 @@ class MMU1(Elaboratable): # end process; # end; + + +def mmu_sim(): + yield wp.waddr.eq(1) + yield wp.data_i.eq(2) + yield wp.wen.eq(1) + yield + yield wp.wen.eq(0) + yield rp.ren.eq(1) + yield rp.raddr.eq(1) + yield Settle() + data = yield rp.data_o + print(data) + assert data == 2 + yield + + yield wp.waddr.eq(5) + yield rp.raddr.eq(5) + yield rp.ren.eq(1) + yield wp.wen.eq(1) + yield wp.data_i.eq(6) + yield Settle() + data = yield rp.data_o + print(data) + assert data == 6 + yield + yield wp.wen.eq(0) + yield rp.ren.eq(0) + yield Settle() + data = yield rp.data_o + print(data) + assert data == 0 + yield + data = yield rp.data_o + print(data) + +def test_mmu(): + dut = MMU() + rp = dut.read_port() + wp = dut.write_port() + vl = rtlil.convert(dut, ports=dut.ports()) + with open("test_mmu.il", "w") as f: + f.write(vl) + + run_simulation(dut, mmu_sim(), vcd_name='test_mmu.vcd') + +if __name__ == '__main__': + test_mmu()