aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEddie Hung <eddieh@ece.ubc.ca>2019-02-08 08:08:49 -0800
committerEddie Hung <eddieh@ece.ubc.ca>2019-02-08 08:08:49 -0800
commitfafa972238e91f6d25bfa307a4ead4035477df18 (patch)
treed4c9e5cadfd9d63baf45fb386e115d4e4abfecd4
parent02f603ac1a43f3f98048c146b1950c776f73c070 (diff)
downloadyosys-fafa972238e91f6d25bfa307a4ead4035477df18.tar.gz
yosys-fafa972238e91f6d25bfa307a4ead4035477df18.tar.bz2
yosys-fafa972238e91f6d25bfa307a4ead4035477df18.zip
Create clk outside of latch loop
-rw-r--r--frontends/aiger/aigerparse.cc16
1 files changed, 9 insertions, 7 deletions
diff --git a/frontends/aiger/aigerparse.cc b/frontends/aiger/aigerparse.cc
index a2b2f611e..abff6d8d9 100644
--- a/frontends/aiger/aigerparse.cc
+++ b/frontends/aiger/aigerparse.cc
@@ -116,6 +116,15 @@ static void parse_aiger_ascii(RTLIL::Design *design, std::istream &f, std::strin
// Parse latches
std::vector<RTLIL::Wire*> latches;
+ RTLIL::Wire *clk_wire = nullptr;
+ if (L > 0) {
+ RTLIL::IdString clk_id = RTLIL::escape_id(clk_name.c_str());
+ clk_wire = module->wire(clk_id);
+ log_assert(!clk_wire);
+ log_debug("Creating %s\n", clk_id.c_str());
+ clk_wire = module->addWire(clk_id);
+ clk_wire->port_input = true;
+ }
for (int i = 0; i < L; ++i, ++line_count) {
if (!(f >> l1 >> l2))
log_error("Line %d cannot be interpreted as a latch!\n", line_count);
@@ -123,13 +132,6 @@ static void parse_aiger_ascii(RTLIL::Design *design, std::istream &f, std::strin
log_assert(!(l1 & 1)); // TODO: Latch outputs can't be inverted?
RTLIL::Wire *q_wire = createWireIfNotExists(l1);
RTLIL::Wire *d_wire = createWireIfNotExists(l2);
- RTLIL::IdString clk_id = RTLIL::escape_id(clk_name.c_str());
- RTLIL::Wire *clk_wire = module->wire(clk_id);
- if (!clk_wire) {
- log_debug("Creating %s\n", clk_id.c_str());
- clk_wire = module->addWire(clk_id);
- clk_wire->port_input = true;
- }
module->addDff(NEW_ID, clk_wire, d_wire, q_wire);
// AIGER latches are assumed to be initialized to zero