2015-01-16 15:01:06 -05:00
|
|
|
import sys
|
|
|
|
from tools import *
|
2015-03-01 05:07:28 -05:00
|
|
|
from test_bist import *
|
2015-02-18 10:53:02 -05:00
|
|
|
from litescope.host.driver.la import LiteScopeLADriver
|
2015-01-16 15:01:06 -05:00
|
|
|
|
2015-04-13 09:12:39 -04:00
|
|
|
|
2015-03-01 05:07:28 -05:00
|
|
|
def main(wb):
|
2015-04-13 08:55:26 -04:00
|
|
|
la = LiteScopeLADriver(wb.regs, "la")
|
|
|
|
identify = LiteSATABISTIdentifyDriver(wb.regs, "sata_bist")
|
|
|
|
generator = LiteSATABISTGeneratorDriver(wb.regs, "sata_bist")
|
|
|
|
checker = LiteSATABISTCheckerDriver(wb.regs, "sata_bist")
|
|
|
|
wb.open()
|
|
|
|
regs = wb.regs
|
2015-04-13 09:55:22 -04:00
|
|
|
# # #
|
2015-04-13 08:55:26 -04:00
|
|
|
trig = "now"
|
|
|
|
if len(sys.argv) < 2:
|
|
|
|
print("No trigger condition, triggering immediately!")
|
|
|
|
else:
|
|
|
|
trig = sys.argv[1]
|
2015-01-16 15:01:06 -05:00
|
|
|
|
2015-04-13 08:55:26 -04:00
|
|
|
conditions = {}
|
|
|
|
conditions["now"] = {}
|
|
|
|
conditions["id_cmd"] = {
|
2015-04-13 09:25:40 -04:00
|
|
|
"sata_command_tx_sink_stb": 1,
|
|
|
|
"sata_command_tx_sink_payload_identify": 1,
|
2015-04-13 08:55:26 -04:00
|
|
|
}
|
|
|
|
conditions["id_resp"] = {
|
2015-04-13 09:25:40 -04:00
|
|
|
"source_source_payload_data": primitives["X_RDY"],
|
2015-04-13 08:55:26 -04:00
|
|
|
}
|
|
|
|
conditions["wr_cmd"] = {
|
2015-04-13 09:25:40 -04:00
|
|
|
"sata_command_tx_sink_stb": 1,
|
|
|
|
"sata_command_tx_sink_payload_write": 1,
|
2015-04-13 08:55:26 -04:00
|
|
|
}
|
|
|
|
conditions["wr_resp"] = {
|
2015-04-13 09:25:40 -04:00
|
|
|
"sata_command_rx_source_stb": 1,
|
|
|
|
"sata_command_rx_source_payload_write": 1,
|
2015-04-13 08:55:26 -04:00
|
|
|
}
|
|
|
|
conditions["rd_cmd"] = {
|
2015-04-13 09:25:40 -04:00
|
|
|
"sata_command_tx_sink_stb": 1,
|
|
|
|
"sata_command_tx_sink_payload_read": 1,
|
2015-04-13 08:55:26 -04:00
|
|
|
}
|
|
|
|
conditions["rd_resp"] = {
|
2015-04-13 09:25:40 -04:00
|
|
|
"sata_command_rx_source_stb": 1,
|
|
|
|
"sata_command_rx_source_payload_read": 1,
|
2015-04-13 08:55:26 -04:00
|
|
|
}
|
2015-01-16 15:01:06 -05:00
|
|
|
|
2015-04-13 08:55:26 -04:00
|
|
|
la.configure_term(port=0, cond=conditions[trig])
|
|
|
|
la.configure_sum("term")
|
2015-01-16 15:01:06 -05:00
|
|
|
|
2015-04-13 08:55:26 -04:00
|
|
|
# Run Logic Analyzer
|
|
|
|
la.run(offset=64, length=1024)
|
2015-01-16 15:01:06 -05:00
|
|
|
|
2015-04-13 08:55:26 -04:00
|
|
|
#identify.run(blocking=False)
|
|
|
|
generator.run(0, 2, 1, 0, blocking=False)
|
|
|
|
#checker.run(0, 2, 1, 0, blocking=False)
|
2015-01-16 15:01:06 -05:00
|
|
|
|
2015-04-13 08:55:26 -04:00
|
|
|
while not la.done():
|
|
|
|
pass
|
2015-01-25 10:21:56 -05:00
|
|
|
|
2015-04-13 08:55:26 -04:00
|
|
|
la.upload()
|
|
|
|
la.save("dump.vcd")
|
2015-04-13 09:55:22 -04:00
|
|
|
# # #
|
2015-04-13 08:55:26 -04:00
|
|
|
wb.close()
|
2015-01-16 15:01:06 -05:00
|
|
|
|
2015-04-13 08:55:26 -04:00
|
|
|
f = open("dump_link.txt", "w")
|
|
|
|
data = link_trace(la,
|
|
|
|
tx_data_name="sink_sink_payload_data",
|
|
|
|
rx_data_name="source_source_payload_data"
|
|
|
|
)
|
|
|
|
f.write(data)
|
|
|
|
f.close()
|