mirror of
https://github.com/YosysHQ/sby.git
synced 2025-08-25 22:26:07 +00:00
sby: core: fixed the setup script generation and ensured the model for the setup was implemented
This commit is contained in:
parent
19061bc422
commit
b53bcf8c11
1 changed files with 33 additions and 10 deletions
|
@ -548,25 +548,29 @@ class SbyConfig:
|
||||||
|
|
||||||
def gen_setup_script(self):
|
def gen_setup_script(self):
|
||||||
script = '# Autogenerated by SBY stage setup\n'
|
script = '# Autogenerated by SBY stage setup\n'
|
||||||
script += 'select *'
|
script += 'read_ilang design.il\n'
|
||||||
|
script += 'select *\n'
|
||||||
|
|
||||||
def cutpoint(v):
|
def cutpoint(v):
|
||||||
return f"cutpoint {v}"
|
return f"cutpoint {v}\n"
|
||||||
|
|
||||||
def disable(v):
|
def disable(v):
|
||||||
return f"select -del {v}"
|
return f"select -del {v}\n"
|
||||||
|
|
||||||
def enable(v):
|
def enable(v):
|
||||||
return f"select -add {v}"
|
return f"select -add {v}\n"
|
||||||
|
|
||||||
def assume(v):
|
def assume(v):
|
||||||
return f"chformal -assert2assume {v}"
|
return f"chformal -assert2assume {v}\n"
|
||||||
|
|
||||||
def define(v):
|
def define(v):
|
||||||
return f"select -set {v}"
|
defines = str()
|
||||||
|
for defn in v:
|
||||||
|
defines += f"select -set {v}\n"
|
||||||
|
return defines
|
||||||
|
|
||||||
def invoke(v):
|
def invoke(v):
|
||||||
return f"{v}"
|
return f"{v}\n"
|
||||||
|
|
||||||
for k, v in self.setup.items():
|
for k, v in self.setup.items():
|
||||||
script += {
|
script += {
|
||||||
|
@ -576,11 +580,12 @@ class SbyConfig:
|
||||||
'assume': assume(v),
|
'assume': assume(v),
|
||||||
'define': define(v),
|
'define': define(v),
|
||||||
'invoke': invoke(v)
|
'invoke': invoke(v)
|
||||||
}.get(k, '') + '\n'
|
}.get(k, '')
|
||||||
|
|
||||||
script += 'select -set _setup %\n'
|
script += 'select -set _setup %\n'
|
||||||
script += 'select @_setup %n\n'
|
script += 'select @_setup %n\n'
|
||||||
script += 'chformal -assert -remove %\n'
|
script += 'chformal -assert -remove %\n'
|
||||||
|
script += 'write_ilang design_setup.il\n'
|
||||||
return script
|
return script
|
||||||
|
|
||||||
|
|
||||||
|
@ -1015,8 +1020,13 @@ class SbyTask(SbyConfig):
|
||||||
os.makedirs(f"{self.workdir}/model")
|
os.makedirs(f"{self.workdir}/model")
|
||||||
|
|
||||||
if model_name == "prep":
|
if model_name == "prep":
|
||||||
|
has_setup = len(self.setup) > 0
|
||||||
|
|
||||||
with open(f"""{self.workdir}/model/design_prep.ys""", "w") as f:
|
with open(f"""{self.workdir}/model/design_prep.ys""", "w") as f:
|
||||||
print(f"# running in {self.workdir}/model/", file=f)
|
print(f"# running in {self.workdir}/model/", file=f)
|
||||||
|
if has_setup:
|
||||||
|
print(f"""read_ilang design_setup.il""", file=f)
|
||||||
|
else:
|
||||||
print(f"""read_ilang design.il""", file=f)
|
print(f"""read_ilang design.il""", file=f)
|
||||||
print("scc -select; simplemap; select -clear", file=f)
|
print("scc -select; simplemap; select -clear", file=f)
|
||||||
print("memory_nordff", file=f)
|
print("memory_nordff", file=f)
|
||||||
|
@ -1045,7 +1055,7 @@ class SbyTask(SbyConfig):
|
||||||
proc = SbyProc(
|
proc = SbyProc(
|
||||||
self,
|
self,
|
||||||
model_name,
|
model_name,
|
||||||
self.model("base"),
|
self.model("setup" if has_setup else "base"),
|
||||||
"cd {}/model; {} -ql design_{s}.log design_{s}.ys".format(self.workdir, self.exe_paths["yosys"], s=model_name)
|
"cd {}/model; {} -ql design_{s}.log design_{s}.ys".format(self.workdir, self.exe_paths["yosys"], s=model_name)
|
||||||
)
|
)
|
||||||
proc.checkretcode = True
|
proc.checkretcode = True
|
||||||
|
@ -1195,6 +1205,19 @@ class SbyTask(SbyConfig):
|
||||||
|
|
||||||
return [proc]
|
return [proc]
|
||||||
|
|
||||||
|
if model_name == "setup":
|
||||||
|
with open(f"{self.workdir}/model/design_setup.ys", "w") as f:
|
||||||
|
f.write(self.gen_setup_script())
|
||||||
|
|
||||||
|
proc = SbyProc(
|
||||||
|
self,
|
||||||
|
"setup",
|
||||||
|
self.model("base"),
|
||||||
|
f"""cd {self.workdir}/model; {self.exe_paths["yosys"]} -ql design_setup.log design_setup.ys"""
|
||||||
|
)
|
||||||
|
|
||||||
|
return [proc]
|
||||||
|
|
||||||
self.error(f"Invalid model name: {model_name}")
|
self.error(f"Invalid model name: {model_name}")
|
||||||
|
|
||||||
def model(self, model_name):
|
def model(self, model_name):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue