X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=debug%2Ftargets.py;h=e92b5932c00ff453542d8165bc136a06763b34d7;hb=4590b79bc7241f3fa2424f96b4c6666a864fb6a9;hp=d09b5764edf51e7c2b922f6c70bf0ad8c83a42e5;hpb=fcd0e956339560021e2a16a143697b8123f227d6;p=riscv-tests.git diff --git a/debug/targets.py b/debug/targets.py index d09b576..e92b593 100644 --- a/debug/targets.py +++ b/debug/targets.py @@ -60,7 +60,7 @@ class Target(object): # Timeout waiting for the server to start up. This is different than the # GDB timeout, which is how long GDB waits for commands to execute. - # The server_timeout is how long this script waits for the Server to be + # The server_timeout is how long this script waits for the server to be # ready for GDB connections. server_timeout_sec = 60 @@ -96,6 +96,8 @@ class Target(object): self.openocd_config_path) for i, hart in enumerate(self.harts): hart.index = i + if not hasattr(hart, 'id'): + hart.id = i if not hart.name: hart.name = "%s-%d" % (self.name, i) # Default link script to .lds @@ -111,7 +113,8 @@ class Target(object): def server(self): """Start the debug server that gdb connects to, eg. OpenOCD.""" return testlib.Openocd(server_cmd=self.server_cmd, - config=self.openocd_config_path) + config=self.openocd_config_path, + timeout=self.server_timeout_sec) def compile(self, hart, *sources): binary_name = "%s_%s-%d" % ( @@ -170,12 +173,17 @@ def target(parsed): found = [] for name in dir(module): definition = getattr(module, name) - if type(definition) == type and issubclass(definition, Target): + if isinstance(definition, type) and issubclass(definition, Target): found.append(definition) assert len(found) == 1, "%s does not define exactly one subclass of " \ "targets.Target" % parsed.target t = found[0](parsed.target, parsed) assert t.harts, "%s doesn't have any harts defined!" % t.name + for h in t.harts : + if (h.xlen == 0): + h.xlen = parsed.xlen + elif (h.xlen != parsed.xlen): + raise Exception("The target has an XLEN of %d, but the command line specified an XLEN of %d. They must match." % (h.xlen, parsed.xlen)) return t