mirror of https://github.com/YosysHQ/yosys.git
Merge remote-tracking branch 'origin/master' into eddie/abc9_refactor
This commit is contained in:
commit
2ca8c10e7a
2
Makefile
2
Makefile
|
@ -128,7 +128,7 @@ bumpversion:
|
||||||
# is just a symlink to your actual ABC working directory, as 'make mrproper'
|
# is just a symlink to your actual ABC working directory, as 'make mrproper'
|
||||||
# will remove the 'abc' directory and you do not want to accidentally
|
# will remove the 'abc' directory and you do not want to accidentally
|
||||||
# delete your work on ABC..
|
# delete your work on ABC..
|
||||||
ABCREV = f6dc4a5
|
ABCREV = 144c5be
|
||||||
ABCPULL = 1
|
ABCPULL = 1
|
||||||
ABCURL ?= https://github.com/berkeley-abc/abc
|
ABCURL ?= https://github.com/berkeley-abc/abc
|
||||||
ABCMKARGS = CC="$(CXX)" CXX="$(CXX)" ABC_USE_LIBSTDCXX=1
|
ABCMKARGS = CC="$(CXX)" CXX="$(CXX)" ABC_USE_LIBSTDCXX=1
|
||||||
|
|
|
@ -271,14 +271,24 @@ end_of_header:
|
||||||
if ((c == 'i' && l1 > inputs.size()) || (c == 'l' && l1 > latches.size()) || (c == 'o' && l1 > outputs.size()))
|
if ((c == 'i' && l1 > inputs.size()) || (c == 'l' && l1 > latches.size()) || (c == 'o' && l1 > outputs.size()))
|
||||||
log_error("Line %u has invalid symbol position!\n", line_count);
|
log_error("Line %u has invalid symbol position!\n", line_count);
|
||||||
|
|
||||||
|
RTLIL::IdString escaped_s = stringf("\\%s", s.c_str());
|
||||||
RTLIL::Wire* wire;
|
RTLIL::Wire* wire;
|
||||||
if (c == 'i') wire = inputs[l1];
|
if (c == 'i') wire = inputs[l1];
|
||||||
else if (c == 'l') wire = latches[l1];
|
else if (c == 'l') wire = latches[l1];
|
||||||
else if (c == 'o') wire = outputs[l1];
|
else if (c == 'o') {
|
||||||
|
wire = module->wire(escaped_s);
|
||||||
|
if (wire) {
|
||||||
|
// Could have been renamed by a latch
|
||||||
|
module->swap_names(wire, outputs[l1]);
|
||||||
|
module->connect(outputs[l1], wire);
|
||||||
|
goto next;
|
||||||
|
}
|
||||||
|
wire = outputs[l1];
|
||||||
|
}
|
||||||
else if (c == 'b') wire = bad_properties[l1];
|
else if (c == 'b') wire = bad_properties[l1];
|
||||||
else log_abort();
|
else log_abort();
|
||||||
|
|
||||||
module->rename(wire, stringf("\\%s", s.c_str()));
|
module->rename(wire, escaped_s);
|
||||||
}
|
}
|
||||||
else if (c == 'j' || c == 'f') {
|
else if (c == 'j' || c == 'f') {
|
||||||
// TODO
|
// TODO
|
||||||
|
@ -293,6 +303,7 @@ end_of_header:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
log_error("Line %u: cannot interpret first character '%c'!\n", line_count, c);
|
log_error("Line %u: cannot interpret first character '%c'!\n", line_count, c);
|
||||||
|
next:
|
||||||
std::getline(f, line); // Ignore up to start of next line
|
std::getline(f, line); // Ignore up to start of next line
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -506,12 +517,14 @@ void AigerReader::parse_aiger_ascii()
|
||||||
clk_wire->port_input = true;
|
clk_wire->port_input = true;
|
||||||
clk_wire->port_output = false;
|
clk_wire->port_output = false;
|
||||||
}
|
}
|
||||||
|
digits = ceil(log10(L));
|
||||||
for (unsigned i = 0; i < L; ++i, ++line_count) {
|
for (unsigned i = 0; i < L; ++i, ++line_count) {
|
||||||
if (!(f >> l1 >> l2))
|
if (!(f >> l1 >> l2))
|
||||||
log_error("Line %u cannot be interpreted as a latch!\n", line_count);
|
log_error("Line %u cannot be interpreted as a latch!\n", line_count);
|
||||||
log_debug2("%d %d is a latch\n", l1, l2);
|
log_debug2("%d %d is a latch\n", l1, l2);
|
||||||
log_assert(!(l1 & 1));
|
log_assert(!(l1 & 1));
|
||||||
RTLIL::Wire *q_wire = createWireIfNotExists(module, l1);
|
RTLIL::Wire *q_wire = module->addWire(stringf("$l%0*d", digits, l1 >> 1));
|
||||||
|
module->connect(createWireIfNotExists(module, l1), q_wire);
|
||||||
RTLIL::Wire *d_wire = createWireIfNotExists(module, l2);
|
RTLIL::Wire *d_wire = createWireIfNotExists(module, l2);
|
||||||
|
|
||||||
if (clk_wire)
|
if (clk_wire)
|
||||||
|
@ -629,12 +642,14 @@ void AigerReader::parse_aiger_binary()
|
||||||
clk_wire->port_input = true;
|
clk_wire->port_input = true;
|
||||||
clk_wire->port_output = false;
|
clk_wire->port_output = false;
|
||||||
}
|
}
|
||||||
|
digits = ceil(log10(L));
|
||||||
l1 = (I+1) * 2;
|
l1 = (I+1) * 2;
|
||||||
for (unsigned i = 0; i < L; ++i, ++line_count, l1 += 2) {
|
for (unsigned i = 0; i < L; ++i, ++line_count, l1 += 2) {
|
||||||
if (!(f >> l2))
|
if (!(f >> l2))
|
||||||
log_error("Line %u cannot be interpreted as a latch!\n", line_count);
|
log_error("Line %u cannot be interpreted as a latch!\n", line_count);
|
||||||
log_debug("%d %d is a latch\n", l1, l2);
|
log_debug("%d %d is a latch\n", l1, l2);
|
||||||
RTLIL::Wire *q_wire = createWireIfNotExists(module, l1);
|
RTLIL::Wire *q_wire = module->addWire(stringf("$l%0*d", digits, l1 >> 1));
|
||||||
|
module->connect(createWireIfNotExists(module, l1), q_wire);
|
||||||
RTLIL::Wire *d_wire = createWireIfNotExists(module, l2);
|
RTLIL::Wire *d_wire = createWireIfNotExists(module, l2);
|
||||||
|
|
||||||
if (clk_wire)
|
if (clk_wire)
|
||||||
|
@ -946,7 +961,7 @@ struct AigerFrontend : public Frontend {
|
||||||
{
|
{
|
||||||
log_header(design, "Executing AIGER frontend.\n");
|
log_header(design, "Executing AIGER frontend.\n");
|
||||||
|
|
||||||
RTLIL::IdString clk_name = "\\clk";
|
RTLIL::IdString clk_name;
|
||||||
RTLIL::IdString module_name;
|
RTLIL::IdString module_name;
|
||||||
std::string map_filename;
|
std::string map_filename;
|
||||||
bool wideports = false, xaiger = false;
|
bool wideports = false, xaiger = false;
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
aag 2 1 1 1 0
|
||||||
|
2
|
||||||
|
4 2 1
|
||||||
|
4
|
||||||
|
i0 d
|
||||||
|
l0 q
|
||||||
|
o0 q
|
||||||
|
c
|
||||||
|
Generated by Yosys 0.9+932 (git sha1 baba33fb, clang 9.0.0-2 -fPIC -Os)
|
|
@ -0,0 +1,8 @@
|
||||||
|
aig 2 1 1 1 0
|
||||||
|
2 1
|
||||||
|
4
|
||||||
|
i0 d
|
||||||
|
l0 q
|
||||||
|
o0 q
|
||||||
|
c
|
||||||
|
Generated by Yosys 0.9+932 (git sha1 baba33fb, clang 9.0.0-2 -fPIC -Os)
|
Loading…
Reference in New Issue