Skip to content

Commit c0995ee

Browse files
committed
sby: core: fixed the setup script generation and ensured the model for the setup was implemented
1 parent e234435 commit c0995ee

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

sbysrc/sby_core.py

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -532,25 +532,29 @@ def error(self, logmessage):
532532

533533
def gen_setup_script(self):
534534
script = '# Autogenerated by SBY stage setup\n'
535-
script += 'select *'
535+
script += 'read_ilang design.il\n'
536+
script += 'select *\n'
536537

537538
def cutpoint(v):
538-
return f"cutpoint {v}"
539+
return f"cutpoint {v}\n"
539540

540541
def disable(v):
541-
return f"select -del {v}"
542+
return f"select -del {v}\n"
542543

543544
def enable(v):
544-
return f"select -add {v}"
545+
return f"select -add {v}\n"
545546

546547
def assume(v):
547-
return f"chformal -assert2assume {v}"
548+
return f"chformal -assert2assume {v}\n"
548549

549550
def define(v):
550-
return f"select -set {v}"
551+
defines = str()
552+
for defn in v:
553+
defines += f"select -set {v}\n"
554+
return defines
551555

552556
def invoke(v):
553-
return f"{v}"
557+
return f"{v}\n"
554558

555559
for k, v in self.setup.items():
556560
script += {
@@ -560,11 +564,12 @@ def invoke(v):
560564
'assume': assume(v),
561565
'define': define(v),
562566
'invoke': invoke(v)
563-
}.get(k, '') + '\n'
567+
}.get(k, '')
564568

565569
script += 'select -set _setup %\n'
566570
script += 'select @_setup %n\n'
567571
script += 'chformal -assert -remove %\n'
572+
script += 'write_ilang design_setup.il\n'
568573
return script
569574

570575

@@ -796,9 +801,14 @@ def make_model(self, model_name):
796801
os.makedirs(f"{self.workdir}/model")
797802

798803
if model_name == "prep":
804+
has_setup = len(self.setup) > 0
805+
799806
with open(f"""{self.workdir}/model/design_prep.ys""", "w") as f:
800807
print(f"# running in {self.workdir}/model/", file=f)
801-
print(f"""read_ilang design.il""", file=f)
808+
if has_setup:
809+
print(f"""read_ilang design_setup.il""", file=f)
810+
else:
811+
print(f"""read_ilang design.il""", file=f)
802812
print("scc -select; simplemap; select -clear", file=f)
803813
print("memory_nordff", file=f)
804814
if self.opt_multiclock:
@@ -826,7 +836,7 @@ def make_model(self, model_name):
826836
proc = SbyProc(
827837
self,
828838
model_name,
829-
self.model("base"),
839+
self.model("setup" if has_setup else "base"),
830840
"cd {}/model; {} -ql design_{s}.log design_{s}.ys".format(self.workdir, self.exe_paths["yosys"], s=model_name)
831841
)
832842
proc.checkretcode = True
@@ -961,6 +971,19 @@ def instance_hierarchy_error_callback(retcode):
961971

962972
return [proc]
963973

974+
if model_name == "setup":
975+
with open(f"{self.workdir}/model/design_setup.ys", "w") as f:
976+
f.write(self.gen_setup_script())
977+
978+
proc = SbyProc(
979+
self,
980+
"setup",
981+
self.model("base"),
982+
f"""cd {self.workdir}/model; {self.exe_paths["yosys"]} -ql design_setup.log design_setup.ys"""
983+
)
984+
985+
return [proc]
986+
964987
self.error(f"Invalid model name: {model_name}")
965988

966989
def model(self, model_name):

0 commit comments

Comments
 (0)