@@ -106,9 +106,6 @@ SpefReader::~SpefReader()
106106 delete design_flow_;
107107 design_flow_ = nullptr ;
108108 }
109-
110- for (const auto [index, name] : name_map_)
111- stringDelete (name);
112109}
113110
114111bool
@@ -121,6 +118,7 @@ SpefReader::read()
121118 SpefScanner scanner (&stream, filename_, this , report_);
122119 scanner_ = &scanner;
123120 SpefParse parser (&scanner, this );
121+ // parser.set_debug_level(1);
124122 // yyparse returns 0 on success.
125123 success = (parser.parse () == 0 );
126124 stats.report (" Read spef" );
@@ -160,7 +158,7 @@ SpefReader::setBusBrackets(char left,
160158Instance *
161159SpefReader::findInstanceRelative (const char *name)
162160{
163- return network_ ->findInstanceRelative (instance_, name);
161+ return sdc_network_ ->findInstanceRelative (instance_, name);
164162}
165163
166164Net *
@@ -257,21 +255,21 @@ SpefReader::setInductScale(float scale,
257255}
258256
259257void
260- SpefReader::makeNameMapEntry (char *index,
261- char *name)
258+ SpefReader::makeNameMapEntry (const char *index,
259+ const char *name)
262260{
263261 int i = atoi (index + 1 );
264262 name_map_[i] = name;
265263}
266264
267- char *
268- SpefReader::nameMapLookup (char *name)
265+ const char *
266+ SpefReader::nameMapLookup (const char *name)
269267{
270268 if (name && name[0 ] == ' *' ) {
271269 int index = atoi (name + 1 );
272- auto itr = name_map_.find (index);
270+ const auto & itr = name_map_.find (index);
273271 if (itr != name_map_.end ())
274- return itr->second ;
272+ return itr->second . c_str () ;
275273 else {
276274 warn (1645 , " no name map entry for %d." , index);
277275 return nullptr ;
@@ -310,19 +308,19 @@ SpefReader::findPin(char *name)
310308 char *delim = strrchr (name, delimiter_);
311309 if (delim) {
312310 *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 );
316314 // Replace delimiter for error messages.
317315 *delim = delimiter_;
318316 const char *port_name = delim + 1 ;
319317 if (inst) {
320318 pin = network_->findPin (inst, port_name);
321319 if (pin == nullptr )
322- warn (1647 , " pin %s not found." , name );
320+ warn (1647 , " pin %s not found." , name1 );
323321 }
324322 else
325- warn (1648 , " instance %s not found." , name );
323+ warn (1648 , " instance %s not found." , name1 );
326324 }
327325 }
328326 else {
@@ -335,14 +333,14 @@ SpefReader::findPin(char *name)
335333}
336334
337335Net *
338- SpefReader::findNet (char *name)
336+ SpefReader::findNet (const char *name)
339337{
340338 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 );
344342 if (net == nullptr )
345- warn (1650 , " net %s not found." , name );
343+ warn (1650 , " net %s not found." , name1 );
346344 }
347345 return net;
348346}
@@ -447,26 +445,26 @@ SpefReader::findParasiticNode(char *name,
447445 if (delim) {
448446 *delim = ' \0 ' ;
449447 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 );
453451 if (inst) {
454452 // <instance>:<port>
455453 Pin *pin = network_->findPin (inst, name2);
456454 if (pin) {
457455 if (local_only
458456 && !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_));
460458 return parasitics_->ensureParasiticNode (parasitic_, pin, network_);
461459 }
462460 else {
463461 // Replace delimiter for error message.
464462 *delim = delimiter_;
465- warn (1652 , " pin %s not found." , name );
463+ warn (1652 , " pin %s not found." , name1 );
466464 }
467465 }
468466 else {
469- Net *net = findNet (name );
467+ Net *net = findNet (name1 );
470468 // Replace delimiter for error messages.
471469 *delim = delimiter_;
472470 if (net) {
@@ -477,25 +475,29 @@ SpefReader::findParasiticNode(char *name,
477475 if (local_only
478476 && !network_->isConnected (net, net_))
479477 warn (1653 , " %s not connected to net %s." ,
480- name ,
478+ name1 ,
481479 network_->pathName (net_));
482480 return parasitics_->ensureParasiticNode (parasitic_, net, id, network_);
483481 }
484482 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 );
486484 }
487485 }
488486 }
489487 }
490488 else {
491489 // <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);
499501 }
500502 else
501503 warn (1656 , " pin %s not found." , name);
0 commit comments