From d7affb8821b343277c6760b1bbaf774c74dd0dd0 Mon Sep 17 00:00:00 2001 From: "Emil J. Tywoniak" Date: Mon, 5 May 2025 13:12:08 +0200 Subject: [PATCH] driver: add --no-version to suppress writing Yosys version in command outputs --- backends/aiger/aiger.cc | 4 ++-- backends/aiger/xaiger.cc | 3 ++- backends/blif/blif.cc | 3 ++- backends/edif/edif.cc | 4 +++- backends/json/json.cc | 3 ++- backends/rtlil/rtlil_backend.cc | 4 +++- backends/smt2/smtio.py | 1 + backends/verilog/verilog_backend.cc | 4 +++- kernel/driver.cc | 2 ++ kernel/yosys.cc | 1 + kernel/yosys_common.h | 1 + passes/cmds/internal_stats.cc | 3 ++- passes/cmds/stat.cc | 3 ++- passes/sat/sat.cc | 8 +++++--- 14 files changed, 31 insertions(+), 13 deletions(-) diff --git a/backends/aiger/aiger.cc b/backends/aiger/aiger.cc index f2cb5d9bc..2b10f7082 100644 --- a/backends/aiger/aiger.cc +++ b/backends/aiger/aiger.cc @@ -662,8 +662,8 @@ struct AigerWriter f << std::endl; } } - - f << stringf("c\nGenerated by %s\n", yosys_version_str); + if (yosys_write_versions) + f << stringf("c\nGenerated by %s\n", yosys_version_str); } void write_map(std::ostream &f, bool verbose_map, bool no_startoffset) diff --git a/backends/aiger/xaiger.cc b/backends/aiger/xaiger.cc index baf504ba2..200ae1a3b 100644 --- a/backends/aiger/xaiger.cc +++ b/backends/aiger/xaiger.cc @@ -671,7 +671,8 @@ struct XAigerWriter //f.write(reinterpret_cast(&buffer_size_be), sizeof(buffer_size_be)); //f.write(buffer_str.data(), buffer_str.size()); - f << stringf("Generated by %s\n", yosys_version_str); + if (yosys_write_versions) + f << stringf("Generated by %s\n", yosys_version_str); design->scratchpad_set_int("write_xaiger.num_ands", and_map.size()); design->scratchpad_set_int("write_xaiger.num_wires", aig_map.size()); diff --git a/backends/blif/blif.cc b/backends/blif/blif.cc index 049a3c680..01507c115 100644 --- a/backends/blif/blif.cc +++ b/backends/blif/blif.cc @@ -649,7 +649,8 @@ struct BlifBackend : public Backend { if (module->get_bool_attribute(ID::top)) top_module_name = module->name.str(); - *f << stringf("# Generated by %s\n", yosys_version_str); + if (yosys_write_versions) + *f << stringf("# Generated by %s\n", yosys_version_str); std::vector mod_list; diff --git a/backends/edif/edif.cc b/backends/edif/edif.cc index d751a5996..1b67d0b4d 100644 --- a/backends/edif/edif.cc +++ b/backends/edif/edif.cc @@ -231,7 +231,9 @@ struct EdifBackend : public Backend { *f << stringf(" (edifVersion 2 0 0)\n"); *f << stringf(" (edifLevel 0)\n"); *f << stringf(" (keywordMap (keywordLevel 0))\n"); - *f << stringf(" (comment \"Generated by %s\")\n", yosys_version_str); + + if (yosys_write_versions) + *f << stringf(" (comment \"Generated by %s\")\n", yosys_version_str); *f << stringf(" (external LIB\n"); *f << stringf(" (edifLevel 0)\n"); diff --git a/backends/json/json.cc b/backends/json/json.cc index 749fe1fc3..7108f5f77 100644 --- a/backends/json/json.cc +++ b/backends/json/json.cc @@ -291,7 +291,8 @@ struct JsonWriter design->sort(); f << stringf("{\n"); - f << stringf(" \"creator\": %s,\n", get_string(yosys_version_str).c_str()); + if (yosys_write_versions) + f << stringf(" \"creator\": %s,\n", get_string(yosys_version_str).c_str()); f << stringf(" \"modules\": {\n"); vector modules = use_selection ? design->selected_modules() : design->modules(); bool first_module = true; diff --git a/backends/rtlil/rtlil_backend.cc b/backends/rtlil/rtlil_backend.cc index ae60ee6c7..7a657d9e5 100644 --- a/backends/rtlil/rtlil_backend.cc +++ b/backends/rtlil/rtlil_backend.cc @@ -459,7 +459,9 @@ struct RTLILBackend : public Backend { design->sort(); log("Output filename: %s\n", filename.c_str()); - *f << stringf("# Generated by %s\n", yosys_version_str); + + if (yosys_write_versions) + *f << stringf("# Generated by %s\n", yosys_version_str); RTLIL_BACKEND::dump_design(*f, design, selected, true, false); } } RTLILBackend; diff --git a/backends/smt2/smtio.py b/backends/smt2/smtio.py index 2bc7daddc..ab25eee72 100644 --- a/backends/smt2/smtio.py +++ b/backends/smt2/smtio.py @@ -1289,6 +1289,7 @@ class MkVcd: assert t >= self.t if t != self.t: if self.t == -1: + # TODO if (yosys_write_versions) equivalent? print("$version Generated by Yosys-SMTBMC $end", file=self.f) print("$timescale 1ns $end", file=self.f) print("$var integer 32 t smt_step $end", file=self.f) diff --git a/backends/verilog/verilog_backend.cc b/backends/verilog/verilog_backend.cc index 2bc6ff3b8..98a8cc30d 100644 --- a/backends/verilog/verilog_backend.cc +++ b/backends/verilog/verilog_backend.cc @@ -2596,7 +2596,9 @@ struct VerilogBackend : public Backend { design->sort(); - *f << stringf("/* Generated by %s */\n", yosys_version_str); + if (yosys_write_versions) + *f << stringf("/* Generated by %s */\n", yosys_version_str); + for (auto module : design->modules()) { if (module->get_blackbox_attribute() != blackboxes) continue; diff --git a/kernel/driver.cc b/kernel/driver.cc index b7f0268db..e3a4cfa3e 100644 --- a/kernel/driver.cc +++ b/kernel/driver.cc @@ -252,6 +252,7 @@ int main(int argc, char **argv) options.add_options("logging") ("Q", "suppress printing of banner (copyright, disclaimer, version)") ("T", "suppress printing of footer (log hash, version, timing statistics)") + ("no-version", "suppress writing Yosys version in command outputs") ("q,quiet", "quiet operation. Only write warnings and error messages to console. " \ "Use this option twice to also quiet warning messages") ("v,verbose", "print log headers up to to the console. " \ @@ -318,6 +319,7 @@ int main(int argc, char **argv) if (result.count("A")) call_abort = true; if (result.count("Q")) print_banner = false; if (result.count("T")) print_stats = false; + if (result.count("no-version")) yosys_write_versions = false; if (result.count("V")) { std::cout << yosys_version_str << std::endl; exit(0); diff --git a/kernel/yosys.cc b/kernel/yosys.cc index 9b0bc92ce..5b89fc9b1 100644 --- a/kernel/yosys.cc +++ b/kernel/yosys.cc @@ -81,6 +81,7 @@ YOSYS_NAMESPACE_BEGIN int autoidx = 1; int yosys_xtrace = 0; +bool yosys_write_versions = true; RTLIL::Design *yosys_design = NULL; CellTypes yosys_celltypes; diff --git a/kernel/yosys_common.h b/kernel/yosys_common.h index 6fadf788f..16215fb76 100644 --- a/kernel/yosys_common.h +++ b/kernel/yosys_common.h @@ -274,6 +274,7 @@ inline int GetSize(RTLIL::Wire *wire); extern int autoidx; extern int yosys_xtrace; +extern bool yosys_write_versions; RTLIL::IdString new_id(std::string file, int line, std::string func); RTLIL::IdString new_id_suffix(std::string file, int line, std::string func, std::string suffix); diff --git a/passes/cmds/internal_stats.cc b/passes/cmds/internal_stats.cc index cc35dcc5f..bdf556e81 100644 --- a/passes/cmds/internal_stats.cc +++ b/passes/cmds/internal_stats.cc @@ -99,7 +99,8 @@ struct InternalStatsPass : public Pass { if (json_mode) { log("{\n"); - log(" \"creator\": %s,\n", json11::Json(yosys_version_str).dump().c_str()); + if (yosys_write_versions) + log(" \"creator\": %s,\n", json11::Json(yosys_version_str).dump().c_str()); std::stringstream invocation; std::copy(args.begin(), args.end(), std::ostream_iterator(invocation, " ")); log(" \"invocation\": %s,\n", json11::Json(invocation.str()).dump().c_str()); diff --git a/passes/cmds/stat.cc b/passes/cmds/stat.cc index 63926c6e7..4c1331d35 100644 --- a/passes/cmds/stat.cc +++ b/passes/cmds/stat.cc @@ -444,7 +444,8 @@ struct StatPass : public Pass { if (json_mode) { log("{\n"); - log(" \"creator\": %s,\n", json11::Json(yosys_version_str).dump().c_str()); + if (yosys_write_versions) + log(" \"creator\": %s,\n", json11::Json(yosys_version_str).dump().c_str()); std::stringstream invocation; std::copy(args.begin(), args.end(), std::ostream_iterator(invocation, " ")); log(" \"invocation\": %s,\n", json11::Json(invocation.str()).dump().c_str()); diff --git a/passes/sat/sat.cc b/passes/sat/sat.cc index 53f009e40..46cc00981 100644 --- a/passes/sat/sat.cc +++ b/passes/sat/sat.cc @@ -690,9 +690,11 @@ struct SatHelper fprintf(f, "$date\n"); fprintf(f, " %s\n", stime); fprintf(f, "$end\n"); - fprintf(f, "$version\n"); - fprintf(f, " Generated by %s\n", yosys_version_str); - fprintf(f, "$end\n"); + if (yosys_write_versions) { + fprintf(f, "$version\n"); + fprintf(f, " Generated by %s\n", yosys_version_str); + fprintf(f, "$end\n"); + } fprintf(f, "$comment\n"); fprintf(f, " Generated from SAT problem in module %s (declared at %s)\n", module->name.c_str(), module_fname.c_str());