From 1c20b3c522c1be54a0ad33f7d8d32fa031fe03f6 Mon Sep 17 00:00:00 2001 From: Paul Genssler Date: Wed, 10 May 2023 09:24:50 +0200 Subject: [PATCH] Added a setting for additional command line arguments passed to each Cadence tool --- hammer/formal/conformal/__init__.py | 6 ++++-- hammer/formal/conformal/defaults.yml | 2 ++ hammer/par/innovus/__init__.py | 2 +- hammer/par/innovus/defaults.yml | 3 +++ hammer/power/joules/__init__.py | 2 +- hammer/power/joules/defaults.yml | 3 +++ hammer/power/voltus/__init__.py | 3 ++- hammer/power/voltus/defaults.yml | 3 +++ hammer/synthesis/genus/__init__.py | 2 +- hammer/synthesis/genus/defaults.yml | 3 +++ hammer/timing/tempus/__init__.py | 2 +- hammer/timing/tempus/defaults.yml | 3 +++ 12 files changed, 27 insertions(+), 7 deletions(-) diff --git a/hammer/formal/conformal/__init__.py b/hammer/formal/conformal/__init__.py index 8ca00db6a..a7443598b 100644 --- a/hammer/formal/conformal/__init__.py +++ b/hammer/formal/conformal/__init__.py @@ -32,8 +32,10 @@ def env_vars(self) -> Dict[str, str]: @property def start_cmd(self) -> List[str]: """ Generate required startup command based on the requested check and license level """ - lec_bin = self.get_setting("formal.conformal.conformal_lec_bin") - ccd_bin = self.get_setting("formal.conformal.conformal_ccd_bin") + lec_bin = self.get_setting("formal.conformal.conformal_lec_bin") + \ + self.get_setting("formal.conformal.conformal_lec_bin_args") + ccd_bin = self.get_setting("formal.conformal.conformal_ccd_bin") + \ + self.get_setting("formal.conformal.conformal_ccd_bin_args") license = self.get_setting("formal.conformal.license") cmd = ["", ""] if not license in ["L", "XL", "GXL"]: diff --git a/hammer/formal/conformal/defaults.yml b/hammer/formal/conformal/defaults.yml index 486655439..ec11ebfc9 100644 --- a/hammer/formal/conformal/defaults.yml +++ b/hammer/formal/conformal/defaults.yml @@ -5,8 +5,10 @@ formal.conformal: # Location of the binary conformal_lec_bin: "${cadence.cadence_home}/CONFRML/CONFRML${formal.conformal.version}/bin/lec" conformal_lec_bin_meta: lazysubst # we want later overrides to be able to affect this + conformal_lec_args: [] # Additional command line arguments passed to Conformal conformal_ccd_bin: "${cadence.cadence_home}/CONFRML/CONFRML${formal.conformal.version}/bin/ccd" conformal_ccd_bin_meta: lazysubst # we want later overrides to be able to affect this + conformal_ccd_args: [] # Additional command line arguments passed to Conformal # Conformal version to use # Used to locate the binary - e.g. the '212' in ${cadence.cadence_home}/CONFRML/CONFRML212/bin/lec diff --git a/hammer/par/innovus/__init__.py b/hammer/par/innovus/__init__.py index 21365e014..69b6dd1f9 100644 --- a/hammer/par/innovus/__init__.py +++ b/hammer/par/innovus/__init__.py @@ -837,7 +837,7 @@ def run_innovus(self) -> bool: "-nowin", # Prevent the GUI popping up. "-common_ui", "-files", par_tcl_filename - ] + ] + self.get_setting("par.innovus.innovus_bin_args") # Temporarily disable colours/tag to make run output more readable. # TODO: think of a more elegant way to do this? diff --git a/hammer/par/innovus/defaults.yml b/hammer/par/innovus/defaults.yml index 5ab660c51..9ee906993 100644 --- a/hammer/par/innovus/defaults.yml +++ b/hammer/par/innovus/defaults.yml @@ -6,6 +6,9 @@ par.innovus: innovus_bin: "${cadence.cadence_home}/INNOVUS/INNOVUS${par.innovus.version}/bin/innovus" innovus_bin_meta: lazysubst # we want later overrides to be able to affect this + # Additional command line arguments passed to Innovus + innovus_bin_args: [] + # Innovus version to use. # Used to locate the binary - e.g. the '171' in ${cadence.cadence_home}/INNOVUS/INNOVUS171/bin/innovus # 171_ISR3 supports ILMs properly in contrast to 171. diff --git a/hammer/power/joules/__init__.py b/hammer/power/joules/__init__.py index 908e8c0d6..01ad33c1a 100644 --- a/hammer/power/joules/__init__.py +++ b/hammer/power/joules/__init__.py @@ -239,7 +239,7 @@ def run_joules(self) -> bool: self.get_setting("power.joules.joules_bin"), "-files", joules_tcl_filename, "-common_ui" - ] + ] + self.get_setting("power.joules.joules_bin_args") HammerVLSILogging.enable_colour = False HammerVLSILogging.enable_tag = False diff --git a/hammer/power/joules/defaults.yml b/hammer/power/joules/defaults.yml index 1d0d3c34a..8bd5beb83 100644 --- a/hammer/power/joules/defaults.yml +++ b/hammer/power/joules/defaults.yml @@ -6,6 +6,9 @@ power.joules: joules_bin: "${cadence.cadence_home}/JLS/JLS${power.joules.version}/bin/joules" joules_bin_meta: lazysubst # we want later overrides to be able to affect this + # Additional command line arguments passed to Joules + joules_bin_args: [] + # Joules version to use. # Used to locate the binary - e.g. the '201' in ${cadence.cadence_home}/JLS/JLS201/bin/joules version: "201" diff --git a/hammer/power/voltus/__init__.py b/hammer/power/voltus/__init__.py index 9ebc2f96a..98fa5586b 100644 --- a/hammer/power/voltus/__init__.py +++ b/hammer/power/voltus/__init__.py @@ -730,8 +730,9 @@ def run_voltus(self) -> bool: self.get_setting("power.voltus.voltus_bin"), "-no_gui", "-common_ui", - "-init" ] + base_args.extend(self.get_setting("power.voltus.voltus_bin_args")) + base_args.append("-init") HammerVLSILogging.enable_colour = False HammerVLSILogging.enable_tag = False diff --git a/hammer/power/voltus/defaults.yml b/hammer/power/voltus/defaults.yml index b1b211cf6..b0dddc9c2 100644 --- a/hammer/power/voltus/defaults.yml +++ b/hammer/power/voltus/defaults.yml @@ -6,6 +6,9 @@ power.voltus: voltus_bin: "${cadence.cadence_home}/SSV/SSV${power.voltus.version}/bin/voltus" voltus_bin_meta: lazysubst # we want later overrides to be able to affect this + # Additional command line arguments passed to Voltus + voltus_bin_args: [] + # Voltus version to use. # Used to locate the binary - e.g. the '181' in ${cadence.cadence_home}/VOLTUS/VOLTUS181/bin/voltus version: "211" diff --git a/hammer/synthesis/genus/__init__.py b/hammer/synthesis/genus/__init__.py index 6d5a10ed1..5857ffa4e 100644 --- a/hammer/synthesis/genus/__init__.py +++ b/hammer/synthesis/genus/__init__.py @@ -383,7 +383,7 @@ def run_genus(self) -> bool: self.get_setting("synthesis.genus.genus_bin"), "-f", syn_tcl_filename, "-no_gui" - ] + ] + self.get_setting("synthesis.genus.genus_bin_args") if bool(self.get_setting("synthesis.genus.generate_only")): self.logger.info("Generate-only mode: command-line is " + " ".join(args)) diff --git a/hammer/synthesis/genus/defaults.yml b/hammer/synthesis/genus/defaults.yml index 710bda9f6..72c9ad3f9 100644 --- a/hammer/synthesis/genus/defaults.yml +++ b/hammer/synthesis/genus/defaults.yml @@ -4,6 +4,9 @@ synthesis.genus: genus_bin: "${cadence.cadence_home}/GENUS/GENUS${synthesis.genus.version}/bin/genus" genus_bin_meta: lazysubst # we want later overrides to be able to affect this + # Additional command line arguments passed to Genus + genus_bin_args: [] + # Genus version to use. # Used to locate the binary - e.g. the '171' in ${cadence.cadence_home}/GENUS/GENUS171/bin/genus version: "171" diff --git a/hammer/timing/tempus/__init__.py b/hammer/timing/tempus/__init__.py index 2d32b4f67..da10c2147 100644 --- a/hammer/timing/tempus/__init__.py +++ b/hammer/timing/tempus/__init__.py @@ -255,7 +255,7 @@ def run_tempus(self) -> bool: "-no_gui", # no GUI "-stylus", # common UI "-files", timing_script - ] + ] + self.get_setting("timing.tempus.tempus_bin_args") # Temporarily disable colours/tag to make run output more readable. # TODO: think of a more elegant way to do this? diff --git a/hammer/timing/tempus/defaults.yml b/hammer/timing/tempus/defaults.yml index 2425bf282..458c16baf 100644 --- a/hammer/timing/tempus/defaults.yml +++ b/hammer/timing/tempus/defaults.yml @@ -6,6 +6,9 @@ timing.tempus: tempus_bin: "${cadence.cadence_home}/SSV/SSV${timing.tempus.version}/bin/tempus" tempus_bin_meta: lazysubst # we want later overrides to be able to affect this + # Additional command line arguments passed to Tempus + tempus_bin_args: [] + # Tempus version to use # Used to locate the binary - e.g. the '211_ISR3' in ${cadence.cadence_home}/SSV/SSV211_ISR3/bin/tempus version: "211_ISR3"