|
10 | 10 |
|
11 | 11 | #include <util/format_expr.h>
|
12 | 12 |
|
| 13 | +#include <ebmc/ebmc_properties.h> |
| 14 | +#include <ebmc/transition_system.h> |
13 | 15 | #include <solvers/bdd/miniBDD/miniBDD.h>
|
14 | 16 | #include <solvers/sat/satcheck.h>
|
15 | 17 | #include <trans-netlist/aig_prop.h>
|
16 | 18 | #include <trans-netlist/instantiate_netlist.h>
|
| 19 | +#include <trans-netlist/trans_to_netlist.h> |
17 | 20 | #include <trans-netlist/trans_trace_netlist.h>
|
18 | 21 | #include <trans-netlist/unwind_netlist.h>
|
19 | 22 |
|
20 |
| -#include "ebmc_base.h" |
21 | 23 | #include "negate_property.h"
|
22 | 24 | #include "report_results.h"
|
23 | 25 |
|
|
32 | 34 |
|
33 | 35 | \*******************************************************************/
|
34 | 36 |
|
35 |
| -class bdd_enginet:public ebmc_baset |
| 37 | +class bdd_enginet |
36 | 38 | {
|
37 | 39 | public:
|
38 | 40 | bdd_enginet(
|
39 |
| - const cmdlinet &cmdline, |
40 |
| - ui_message_handlert &ui_message_handler): |
41 |
| - ebmc_baset(cmdline, ui_message_handler) |
| 41 | + const cmdlinet &_cmdline, |
| 42 | + ui_message_handlert &_ui_message_handler) |
| 43 | + : cmdline(_cmdline), message(_ui_message_handler) |
42 | 44 | {
|
43 | 45 | }
|
44 | 46 |
|
45 | 47 | int operator()();
|
46 | 48 |
|
47 | 49 | protected:
|
| 50 | + using propertyt = ebmc_propertiest::propertyt; |
| 51 | + const cmdlinet &cmdline; |
| 52 | + messaget message; |
| 53 | + transition_systemt transition_system; |
| 54 | + ebmc_propertiest properties; |
48 | 55 | netlistt netlist;
|
49 | 56 |
|
50 | 57 | // the Manager must appear before any BDDs
|
@@ -135,28 +142,28 @@ int bdd_enginet::operator()()
|
135 | 142 | transition_system =
|
136 | 143 | get_transition_system(cmdline, message.get_message_handler());
|
137 | 144 |
|
138 |
| - { |
139 |
| - if(make_netlist(netlist)) |
140 |
| - { |
141 |
| - message.error() << "Failed to build netlist" << messaget::eom; |
142 |
| - return 2; |
143 |
| - } |
| 145 | + message.status() << "Building netlist" << messaget::eom; |
144 | 146 |
|
145 |
| - message.status() << "Building netlist for atomic propositions" |
146 |
| - << messaget::eom; |
| 147 | + convert_trans_to_netlist( |
| 148 | + transition_system.symbol_table, |
| 149 | + transition_system.main_symbol->name, |
| 150 | + netlist, |
| 151 | + message.get_message_handler()); |
147 | 152 |
|
148 |
| - auto result = get_properties(); |
149 |
| - if(result != -1) |
150 |
| - return result; |
| 153 | + message.statistics() << "Latches: " << netlist.var_map.latches.size() |
| 154 | + << ", nodes: " << netlist.number_of_nodes() |
| 155 | + << messaget::eom; |
151 | 156 |
|
152 |
| - for(const propertyt &p : properties.properties) |
153 |
| - get_atomic_propositions(p.expr); |
| 157 | + properties = ebmc_propertiest::from_command_line( |
| 158 | + cmdline, transition_system, message.get_message_handler()); |
154 | 159 |
|
155 |
| - message.status() << "Building BDD for netlist" << messaget::eom; |
| 160 | + for(const propertyt &p : properties.properties) |
| 161 | + get_atomic_propositions(p.expr); |
156 | 162 |
|
157 |
| - allocate_vars(netlist.var_map); |
158 |
| - build_BDDs(); |
159 |
| - } |
| 163 | + message.status() << "Building BDD for netlist" << messaget::eom; |
| 164 | + |
| 165 | + allocate_vars(netlist.var_map); |
| 166 | + build_BDDs(); |
160 | 167 |
|
161 | 168 | message.statistics() << "BDD nodes: " << mgr.number_of_nodes()
|
162 | 169 | << messaget::eom;
|
|
0 commit comments