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
|
||||
{
|
||||
public:
|
||||
ReceiverModel();
|
||||
~ReceiverModel();
|
||||
void setCapacitanceModel(TableModel *table_model,
|
||||
int index,
|
||||
size_t segment,
|
||||
RiseFall *rf);
|
||||
static bool checkAxes(TablePtr table);
|
||||
|
||||
private:
|
||||
TableModel *capacitance_models_[2][RiseFall::index_count];
|
||||
std::vector<TableModel*> capacitance_models_;
|
||||
};
|
||||
|
||||
// Two dimensional (slew/cap) table of one dimensional time/current tables.
|
||||
|
|
|
|||
|
|
@ -478,10 +478,19 @@ LibertyReader::defineVisitors()
|
|||
defineAttrVisitor("pg_type", &LibertyReader::visitPgType);
|
||||
defineAttrVisitor("voltage_name", &LibertyReader::visitVoltageName);
|
||||
|
||||
// ccs receiver
|
||||
// ccs receiver capacitance
|
||||
defineGroupVisitor("receiver_capacitance",
|
||||
&LibertyReader::beginReceiverCapacitance,
|
||||
&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",
|
||||
&LibertyReader::beginReceiverCapacitance1Rise,
|
||||
&LibertyReader::endReceiverCapacitanceRiseFall);
|
||||
|
|
@ -2448,10 +2457,10 @@ LibertyReader::makeTimingArcs(LibertyPort *to_port,
|
|||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
// Group that encloses receiver_capacitance1/2 etc groups.
|
||||
void
|
||||
LibertyReader::beginReceiverCapacitance(LibertyGroup *)
|
||||
{
|
||||
|
||||
receiver_model_ = make_shared<ReceiverModel>();
|
||||
}
|
||||
|
||||
|
|
@ -2465,6 +2474,20 @@ LibertyReader::endReceiverCapacitance(LibertyGroup *)
|
|||
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
|
||||
LibertyReader::beginReceiverCapacitance1Rise(LibertyGroup *group)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -424,9 +424,12 @@ public:
|
|||
virtual void visitPgType(LibertyAttr *attr);
|
||||
virtual void visitVoltageName(LibertyAttr *attr);
|
||||
|
||||
// ccs receiver
|
||||
// ccs receiver capacitance
|
||||
virtual void beginReceiverCapacitance(LibertyGroup *group);
|
||||
virtual void endReceiverCapacitance(LibertyGroup *group);
|
||||
|
||||
virtual void visitSegement(LibertyAttr *attr);
|
||||
|
||||
virtual void beginReceiverCapacitance1Rise(LibertyGroup *group);
|
||||
virtual void endReceiverCapacitanceRiseFall(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()
|
||||
{
|
||||
for (int index = 0; index < 2; index++) {
|
||||
for (auto rf_index : RiseFall::rangeIndex())
|
||||
delete capacitance_models_[index][rf_index];
|
||||
}
|
||||
for (TableModel *model : capacitance_models_)
|
||||
delete model;
|
||||
}
|
||||
|
||||
void
|
||||
ReceiverModel::setCapacitanceModel(TableModel *table_model,
|
||||
int index,
|
||||
size_t segment,
|
||||
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
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ define_cmd_args "read_spef" \
|
|||
[-pin_cap_included]\
|
||||
[-keep_capacitive_coupling]\
|
||||
[-coupling_reduction_factor factor]\
|
||||
[-reduce_to pi_elmore|pi_pole_residue2]\
|
||||
[-reduce]\
|
||||
[-delete_after_reduce]\
|
||||
filename}
|
||||
|
||||
|
|
|
|||
|
|
@ -2687,7 +2687,7 @@ Search::setVertexArrivals(Vertex *vertex,
|
|||
tag_bldr->copyArrivals(tag_group, prev_arrivals, prev_paths);
|
||||
vertex->setTagGroupIndex(tag_group->index());
|
||||
if (tag_group->hasFilterTag()) {
|
||||
LockGuard lock(this->filtered_arrivals_lock_);
|
||||
LockGuard lock(filtered_arrivals_lock_);
|
||||
filtered_arrivals_->insert(vertex);
|
||||
}
|
||||
|
||||
|
|
@ -2715,7 +2715,7 @@ Search::setVertexArrivals(Vertex *vertex,
|
|||
|
||||
vertex->setTagGroupIndex(tag_group->index());
|
||||
if (tag_group->hasFilterTag()) {
|
||||
LockGuard lock(this->filtered_arrivals_lock_);
|
||||
LockGuard lock(filtered_arrivals_lock_);
|
||||
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
|
||||
Power Power Power Power (Watts)
|
||||
----------------------------------------------------------------
|
||||
Sequential 3.32e-04 8.62e-05 2.96e-10 4.19e-04 35.1%
|
||||
Combinational 2.61e-04 3.46e-04 6.95e-10 6.07e-04 50.9%
|
||||
Clock 4.68e-05 1.20e-04 2.30e-11 1.67e-04 14.0%
|
||||
Sequential 3.07e-04 4.75e-05 2.96e-10 3.54e-04 40.1%
|
||||
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 18.9%
|
||||
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%
|
||||
----------------------------------------------------------------
|
||||
Total 6.41e-04 5.53e-04 1.01e-09 1.19e-03 100.0%
|
||||
53.7% 46.3% 0.0%
|
||||
Total 5.11e-04 3.72e-04 1.00e-09 8.84e-04 100.0%
|
||||
57.9% 42.1% 0.0%
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@ Annotated 937 pin activities.
|
|||
Group Internal Switching Leakage Total
|
||||
Power Power Power Power (Watts)
|
||||
----------------------------------------------------------------
|
||||
Sequential 3.05e-04 3.84e-05 2.92e-10 3.44e-04 44.6%
|
||||
Combinational 9.95e-05 1.59e-04 6.76e-10 2.58e-04 33.5%
|
||||
Sequential 3.05e-04 3.85e-05 2.92e-10 3.44e-04 44.6%
|
||||
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%
|
||||
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%
|
||||
----------------------------------------------------------------
|
||||
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