diff options
Diffstat (limited to 'passes/cmds/show.cc')
-rw-r--r-- | passes/cmds/show.cc | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/passes/cmds/show.cc b/passes/cmds/show.cc index 63da29b94..87504a33f 100644 --- a/passes/cmds/show.cc +++ b/passes/cmds/show.cc @@ -2,11 +2,11 @@ * yosys -- Yosys Open SYnthesis Suite * * Copyright (C) 2012 Clifford Wolf <clifford@clifford.at> - * + * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. - * + * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -41,7 +41,7 @@ struct ShowWorker { CellTypes ct; - std::vector<std::string> dot_escape_store; + vector<shared_str> dot_escape_store; std::map<RTLIL::IdString, int> dot_id2num_store; std::map<RTLIL::IdString, int> autonames; int single_idx_count; @@ -552,7 +552,7 @@ struct ShowWorker continue; if (design->selected_whole_module(module->name)) { if (module->get_bool_attribute("\\blackbox")) { - log("Skipping blackbox module %s.\n", id2cstr(module->name)); + // log("Skipping blackbox module %s.\n", id2cstr(module->name)); continue; } else if (module->cells_.empty() && module->connections().empty() && module->processes.empty()) { @@ -590,6 +590,10 @@ struct ShowPass : public Pass { log(" inputs or outputs. This option can be used multiple times to specify\n"); log(" more than one library.\n"); log("\n"); + log(" note: in most cases it is better to load the library before calling\n"); + log(" show with 'read_verilog -lib <filename>'. it is also possible to\n"); + log(" load liberty files with 'read_liberty -lib <filename>'.\n"); + log("\n"); log(" -prefix <prefix>\n"); log(" generate <prefix>.* instead of ~/.yosys_show.*\n"); log("\n"); @@ -606,7 +610,7 @@ struct ShowPass : public Pass { log(" -colors <seed>\n"); log(" Randomly assign colors to the wires. The integer argument is the seed\n"); log(" for the random number generator. Change the seed value if the colored\n"); - log(" graph still is ambigous. A seed of zero deactivates the coloring.\n"); + log(" graph still is ambiguous. A seed of zero deactivates the coloring.\n"); log("\n"); log(" -colorattr <attribute_name>\n"); log(" Use the specified attribute to assign colors. A unique color is\n"); @@ -616,7 +620,7 @@ struct ShowPass : public Pass { log(" annotate busses with a label indicating the width of the bus.\n"); log("\n"); log(" -signed\n"); - log(" mark ports (A, B) that are declarted as signed (using the [AB]_SIGNED\n"); + log(" mark ports (A, B) that are declared as signed (using the [AB]_SIGNED\n"); log(" cell parameter) with an asterisk next to the port name.\n"); log("\n"); log(" -stretch\n"); @@ -630,7 +634,7 @@ struct ShowPass : public Pass { log(" enumerate objects with internal ($-prefixed) names\n"); log("\n"); log(" -long\n"); - log(" do not abbeviate objects with internal ($-prefixed) names\n"); + log(" do not abbreviate objects with internal ($-prefixed) names\n"); log("\n"); log(" -notitle\n"); log(" do not add the module name as graph title to the dot file\n"); @@ -641,18 +645,26 @@ struct ShowPass : public Pass { log("The generated output files are '~/.yosys_show.dot' and '~/.yosys_show.<format>',\n"); log("unless another prefix is specified using -prefix <prefix>.\n"); log("\n"); + log("Yosys on Windows and YosysJS use different defaults: The output is written\n"); + log("to 'show.dot' in the current directory and new viewer is launched.\n"); + log("\n"); } virtual void execute(std::vector<std::string> args, RTLIL::Design *design) { - log_header("Generating Graphviz representation of design.\n"); + log_header(design, "Generating Graphviz representation of design.\n"); log_push(); std::vector<std::pair<std::string, RTLIL::Selection>> color_selections; std::vector<std::pair<std::string, RTLIL::Selection>> label_selections; +#if defined(EMSCRIPTEN) || defined(_WIN32) + std::string format = "dot"; + std::string prefix = "show"; +#else std::string format; - std::string viewer_exe; std::string prefix = stringf("%s/.yosys_show", getenv("HOME") ? getenv("HOME") : "."); +#endif + std::string viewer_exe; std::vector<std::string> libfiles; std::vector<RTLIL::Design*> libs; uint32_t colorSeed = 0; @@ -661,7 +673,7 @@ struct ShowPass : public Pass { bool flag_stretch = false; bool flag_pause = false; bool flag_enum = false; - bool flag_abbeviate = true; + bool flag_abbreviate = true; bool flag_notitle = false; RTLIL::IdString colorattr; @@ -731,12 +743,12 @@ struct ShowPass : public Pass { } if (arg == "-enum") { flag_enum = true; - flag_abbeviate = false; + flag_abbreviate = false; continue; } if (arg == "-long") { flag_enum = false; - flag_abbeviate = false; + flag_abbreviate = false; continue; } if (arg == "-notitle") { @@ -772,7 +784,7 @@ struct ShowPass : public Pass { } if (libs.size() > 0) - log_header("Continuing show pass.\n"); + log_header(design, "Continuing show pass.\n"); std::string dot_file = stringf("%s.dot", prefix.c_str()); std::string out_file = stringf("%s.%s", prefix.c_str(), format.empty() ? "svg" : format.c_str()); @@ -784,7 +796,7 @@ struct ShowPass : public Pass { delete lib; log_cmd_error("Can't open dot file `%s' for writing.\n", dot_file.c_str()); } - ShowWorker worker(f, design, libs, colorSeed, flag_width, flag_signed, flag_stretch, flag_enum, flag_abbeviate, flag_notitle, color_selections, label_selections, colorattr); + ShowWorker worker(f, design, libs, colorSeed, flag_width, flag_signed, flag_stretch, flag_enum, flag_abbreviate, flag_notitle, color_selections, label_selections, colorattr); fclose(f); for (auto lib : libs) @@ -833,5 +845,5 @@ struct ShowPass : public Pass { log_pop(); } } ShowPass; - + PRIVATE_NAMESPACE_END |