write_sdf escape non-alnum chars in port name
This commit is contained in:
parent
35a3f1e4e3
commit
34c312fd52
|
|
@ -717,12 +717,6 @@ SdfWriter::sdfEdge(const Transition *tr)
|
|||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
char *
|
||||
SdfWriter::sdfPortName(const Pin *pin)
|
||||
{
|
||||
return const_cast<char *>(network_->portName(pin));
|
||||
}
|
||||
|
||||
char *
|
||||
SdfWriter::sdfPathName(const Pin *pin)
|
||||
{
|
||||
|
|
@ -790,4 +784,30 @@ SdfWriter::sdfName(const Instance *inst)
|
|||
return sdf_name;
|
||||
}
|
||||
|
||||
char *
|
||||
SdfWriter::sdfPortName(const Pin *pin)
|
||||
{
|
||||
const char *name = network_->portName(pin);
|
||||
char *sdf_name = makeTmpString(strlen(name) * 2 + 1);
|
||||
const char *p = name;
|
||||
char *s = sdf_name;
|
||||
while (*p) {
|
||||
char ch = *p;
|
||||
if (ch == network_escape_) {
|
||||
// Copy escape and escaped char.
|
||||
*s++ = sdf_escape_;
|
||||
*s++ = *++p;
|
||||
}
|
||||
else {
|
||||
if (!(isalnum(ch) || ch == '_' || ch == '[' || ch == ']'))
|
||||
// Insert escape.
|
||||
*s++ = sdf_escape_;
|
||||
*s++ = ch;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
*s = '\0';
|
||||
return sdf_name;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
|
|||
Loading…
Reference in New Issue