@@ -106,9 +106,6 @@ SpefReader::~SpefReader()
106
106
delete design_flow_;
107
107
design_flow_ = nullptr ;
108
108
}
109
-
110
- for (const auto [index, name] : name_map_)
111
- stringDelete (name);
112
109
}
113
110
114
111
bool
@@ -121,6 +118,7 @@ SpefReader::read()
121
118
SpefScanner scanner (&stream, filename_, this , report_);
122
119
scanner_ = &scanner;
123
120
SpefParse parser (&scanner, this );
121
+ // parser.set_debug_level(1);
124
122
// yyparse returns 0 on success.
125
123
success = (parser.parse () == 0 );
126
124
stats.report (" Read spef" );
@@ -160,7 +158,7 @@ SpefReader::setBusBrackets(char left,
160
158
Instance *
161
159
SpefReader::findInstanceRelative (const char *name)
162
160
{
163
- return network_ ->findInstanceRelative (instance_, name);
161
+ return sdc_network_ ->findInstanceRelative (instance_, name);
164
162
}
165
163
166
164
Net *
@@ -257,21 +255,21 @@ SpefReader::setInductScale(float scale,
257
255
}
258
256
259
257
void
260
- SpefReader::makeNameMapEntry (char *index,
261
- char *name)
258
+ SpefReader::makeNameMapEntry (const char *index,
259
+ const char *name)
262
260
{
263
261
int i = atoi (index + 1 );
264
262
name_map_[i] = name;
265
263
}
266
264
267
- char *
268
- SpefReader::nameMapLookup (char *name)
265
+ const char *
266
+ SpefReader::nameMapLookup (const char *name)
269
267
{
270
268
if (name && name[0 ] == ' *' ) {
271
269
int index = atoi (name + 1 );
272
- auto itr = name_map_.find (index);
270
+ const auto & itr = name_map_.find (index);
273
271
if (itr != name_map_.end ())
274
- return itr->second ;
272
+ return itr->second . c_str () ;
275
273
else {
276
274
warn (1645 , " no name map entry for %d." , index);
277
275
return nullptr ;
@@ -310,19 +308,19 @@ SpefReader::findPin(char *name)
310
308
char *delim = strrchr (name, delimiter_);
311
309
if (delim) {
312
310
*delim = ' \0 ' ;
313
- name = nameMapLookup (name);
314
- if (name ) {
315
- Instance *inst = findInstanceRelative (name );
311
+ const char *name1 = nameMapLookup (name);
312
+ if (name1 ) {
313
+ Instance *inst = findInstanceRelative (name1 );
316
314
// Replace delimiter for error messages.
317
315
*delim = delimiter_;
318
316
const char *port_name = delim + 1 ;
319
317
if (inst) {
320
318
pin = network_->findPin (inst, port_name);
321
319
if (pin == nullptr )
322
- warn (1647 , " pin %s not found." , name );
320
+ warn (1647 , " pin %s not found." , name1 );
323
321
}
324
322
else
325
- warn (1648 , " instance %s not found." , name );
323
+ warn (1648 , " instance %s not found." , name1 );
326
324
}
327
325
}
328
326
else {
@@ -335,14 +333,14 @@ SpefReader::findPin(char *name)
335
333
}
336
334
337
335
Net *
338
- SpefReader::findNet (char *name)
336
+ SpefReader::findNet (const char *name)
339
337
{
340
338
Net *net = nullptr ;
341
- name = nameMapLookup (name);
342
- if (name ) {
343
- net = findNetRelative (name );
339
+ const char *name1 = nameMapLookup (name);
340
+ if (name1 ) {
341
+ net = findNetRelative (name1 );
344
342
if (net == nullptr )
345
- warn (1650 , " net %s not found." , name );
343
+ warn (1650 , " net %s not found." , name1 );
346
344
}
347
345
return net;
348
346
}
@@ -447,26 +445,26 @@ SpefReader::findParasiticNode(char *name,
447
445
if (delim) {
448
446
*delim = ' \0 ' ;
449
447
char *name2 = delim + 1 ;
450
- name = nameMapLookup (name);
451
- if (name ) {
452
- Instance *inst = findInstanceRelative (name );
448
+ const char *name1 = nameMapLookup (name);
449
+ if (name1 ) {
450
+ Instance *inst = findInstanceRelative (name1 );
453
451
if (inst) {
454
452
// <instance>:<port>
455
453
Pin *pin = network_->findPin (inst, name2);
456
454
if (pin) {
457
455
if (local_only
458
456
&& !network_->isConnected (net_, pin))
459
- warn (1651 , " %s not connected to net %s." , name , network_->pathName (net_));
457
+ warn (1651 , " %s not connected to net %s." , name1 , network_->pathName (net_));
460
458
return parasitics_->ensureParasiticNode (parasitic_, pin, network_);
461
459
}
462
460
else {
463
461
// Replace delimiter for error message.
464
462
*delim = delimiter_;
465
- warn (1652 , " pin %s not found." , name );
463
+ warn (1652 , " pin %s not found." , name1 );
466
464
}
467
465
}
468
466
else {
469
- Net *net = findNet (name );
467
+ Net *net = findNet (name1 );
470
468
// Replace delimiter for error messages.
471
469
*delim = delimiter_;
472
470
if (net) {
@@ -477,25 +475,29 @@ SpefReader::findParasiticNode(char *name,
477
475
if (local_only
478
476
&& !network_->isConnected (net, net_))
479
477
warn (1653 , " %s not connected to net %s." ,
480
- name ,
478
+ name1 ,
481
479
network_->pathName (net_));
482
480
return parasitics_->ensureParasiticNode (parasitic_, net, id, network_);
483
481
}
484
482
else
485
- warn (1654 , " node %s not a pin or net:number" , name );
483
+ warn (1654 , " node %s not a pin or net:number" , name1 );
486
484
}
487
485
}
488
486
}
489
487
}
490
488
else {
491
489
// <top_level_port>
492
- name = nameMapLookup (name);
493
- Pin *pin = findPortPinRelative (name);
494
- if (pin) {
495
- if (local_only
496
- && !network_->isConnected (net_, pin))
497
- warn (1655 , " %s not connected to net %s." , name, network_->pathName (net_));
498
- return parasitics_->ensureParasiticNode (parasitic_, pin, network_);
490
+ const char *name1 = nameMapLookup (name);
491
+ if (name1) {
492
+ Pin *pin = findPortPinRelative (name1);
493
+ if (pin) {
494
+ if (local_only
495
+ && !network_->isConnected (net_, pin))
496
+ warn (1655 , " %s not connected to net %s." , name1, network_->pathName (net_));
497
+ return parasitics_->ensureParasiticNode (parasitic_, pin, network_);
498
+ }
499
+ else
500
+ warn (1656 , " pin %s not found." , name1);
499
501
}
500
502
else
501
503
warn (1656 , " pin %s not found." , name);
0 commit comments