TimingModel shared_ptr issues
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
163d776afa
commit
bfe0696ada
|
|
@ -179,7 +179,7 @@ public:
|
|||
float wire_delay) const;
|
||||
// Check for supported axis variables.
|
||||
// Return true if axes are supported.
|
||||
static bool checkSlewDegradationAxes(TablePtr table);
|
||||
static bool checkSlewDegradationAxes(const TablePtr &table);
|
||||
|
||||
float defaultInputPinCap() const { return default_input_pin_cap_; }
|
||||
void setDefaultInputPinCap(float cap);
|
||||
|
|
@ -788,7 +788,7 @@ public:
|
|||
void setRelatedGroundPin(const char *related_ground_pin);
|
||||
const char *relatedPowerPin() const { return related_power_pin_; }
|
||||
void setRelatedPowerPin(const char *related_power_pin);
|
||||
ReceiverModelPtr receiverModel() const { return receiver_model_; }
|
||||
const ReceiverModel *receiverModel() const { return receiver_model_.get(); }
|
||||
void setReceiverModel(ReceiverModelPtr receiver_model);
|
||||
DriverWaveform *driverWaveform(const RiseFall *rf) const;
|
||||
void setDriverWaveform(DriverWaveform *driver_waveform,
|
||||
|
|
@ -1017,11 +1017,14 @@ public:
|
|||
~TableTemplate();
|
||||
const char *name() const { return name_; }
|
||||
void setName(const char *name);
|
||||
TableAxisPtr axis1() const { return axis1_; }
|
||||
const TableAxis *axis1() const { return axis1_.get(); }
|
||||
TableAxisPtr axis1ptr() const { return axis1_; }
|
||||
void setAxis1(TableAxisPtr axis);
|
||||
TableAxisPtr axis2() const { return axis2_; }
|
||||
const TableAxis *axis2() const { return axis2_.get(); }
|
||||
TableAxisPtr axis2ptr() const { return axis2_; }
|
||||
void setAxis2(TableAxisPtr axis);
|
||||
TableAxisPtr axis3() const { return axis3_; }
|
||||
const TableAxis *axis3() const { return axis3_.get(); }
|
||||
TableAxisPtr axis3ptr() const { return axis3_; }
|
||||
void setAxis3(TableAxisPtr axis);
|
||||
|
||||
protected:
|
||||
|
|
@ -1065,9 +1068,9 @@ public:
|
|||
OcvDerate(const char *name);
|
||||
~OcvDerate();
|
||||
const char *name() const { return name_; }
|
||||
TablePtr derateTable(const RiseFall *rf,
|
||||
const EarlyLate *early_late,
|
||||
PathType path_type);
|
||||
const Table *derateTable(const RiseFall *rf,
|
||||
const EarlyLate *early_late,
|
||||
PathType path_type);
|
||||
void setDerateTable(const RiseFall *rf,
|
||||
const EarlyLate *early_late,
|
||||
PathType path_type,
|
||||
|
|
|
|||
|
|
@ -77,11 +77,11 @@ public:
|
|||
|
||||
const TableModel *delayModel() const { return delay_model_; }
|
||||
const TableModel *slewModel() const { return slew_model_; }
|
||||
ReceiverModelPtr receiverModel() const { return receiver_model_; }
|
||||
const ReceiverModel *receiverModel() const { return receiver_model_.get(); }
|
||||
OutputWaveforms *outputWaveforms() const { return output_waveforms_; }
|
||||
// Check the axes before making the model.
|
||||
// Return true if the model axes are supported.
|
||||
static bool checkAxes(const TablePtr table);
|
||||
static bool checkAxes(const TablePtr &table);
|
||||
|
||||
protected:
|
||||
void maxCapSlew(float in_slew,
|
||||
|
|
@ -317,6 +317,7 @@ public:
|
|||
Table1 &operator= (Table1 &&table);
|
||||
int order() const override { return 1; }
|
||||
const TableAxis *axis1() const override { return axis1_.get(); }
|
||||
const TableAxisPtr axis1ptr() const { return axis1_; }
|
||||
float value(size_t axis_index1,
|
||||
size_t axis_index2,
|
||||
size_t axis_index3) const override;
|
||||
|
|
@ -486,8 +487,8 @@ public:
|
|||
Table1 *ref_times);
|
||||
~OutputWaveforms();
|
||||
const RiseFall *rf() const { return rf_; }
|
||||
TableAxisPtr slewAxis() const { return slew_axis_; }
|
||||
TableAxisPtr capAxis() const { return cap_axis_; }
|
||||
const TableAxis *slewAxis() const { return slew_axis_.get(); }
|
||||
const TableAxis *capAxis() const { return cap_axis_.get(); }
|
||||
Table1 voltageWaveform(float in_slew,
|
||||
float load_cap);
|
||||
float voltageTime(float in_slew,
|
||||
|
|
@ -503,7 +504,7 @@ public:
|
|||
float volt);
|
||||
float referenceTime(float slew);
|
||||
void setVdd(float vdd);
|
||||
static bool checkAxes(TableTemplate *tbl_template);
|
||||
static bool checkAxes(const TableTemplate *tbl_template);
|
||||
|
||||
private:
|
||||
float voltageTime1(float voltage,
|
||||
|
|
|
|||
|
|
@ -391,7 +391,7 @@ LibertyLibrary::degradeWireSlew(const TableModel *model,
|
|||
// Check for supported axis variables.
|
||||
// Return true if axes are supported.
|
||||
bool
|
||||
LibertyLibrary::checkSlewDegradationAxes(TablePtr table)
|
||||
LibertyLibrary::checkSlewDegradationAxes(const TablePtr &table)
|
||||
{
|
||||
switch (table->order()) {
|
||||
case 0:
|
||||
|
|
@ -3064,12 +3064,12 @@ OcvDerate::~OcvDerate()
|
|||
stringDelete(name_);
|
||||
}
|
||||
|
||||
TablePtr
|
||||
const Table *
|
||||
OcvDerate::derateTable(const RiseFall *rf,
|
||||
const EarlyLate *early_late,
|
||||
PathType path_type)
|
||||
{
|
||||
return derate_[rf->index()][early_late->index()][int(path_type)];
|
||||
return derate_[rf->index()][early_late->index()][int(path_type)].get();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -4217,13 +4217,15 @@ LibertyReader::beginTable(LibertyGroup *group,
|
|||
if (library_ && template_name) {
|
||||
tbl_template_ = library_->findTableTemplate(template_name, type);
|
||||
if (tbl_template_) {
|
||||
axis_[0] = tbl_template_->axis1();
|
||||
axis_[1] = tbl_template_->axis2();
|
||||
axis_[2] = tbl_template_->axis3();
|
||||
axis_[0] = tbl_template_->axis1ptr();
|
||||
axis_[1] = tbl_template_->axis2ptr();
|
||||
axis_[2] = tbl_template_->axis3ptr();
|
||||
}
|
||||
else {
|
||||
libWarn(122, group, "table template %s not found.", template_name);
|
||||
axis_[0] = axis_[1] = axis_[2] = nullptr;
|
||||
axis_[0] = nullptr;
|
||||
axis_[1] = nullptr;
|
||||
axis_[2] = nullptr;
|
||||
}
|
||||
clearAxisValues();
|
||||
table_ = nullptr;
|
||||
|
|
@ -4236,6 +4238,9 @@ LibertyReader::endTable()
|
|||
{
|
||||
table_ = nullptr;
|
||||
tbl_template_ = nullptr;
|
||||
axis_[0] = nullptr;
|
||||
axis_[1] = nullptr;
|
||||
axis_[2] = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ protected:
|
|||
void writeHeader();
|
||||
void writeFooter();
|
||||
void writeTableTemplates();
|
||||
void writeTableTemplate(TableTemplate *tbl_template);
|
||||
void writeTableTemplate(const TableTemplate *tbl_template);
|
||||
void writeBusDcls();
|
||||
void writeCells();
|
||||
void writeCell(const LibertyCell *cell);
|
||||
|
|
@ -60,7 +60,7 @@ protected:
|
|||
void writeTableModel0(const TableModel *model);
|
||||
void writeTableModel1(const TableModel *model);
|
||||
void writeTableModel2(const TableModel *model);
|
||||
void writeTableAxis(TableAxisPtr axis,
|
||||
void writeTableAxis(const TableAxis *axis,
|
||||
int index);
|
||||
|
||||
const char *asString(bool value);
|
||||
|
|
@ -197,11 +197,11 @@ LibertyWriter::writeTableTemplates()
|
|||
}
|
||||
|
||||
void
|
||||
LibertyWriter::writeTableTemplate(TableTemplate *tbl_template)
|
||||
LibertyWriter::writeTableTemplate(const TableTemplate *tbl_template)
|
||||
{
|
||||
TableAxisPtr axis1 = tbl_template->axis1();
|
||||
TableAxisPtr axis2 = tbl_template->axis2();
|
||||
TableAxisPtr axis3 = tbl_template->axis3();
|
||||
const TableAxis *axis1 = tbl_template->axis1();
|
||||
const TableAxis *axis2 = tbl_template->axis2();
|
||||
const TableAxis *axis3 = tbl_template->axis3();
|
||||
// skip scalar templates
|
||||
if (axis1) {
|
||||
fprintf(stream_, " lu_table_template(%s) {\n", tbl_template->name());
|
||||
|
|
@ -224,7 +224,7 @@ LibertyWriter::writeTableTemplate(TableTemplate *tbl_template)
|
|||
}
|
||||
|
||||
void
|
||||
LibertyWriter::writeTableAxis(TableAxisPtr axis,
|
||||
LibertyWriter::writeTableAxis(const TableAxis *axis,
|
||||
int index)
|
||||
{
|
||||
fprintf(stream_, " index_%d (\"", index);
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ GateTableModel::axisValue(const TableAxis *axis,
|
|||
}
|
||||
|
||||
bool
|
||||
GateTableModel::checkAxes(const TablePtr table)
|
||||
GateTableModel::checkAxes(const TablePtr &table)
|
||||
{
|
||||
const TableAxis *axis1 = table->axis1();
|
||||
const TableAxis *axis2 = table->axis2();
|
||||
|
|
@ -1606,11 +1606,11 @@ OutputWaveforms::~OutputWaveforms()
|
|||
}
|
||||
|
||||
bool
|
||||
OutputWaveforms::checkAxes(TableTemplate *tbl_template)
|
||||
OutputWaveforms::checkAxes(const TableTemplate *tbl_template)
|
||||
{
|
||||
TableAxisPtr axis1 = tbl_template->axis1();
|
||||
TableAxisPtr axis2 = tbl_template->axis2();
|
||||
TableAxisPtr axis3 = tbl_template->axis3();
|
||||
const TableAxis *axis1 = tbl_template->axis1();
|
||||
const TableAxis *axis2 = tbl_template->axis2();
|
||||
const TableAxis *axis3 = tbl_template->axis3();
|
||||
return (axis1 && axis1->variable() == TableAxisVariable::input_net_transition
|
||||
&& axis2->variable() == TableAxisVariable::time
|
||||
&& axis3 == nullptr)
|
||||
|
|
|
|||
Loading…
Reference in New Issue