artiq_flash/sayma: check for DONE after load

This commit is contained in:
Robert Jördens 2018-06-13 00:47:15 +08:00
parent b90a8fcc82
commit 2de5b0cf25
1 changed files with 11 additions and 0 deletions

View File

@ -114,6 +114,8 @@ class Programmer:
self._loaded = defaultdict(lambda: None) self._loaded = defaultdict(lambda: None)
self._script = ["init"] self._script = ["init"]
add_commands(self._script, "source xilinx-stat.cfg")
def _transfer_script(self, script): def _transfer_script(self, script):
if isinstance(self._client, LocalClient): if isinstance(self._client, LocalClient):
return "[find {}]".format(script) return "[find {}]".format(script)
@ -144,6 +146,13 @@ class Programmer:
"pld load {pld} {{{filename}}}", "pld load {pld} {{{filename}}}",
pld=pld, filename=bitfile) pld=pld, filename=bitfile)
def check_done(self, tap):
add_commands(self._script,
"set stat [xilinx_get_stat {tap}]",
"echo [format {{{tap} stat: 0b%032b}} $stat]",
"if ![expr $stat & 0x1000] {{echo \"not DONE\"; exit 1;}}",
tap=tap)
def load_proxy(self): def load_proxy(self):
raise NotImplementedError raise NotImplementedError
@ -355,8 +364,10 @@ def main():
if args.target == "sayma": if args.target == "sayma":
rtm_gateware_bit = artifact_path("rtm_gateware", "rtm.bit") rtm_gateware_bit = artifact_path("rtm_gateware", "rtm.bit")
programmer.load(rtm_gateware_bit, 0) programmer.load(rtm_gateware_bit, 0)
programmer.check_done("xc7.tap")
gateware_bit = artifact_path(variant, "gateware", "top.bit") gateware_bit = artifact_path(variant, "gateware", "top.bit")
programmer.load(gateware_bit, 1) programmer.load(gateware_bit, 1)
programmer.check_done("xcu.tap")
else: else:
gateware_bit = artifact_path(variant, "gateware", "top.bit") gateware_bit = artifact_path(variant, "gateware", "top.bit")
programmer.load(gateware_bit, 0) programmer.load(gateware_bit, 0)