@@ -127,17 +127,19 @@ void smv_netlist(const netlistt &netlist, std::ostream &out)
127127 out << " -- Variables" << ' \n ' ;
128128 out << ' \n ' ;
129129
130+ // We use the sorted var map to get deterministic output
130131 auto &var_map = netlist.var_map ;
132+ const auto sorted_var_map = var_map.sorted ();
131133
132- for (auto & var_it : var_map. map )
134+ for (auto var_it : sorted_var_map )
133135 {
134- const var_mapt::vart &var = var_it. second ;
136+ const var_mapt::vart &var = var_it-> second ;
135137
136138 for (std::size_t i = 0 ; i < var.bits .size (); i++)
137139 {
138140 if (var.is_latch ())
139141 {
140- out << " VAR " << id2smv (var_it. first );
142+ out << " VAR " << id2smv (var_it-> first );
141143 if (var.bits .size () != 1 )
142144 out << " [" << i << " ]" ;
143145 out << " : boolean;" << ' \n ' ;
@@ -149,15 +151,15 @@ void smv_netlist(const netlistt &netlist, std::ostream &out)
149151 out << " -- Inputs" << ' \n ' ;
150152 out << ' \n ' ;
151153
152- for (auto & var_it : var_map. map )
154+ for (auto var_it : sorted_var_map )
153155 {
154- const var_mapt::vart &var = var_it. second ;
156+ const var_mapt::vart &var = var_it-> second ;
155157
156158 for (std::size_t i = 0 ; i < var.bits .size (); i++)
157159 {
158160 if (var.is_input ())
159161 {
160- out << " VAR " << id2smv (var_it. first );
162+ out << " VAR " << id2smv (var_it-> first );
161163 if (var.bits .size () != 1 )
162164 out << " [" << i << " ]" ;
163165 out << " : boolean;" << ' \n ' ;
@@ -189,15 +191,15 @@ void smv_netlist(const netlistt &netlist, std::ostream &out)
189191 out << " -- Next state functions" << ' \n ' ;
190192 out << ' \n ' ;
191193
192- for (auto & var_it : var_map. map )
194+ for (auto var_it : sorted_var_map )
193195 {
194- const var_mapt::vart &var = var_it. second ;
196+ const var_mapt::vart &var = var_it-> second ;
195197
196198 for (std::size_t i = 0 ; i < var.bits .size (); i++)
197199 {
198200 if (var.is_latch ())
199201 {
200- out << " ASSIGN next(" << id2smv (var_it. first );
202+ out << " ASSIGN next(" << id2smv (var_it-> first );
201203 if (var.bits .size () != 1 )
202204 out << " [" << i << " ]" ;
203205 out << " ):=" ;
0 commit comments