add test_read / test_write (HOST<-->HDD transfers OK for the 3 tests, rx data seems to be stuck in link of command layer)

This commit is contained in:
Florent Kermarrec 2014-12-20 16:25:05 +01:00
parent eebc2abcda
commit c17159754c
4 changed files with 89 additions and 2 deletions

View File

@ -146,6 +146,8 @@ class SATACommandRX(Module):
If(test_type("DMA_ACTIVATE_D2H"), If(test_type("DMA_ACTIVATE_D2H"),
dma_activate.eq(1), dma_activate.eq(1),
NextState("WAIT_WRITE_REG_D2H") NextState("WAIT_WRITE_REG_D2H")
).Else(
NextState("IDLE") # Generate an error
) )
) )
) )
@ -154,6 +156,8 @@ class SATACommandRX(Module):
If(transport.source.stb, If(transport.source.stb,
If(test_type("REG_D2H"), If(test_type("REG_D2H"),
NextState("PRESENT_WRITE_RESPONSE") NextState("PRESENT_WRITE_RESPONSE")
).Else(
NextState("IDLE") # Generate an error
) )
) )
) )
@ -171,6 +175,8 @@ class SATACommandRX(Module):
transport.source.ack.eq(0), transport.source.ack.eq(0),
If(test_type("DATA"), If(test_type("DATA"),
NextState("PRESENT_READ_DATA") NextState("PRESENT_READ_DATA")
).Else(
NextState("IDLE") # Generate an error
) )
) )
) )
@ -189,6 +195,8 @@ class SATACommandRX(Module):
If(transport.source.stb, If(transport.source.stb,
If(test_type("REG_D2H"), If(test_type("REG_D2H"),
NextState("PRESENT_READ_RESPONSE") NextState("PRESENT_READ_RESPONSE")
).Else(
NextState("IDLE") # Generate an error
) )
) )
) )

View File

@ -7,11 +7,15 @@ mila = MiLaDriver(wb.regs, "mila")
wb.open() wb.open()
regs = wb.regs regs = wb.regs
### ###
#trigger0 = mila.sata_con_sink_payload_identify_o*1
#mask0 = mila.sata_con_sink_payload_identify_m
#trigger0 = mila.sata_phy_source_source_payload_data_o*primitives["R_OK"] #trigger0 = mila.sata_phy_source_source_payload_data_o*primitives["R_OK"]
#mask0 = mila.sata_phy_source_source_payload_data_m #mask0 = mila.sata_phy_source_source_payload_data_m
trigger0 = mila.sata_con_sink_payload_identify_o*1 trigger0 = mila.sata_phy_source_source_payload_data_o*primitives["X_RDY"]
mask0 = mila.sata_con_sink_payload_identify_m mask0 = mila.sata_phy_source_source_payload_data_m
mila.prog_term(port=0, trigger=trigger0, mask=mask0) mila.prog_term(port=0, trigger=trigger0, mask=mask0)
mila.prog_sum("term") mila.prog_sum("term")

37
test/test_read.py Normal file
View File

@ -0,0 +1,37 @@
import time
from config import *
from tools import *
from miscope.host.drivers import MiLaDriver
mila = MiLaDriver(wb.regs, "mila")
wb.open()
regs = wb.regs
###
#trigger0 = mila.sata_con_sink_payload_read_o*1
#mask0 = mila.sata_con_sink_payload_read_m
#trigger0 = mila.sata_phy_source_source_payload_data_o*primitives["R_OK"]
#mask0 = mila.sata_phy_source_source_payload_data_m
trigger0 = mila.sata_phy_source_source_payload_data_o*primitives["X_RDY"]
mask0 = mila.sata_phy_source_source_payload_data_m
mila.prog_term(port=0, trigger=trigger0, mask=mask0)
mila.prog_sum("term")
# Trigger / wait / receive
mila.trigger(offset=32, length=512)
regs.command_generator_sector.write(0)
regs.command_generator_count.write(1)
regs.command_generator_read.write(1)
mila.wait_done()
mila.read()
mila.export("dump.vcd")
###
wb.close()
print_link_trace(mila,
tx_data_name="sata_phy_sink_sink_payload_data",
rx_data_name="sata_phy_source_source_payload_data"
)

38
test/test_write.py Normal file
View File

@ -0,0 +1,38 @@
import time
from config import *
from tools import *
from miscope.host.drivers import MiLaDriver
mila = MiLaDriver(wb.regs, "mila")
wb.open()
regs = wb.regs
###
#trigger0 = mila.sata_con_sink_payload_write_o*1
#mask0 = mila.sata_con_sink_payload_write_m
#trigger0 = mila.sata_phy_source_source_payload_data_o*primitives["R_RDY"]
#mask0 = mila.sata_phy_source_source_payload_data_m
trigger0 = mila.sata_phy_source_source_payload_data_o*primitives["R_OK"]
mask0 = mila.sata_phy_source_source_payload_data_m
mila.prog_term(port=0, trigger=trigger0, mask=mask0)
mila.prog_sum("term")
# Trigger / wait / receive
mila.trigger(offset=32, length=512)
regs.command_generator_sector.write(0)
regs.command_generator_count.write(1)
regs.command_generator_data.write(0x12345678)
regs.command_generator_write.write(1)
mila.wait_done()
mila.read()
mila.export("dump.vcd")
###
wb.close()
print_link_trace(mila,
tx_data_name="sata_phy_sink_sink_payload_data",
rx_data_name="sata_phy_source_source_payload_data"
)