49 satır
1.0 KiB
Python
Executable File
49 satır
1.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
from migen import *
|
|
from hp_dma import *
|
|
|
|
def test(dut):
|
|
yield from dut.addr_base.write(0x12340)
|
|
yield from dut.n_bursts.write(3)
|
|
|
|
for _ in range(5):
|
|
yield
|
|
|
|
yield dut.bus.ar.ready.eq(1)
|
|
yield
|
|
|
|
yield from dut.trigger.write(1)
|
|
|
|
|
|
def deliver_read_word(w, last=False):
|
|
yield dut.bus.r.data.eq(w)
|
|
yield dut.bus.r.valid.eq(1)
|
|
if last:
|
|
yield dut.bus.r.last.eq(1)
|
|
for _ in range(100):
|
|
yield
|
|
if (yield dut.bus.r.ready):
|
|
yield dut.bus.r.valid.eq(0)
|
|
yield dut.bus.r.last.eq(0)
|
|
break
|
|
|
|
yield
|
|
N=(yield dut.bus.ar.len)+1
|
|
|
|
for _ in range( (yield dut.n_bursts.storage)+1 ):
|
|
for i in range(N):
|
|
yield from deliver_read_word(2*i | (2*i+1)<<32, last=i==N-1)
|
|
|
|
for _ in range(5):
|
|
yield
|
|
|
|
for _ in range(10):
|
|
yield
|
|
|
|
|
|
if __name__ == "__main__":
|
|
dut = HP_DMA_READ()
|
|
|
|
run_simulation(dut, test(dut), vcd_name="test.vcd", clocks={"sys": 8})
|