Units::scaledSuffix
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
79fda841d5
commit
54bf27d577
|
|
@ -33,8 +33,10 @@ public:
|
|||
void operator=(const Unit &unit);
|
||||
float scale() const { return scale_; }
|
||||
void setScale(float scale);
|
||||
const char *scaleAbreviation() const;
|
||||
const char *scaleAbbreviation() const;
|
||||
const char *suffix() const { return suffix_; }
|
||||
// scale abbreviation + suffix
|
||||
const char *scaledSuffix() const { return scaled_suffix_; }
|
||||
void setSuffix(const char *suffix);
|
||||
int digits() const { return digits_; }
|
||||
void setDigits(int digits);
|
||||
|
|
@ -46,8 +48,11 @@ public:
|
|||
int digits) const;
|
||||
|
||||
private:
|
||||
void setScaledSuffix();
|
||||
|
||||
float scale_; // multiplier from user units to internal units
|
||||
const char *suffix_; // print suffix
|
||||
const char *scaled_suffix_;
|
||||
int digits_; // print digits (after decimal pt)
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -123,26 +123,21 @@ LibertyWriter::writeHeader()
|
|||
fprintf(stream_, " delay_model : table_lookup;\n");
|
||||
fprintf(stream_, " simulation : false;\n");
|
||||
const Unit *cap_unit = library_->units()->capacitanceUnit();
|
||||
fprintf(stream_, " capacitive_load_unit (1,%s%s);\n",
|
||||
cap_unit->scaleAbreviation(),
|
||||
cap_unit->suffix());
|
||||
fprintf(stream_, " capacitive_load_unit (1,%s);\n",
|
||||
cap_unit->scaledSuffix());
|
||||
fprintf(stream_, " leakage_power_unit : 1pW;\n");
|
||||
const Unit *current_unit = library_->units()->currentUnit();
|
||||
fprintf(stream_, " current_unit : \"1%s%s\";\n",
|
||||
current_unit->scaleAbreviation(),
|
||||
current_unit->suffix());
|
||||
fprintf(stream_, " current_unit : \"1%s\";\n",
|
||||
current_unit->scaledSuffix());
|
||||
const Unit *res_unit = library_->units()->resistanceUnit();
|
||||
fprintf(stream_, " pulling_resistance_unit : \"1%s%s\";\n",
|
||||
res_unit->scaleAbreviation(),
|
||||
res_unit->suffix());
|
||||
fprintf(stream_, " pulling_resistance_unit : \"1%s\";\n",
|
||||
res_unit->scaledSuffix());
|
||||
const Unit *time_unit = library_->units()->timeUnit();
|
||||
fprintf(stream_, " time_unit : \"1%s%s\";\n",
|
||||
time_unit->scaleAbreviation(),
|
||||
time_unit->suffix());
|
||||
fprintf(stream_, " time_unit : \"1%s\";\n",
|
||||
time_unit->scaledSuffix());
|
||||
const Unit *volt_unit = library_->units()->voltageUnit();
|
||||
fprintf(stream_, " voltage_unit : \"1%s%s\";\n",
|
||||
volt_unit->scaleAbreviation(),
|
||||
volt_unit->suffix());
|
||||
fprintf(stream_, " voltage_unit : \"1%s\";\n",
|
||||
volt_unit->scaledSuffix());
|
||||
fprintf(stream_, " library_features(report_delay_calculation);\n");
|
||||
fprintf(stream_, "\n");
|
||||
|
||||
|
|
|
|||
|
|
@ -31,8 +31,10 @@ using std::abs;
|
|||
Unit::Unit(const char *suffix) :
|
||||
scale_(1.0),
|
||||
suffix_(stringCopy(suffix)),
|
||||
scaled_suffix_(nullptr),
|
||||
digits_(3)
|
||||
{
|
||||
setScaledSuffix();
|
||||
}
|
||||
|
||||
Unit::Unit(float scale,
|
||||
|
|
@ -40,13 +42,23 @@ Unit::Unit(float scale,
|
|||
int digits) :
|
||||
scale_(scale),
|
||||
suffix_(stringCopy(suffix)),
|
||||
scaled_suffix_(nullptr),
|
||||
digits_(digits)
|
||||
{
|
||||
setScaledSuffix();
|
||||
}
|
||||
|
||||
void
|
||||
Unit::setScaledSuffix()
|
||||
{
|
||||
stringDelete(scaled_suffix_);
|
||||
scaled_suffix_ = stringPrint("%s%s", scaleAbbreviation(), suffix_);
|
||||
}
|
||||
|
||||
Unit::~Unit()
|
||||
{
|
||||
stringDelete(suffix_);
|
||||
stringDelete(scaled_suffix_);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -55,6 +67,7 @@ Unit::operator=(const Unit &unit)
|
|||
scale_ = unit.scale_;
|
||||
stringDelete(suffix_);
|
||||
suffix_ = stringCopy(unit.suffix_);
|
||||
scaled_suffix_ = stringCopy(unit.scaled_suffix_);
|
||||
digits_ = unit.digits_;
|
||||
}
|
||||
|
||||
|
|
@ -74,10 +87,11 @@ void
|
|||
Unit::setScale(float scale)
|
||||
{
|
||||
scale_ = scale;
|
||||
setScaledSuffix();
|
||||
}
|
||||
|
||||
const char *
|
||||
Unit::scaleAbreviation() const
|
||||
Unit::scaleAbbreviation() const
|
||||
{
|
||||
if (fuzzyEqual(scale_, 1E+6))
|
||||
return "M";
|
||||
|
|
@ -104,6 +118,7 @@ Unit::setSuffix(const char *suffix)
|
|||
{
|
||||
stringDelete(suffix_);
|
||||
suffix_ = stringCopy(suffix);
|
||||
setScaledSuffix();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
14
tcl/StaTcl.i
14
tcl/StaTcl.i
|
|
@ -3987,11 +3987,11 @@ set_cmd_unit_suffix(const char *unit_name,
|
|||
}
|
||||
|
||||
const char *
|
||||
unit_scale_abreviation(const char *unit_name)
|
||||
unit_scale_abbreviation (const char *unit_name)
|
||||
{
|
||||
Unit *unit = Sta::sta()->units()->find(unit_name);
|
||||
if (unit)
|
||||
return unit->scaleAbreviation();
|
||||
return unit->scaleAbbreviation();
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
|
@ -4006,6 +4006,16 @@ unit_suffix(const char *unit_name)
|
|||
return "";
|
||||
}
|
||||
|
||||
const char *
|
||||
unit_scaled_suffix(const char *unit_name)
|
||||
{
|
||||
Unit *unit = Sta::sta()->units()->find(unit_name);
|
||||
if (unit)
|
||||
return unit->scaledSuffix();
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
VertexIterator *
|
||||
|
|
|
|||
Loading…
Reference in New Issue