Add "synth_ice40 -json"

Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
Clifford Wolf 2018-06-13 13:35:10 +02:00
parent 83631555dd
commit 57fc8dd582
1 changed files with 22 additions and 9 deletions

View File

@ -45,7 +45,11 @@ struct SynthIce40Pass : public ScriptPass
log(" is omitted if this parameter is not specified.\n"); log(" is omitted if this parameter is not specified.\n");
log("\n"); log("\n");
log(" -edif <file>\n"); log(" -edif <file>\n");
log(" write the design to the specified edif file. writing of an output file\n"); log(" write the design to the specified EDIF file. writing of an output file\n");
log(" is omitted if this parameter is not specified.\n");
log("\n");
log(" -json <file>\n");
log(" write the design to the specified JSON file. writing of an output file\n");
log(" is omitted if this parameter is not specified.\n"); log(" is omitted if this parameter is not specified.\n");
log("\n"); log("\n");
log(" -run <from_label>:<to_label>\n"); log(" -run <from_label>:<to_label>\n");
@ -81,7 +85,7 @@ struct SynthIce40Pass : public ScriptPass
log("\n"); log("\n");
} }
string top_opt, blif_file, edif_file; string top_opt, blif_file, edif_file, json_file;
bool nocarry, nodffe, nobram, flatten, retime, abc2, vpr; bool nocarry, nodffe, nobram, flatten, retime, abc2, vpr;
virtual void clear_flags() YS_OVERRIDE virtual void clear_flags() YS_OVERRIDE
@ -89,6 +93,7 @@ struct SynthIce40Pass : public ScriptPass
top_opt = "-auto-top"; top_opt = "-auto-top";
blif_file = ""; blif_file = "";
edif_file = ""; edif_file = "";
json_file = "";
nocarry = false; nocarry = false;
nodffe = false; nodffe = false;
nobram = false; nobram = false;
@ -118,6 +123,10 @@ struct SynthIce40Pass : public ScriptPass
edif_file = args[++argidx]; edif_file = args[++argidx];
continue; continue;
} }
if (args[argidx] == "-json" && argidx+1 < args.size()) {
json_file = args[++argidx];
continue;
}
if (args[argidx] == "-run" && argidx+1 < args.size()) { if (args[argidx] == "-run" && argidx+1 < args.size()) {
size_t pos = args[argidx+1].find(':'); size_t pos = args[argidx+1].find(':');
if (pos == std::string::npos) if (pos == std::string::npos)
@ -260,17 +269,15 @@ struct SynthIce40Pass : public ScriptPass
if (!blif_file.empty() || help_mode) { if (!blif_file.empty() || help_mode) {
if (vpr || help_mode) { if (vpr || help_mode) {
run(stringf("opt_clean -purge"), run(stringf("opt_clean -purge"),
" " " (vpr mode)");
" (vpr mode)");
run(stringf("write_blif -attr -cname -conn -param %s", run(stringf("write_blif -attr -cname -conn -param %s",
help_mode ? "<file-name>" : blif_file.c_str()), help_mode ? "<file-name>" : blif_file.c_str()),
" (vpr mode)"); " (vpr mode)");
} }
if (!vpr) if (!vpr)
run(stringf("write_blif -gates -attr -param %s", run(stringf("write_blif -gates -attr -param %s",
help_mode ? "<file-name>" : blif_file.c_str()), help_mode ? "<file-name>" : blif_file.c_str()),
" " " (non-vpr mode)");
" (non-vpr mode)");
} }
} }
@ -279,6 +286,12 @@ struct SynthIce40Pass : public ScriptPass
if (!edif_file.empty() || help_mode) if (!edif_file.empty() || help_mode)
run(stringf("write_edif %s", help_mode ? "<file-name>" : edif_file.c_str())); run(stringf("write_edif %s", help_mode ? "<file-name>" : edif_file.c_str()));
} }
if (check_label("json"))
{
if (!json_file.empty() || help_mode)
run(stringf("write_json %s", help_mode ? "<file-name>" : json_file.c_str()));
}
} }
} SynthIce40Pass; } SynthIce40Pass;