From 742b823945e5f20a7b2bbac4c01572ea3df6aed3 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 22 Aug 2023 20:22:47 -0700 Subject: [PATCH] read_liberty infer clk/clr timing_type from ff/latch funcs Signed-off-by: James Cherry --- doc/OpenSTA.odt | Bin 103151 -> 103151 bytes liberty/LibertyBuilder.cc | 93 ++++++--- liberty/LibertyBuilder.hh | 11 +- liberty/LibertyReader.cc | 70 +++---- liberty/LibertyReaderPvt.hh | 4 +- messages.txt | 371 ++++++++++++++++++------------------ 6 files changed, 306 insertions(+), 243 deletions(-) diff --git a/doc/OpenSTA.odt b/doc/OpenSTA.odt index 70797ac690bf7dcb7719271202dc8c114ac74962..548879f8468f618207b36ecbad5b364fa3c4c172 100644 GIT binary patch delta 60216 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

~)W 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 A9RL6T delta 60219 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�o=34OrfmwwrEI5q@=U>A8@niAt+{~ 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 z zS4dW6%#b)RyQ}f5T%l`wWXGyFC8`J3d^JPsI9EBwY>KMh>#V(pxY_!Pp0amAF=NtL+$>-YZQ@zlinWQ39{72$wYLNP{0l%CEQ3yeAoayF>n>ZZ8IFT> z$I`4~iw~KmMP(he4`>@}q?=@09Ru|T#U06(nrNOT0@ND20y+Q-ujBbB)ZPeqosV z8-(E2uB`0TRKC^LS+5}k!D#_lz3!D2=~ zWVR+RHB#S~1K7V{Sj?#A^^J)0xxAE}wL^Enj7ud59IQM(1q=4P)iaYfZUka0H@}Bj zUtAABMFd?oK8LBA{^v@GTvma4`kpZz7@}YGVs)n_uJ%a$=36@(@o6@1nv;{mc7Nun zNTFb8z!Od!lh8TmKZk1qecb9l-%70mxHrEfcdQ$3Uj|W)6^lh%zWwl%{(FDGKDLYx zJeMURW>Ec@@?{71E&~sxu4cinr$e&o)%Jj1PT|fiS9}7P57Me4SPOS@elEyZNfOr< z{eg-|Tn90H72tlmf|PueWp1Q4P;sLh`*;u`3?jrtH0x+x?1Un{UkyEwGxp?{d7GML zYhHF=Q6}SY3kmpio{cb}KOYF#Q2S!QmkK^Zxia=I2!yu$ zuEa$AJIaSkV{3Uq&n~CgU4M_>{Ja7`CFUP?d2Afug4{)WrQowB570)HUk%egf4f3- zE=@VtO##s#^8$g-7dHW|EVmS!9CEw)gpCk^U3&Ppi*f{@rN)!h|MGx)$p*5eEPm{QpV93mFW|-NV KX=6zM%Kr!M0p)4{ diff --git a/liberty/LibertyBuilder.cc b/liberty/LibertyBuilder.cc index 764e0373..779d5d68 100644 --- a/liberty/LibertyBuilder.cc +++ b/liberty/LibertyBuilder.cc @@ -27,6 +27,14 @@ namespace sta { +void +LibertyBuilder::init(Debug *debug, + Report *report) +{ + debug_ = debug; + report_ = report; +} + LibertyCell * LibertyBuilder::makeCell(LibertyLibrary *library, const char *name, @@ -127,17 +135,55 @@ LibertyBuilder::makeTimingArcs(LibertyCell *cell, LibertyPort *from_port, LibertyPort *to_port, LibertyPort *related_out, - TimingArcAttrsPtr attrs) + TimingArcAttrsPtr attrs, + int /* line */) { - FuncExpr *to_func; - Sequential *seq = nullptr; - switch (attrs->timingType()) { + FuncExpr *to_func = to_port->function(); + Sequential *seq = (to_func && to_func->port()) + ? cell->outputPortSequential(to_func->port()) + : nullptr; + TimingType timing_type = attrs->timingType(); + // Register/latch timing group missing timing_type. + if (attrs->timingType() == TimingType::combinational + && seq) { + if (seq->clock() && seq->clock()->hasPort(from_port)) { + switch (seq->clock()->portTimingSense(from_port)) { + case TimingSense::positive_unate: + timing_type = TimingType::rising_edge; + break; + case TimingSense::negative_unate: + timing_type = TimingType::rising_edge; + break; + default: + break; + } + } + else if (seq->clear() && seq->clear()->hasPort(from_port)) { + timing_type = TimingType::clear; + if (attrs->timingSense() == TimingSense::unknown) { + // Missing timing_sense also. + TimingSense timing_sense = seq->clear()->portTimingSense(from_port); + attrs->setTimingSense(timing_sense); + } + } + else if (seq->preset() && seq->preset()->hasPort(from_port)) { + timing_type = TimingType::preset; + if (attrs->timingSense() == TimingSense::unknown) { + // Missing timing_sense also. + TimingSense timing_sense = seq->preset()->portTimingSense(from_port); + attrs->setTimingSense(timing_sense); + } + } + } + switch (timing_type) { case TimingType::combinational: - to_func = to_port->function(); - if (to_func && to_func->op() == FuncExpr::op_port) - seq = cell->outputPortSequential(to_func->port()); - if (seq && seq->isLatch()) - return makeLatchDtoQArcs(cell, from_port, to_port, related_out, attrs); + if (seq + && seq->isLatch() + && seq->data()->hasPort(from_port)) + // Latch D->Q timing arcs. + return makeLatchDtoQArcs(cell, from_port, to_port, + seq->data()->portTimingSense(from_port), + related_out, attrs); else return makeCombinationalArcs(cell, from_port, to_port, related_out, true, true, attrs); @@ -261,20 +307,26 @@ LibertyBuilder::makeCombinationalArcs(LibertyCell *cell, TimingArcAttrsPtr attrs) { FuncExpr *func = to_port->function(); + FuncExpr *enable = to_port->tristateEnable(); TimingArcSet *arc_set = makeTimingArcSet(cell, from_port, to_port, related_out, TimingRole::combinational(), attrs); TimingSense sense = attrs->timingSense(); - if (sense == TimingSense::unknown && func) { + if (sense == TimingSense::unknown) { // Timing sense not specified - find it from function. - sense = func->portTimingSense(from_port); - if (sense == TimingSense::none - && to_port->direction()->isAnyTristate()) { - // from_port is not an input to function, check tristate enable. - FuncExpr *enable = to_port->tristateEnable(); - if (enable && enable->hasPort(from_port)) - sense = TimingSense::non_unate; - } + if (func && func->hasPort(from_port)) + sense = func->portTimingSense(from_port); + // Check tristate enable. + else if (to_port->direction()->isAnyTristate() + && enable + && enable->hasPort(from_port)) + sense = TimingSense::non_unate; + // Don't warn for functions that reference ff/latch/lut internal ports. + //else if (func->port() && !func->port()->direction()->isInternal()) + // report_->fileWarn(172, cell->filename(), line, + // "timing sense cannot be inferred because pin function does not reference related pin %s.", + // from_port->name()); } + TimingModel *model; RiseFall *to_rf; switch (sense) { @@ -308,9 +360,6 @@ LibertyBuilder::makeCombinationalArcs(LibertyCell *cell, break; case TimingSense::non_unate: case TimingSense::unknown: - // Timing sense none means function does not mention from_port. - // This can happen if the function references an internal port, - // as in fpga lut cells. case TimingSense::none: if (to_fall) { to_rf = RiseFall::fall(); @@ -337,6 +386,7 @@ TimingArcSet * LibertyBuilder::makeLatchDtoQArcs(LibertyCell *cell, LibertyPort *from_port, LibertyPort *to_port, + TimingSense sense, LibertyPort *related_out, TimingArcAttrsPtr attrs) { @@ -346,7 +396,6 @@ LibertyBuilder::makeLatchDtoQArcs(LibertyCell *cell, TimingModel *model; RiseFall *to_rf = RiseFall::rise(); model = attrs->model(to_rf); - TimingSense sense = attrs->timingSense(); if (model) { RiseFall *from_rf = (sense == TimingSense::negative_unate) ? to_rf->opposite() : to_rf; diff --git a/liberty/LibertyBuilder.hh b/liberty/LibertyBuilder.hh index 05493ec3..62286512 100644 --- a/liberty/LibertyBuilder.hh +++ b/liberty/LibertyBuilder.hh @@ -26,12 +26,16 @@ namespace sta { class TimingArcAttrs; class InternalPowerAttrs; class LeakagePowerAttrs; +class Debug; +class Report; class LibertyBuilder { public: LibertyBuilder() {} virtual ~LibertyBuilder() {} + void init(Debug *debug, + Report *report); virtual LibertyCell *makeCell(LibertyLibrary *library, const char *name, const char *filename); @@ -52,7 +56,8 @@ public: LibertyPort *from_port, LibertyPort *to_port, LibertyPort *related_out, - TimingArcAttrsPtr attrs); + TimingArcAttrsPtr attrs, + int line); InternalPower *makeInternalPower(LibertyCell *cell, LibertyPort *port, LibertyPort *related_port, @@ -112,6 +117,7 @@ protected: TimingArcSet *makeLatchDtoQArcs(LibertyCell *cell, LibertyPort *from_port, LibertyPort *to_port, + TimingSense sense, LibertyPort *related_out, TimingArcAttrsPtr attrs); TimingArcSet *makeRegLatchArcs(LibertyCell *cell, @@ -140,6 +146,9 @@ protected: bool to_rise, bool to_fall, TimingArcAttrsPtr attrs); + + Debug *debug_; + Report *report_; }; } // namespace diff --git a/liberty/LibertyReader.cc b/liberty/LibertyReader.cc index 4949245c..abebce66 100644 --- a/liberty/LibertyReader.cc +++ b/liberty/LibertyReader.cc @@ -55,14 +55,12 @@ readLibertyFile(const char *filename, bool infer_latches, Network *network) { - LibertyBuilder builder; - LibertyReader reader(&builder); + LibertyReader reader; return reader.readLibertyFile(filename, infer_latches, network); } -LibertyReader::LibertyReader(LibertyBuilder *builder) : - LibertyGroupVisitor(), - builder_(builder) +LibertyReader::LibertyReader() : + LibertyGroupVisitor() { defineVisitors(); } @@ -137,6 +135,8 @@ LibertyReader::readLibertyFile(const char *filename, default_operating_condition_ = nullptr; receiver_model_ = nullptr; + builder_.init(debug_, report_); + for (auto rf_index : RiseFall::rangeIndex()) { have_input_threshold_[rf_index] = false; have_output_threshold_[rf_index] = false; @@ -1863,7 +1863,7 @@ LibertyReader::beginCell(LibertyGroup *group) const char *name = group->firstName(); if (name) { debugPrint(debug_, "liberty", 1, "cell %s", name); - cell_ = builder_->makeCell(library_, name, filename_); + cell_ = builder_.makeCell(library_, name, filename_); in_bus_ = false; in_bundle_ = false; } @@ -2061,7 +2061,7 @@ void LibertyReader::makeLeakagePowers() { for (LeakagePowerGroup *power_group : leakage_powers_) { - builder_->makeLeakagePower(cell_, power_group); + builder_.makeLeakagePower(cell_, power_group); delete power_group; } leakage_powers_.clear(); @@ -2297,8 +2297,8 @@ LibertyReader::makeTimingArcs(const char *from_port_name, LibertyPort *from_port = from_port_iter.next(); if (from_port->direction()->isOutput()) libWarn(164, timing->line(), "timing group from output port."); - builder_->makeTimingArcs(cell_, from_port, to_port, - related_out_port, timing->attrs()); + builder_.makeTimingArcs(cell_, from_port, to_port, related_out_port, + timing->attrs(), timing->line()); } } else if (from_port_iter.size() > 1 && !to_port->hasMembers()) { @@ -2307,8 +2307,8 @@ LibertyReader::makeTimingArcs(const char *from_port_name, LibertyPort *from_port = from_port_iter.next(); if (from_port->direction()->isOutput()) libWarn(165, timing->line(), "timing group from output port."); - builder_->makeTimingArcs(cell_, from_port, to_port, - related_out_port, timing->attrs()); + builder_.makeTimingArcs(cell_, from_port, to_port, related_out_port, + timing->attrs(), timing->line()); } } else if (from_port_iter.size() == 1 && to_port->hasMembers()) { @@ -2320,8 +2320,8 @@ LibertyReader::makeTimingArcs(const char *from_port_name, LibertyPortMemberIterator bit_iter(to_port); while (bit_iter.hasNext()) { LibertyPort *to_port_bit = bit_iter.next(); - builder_->makeTimingArcs(cell_, from_port, to_port_bit, - related_out_port, timing->attrs()); + builder_.makeTimingArcs(cell_, from_port, to_port_bit, related_out_port, + timing->attrs(), timing->line()); } } } @@ -2335,8 +2335,9 @@ LibertyReader::makeTimingArcs(const char *from_port_name, LibertyPort *to_port_bit = to_iter.next(); if (from_port_bit->direction()->isOutput()) libWarn(167, timing->line(), "timing group from output port."); - builder_->makeTimingArcs(cell_, from_port_bit, to_port_bit, - related_out_port, timing->attrs()); + builder_.makeTimingArcs(cell_, from_port_bit, to_port_bit, + related_out_port, timing->attrs(), + timing->line()); } } else @@ -2353,8 +2354,9 @@ LibertyReader::makeTimingArcs(const char *from_port_name, LibertyPortMemberIterator to_iter(to_port); while (to_iter.hasNext()) { LibertyPort *to_port_bit = to_iter.next(); - builder_->makeTimingArcs(cell_, from_port_bit, to_port_bit, - related_out_port, timing->attrs()); + builder_.makeTimingArcs(cell_, from_port_bit, to_port_bit, + related_out_port, timing->attrs(), + timing->line()); } } } @@ -2655,11 +2657,11 @@ LibertyReader::makeInternalPowers(LibertyPort *port, LibertyPortMemberIterator bit_iter(port); while (bit_iter.hasNext()) { LibertyPort *port_bit = bit_iter.next(); - builder_->makeInternalPower(cell_, port_bit, nullptr, power_group); + builder_.makeInternalPower(cell_, port_bit, nullptr, power_group); } } else - builder_->makeInternalPower(cell_, port, nullptr, power_group); + builder_.makeInternalPower(cell_, port, nullptr, power_group); } } @@ -2673,14 +2675,14 @@ LibertyReader::makeInternalPowers(LibertyPort *port, // one -> one if (related_port_iter.hasNext()) { LibertyPort *related_port = related_port_iter.next(); - builder_->makeInternalPower(cell_, port, related_port, power_group); + builder_.makeInternalPower(cell_, port, related_port, power_group); } } else if (related_port_iter.size() > 1 && !port->hasMembers()) { // bus -> one while (related_port_iter.hasNext()) { LibertyPort *related_port = related_port_iter.next(); - builder_->makeInternalPower(cell_, port, related_port, power_group); + builder_.makeInternalPower(cell_, port, related_port, power_group); } } else if (related_port_iter.size() == 1 && port->hasMembers()) { @@ -2690,7 +2692,7 @@ LibertyReader::makeInternalPowers(LibertyPort *port, LibertyPortMemberIterator bit_iter(port); while (bit_iter.hasNext()) { LibertyPort *port_bit = bit_iter.next(); - builder_->makeInternalPower(cell_, port_bit, related_port, power_group); + builder_.makeInternalPower(cell_, port_bit, related_port, power_group); } } } @@ -2702,7 +2704,7 @@ LibertyReader::makeInternalPowers(LibertyPort *port, while (related_port_iter.hasNext() && to_iter.hasNext()) { LibertyPort *related_port_bit = related_port_iter.next(); LibertyPort *port_bit = to_iter.next(); - builder_->makeInternalPower(cell_, port_bit, related_port_bit, power_group); + builder_.makeInternalPower(cell_, port_bit, related_port_bit, power_group); } } else @@ -2717,7 +2719,7 @@ LibertyReader::makeInternalPowers(LibertyPort *port, LibertyPortMemberIterator to_iter(port); while (to_iter.hasNext()) { LibertyPort *port_bit = to_iter.next(); - builder_->makeInternalPower(cell_, port_bit, related_port_bit, power_group); + builder_.makeInternalPower(cell_, port_bit, related_port_bit, power_group); } } } @@ -2926,7 +2928,7 @@ LibertyReader::beginPin(LibertyGroup *group) debugPrint(debug_, "liberty", 1, " port %s", name); LibertyPort *port = findPort(name); if (port == nullptr) - port = builder_->makePort(cell_, name); + port = builder_.makePort(cell_, name); ports_->push_back(port); } else @@ -2940,7 +2942,7 @@ LibertyReader::beginPin(LibertyGroup *group) if (param->isString()) { const char *name = param->stringValue(); debugPrint(debug_, "liberty", 1, " port %s", name); - LibertyPort *port = builder_->makePort(cell_, name); + LibertyPort *port = builder_.makePort(cell_, name); ports_->push_back(port); } else @@ -3066,7 +3068,7 @@ LibertyReader::visitBusType(LibertyAttr *attr) if (bus_dcl) { for (const char *name : bus_names_) { debugPrint(debug_, "liberty", 1, " bus %s", name); - LibertyPort *port = builder_->makeBusPort(cell_, name, bus_dcl->from(), + LibertyPort *port = builder_.makeBusPort(cell_, name, bus_dcl->from(), bus_dcl->to(), bus_dcl); ports_->push_back(port); } @@ -3112,13 +3114,13 @@ LibertyReader::visitMembers(LibertyAttr *attr) const char *port_name = value->stringValue(); LibertyPort *port = findPort(port_name); if (port == nullptr) - port = builder_->makePort(cell_, port_name); + port = builder_.makePort(cell_, port_name); members->push_back(port); } else libWarn(107, attr, "member is not a string."); } - LibertyPort *port = builder_->makeBundlePort(cell_, name, members); + LibertyPort *port = builder_.makeBundlePort(cell_, name, members); ports_->push_back(port); } } @@ -3668,16 +3670,16 @@ LibertyReader::beginSequential(LibertyGroup *group, LibertyPort *out_port_inv = nullptr; if (out_name) { if (has_size) - out_port = builder_->makeBusPort(cell_, out_name, size - 1, 0, nullptr); + out_port = builder_.makeBusPort(cell_, out_name, size - 1, 0, nullptr); else - out_port = builder_->makePort(cell_,out_name); + out_port = builder_.makePort(cell_,out_name); out_port->setDirection(PortDirection::internal()); } if (out_inv_name) { if (has_size) - out_port_inv = builder_->makeBusPort(cell_, out_inv_name, size - 1, 0, nullptr); + out_port_inv = builder_.makeBusPort(cell_, out_inv_name, size - 1, 0, nullptr); else - out_port_inv = builder_->makePort(cell_, out_inv_name); + out_port_inv = builder_.makePort(cell_, out_inv_name); out_port_inv->setDirection(PortDirection::internal()); } sequential_ = new SequentialGroup(is_register, is_bank, @@ -4337,7 +4339,7 @@ LibertyReader::beginLut(LibertyGroup *group) while (parser.hasNext()) { char *name = parser.next(); if (name[0] != '\0') { - LibertyPort *port = builder_->makePort(cell_, name); + LibertyPort *port = builder_.makePort(cell_, name); port->setDirection(PortDirection::internal()); } } diff --git a/liberty/LibertyReaderPvt.hh b/liberty/LibertyReaderPvt.hh index a27ad2a7..5b799a50 100644 --- a/liberty/LibertyReaderPvt.hh +++ b/liberty/LibertyReaderPvt.hh @@ -63,7 +63,7 @@ typedef Vector OutputWaveformSeq; class LibertyReader : public LibertyGroupVisitor { public: - explicit LibertyReader(LibertyBuilder *builder); + explicit LibertyReader(); virtual ~LibertyReader(); virtual LibertyLibrary *readLibertyFile(const char *filename, bool infer_latches, @@ -557,7 +557,7 @@ protected: Report *report_; Debug *debug_; Network *network_; - LibertyBuilder *builder_; + LibertyBuilder builder_; LibertyVariableMap *var_map_; LibertyLibrary *library_; LibraryGroupMap group_begin_map_; diff --git a/messages.txt b/messages.txt index c66f760e..b9a2810c 100644 --- a/messages.txt +++ b/messages.txt @@ -1,16 +1,16 @@ 0001 DmpCeff.cc:1597 cell %s delay model not supported on SPF parasitics by DMP delay calculator 0002 Liberty.cc:770 cell %s/%s port %s not found in cell %s/%s. 0003 Liberty.cc:796 cell %s/%s %s -> %s timing group %s not found in cell %s/%s. -0004 Liberty.cc:1746 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with %s -> %s setup_%s check. -0005 Liberty.cc:1760 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function positive sense. -0006 Liberty.cc:1768 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function negative sense. +0004 Liberty.cc:1745 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with %s -> %s setup_%s check. +0005 Liberty.cc:1759 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function positive sense. +0006 Liberty.cc:1767 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function negative sense. 0007 LibertyExpr.cc:82 %s references unknown port %s. -0008 ConcreteNetwork.cc:1917 cell type %s can not be linked. +0008 ConcreteNetwork.cc:1909 cell type %s can not be linked. 0009 CycleAccting.cc:87 No common period was found between clocks %s and %s. 0010 Genclks.cc:274 no master clock found for generated clock %s. 0013 Genclks.cc:938 generated clock %s source pin %s missing paths from master clock %s. 0015 Sim.cc:865 propagated logic value %c differs from constraint value of %c on pin %s. -0016 LibertyReader.cc:1037 default_max_fanout is 0.0. +0016 LibertyReader.cc:1041 default_max_fanout is 0.0. 0017 Sta.cc:2093 '%s' is not a valid endpoint. 0018 Sta.cc:2017 '%s' is not a valid start point. 0021 SpefParse.yy:805 %d is not positive. @@ -31,143 +31,144 @@ 0036 LibertyReader.cc:702 slew_upper_threshold_pct_%s not found. 0037 LibertyReader.cc:707 Library %s is missing one or more thresholds. 0038 LibertyReader.cc:786 unknown unit multiplier %s. -0039 LibertyReader.cc:807 unknown unit scale %c. -0040 LibertyReader.cc:810 unknown unit suffix %s. -0041 LibertyReader.cc:836 capacitive_load_units are not ff or pf. -0042 LibertyReader.cc:839 capacitive_load_units are not a string. -0043 LibertyReader.cc:842 capacitive_load_units missing suffix. -0044 LibertyReader.cc:845 capacitive_load_units scale is not a float. -0045 LibertyReader.cc:848 capacitive_load_units missing scale and suffix. -0046 LibertyReader.cc:851 capacitive_load_unit missing values suffix. -0047 LibertyReader.cc:869 delay_model %s not supported. -0048 LibertyReader.cc:873 delay_model %s not supported. -0049 LibertyReader.cc:877 delay_model %s not supported. -0050 LibertyReader.cc:882 delay_model %s not supported. +0039 LibertyReader.cc:809 unknown unit scale %c. +0040 LibertyReader.cc:812 unknown unit suffix %s. +0041 LibertyReader.cc:840 capacitive_load_units are not ff or pf. +0042 LibertyReader.cc:843 capacitive_load_units are not a string. +0043 LibertyReader.cc:846 capacitive_load_units missing suffix. +0044 LibertyReader.cc:849 capacitive_load_units scale is not a float. +0045 LibertyReader.cc:852 capacitive_load_units missing scale and suffix. +0046 LibertyReader.cc:855 capacitive_load_unit missing values suffix. +0047 LibertyReader.cc:873 delay_model %s not supported. +0048 LibertyReader.cc:877 delay_model %s not supported. +0049 LibertyReader.cc:881 delay_model %s not supported. +0050 LibertyReader.cc:886 delay_model %s not supported. . -0051 LibertyReader.cc:885 unknown delay_model %s +0051 LibertyReader.cc:889 unknown delay_model %s . -0052 LibertyReader.cc:904 unknown bus_naming_style format. +0052 LibertyReader.cc:908 unknown bus_naming_style format. 0053 LibertyReader.cc:597 library %s already exists. -0054 LibertyReader.cc:925 voltage_map voltage is not a float. -0055 LibertyReader.cc:928 voltage_map missing voltage. -0056 LibertyReader.cc:931 voltage_map supply name is not a string. -0057 LibertyReader.cc:934 voltage_map missing supply name and voltage. -0058 LibertyReader.cc:937 voltage_map missing values suffix. -0059 LibertyReader.cc:1155 default_wire_load_mode %s not found. +0054 LibertyReader.cc:929 voltage_map voltage is not a float. +0055 LibertyReader.cc:932 voltage_map missing voltage. +0056 LibertyReader.cc:935 voltage_map supply name is not a string. +0057 LibertyReader.cc:938 voltage_map missing supply name and voltage. +0058 LibertyReader.cc:941 voltage_map missing values suffix. +0059 LibertyReader.cc:1159 default_wire_load_mode %s not found. 0060 LibertyReader.cc:680 default_operating_condition %s not found. -0061 LibertyReader.cc:1326 table template missing name. -0062 LibertyReader.cc:1371 missing variable_%d attribute. -0063 LibertyReader.cc:1414 axis type %s not supported. -0064 LibertyReader.cc:1474 bus type %s missing bit_from. -0065 LibertyReader.cc:1476 bus type %s missing bit_to. -0066 LibertyReader.cc:1480 type missing name. -0067 LibertyReader.cc:1507 scaling_factors do not have a name. -0068 LibertyReader.cc:1675 operating_conditions missing name. -0069 LibertyReader.cc:1745 wire_load missing name. -0070 LibertyReader.cc:1788 fanout_length is missing length and fanout. -0071 LibertyReader.cc:1803 wire_load_selection missing name. -0072 LibertyReader.cc:1834 wireload %s not found. -0074 LibertyReader.cc:1841 wire_load_from_area min not a float. -0075 LibertyReader.cc:1844 wire_load_from_area max not a float. -0076 LibertyReader.cc:1847 wire_load_from_area missing parameters. -0077 LibertyReader.cc:1850 wire_load_from_area missing parameters. -0078 LibertyReader.cc:1867 cell missing name. -0079 LibertyReader.cc:1890 cell %s ocv_derate_group %s not found. -0080 LibertyReader.cc:1926 port %s function size does not match port size. -0081 LibertyReader.cc:1994 %s %s bus width mismatch. -0082 LibertyReader.cc:2005 %s %s bus width mismatch. -0083 LibertyReader.cc:2015 clear -0084 LibertyReader.cc:2025 preset -0085 LibertyReader.cc:2061 latch enable function is non-unate for port %s. -0086 LibertyReader.cc:2066 latch enable function is unknown for port %s. -0087 LibertyReader.cc:2142 operating conditions %s not found. -0088 LibertyReader.cc:2145 scaled_cell missing operating condition. -0089 LibertyReader.cc:2148 scaled_cell cell %s has not been defined. -0090 LibertyReader.cc:2151 scaled_cell missing name. -0091 LibertyReader.cc:2177 scaled_cell %s, %s port functions do not match cell port functions. -0092 LibertyReader.cc:2182 scaled_cell ports do not match cell ports. -0093 LibertyReader.cc:2184 scaled_cell %s, %s timing does not match cell timing. -0094 LibertyReader.cc:2203 combinational timing to an input port. -0095 LibertyReader.cc:2294 missing %s_transition. -0096 LibertyReader.cc:2296 missing cell_%s. -0099 LibertyReader.cc:2894 scaling_factors %s not found. -0100 LibertyReader.cc:2937 pin name is not a string. -0101 LibertyReader.cc:2956 pin name is not a string. -0102 LibertyReader.cc:2972 pin name is not a string. -0103 LibertyReader.cc:3050 bus %s bus_type not found. -0104 LibertyReader.cc:3106 bus_type %s not found. -0105 LibertyReader.cc:3109 bus_type is not a string. -0106 LibertyReader.cc:3127 bundle %s member not found. -0107 LibertyReader.cc:3154 member is not a string. -0108 LibertyReader.cc:3161 members attribute is missing values. -0109 LibertyReader.cc:3212 unknown port direction. -0110 LibertyReader.cc:3580 pulse_latch unknown pulse type. -0111 LibertyReader.cc:3958 unknown timing_type %s. -0112 LibertyReader.cc:3978 unknown timing_sense %s. -0113 LibertyReader.cc:4018 mode value is not a string. -0114 LibertyReader.cc:4021 missing mode value. -0115 LibertyReader.cc:4024 mode name is not a string. -0116 LibertyReader.cc:4027 mode missing values. -0117 LibertyReader.cc:4030 mode missing mode name and value. -0118 LibertyReader.cc:2541 unsupported model axis. -0119 LibertyReader.cc:4133 unsupported model axis. -0120 LibertyReader.cc:4162 unsupported model axis. -0121 LibertyReader.cc:4197 unsupported model axis. -0122 LibertyReader.cc:4252 table template %s not found. -0123 LibertyReader.cc:4331 %s is missing values. -0124 LibertyReader.cc:4356 %s is not a list of floats. -0125 LibertyReader.cc:4358 table row has %u columns but axis has %d. -0126 LibertyReader.cc:4368 table has %u rows but axis has %d. -0127 LibertyReader.cc:4421 lut output is not a string. -0128 LibertyReader.cc:4463 mode definition missing name. -0129 LibertyReader.cc:4480 mode value missing name. -0130 LibertyReader.cc:4494 when attribute inside table model. -0131 LibertyReader.cc:4543 %s attribute is not a string. -0132 LibertyReader.cc:4546 %s is not a simple attribute. -0133 LibertyReader.cc:4569 %s is not a simple attribute. -0134 LibertyReader.cc:4582 %s is not a simple attribute. -0135 LibertyReader.cc:4606 %s value %s is not a float. -0136 LibertyReader.cc:4635 %s missing values. -0137 LibertyReader.cc:4639 %s missing values. -0138 LibertyReader.cc:4642 %s is not a complex attribute. -0139 LibertyReader.cc:4668 %s is not a float. -0140 LibertyReader.cc:4691 %s is missing values. -0141 LibertyReader.cc:4694 %s has more than one string. -0142 LibertyReader.cc:4703 %s is missing values. -0143 LibertyReader.cc:4728 %s attribute is not boolean. -0144 LibertyReader.cc:4731 %s attribute is not boolean. -0145 LibertyReader.cc:4734 %s is not a simple attribute. -0146 LibertyReader.cc:4750 attribute %s value %s not recognized. -0147 LibertyReader.cc:4781 unknown early/late value. -0148 LibertyReader.cc:5007 OCV derate group named %s not found. -0149 LibertyReader.cc:5023 ocv_derate missing name. -0150 LibertyReader.cc:5076 unknown rise/fall. -0151 LibertyReader.cc:5096 unknown derate type. -0152 LibertyReader.cc:5128 unsupported model axis. -0153 LibertyReader.cc:5160 unsupported model axis. -0154 LibertyReader.cc:5192 unsupported model axis. -0155 LibertyReader.cc:5263 unknown pg_type. -0156 LibertyReader.cc:5658 port %s subscript out of range. -0157 LibertyReader.cc:5662 port range %s of non-bus port %s. -0158 LibertyReader.cc:5676 port %s not found. -0159 LibertyReader.cc:5746 port %s not found. -0160 LibertyReader.cc:1022 default_max_transition is 0.0. -0161 LibertyReader.cc:3468 max_transition is 0.0. -0162 LibertyReader.cc:4566 %s attribute is not an integer. -0163 LibertyReader.cc:1127 default_fanout_load is 0.0. -0164 LibertyReader.cc:2316 timing group from output port. -0165 LibertyReader.cc:2326 timing group from output port. -0166 LibertyReader.cc:2336 timing group from output port. -0167 LibertyReader.cc:2354 timing group from output port. -0168 LibertyReader.cc:2369 timing group from output port. -0169 LibertyReader.cc:4438 cell %s test_cell redefinition. -0170 LibertyReader.cc:3877 timing group missing related_pin/related_bus_pin. +0061 LibertyReader.cc:1330 table template missing name. +0062 LibertyReader.cc:1375 missing variable_%d attribute. +0063 LibertyReader.cc:1418 axis type %s not supported. +0064 LibertyReader.cc:1478 bus type %s missing bit_from. +0065 LibertyReader.cc:1480 bus type %s missing bit_to. +0066 LibertyReader.cc:1484 type missing name. +0067 LibertyReader.cc:1511 scaling_factors do not have a name. +0068 LibertyReader.cc:1679 operating_conditions missing name. +0069 LibertyReader.cc:1749 wire_load missing name. +0070 LibertyReader.cc:1792 fanout_length is missing length and fanout. +0071 LibertyReader.cc:1807 wire_load_selection missing name. +0072 LibertyReader.cc:1838 wireload %s not found. +0074 LibertyReader.cc:1845 wire_load_from_area min not a float. +0075 LibertyReader.cc:1848 wire_load_from_area max not a float. +0076 LibertyReader.cc:1851 wire_load_from_area missing parameters. +0077 LibertyReader.cc:1854 wire_load_from_area missing parameters. +0078 LibertyReader.cc:1871 cell missing name. +0079 LibertyReader.cc:1894 cell %s ocv_derate_group %s not found. +0080 LibertyReader.cc:1925 port %s function size does not match port size. +0081 LibertyReader.cc:1981 %s %s bus width mismatch. +0082 LibertyReader.cc:1992 %s %s bus width mismatch. +0083 LibertyReader.cc:2002 clear +0084 LibertyReader.cc:2012 preset +0085 LibertyReader.cc:2048 latch enable function is non-unate for port %s. +0086 LibertyReader.cc:2053 latch enable function is unknown for port %s. +0087 LibertyReader.cc:2125 operating conditions %s not found. +0088 LibertyReader.cc:2128 scaled_cell missing operating condition. +0089 LibertyReader.cc:2131 scaled_cell cell %s has not been defined. +0090 LibertyReader.cc:2134 scaled_cell missing name. +0091 LibertyReader.cc:2160 scaled_cell %s, %s port functions do not match cell port functions. +0092 LibertyReader.cc:2165 scaled_cell ports do not match cell ports. +0093 LibertyReader.cc:2167 scaled_cell %s, %s timing does not match cell timing. +0094 LibertyReader.cc:2186 combinational timing to an input port. +0095 LibertyReader.cc:2277 missing %s_transition. +0096 LibertyReader.cc:2279 missing cell_%s. +0099 LibertyReader.cc:2877 scaling_factors %s not found. +0100 LibertyReader.cc:2918 pin name is not a string. +0101 LibertyReader.cc:2935 pin name is not a string. +0102 LibertyReader.cc:2949 pin name is not a string. +0103 LibertyReader.cc:3025 bus %s bus_type not found. +0104 LibertyReader.cc:3077 bus_type %s not found. +0105 LibertyReader.cc:3080 bus_type is not a string. +0106 LibertyReader.cc:3098 bundle %s member not found. +0107 LibertyReader.cc:3121 member is not a string. +0108 LibertyReader.cc:3128 members attribute is missing values. +0109 LibertyReader.cc:3179 unknown port direction. +0110 LibertyReader.cc:3519 pulse_latch unknown pulse type. +0111 LibertyReader.cc:3889 unknown timing_type %s. +0112 LibertyReader.cc:3909 unknown timing_sense %s. +0113 LibertyReader.cc:3949 mode value is not a string. +0114 LibertyReader.cc:3952 missing mode value. +0115 LibertyReader.cc:3955 mode name is not a string. +0116 LibertyReader.cc:3958 mode missing values. +0117 LibertyReader.cc:3961 mode missing mode name and value. +0118 LibertyReader.cc:2526 unsupported model axis. +0119 LibertyReader.cc:4064 unsupported model axis. +0120 LibertyReader.cc:4093 unsupported model axis. +0121 LibertyReader.cc:4128 unsupported model axis. +0122 LibertyReader.cc:4183 table template %s not found. +0123 LibertyReader.cc:4262 %s is missing values. +0124 LibertyReader.cc:4285 %s is not a list of floats. +0125 LibertyReader.cc:4287 table row has %u columns but axis has %d. +0126 LibertyReader.cc:4297 table has %u rows but axis has %d. +0127 LibertyReader.cc:4348 lut output is not a string. +0128 LibertyReader.cc:4390 mode definition missing name. +0129 LibertyReader.cc:4407 mode value missing name. +0130 LibertyReader.cc:4421 when attribute inside table model. +0131 LibertyReader.cc:4470 %s attribute is not a string. +0132 LibertyReader.cc:4473 %s is not a simple attribute. +0133 LibertyReader.cc:4496 %s is not a simple attribute. +0134 LibertyReader.cc:4509 %s is not a simple attribute. +0135 LibertyReader.cc:4533 %s value %s is not a float. +0136 LibertyReader.cc:4562 %s missing values. +0137 LibertyReader.cc:4566 %s missing values. +0138 LibertyReader.cc:4569 %s is not a complex attribute. +0139 LibertyReader.cc:4595 %s is not a float. +0140 LibertyReader.cc:4618 %s is missing values. +0141 LibertyReader.cc:4621 %s has more than one string. +0142 LibertyReader.cc:4630 %s is missing values. +0143 LibertyReader.cc:4655 %s attribute is not boolean. +0144 LibertyReader.cc:4658 %s attribute is not boolean. +0145 LibertyReader.cc:4661 %s is not a simple attribute. +0146 LibertyReader.cc:4677 attribute %s value %s not recognized. +0147 LibertyReader.cc:4708 unknown early/late value. +0148 LibertyReader.cc:4928 OCV derate group named %s not found. +0149 LibertyReader.cc:4944 ocv_derate missing name. +0150 LibertyReader.cc:4997 unknown rise/fall. +0151 LibertyReader.cc:5017 unknown derate type. +0152 LibertyReader.cc:5049 unsupported model axis. +0153 LibertyReader.cc:5081 unsupported model axis. +0154 LibertyReader.cc:5113 unsupported model axis. +0155 LibertyReader.cc:5184 unknown pg_type. +0156 LibertyReader.cc:5579 port %s subscript out of range. +0157 LibertyReader.cc:5583 port range %s of non-bus port %s. +0158 LibertyReader.cc:5597 port %s not found. +0159 LibertyReader.cc:5667 port %s not found. +0160 LibertyReader.cc:1026 default_max_transition is 0.0. +0161 LibertyReader.cc:3413 max_transition is 0.0. +0162 LibertyReader.cc:4493 %s attribute is not an integer. +0163 LibertyReader.cc:1131 default_fanout_load is 0.0. +0164 LibertyReader.cc:2299 timing group from output port. +0165 LibertyReader.cc:2309 timing group from output port. +0166 LibertyReader.cc:2319 timing group from output port. +0167 LibertyReader.cc:2337 timing group from output port. +0168 LibertyReader.cc:2353 timing group from output port. +0169 LibertyReader.cc:4365 cell %s test_cell redefinition. +0170 LibertyReader.cc:3808 timing group missing related_pin/related_bus_pin. +0171 LibertyReader.cc:815 unknown unit suffix %s. 0179 SpefReader.cc:734 %s. 0190 VerilogReader.cc:1782 %s is not a verilog module. 0191 VerilogReader.cc:1787 %s is not a verilog module. 0201 StaTcl.i:118 no network has been linked. 0202 StaTcl.i:132 network does not support edits. -0204 StaTcl.i:4123 POCV support requires compilation with SSTA=1. +0204 StaTcl.i:4129 POCV support requires compilation with SSTA=1. 0206 LibertyExpr.cc:175 %s %s. 0207 GraphDelayCalc1.cc:738 port not found in cell 0208 Graph.cc:793 arc_delay_annotated array bounds exceeded @@ -184,20 +185,20 @@ 0252 PathEnumed.cc:135 enumerated path required time 0253 PathGroup.cc:399 unknown path end type 0254 PathVertexRep.cc:145 tag group missing tag -0255 ReportPath.cc:287 unsupported path type -0256 ReportPath.cc:308 unsupported path type -0257 ReportPath.cc:347 unsupported path type -0259 ReportPath.cc:2376 unsupported path type -0260 Search.cc:2655 max tag group index exceeded -0261 Search.cc:2891 max tag index exceeded -0262 Search.cc:3618 unexpected filter path -0263 Search.cc:3786 tns incr existing vertex -0264 Sta.cc:4190 corresponding timing arc set not found in equiv cells +0255 ReportPath.cc:289 unsupported path type +0256 ReportPath.cc:310 unsupported path type +0257 ReportPath.cc:349 unsupported path type +0259 ReportPath.cc:2378 unsupported path type +0260 Search.cc:2654 max tag group index exceeded +0261 Search.cc:2890 max tag index exceeded +0262 Search.cc:3617 unexpected filter path +0263 Search.cc:3785 tns incr existing vertex +0264 Sta.cc:4215 corresponding timing arc set not found in equiv cells 0265 TagGroup.cc:297 tag group missing tag 0266 Sta.cc:2090 '%s' is not a valid endpoint. 0267 Sta.cc:2014 '%s' is not a valid start point. -0272 StaTcl.i:4109 unknown common clk pessimism mode. -0273 StaTcl.i:5055 unknown clock sense +0272 StaTcl.i:4115 unknown common clk pessimism mode. +0273 StaTcl.i:5064 unknown clock sense 0299 Power.tcl:241 activity cannot be set on clock ports. 0300 CmdUtil.tcl:44 no commands match '$pattern'. 0301 Power.tcl:218 activity should be 0.0 to 1.0 or 2.0 @@ -205,11 +206,11 @@ 0303 Sdc.tcl:1586 -clock ignored for clock objects. 0304 Sdc.tcl:2178 -from/-to keywords ignored for lib_pin, port and pin arguments. 0305 CmdArgs.tcl:166 object '$obj' not found. -0313 CmdArgs.tcl:842 unsupported object type $object_type. -0314 CmdArgs.tcl:857 $arg_name must be a single net. -0315 CmdArgs.tcl:863 $arg_name '$object_type' is not a net. -0316 CmdArgs.tcl:868 $arg_name '$arg' not found. -0318 Search.tcl:1057 unknown path group '$name'. +0313 CmdArgs.tcl:873 unsupported object type $object_type. +0314 CmdArgs.tcl:888 $arg_name must be a single net. +0315 CmdArgs.tcl:894 $arg_name '$object_type' is not a net. +0316 CmdArgs.tcl:899 $arg_name '$arg' not found. +0318 Search.tcl:1060 unknown path group '$name'. 0319 Sdc.tcl:288 $unit scale [format %.0e $scale] does not match library scale [format %.0e $unit_scale]. 0320 Sdc.tcl:437 current_design for other than top cell not supported. 0321 Sdc.tcl:474 patterns argument not supported with -of_objects. @@ -262,7 +263,7 @@ 0369 Sdc.tcl:3303 no valid objects specified for $key. 0370 Sdc.tcl:3336 no valid objects specified for $key 0371 Sdc.tcl:3497 set_wire_load_min_block_size not supported. -0372 NetworkEdit.tcl:129 connect_pins is deprecated. Use connect_pin. +0372 NetworkEdit.tcl:137 connect_pins is deprecated. Use connect_pin. 0373 Sdc.tcl:3647 define_corners must be called before read_liberty. 0374 Sta.cc:2416 maximum corner count exceeded 0400 Util.tcl:44 $cmd $key missing value. @@ -346,14 +347,14 @@ 0480 CmdArgs.tcl:558 $arg_name type '$object_type' is not a library. 0481 CmdArgs.tcl:563 library '$arg' not found. 0482 CmdArgs.tcl:580 $arg_name must be a single lib cell. -0483 CmdArgs.tcl:636 $arg_name must be a single instance. -0484 CmdArgs.tcl:642 $arg_name type '$object_type' is not an instance. -0485 CmdArgs.tcl:647 instance '$arg' not found. -0486 CmdArgs.tcl:666 $arg_name type '$object_type' is not an instance. -0487 CmdArgs.tcl:673 instance '$arg' not found. -0488 CmdArgs.tcl:734 $arg_name type '$object_type' is not a pin or port. -0489 CmdArgs.tcl:741 pin '$arg' not found. -0490 CmdArgs.tcl:761 $arg_name type '$object_type' is not a port. +0483 CmdArgs.tcl:667 $arg_name must be a single instance. +0484 CmdArgs.tcl:673 $arg_name type '$object_type' is not an instance. +0485 CmdArgs.tcl:678 instance '$arg' not found. +0486 CmdArgs.tcl:697 $arg_name type '$object_type' is not an instance. +0487 CmdArgs.tcl:704 instance '$arg' not found. +0488 CmdArgs.tcl:765 $arg_name type '$object_type' is not a pin or port. +0489 CmdArgs.tcl:772 pin '$arg' not found. +0490 CmdArgs.tcl:792 $arg_name type '$object_type' is not a port. 0491 Property.tcl:32 $cmd object is null. 0492 Property.tcl:37 $cmd $type_key must be specified with object name argument. 0493 Property.tcl:80 get_property $object is not an object. @@ -444,13 +445,13 @@ 0583 Sdc.tcl:3525 no wire load model specified. 0584 Sdc.tcl:3586 wire load selection group '$selection_name' not found. 0585 Sdc.tcl:3717 no default operating conditions found. -0586 NetworkEdit.tcl:99 unsupported object type $object_type. -0587 NetworkEdit.tcl:198 unsupported object type $object_type. -0588 NetworkEdit.tcl:216 unsupported object type $object_type. +0586 NetworkEdit.tcl:107 unsupported object type $object_type. +0587 NetworkEdit.tcl:206 unsupported object type $object_type. +0588 NetworkEdit.tcl:224 unsupported object type $object_type. 0589 CmdUtil.tcl:226 unknown namespace $namespc. 0590 Network.tcl:35 instance $instance_path not found. -0591 Network.tcl:241 net $net_path not found. -0592 Network.tcl:244 net $net_path not found. +0591 Network.tcl:221 net $net_path not found. +0592 Network.tcl:224 net $net_path not found. 0593 Link.tcl:34 missing top_cell_name argument and no current_design. 0594 DelayNormal1.cc:203 unknown early/late value. 0595 DelayNormal2.cc:378 unknown early/late value. @@ -462,13 +463,13 @@ 0604 Sdc.tcl:281 unknown $unit prefix '$prefix'. 0605 Sdc.tcl:3547 wire load model '$model_name' not found. 0606 Property.tcl:77 get_property unsupported object type $object_type. -0607 StaTcl.i:4359 unknown report path field %s -0608 StaTcl.i:4371 unknown report path field %s +0607 StaTcl.i:4367 unknown report path field %s +0608 StaTcl.i:4379 unknown report path field %s 0609 Search.tcl:411 -all_violators is deprecated. Use -violators 0610 Search.tcl:491 -max_transition deprecated. Use -max_slew. 0611 Search.tcl:496 -min_transition deprecated. Use -min_slew. 0612 Sdf.tcl:41 -cond_use must be min, max or min_max. -0616 Search.tcl:1008 specify one of -setup and -hold. +0616 Search.tcl:1011 specify one of -setup and -hold. 0617 Sdf.tcl:50 -analysis_type is deprecated. Use set_operating_conditions -analysis_type. 0618 DmpCeff.cc:1581 parasitic Pi model has NaNs. 0619 PathEnum.cc:474 path diversion missing edge. @@ -477,13 +478,14 @@ 0622 PathVertex.cc:279 missing requireds. 0623 PathVertexRep.cc:153 missing arrivals. 0624 PathVertexRep.cc:150 missing arrivals -0701 LibertyWriter.cc:411 %s/%s/%s timing model not supported. -0702 LibertyWriter.cc:431 3 axis table models not supported. -0703 LibertyWriter.cc:571 %s/%s/%s timing arc type %s not supported. -0704 LibertyWriter.cc:284 %s/%s bundled ports not supported. +0625 Liberty.tcl:33 -no_latch_infer is deprecated. +0701 LibertyWriter.cc:413 %s/%s/%s timing model not supported. +0702 LibertyWriter.cc:433 3 axis table models not supported. +0703 LibertyWriter.cc:573 %s/%s/%s timing arc type %s not supported. +0704 LibertyWriter.cc:286 %s/%s bundled ports not supported. 0705 Liberty.cc:815 Liberty cell %s/%s for corner %s/%s not found. 0706 Parasitics.tcl:70 read_spef -increment is deprecated. -0710 LumpedCapDelayCalc.cc:169 gate delay input variable is NaN +0710 LumpedCapDelayCalc.cc:173 gate delay input variable is NaN 0800 VcdReader.cc:110 unhandled vcd command. 0801 VcdReader.cc:146 timescale syntax error. 0802 VcdReader.cc:160 Unknown timescale unit. @@ -491,16 +493,17 @@ 0805 Vcd.cc:172 Unknown variable %s ID %s 0806 ReadVcdActivities.cc:247 clock %s vcd period %s differs from SDC clock period %s 0807 Sdc.tcl:394 only one of -cells, -data_pins, -clock_pins, -async_pins, -output_pins are suppported. -0810 MakeTimingModel.cc:202 clock %s pin %s is inside model block. -0900 LibertyReader.cc:2834 level_shifter_type must be HL, LH, or HL_LH -0901 LibertyReader.cc:2870 switch_cell_type must be coarse_grain or fine_grain -0902 LibertyReader.cc:2452 unsupported model axis. -0903 LibertyReader.cc:4213 %s group not in timing group. -0904 LibertyReader.cc:2435 receiver_capacitance group not in timing or pin group. -0906 LibertyReader.cc:4106 unsupported model axis. -0907 LibertyReader.cc:2480 output_current_%s group not in timing group. -0908 LibertyReader.cc:2585 vector reference_time not found. -0912 LibertyReader.cc:2583 vector index_1 and index_2 must have exactly one value. -0913 LibertyReader.cc:2521 output current waveform %.2e %.2e not found. -0914 LibertyReader.cc:2618 normalized_driver_waveform variable_2 must be normalized_voltage -0915 LibertyReader.cc:2621 normalized_driver_waveform variable_1 must be input_net_transition +0810 MakeTimingModel.cc:203 clock %s pin %s is inside model block. +0900 LibertyReader.cc:2817 level_shifter_type must be HL, LH, or HL_LH +0901 LibertyReader.cc:2853 switch_cell_type must be coarse_grain or fine_grain +0902 LibertyReader.cc:2437 unsupported model axis. +0903 LibertyReader.cc:4144 %s group not in timing group. +0904 LibertyReader.cc:2420 receiver_capacitance group not in timing or pin group. +0906 LibertyReader.cc:4037 unsupported model axis. +0907 LibertyReader.cc:2465 output_current_%s group not in timing group. +0908 LibertyReader.cc:2570 vector reference_time not found. +0912 LibertyReader.cc:2568 vector index_1 and index_2 must have exactly one value. +0913 LibertyReader.cc:2506 output current waveform %.2e %.2e not found. +0914 LibertyReader.cc:2603 normalized_driver_waveform variable_2 must be normalized_voltage +0915 LibertyReader.cc:2606 normalized_driver_waveform variable_1 must be input_net_transition +1640 Search.tcl:904 The transition_time field is deprecated. Use slew instead.