@@ -195,13 +195,13 @@ struct DesignPass : public Pass {
195
195
argidx = args.size ();
196
196
}
197
197
198
- for (auto &it : copy_from_design->modules_ ) {
199
- if (sel.selected_whole_module (it. first )) {
200
- copy_src_modules.push_back (it. second );
198
+ for (auto mod : copy_from_design->modules () ) {
199
+ if (sel.selected_whole_module (mod-> name )) {
200
+ copy_src_modules.push_back (mod );
201
201
continue ;
202
202
}
203
- if (sel.selected_module (it. first ))
204
- log_cmd_error (" Module %s is only partly selected.\n " , RTLIL::id2cstr (it. first ));
203
+ if (sel.selected_module (mod-> name ))
204
+ log_cmd_error (" Module %s is only partly selected.\n " , log_id (mod-> name ));
205
205
}
206
206
207
207
if (import_mode) {
@@ -231,8 +231,8 @@ struct DesignPass : public Pass {
231
231
pool<Module*> queue;
232
232
dict<IdString, IdString> done;
233
233
234
- if (copy_to_design->modules_ . count (prefix))
235
- delete copy_to_design->modules_ . at ( prefix);
234
+ if (copy_to_design->module (prefix) != nullptr )
235
+ copy_to_design->remove (copy_to_design-> module ( prefix) );
236
236
237
237
if (GetSize (copy_src_modules) != 1 )
238
238
log_cmd_error (" No top module found in source design.\n " );
@@ -241,12 +241,13 @@ struct DesignPass : public Pass {
241
241
{
242
242
log (" Importing %s as %s.\n " , log_id (mod), log_id (prefix));
243
243
244
- copy_to_design->modules_ [prefix] = mod->clone ();
245
- copy_to_design->modules_ [prefix]->name = prefix;
246
- copy_to_design->modules_ [prefix]->design = copy_to_design;
247
- copy_to_design->modules_ [prefix]->attributes .erase (" \\ top" );
244
+ RTLIL::Module *t = mod->clone ();
245
+ t->name = prefix;
246
+ t->design = copy_to_design;
247
+ t->attributes .erase (" \\ top" );
248
+ copy_to_design->add (t);
248
249
249
- queue.insert (copy_to_design-> modules_ [prefix] );
250
+ queue.insert (t );
250
251
done[mod->name ] = prefix;
251
252
}
252
253
@@ -269,15 +270,16 @@ struct DesignPass : public Pass {
269
270
270
271
log (" Importing %s as %s.\n " , log_id (fmod), log_id (trg_name));
271
272
272
- if (copy_to_design->modules_ . count (trg_name))
273
- delete copy_to_design->modules_ . at ( trg_name);
273
+ if (copy_to_design->module (trg_name) != nullptr )
274
+ copy_to_design->remove (copy_to_design-> module ( trg_name) );
274
275
275
- copy_to_design->modules_ [trg_name] = fmod->clone ();
276
- copy_to_design->modules_ [trg_name]->name = trg_name;
277
- copy_to_design->modules_ [trg_name]->design = copy_to_design;
278
- copy_to_design->modules_ [trg_name]->attributes .erase (" \\ top" );
276
+ RTLIL::Module *t = fmod->clone ();
277
+ t->name = trg_name;
278
+ t->design = copy_to_design;
279
+ t->attributes .erase (" \\ top" );
280
+ copy_to_design->add (t);
279
281
280
- queue.insert (copy_to_design-> modules_ [trg_name] );
282
+ queue.insert (t );
281
283
done[cell->type ] = trg_name;
282
284
}
283
285
@@ -295,21 +297,22 @@ struct DesignPass : public Pass {
295
297
{
296
298
std::string trg_name = as_name.empty () ? mod->name .str () : RTLIL::escape_id (as_name);
297
299
298
- if (copy_to_design->modules_ . count (trg_name))
299
- delete copy_to_design->modules_ . at ( trg_name);
300
+ if (copy_to_design->module (trg_name) != nullptr )
301
+ copy_to_design->remove (copy_to_design-> module ( trg_name) );
300
302
301
- copy_to_design->modules_ [trg_name] = mod->clone ();
302
- copy_to_design->modules_ [trg_name]->name = trg_name;
303
- copy_to_design->modules_ [trg_name]->design = copy_to_design;
303
+ RTLIL::Module *t = mod->clone ();
304
+ t->name = trg_name;
305
+ t->design = copy_to_design;
306
+ copy_to_design->add (t);
304
307
}
305
308
}
306
309
307
310
if (!save_name.empty () || push_mode)
308
311
{
309
312
RTLIL::Design *design_copy = new RTLIL::Design;
310
313
311
- for (auto &it : design->modules_ )
312
- design_copy->add (it. second ->clone ());
314
+ for (auto mod : design->modules () )
315
+ design_copy->add (mod ->clone ());
313
316
314
317
design_copy->selection_stack = design->selection_stack ;
315
318
design_copy->selection_vars = design->selection_vars ;
@@ -326,9 +329,8 @@ struct DesignPass : public Pass {
326
329
327
330
if (reset_mode || !load_name.empty () || push_mode || pop_mode)
328
331
{
329
- for (auto &it : design->modules_ )
330
- delete it.second ;
331
- design->modules_ .clear ();
332
+ for (auto mod : design->modules ())
333
+ design->remove (mod);
332
334
333
335
design->selection_stack .clear ();
334
336
design->selection_vars .clear ();
@@ -354,8 +356,8 @@ struct DesignPass : public Pass {
354
356
{
355
357
RTLIL::Design *saved_design = pop_mode ? pushed_designs.back () : saved_designs.at (load_name);
356
358
357
- for (auto &it : saved_design->modules_ )
358
- design->add (it. second ->clone ());
359
+ for (auto mod : saved_design->modules () )
360
+ design->add (mod ->clone ());
359
361
360
362
design->selection_stack = saved_design->selection_stack ;
361
363
design->selection_vars = saved_design->selection_vars ;
0 commit comments