mirror of
https://github.com/YosysHQ/yosys
synced 2025-10-09 17:31:59 +00:00
sdc: add help
This commit is contained in:
parent
a4dc0156bb
commit
35801c2aa1
1 changed files with 25 additions and 5 deletions
|
@ -773,15 +773,33 @@ public:
|
||||||
|
|
||||||
// Also see TclPass
|
// Also see TclPass
|
||||||
struct SdcPass : public Pass {
|
struct SdcPass : public Pass {
|
||||||
// TODO help
|
void help() override
|
||||||
|
{
|
||||||
|
// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
|
||||||
|
log("\n");
|
||||||
|
log(" sdc [options] file\n");
|
||||||
|
log("\n");
|
||||||
|
log("Read the SDC file for the current design.\n");
|
||||||
|
log("\n");
|
||||||
|
log(" -dump\n");
|
||||||
|
log(" Dump the referenced design objects.\n");
|
||||||
|
log("\n");
|
||||||
|
log(" -dump-graph\n");
|
||||||
|
log(" Dump the uninterpreted call graph.\n");
|
||||||
|
log("\n");
|
||||||
|
log(" -keep_hierarchy\n");
|
||||||
|
log(" Add keep_hierarchy attributes while retaining SDC validity.\n");
|
||||||
|
log("\n");
|
||||||
|
}
|
||||||
SdcPass() : Pass("sdc", "sniff at some SDC") { }
|
SdcPass() : Pass("sdc", "sniff at some SDC") { }
|
||||||
void execute(std::vector<std::string> args, RTLIL::Design *design) override {
|
void execute(std::vector<std::string> args, RTLIL::Design *design) override {
|
||||||
log_header(design, "Executing SDC pass.\n");
|
log_header(design, "Executing SDC pass.\n");
|
||||||
|
log_experimental("sdc");
|
||||||
size_t argidx;
|
size_t argidx;
|
||||||
bool dump_mode = false;
|
bool dump_mode = false;
|
||||||
bool dump_graph_mode = false;
|
bool dump_graph_mode = false;
|
||||||
bool keep_hierarchy_mode = false;
|
bool keep_hierarchy_mode = false;
|
||||||
std::vector<std::string> opensta_stubs_paths;
|
std::vector<std::string> stubs_paths;
|
||||||
for (argidx = 1; argidx < args.size(); argidx++) {
|
for (argidx = 1; argidx < args.size(); argidx++) {
|
||||||
if (args[argidx] == "-dump") {
|
if (args[argidx] == "-dump") {
|
||||||
dump_mode = true;
|
dump_mode = true;
|
||||||
|
@ -793,7 +811,7 @@ struct SdcPass : public Pass {
|
||||||
keep_hierarchy_mode = true;
|
keep_hierarchy_mode = true;
|
||||||
continue;
|
continue;
|
||||||
} else if (args[argidx] == "-stubs" && argidx+1 < args.size()) {
|
} else if (args[argidx] == "-stubs" && argidx+1 < args.size()) {
|
||||||
opensta_stubs_paths.push_back(args[++argidx]);
|
stubs_paths.push_back(args[++argidx]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -801,7 +819,9 @@ struct SdcPass : public Pass {
|
||||||
if (argidx >= args.size())
|
if (argidx >= args.size())
|
||||||
log_cmd_error("Missing SDC file.\n");
|
log_cmd_error("Missing SDC file.\n");
|
||||||
|
|
||||||
std::string sdc_path = args[argidx];
|
std::string sdc_path = args[argidx++];
|
||||||
|
if (argidx < args.size())
|
||||||
|
log_cmd_error("Unexpected extra positional argument %s after SDC file %s.\n", args[argidx], sdc_path);
|
||||||
SDCInterpreter& sdc = SDCInterpreter::get();
|
SDCInterpreter& sdc = SDCInterpreter::get();
|
||||||
Tcl_Interp *interp = sdc.fresh_interp(design);
|
Tcl_Interp *interp = sdc.fresh_interp(design);
|
||||||
Tcl_Preserve(interp);
|
Tcl_Preserve(interp);
|
||||||
|
@ -809,7 +829,7 @@ struct SdcPass : public Pass {
|
||||||
rewrite_filename(stub_path);
|
rewrite_filename(stub_path);
|
||||||
if (Tcl_EvalFile(interp, stub_path.c_str()) != TCL_OK)
|
if (Tcl_EvalFile(interp, stub_path.c_str()) != TCL_OK)
|
||||||
log_cmd_error("SDC interpreter returned an error in stub preamble file: %s\n", Tcl_GetStringResult(interp));
|
log_cmd_error("SDC interpreter returned an error in stub preamble file: %s\n", Tcl_GetStringResult(interp));
|
||||||
for (auto path : opensta_stubs_paths)
|
for (auto path : stubs_paths)
|
||||||
if (Tcl_EvalFile(interp, path.c_str()) != TCL_OK)
|
if (Tcl_EvalFile(interp, path.c_str()) != TCL_OK)
|
||||||
log_cmd_error("SDC interpreter returned an error in OpenSTA stub file %s: %s\n", path.c_str(), Tcl_GetStringResult(interp));
|
log_cmd_error("SDC interpreter returned an error in OpenSTA stub file %s: %s\n", path.c_str(), Tcl_GetStringResult(interp));
|
||||||
if (Tcl_EvalFile(interp, sdc_path.c_str()) != TCL_OK)
|
if (Tcl_EvalFile(interp, sdc_path.c_str()) != TCL_OK)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue