From ff10aeebd68a1906703cc4a63b70ca0f30474c0d Mon Sep 17 00:00:00 2001 From: Krystine Sherwin <93062060+KrystalDelusion@users.noreply.github.com> Date: Mon, 18 Mar 2024 11:33:18 +1300 Subject: [PATCH] Fix some synth_* help messages Mostly memory_libmap arg checks; puts the checks into an else block on the `if (help_mode)` check to avoid cases like `synth_ice40` listing `-no-auto-huge [-no-auto-huge]`. Also fix `map_iopad` section being empty in `synth_fabulous`. --- techlibs/anlogic/synth_anlogic.cc | 10 ++++++---- techlibs/ecp5/synth_ecp5.cc | 10 ++++++---- techlibs/efinix/synth_efinix.cc | 10 +++++++--- techlibs/fabulous/synth_fabulous.cc | 4 ++-- techlibs/gowin/synth_gowin.cc | 10 ++++++---- techlibs/ice40/synth_ice40.cc | 10 ++++++---- techlibs/lattice/synth_lattice.cc | 10 ++++++---- techlibs/nexus/synth_nexus.cc | 10 ++++++---- 8 files changed, 45 insertions(+), 29 deletions(-) diff --git a/techlibs/anlogic/synth_anlogic.cc b/techlibs/anlogic/synth_anlogic.cc index a3c1e0434f2..c72e7f2a183 100644 --- a/techlibs/anlogic/synth_anlogic.cc +++ b/techlibs/anlogic/synth_anlogic.cc @@ -169,12 +169,14 @@ struct SynthAnlogicPass : public ScriptPass if (check_label("map_ram")) { std::string args = ""; - if (nobram) - args += " -no-auto-block"; - if (nolutram) - args += " -no-auto-distributed"; if (help_mode) args += " [-no-auto-block] [-no-auto-distributed]"; + else { + if (nobram) + args += " -no-auto-block"; + if (nolutram) + args += " -no-auto-distributed"; + } run("memory_libmap -lib +/anlogic/lutrams.txt -lib +/anlogic/brams.txt" + args, "(-no-auto-block if -nobram, -no-auto-distributed if -nolutram)"); run("techmap -map +/anlogic/lutrams_map.v -map +/anlogic/brams_map.v"); } diff --git a/techlibs/ecp5/synth_ecp5.cc b/techlibs/ecp5/synth_ecp5.cc index f6215987f7f..6e518f5d183 100644 --- a/techlibs/ecp5/synth_ecp5.cc +++ b/techlibs/ecp5/synth_ecp5.cc @@ -308,12 +308,14 @@ struct SynthEcp5Pass : public ScriptPass if (check_label("map_ram")) { std::string args = ""; - if (nobram) - args += " -no-auto-block"; - if (nolutram) - args += " -no-auto-distributed"; if (help_mode) args += " [-no-auto-block] [-no-auto-distributed]"; + else { + if (nobram) + args += " -no-auto-block"; + if (nolutram) + args += " -no-auto-distributed"; + } run("memory_libmap -lib +/ecp5/lutrams.txt -lib +/ecp5/brams.txt" + args, "(-no-auto-block if -nobram, -no-auto-distributed if -nolutram)"); run("techmap -map +/ecp5/lutrams_map.v -map +/ecp5/brams_map.v"); } diff --git a/techlibs/efinix/synth_efinix.cc b/techlibs/efinix/synth_efinix.cc index bbc38944488..419bc2f884c 100644 --- a/techlibs/efinix/synth_efinix.cc +++ b/techlibs/efinix/synth_efinix.cc @@ -161,9 +161,13 @@ struct SynthEfinixPass : public ScriptPass if (check_label("map_ram")) { std::string args = ""; - if (nobram) - args += " -no-auto-block"; - run("memory_libmap -lib +/efinix/brams.txt" + args); + if (help_mode) + args += " [-no-auto-block]"; + else { + if (nobram) + args += " -no-auto-block"; + } + run("memory_libmap -lib +/efinix/brams.txt" + args, "(-no-auto-block if -nobram)"); run("techmap -map +/efinix/brams_map.v"); } diff --git a/techlibs/fabulous/synth_fabulous.cc b/techlibs/fabulous/synth_fabulous.cc index b4a7ab2dc6f..8d2fb1471a9 100644 --- a/techlibs/fabulous/synth_fabulous.cc +++ b/techlibs/fabulous/synth_fabulous.cc @@ -320,7 +320,7 @@ struct SynthPass : public ScriptPass run("opt_clean"); } - if (check_label("map_ram")) { + if (check_label("map_ram", "(unless -noregfile)")) { // RegFile extraction if (!noregfile) { run("memory_libmap -lib +/fabulous/ram_regfile.txt"); @@ -342,7 +342,7 @@ struct SynthPass : public ScriptPass } if (check_label("map_iopad", "(if -iopad)")) { - if (iopad) { + if (iopad || help_mode) { run("opt -full"); run("iopadmap -bits -outpad $__FABULOUS_OBUF I:PAD -inpad $__FABULOUS_IBUF O:PAD " "-toutpad IO_1_bidirectional_frame_config_pass ~T:I:PAD " diff --git a/techlibs/gowin/synth_gowin.cc b/techlibs/gowin/synth_gowin.cc index 85022c1cfa2..48b7563b1ec 100644 --- a/techlibs/gowin/synth_gowin.cc +++ b/techlibs/gowin/synth_gowin.cc @@ -230,12 +230,14 @@ struct SynthGowinPass : public ScriptPass if (check_label("map_ram")) { std::string args = ""; - if (nobram) - args += " -no-auto-block"; - if (nolutram) - args += " -no-auto-distributed"; if (help_mode) args += " [-no-auto-block] [-no-auto-distributed]"; + else { + if (nobram) + args += " -no-auto-block"; + if (nolutram) + args += " -no-auto-distributed"; + } run("memory_libmap -lib +/gowin/lutrams.txt -lib +/gowin/brams.txt" + args, "(-no-auto-block if -nobram, -no-auto-distributed if -nolutram)"); run("techmap -map +/gowin/lutrams_map.v -map +/gowin/brams_map.v"); } diff --git a/techlibs/ice40/synth_ice40.cc b/techlibs/ice40/synth_ice40.cc index 4c691c7a5aa..81832389269 100644 --- a/techlibs/ice40/synth_ice40.cc +++ b/techlibs/ice40/synth_ice40.cc @@ -353,12 +353,14 @@ struct SynthIce40Pass : public ScriptPass if (check_label("map_ram")) { std::string args = ""; - if (!spram) - args += " -no-auto-huge"; - if (nobram) - args += " -no-auto-block"; if (help_mode) args += " [-no-auto-huge] [-no-auto-block]"; + else { + if (!spram) + args += " -no-auto-huge"; + if (nobram) + args += " -no-auto-block"; + } run("memory_libmap -lib +/ice40/brams.txt -lib +/ice40/spram.txt" + args, "(-no-auto-huge unless -spram, -no-auto-block if -nobram)"); run("techmap -map +/ice40/brams_map.v -map +/ice40/spram_map.v"); run("ice40_braminit"); diff --git a/techlibs/lattice/synth_lattice.cc b/techlibs/lattice/synth_lattice.cc index cc5821ad832..16a068b0741 100644 --- a/techlibs/lattice/synth_lattice.cc +++ b/techlibs/lattice/synth_lattice.cc @@ -373,12 +373,14 @@ struct SynthLatticePass : public ScriptPass if (check_label("map_ram")) { std::string args = ""; - if (nobram) - args += " -no-auto-block"; - if (nolutram) - args += " -no-auto-distributed"; if (help_mode) args += " [-no-auto-block] [-no-auto-distributed]"; + else { + if (nobram) + args += " -no-auto-block"; + if (nolutram) + args += " -no-auto-distributed"; + } run("memory_libmap -lib +/lattice/lutrams.txt -lib +/lattice/brams" + brams_map + ".txt" + args, "(-no-auto-block if -nobram, -no-auto-distributed if -nolutram)"); run("techmap -map +/lattice/lutrams_map.v -map +/lattice/brams_map" + brams_map + ".v"); } diff --git a/techlibs/nexus/synth_nexus.cc b/techlibs/nexus/synth_nexus.cc index 6fd15ba5577..2935fbd3bca 100644 --- a/techlibs/nexus/synth_nexus.cc +++ b/techlibs/nexus/synth_nexus.cc @@ -300,12 +300,14 @@ struct SynthNexusPass : public ScriptPass { std::string args = ""; args += " -no-auto-huge"; - if (nobram) - args += " -no-auto-block"; - if (nolutram) - args += " -no-auto-distributed"; if (help_mode) args += " [-no-auto-block] [-no-auto-distributed]"; + else { + if (nobram) + args += " -no-auto-block"; + if (nolutram) + args += " -no-auto-distributed"; + } run("memory_libmap -lib +/nexus/lutrams.txt -lib +/nexus/brams.txt -lib +/nexus/lrams.txt" + args, "(-no-auto-block if -nobram, -no-auto-distributed if -nolutram)"); run("techmap -map +/nexus/lutrams_map.v -map +/nexus/brams_map.v -map +/nexus/lrams_map.v"); }