Added read_blif command

This commit is contained in:
Clifford Wolf 2015-05-17 15:25:03 +02:00
parent e5116eeb77
commit 2cc4e75914
2 changed files with 33 additions and 1 deletions

View File

@ -133,7 +133,7 @@ void parse_blif(RTLIL::Design *design, std::istream &f, std::string dff_name)
continue; continue;
} }
if (!strcmp(cmd, ".gate")) if (!strcmp(cmd, ".gate") || !strcmp(cmd, ".subckt"))
{ {
char *p = strtok(NULL, " \t\r\n"); char *p = strtok(NULL, " \t\r\n");
if (p == NULL) if (p == NULL)
@ -268,5 +268,35 @@ error:
log_error("Syntax error in line %d!\n", line_count); log_error("Syntax error in line %d!\n", line_count);
} }
struct BlifFrontend : public Frontend {
BlifFrontend() : Frontend("blif", "read BLIF file") { }
virtual void help()
{
// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
log("\n");
log(" read_blif [filename]\n");
log("\n");
log("Load modules from a BLIF file into the current design.\n");
log("\n");
}
virtual void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *design)
{
log_header("Executing BLIF frontend.\n");
size_t argidx;
for (argidx = 1; argidx < args.size(); argidx++) {
std::string arg = args[argidx];
// if (arg == "-lib") {
// flag_lib = true;
// continue;
// }
break;
}
extra_args(f, filename, args, argidx);
parse_blif(design, *f, "\\DFF");
}
} BlifFrontend;
YOSYS_NAMESPACE_END YOSYS_NAMESPACE_END

View File

@ -746,6 +746,8 @@ void run_frontend(std::string filename, std::string command, std::string *backen
command = "verilog"; command = "verilog";
else if (filename.size() > 2 && filename.substr(filename.size()-3) == ".sv") else if (filename.size() > 2 && filename.substr(filename.size()-3) == ".sv")
command = "verilog -sv"; command = "verilog -sv";
else if (filename.size() > 4 && filename.substr(filename.size()-5) == ".blif")
command = "blif";
else if (filename.size() > 3 && filename.substr(filename.size()-3) == ".il") else if (filename.size() > 3 && filename.substr(filename.size()-3) == ".il")
command = "ilang"; command = "ilang";
else if (filename.size() > 3 && filename.substr(filename.size()-3) == ".ys") else if (filename.size() > 3 && filename.substr(filename.size()-3) == ".ys")