Merge remote-tracking branch 'parallax/master'
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
This commit is contained in:
commit
ee21333caa
|
|
@ -469,15 +469,14 @@ private:
|
||||||
class ReceiverModel
|
class ReceiverModel
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ReceiverModel();
|
|
||||||
~ReceiverModel();
|
~ReceiverModel();
|
||||||
void setCapacitanceModel(TableModel *table_model,
|
void setCapacitanceModel(TableModel *table_model,
|
||||||
int index,
|
size_t segment,
|
||||||
RiseFall *rf);
|
RiseFall *rf);
|
||||||
static bool checkAxes(TablePtr table);
|
static bool checkAxes(TablePtr table);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TableModel *capacitance_models_[2][RiseFall::index_count];
|
std::vector<TableModel*> capacitance_models_;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Two dimensional (slew/cap) table of one dimensional time/current tables.
|
// Two dimensional (slew/cap) table of one dimensional time/current tables.
|
||||||
|
|
|
||||||
|
|
@ -478,10 +478,19 @@ LibertyReader::defineVisitors()
|
||||||
defineAttrVisitor("pg_type", &LibertyReader::visitPgType);
|
defineAttrVisitor("pg_type", &LibertyReader::visitPgType);
|
||||||
defineAttrVisitor("voltage_name", &LibertyReader::visitVoltageName);
|
defineAttrVisitor("voltage_name", &LibertyReader::visitVoltageName);
|
||||||
|
|
||||||
// ccs receiver
|
// ccs receiver capacitance
|
||||||
defineGroupVisitor("receiver_capacitance",
|
defineGroupVisitor("receiver_capacitance",
|
||||||
&LibertyReader::beginReceiverCapacitance,
|
&LibertyReader::beginReceiverCapacitance,
|
||||||
&LibertyReader::endReceiverCapacitance);
|
&LibertyReader::endReceiverCapacitance);
|
||||||
|
|
||||||
|
defineGroupVisitor("receiver_capacitance_rise",
|
||||||
|
&LibertyReader::beginReceiverCapacitance1Rise,
|
||||||
|
&LibertyReader::endReceiverCapacitanceRiseFall);
|
||||||
|
defineGroupVisitor("receiver_capacitance_fall",
|
||||||
|
&LibertyReader::beginReceiverCapacitance1Fall,
|
||||||
|
&LibertyReader::endReceiverCapacitanceRiseFall);
|
||||||
|
defineAttrVisitor("segment", &LibertyReader::visitSegement);
|
||||||
|
|
||||||
defineGroupVisitor("receiver_capacitance1_rise",
|
defineGroupVisitor("receiver_capacitance1_rise",
|
||||||
&LibertyReader::beginReceiverCapacitance1Rise,
|
&LibertyReader::beginReceiverCapacitance1Rise,
|
||||||
&LibertyReader::endReceiverCapacitanceRiseFall);
|
&LibertyReader::endReceiverCapacitanceRiseFall);
|
||||||
|
|
@ -2448,10 +2457,10 @@ LibertyReader::makeTimingArcs(LibertyPort *to_port,
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Group that encloses receiver_capacitance1/2 etc groups.
|
||||||
void
|
void
|
||||||
LibertyReader::beginReceiverCapacitance(LibertyGroup *)
|
LibertyReader::beginReceiverCapacitance(LibertyGroup *)
|
||||||
{
|
{
|
||||||
|
|
||||||
receiver_model_ = make_shared<ReceiverModel>();
|
receiver_model_ = make_shared<ReceiverModel>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2465,6 +2474,20 @@ LibertyReader::endReceiverCapacitance(LibertyGroup *)
|
||||||
receiver_model_ = nullptr;
|
receiver_model_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For receiver_capacitance groups with mulitiple segments this
|
||||||
|
// overrides the index passed in beginReceiverCapacitance1Rise/Fall.
|
||||||
|
void
|
||||||
|
LibertyReader::visitSegement(LibertyAttr *attr)
|
||||||
|
{
|
||||||
|
if (receiver_model_) {
|
||||||
|
int segment;
|
||||||
|
bool exists;
|
||||||
|
getAttrInt(attr, segment, exists);
|
||||||
|
if (exists)
|
||||||
|
index_ = segment;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LibertyReader::beginReceiverCapacitance1Rise(LibertyGroup *group)
|
LibertyReader::beginReceiverCapacitance1Rise(LibertyGroup *group)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -424,9 +424,12 @@ public:
|
||||||
virtual void visitPgType(LibertyAttr *attr);
|
virtual void visitPgType(LibertyAttr *attr);
|
||||||
virtual void visitVoltageName(LibertyAttr *attr);
|
virtual void visitVoltageName(LibertyAttr *attr);
|
||||||
|
|
||||||
// ccs receiver
|
// ccs receiver capacitance
|
||||||
virtual void beginReceiverCapacitance(LibertyGroup *group);
|
virtual void beginReceiverCapacitance(LibertyGroup *group);
|
||||||
virtual void endReceiverCapacitance(LibertyGroup *group);
|
virtual void endReceiverCapacitance(LibertyGroup *group);
|
||||||
|
|
||||||
|
virtual void visitSegement(LibertyAttr *attr);
|
||||||
|
|
||||||
virtual void beginReceiverCapacitance1Rise(LibertyGroup *group);
|
virtual void beginReceiverCapacitance1Rise(LibertyGroup *group);
|
||||||
virtual void endReceiverCapacitanceRiseFall(LibertyGroup *group);
|
virtual void endReceiverCapacitanceRiseFall(LibertyGroup *group);
|
||||||
virtual void beginReceiverCapacitance1Fall(LibertyGroup *group);
|
virtual void beginReceiverCapacitance1Fall(LibertyGroup *group);
|
||||||
|
|
|
||||||
|
|
@ -355,25 +355,21 @@ GateTableModel::checkAxis(const TableAxis *axis)
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
ReceiverModel::ReceiverModel() :
|
|
||||||
capacitance_models_{{nullptr, nullptr}, {nullptr, nullptr}}
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
ReceiverModel::~ReceiverModel()
|
ReceiverModel::~ReceiverModel()
|
||||||
{
|
{
|
||||||
for (int index = 0; index < 2; index++) {
|
for (TableModel *model : capacitance_models_)
|
||||||
for (auto rf_index : RiseFall::rangeIndex())
|
delete model;
|
||||||
delete capacitance_models_[index][rf_index];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ReceiverModel::setCapacitanceModel(TableModel *table_model,
|
ReceiverModel::setCapacitanceModel(TableModel *table_model,
|
||||||
int index,
|
size_t segment,
|
||||||
RiseFall *rf)
|
RiseFall *rf)
|
||||||
{
|
{
|
||||||
capacitance_models_[index][rf->index()] = table_model;
|
if ((segment + 1) * RiseFall::index_count > capacitance_models_.size())
|
||||||
|
capacitance_models_.resize((segment + 1) * RiseFall::index_count);
|
||||||
|
size_t idx = segment * RiseFall::index_count + rf->index();
|
||||||
|
capacitance_models_[idx] = table_model;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ define_cmd_args "read_spef" \
|
||||||
[-pin_cap_included]\
|
[-pin_cap_included]\
|
||||||
[-keep_capacitive_coupling]\
|
[-keep_capacitive_coupling]\
|
||||||
[-coupling_reduction_factor factor]\
|
[-coupling_reduction_factor factor]\
|
||||||
[-reduce_to pi_elmore|pi_pole_residue2]\
|
[-reduce]\
|
||||||
[-delete_after_reduce]\
|
[-delete_after_reduce]\
|
||||||
filename}
|
filename}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2687,7 +2687,7 @@ Search::setVertexArrivals(Vertex *vertex,
|
||||||
tag_bldr->copyArrivals(tag_group, prev_arrivals, prev_paths);
|
tag_bldr->copyArrivals(tag_group, prev_arrivals, prev_paths);
|
||||||
vertex->setTagGroupIndex(tag_group->index());
|
vertex->setTagGroupIndex(tag_group->index());
|
||||||
if (tag_group->hasFilterTag()) {
|
if (tag_group->hasFilterTag()) {
|
||||||
LockGuard lock(this->filtered_arrivals_lock_);
|
LockGuard lock(filtered_arrivals_lock_);
|
||||||
filtered_arrivals_->insert(vertex);
|
filtered_arrivals_->insert(vertex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2715,7 +2715,7 @@ Search::setVertexArrivals(Vertex *vertex,
|
||||||
|
|
||||||
vertex->setTagGroupIndex(tag_group->index());
|
vertex->setTagGroupIndex(tag_group->index());
|
||||||
if (tag_group->hasFilterTag()) {
|
if (tag_group->hasFilterTag()) {
|
||||||
LockGuard lock(this->filtered_arrivals_lock_);
|
LockGuard lock(filtered_arrivals_lock_);
|
||||||
filtered_arrivals_->insert(vertex);
|
filtered_arrivals_->insert(vertex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@ Warning: gcd_sky130hd.v line 527, module sky130_fd_sc_hd__tapvpwrvgnd_1 not foun
|
||||||
Group Internal Switching Leakage Total
|
Group Internal Switching Leakage Total
|
||||||
Power Power Power Power (Watts)
|
Power Power Power Power (Watts)
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Sequential 3.32e-04 8.62e-05 2.96e-10 4.19e-04 35.1%
|
Sequential 3.07e-04 4.75e-05 2.96e-10 3.54e-04 40.1%
|
||||||
Combinational 2.61e-04 3.46e-04 6.95e-10 6.07e-04 50.9%
|
Combinational 1.58e-04 2.04e-04 6.86e-10 3.62e-04 41.0%
|
||||||
Clock 4.68e-05 1.20e-04 2.30e-11 1.67e-04 14.0%
|
Clock 4.68e-05 1.20e-04 2.30e-11 1.67e-04 18.9%
|
||||||
Macro 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
|
Macro 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
|
||||||
Pad 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
|
Pad 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Total 6.41e-04 5.53e-04 1.01e-09 1.19e-03 100.0%
|
Total 5.11e-04 3.72e-04 1.00e-09 8.84e-04 100.0%
|
||||||
53.7% 46.3% 0.0%
|
57.9% 42.1% 0.0%
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ Annotated 937 pin activities.
|
||||||
Group Internal Switching Leakage Total
|
Group Internal Switching Leakage Total
|
||||||
Power Power Power Power (Watts)
|
Power Power Power Power (Watts)
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Sequential 3.05e-04 3.84e-05 2.92e-10 3.44e-04 44.6%
|
Sequential 3.05e-04 3.85e-05 2.92e-10 3.44e-04 44.6%
|
||||||
Combinational 9.95e-05 1.59e-04 6.76e-10 2.58e-04 33.5%
|
Combinational 9.90e-05 1.59e-04 6.76e-10 2.58e-04 33.5%
|
||||||
Clock 4.82e-05 1.20e-04 2.30e-11 1.69e-04 21.9%
|
Clock 4.82e-05 1.20e-04 2.30e-11 1.69e-04 21.9%
|
||||||
Macro 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
|
Macro 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
|
||||||
Pad 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
|
Pad 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Total 4.53e-04 3.18e-04 9.91e-10 7.71e-04 100.0%
|
Total 4.53e-04 3.18e-04 9.91e-10 7.71e-04 100.0%
|
||||||
58.8% 41.2% 0.0%
|
58.7% 41.3% 0.0%
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue