liberty test_cell port signal_type

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2024-11-15 15:53:02 -08:00
parent 0bf98832ed
commit 0d13839330
5 changed files with 30 additions and 11 deletions

View File

@ -1147,5 +1147,7 @@ private:
string
portLibertyToSta(const char *port_name);
const char *
scanSignalTypeName(ScanSignalType scan_type);
} // namespace

View File

@ -2139,6 +2139,25 @@ LibertyPort::setScanSignalType(ScanSignalType type)
scan_signal_type_ = type;
}
static EnumNameMap<ScanSignalType> scan_signal_type_map =
{{ScanSignalType::enable, "enable"},
{ScanSignalType::enable_inverted, "enable_inverted"},
{ScanSignalType::clock, "clock"},
{ScanSignalType::clock_a, "clock_a"},
{ScanSignalType::clock_b, "clock_b"},
{ScanSignalType::input, "input"},
{ScanSignalType::input_inverted, "input_inverted"},
{ScanSignalType::output, "output"},
{ScanSignalType::output_inverted, "output_inverted"},
{ScanSignalType::none, "none"}};
const char *
scanSignalTypeName(ScanSignalType scan_type)
{
return scan_signal_type_map.find(scan_type);
}
LibertyPort *
LibertyPort::findLibertyMember(int index) const
{

View File

@ -339,6 +339,12 @@ set_direction(const char *dir)
self->setDirection(PortDirection::find(dir));
}
const char *
scan_signal_type()
{
return scanSignalTypeName(self->scanSignalType());
}
} // LibertyPort methods
%extend TimingArcSet {

View File

@ -96,7 +96,6 @@ LibertyReader::init(const char *filename,
ocv_derate_name_ = nullptr;
op_cond_ = nullptr;
ports_ = nullptr;
port_ = nullptr;
port_group_ = nullptr;
saved_ports_ = nullptr;
saved_port_group_ = nullptr;
@ -3171,11 +3170,6 @@ LibertyReader::beginPin(LibertyGroup *group)
port_group_ = new PortGroup(ports_, group->line());
cell_port_groups_.push_back(port_group_);
}
if (test_cell_) {
const char *pin_name = group->firstName();
if (pin_name)
port_ = findPort(save_cell_, pin_name);
}
}
void
@ -3188,7 +3182,6 @@ LibertyReader::endPin(LibertyGroup *)
port_group_ = saved_port_group_;
}
}
port_ = nullptr;
}
void
@ -3786,7 +3779,7 @@ LibertyReader::visitIsPllFeedbackPin(LibertyAttr *attr)
void
LibertyReader::visitSignalType(LibertyAttr *attr)
{
if (test_cell_ && port_) {
if (test_cell_ && ports_) {
const char *type = getAttrString(attr);
if (type) {
ScanSignalType signal_type = ScanSignalType::none;
@ -3812,8 +3805,8 @@ LibertyReader::visitSignalType(LibertyAttr *attr)
libWarn(1299, attr, "unknown signal_type %s.", type);
return;
}
if (port_)
port_->setScanSignalType(signal_type);
for (LibertyPort *port : *ports_)
port->setScanSignalType(signal_type);
}
}
}

View File

@ -618,7 +618,6 @@ protected:
PortGroupSeq cell_port_groups_;
OperatingConditions *op_cond_;
LibertyPortSeq *ports_;
LibertyPort *port_; // Used by test_cell.
PortGroup *port_group_;
LibertyPortSeq *saved_ports_;
PortGroup *saved_port_group_;