diff options
author | N. Engelhardt <nak@symbioticeda.com> | 2020-03-16 12:23:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-16 12:23:14 +0100 |
commit | a2e340de435a6cfeeeb18dc23236cc550be8ca1a (patch) | |
tree | 97b54427f3c40ce54cc8a7582880d07688ae77af /backends/smt2/smt2.cc | |
parent | 685392fed88db3df3dbc077f3d52fb0b4ae36c45 (diff) | |
parent | 0fda8308bccf6f97b31b104ea1e2b000e4b8c7c7 (diff) | |
download | yosys-a2e340de435a6cfeeeb18dc23236cc550be8ca1a.tar.gz yosys-a2e340de435a6cfeeeb18dc23236cc550be8ca1a.tar.bz2 yosys-a2e340de435a6cfeeeb18dc23236cc550be8ca1a.zip |
Merge pull request #1746 from boqwxp/optimization
Add support for optimizing exists-forall problems.
Diffstat (limited to 'backends/smt2/smt2.cc')
-rw-r--r-- | backends/smt2/smt2.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/backends/smt2/smt2.cc b/backends/smt2/smt2.cc index 081dcda99..3e08ce37b 100644 --- a/backends/smt2/smt2.cc +++ b/backends/smt2/smt2.cc @@ -536,6 +536,14 @@ struct Smt2Worker if (cell->attributes.count("\\reg")) infostr += " " + cell->attributes.at("\\reg").decode_string(); decls.push_back(stringf("; yosys-smt2-%s %s#%d %d %s\n", cell->type.c_str() + 1, get_id(module), idcounter, GetSize(cell->getPort("\\Y")), infostr.c_str())); + if (cell->getPort("\\Y").is_wire() && cell->getPort("\\Y").as_wire()->get_bool_attribute("\\maximize")){ + decls.push_back(stringf("; yosys-smt2-maximize %s#%d\n", get_id(module), idcounter)); + log("Wire %s is maximized\n", cell->getPort("\\Y").as_wire()->name.str().c_str()); + } + else if (cell->getPort("\\Y").is_wire() && cell->getPort("\\Y").as_wire()->get_bool_attribute("\\minimize")){ + decls.push_back(stringf("; yosys-smt2-minimize %s#%d\n", get_id(module), idcounter)); + log("Wire %s is minimized\n", cell->getPort("\\Y").as_wire()->name.str().c_str()); + } makebits(stringf("%s#%d", get_id(module), idcounter), GetSize(cell->getPort("\\Y")), log_signal(cell->getPort("\\Y"))); if (cell->type == "$anyseq") ex_input_eq.push_back(stringf(" (= (|%s#%d| state) (|%s#%d| other_state))", get_id(module), idcounter, get_id(module), idcounter)); |