summaryrefslogtreecommitdiff
path: root/frontends
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-05-17 15:25:03 +0200
committerClifford Wolf <clifford@clifford.at>2015-05-17 15:25:03 +0200
commit2cc4e75914eddcf8a850bb5b7ce7bcdb093fa75e (patch)
tree2618c1de2e64a11b4ca52bb80224477e408e9ce9 /frontends
parente5116eeb77c5b7d77f726da4d512f14b7f31eada (diff)
Added read_blif command
Diffstat (limited to 'frontends')
-rw-r--r--frontends/blif/blifparse.cc32
1 files changed, 31 insertions, 1 deletions
diff --git a/frontends/blif/blifparse.cc b/frontends/blif/blifparse.cc
index fb71cee1..cc06dfbd 100644
--- a/frontends/blif/blifparse.cc
+++ b/frontends/blif/blifparse.cc
@@ -133,7 +133,7 @@ void parse_blif(RTLIL::Design *design, std::istream &f, std::string dff_name)
continue;
}
- if (!strcmp(cmd, ".gate"))
+ if (!strcmp(cmd, ".gate") || !strcmp(cmd, ".subckt"))
{
char *p = strtok(NULL, " \t\r\n");
if (p == NULL)
@@ -268,5 +268,35 @@ error:
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