OpenSTA/liberty/LibertyReaderPvt.hh

903 lines
33 KiB
C++
Raw Normal View History

2018-09-28 17:54:21 +02:00
// OpenSTA, Static Timing Analyzer
// Copyright (c) 2024, Parallax Software, Inc.
2018-09-28 17:54:21 +02:00
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2018-09-28 17:54:21 +02:00
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
2018-09-28 17:54:21 +02:00
2020-02-16 01:13:16 +01:00
#pragma once
2018-09-28 17:54:21 +02:00
#include <functional>
2020-04-05 23:53:44 +02:00
#include "Vector.hh"
#include "Map.hh"
#include "StringSeq.hh"
#include "MinMax.hh"
#include "Transition.hh"
#include "TimingArc.hh"
#include "InternalPower.hh"
#include "LeakagePower.hh"
#include "Liberty.hh"
#include "LibertyParser.hh"
#include "LibertyReader.hh"
#include "NetworkClass.hh"
2018-09-28 17:54:21 +02:00
namespace sta {
class LibertyBuilder;
class LibertyReader;
class LibertyFunc;
class PortGroup;
class SequentialGroup;
class RelatedPortGroup;
class TimingGroup;
class InternalPowerGroup;
class LeakagePowerGroup;
class PortNameBitIterator;
class TimingArcBuilder;
class LibertyAttr;
class OutputWaveform;
2018-09-28 17:54:21 +02:00
typedef void (LibertyReader::*LibraryAttrVisitor)(LibertyAttr *attr);
typedef void (LibertyReader::*LibraryGroupVisitor)(LibertyGroup *group);
typedef Map<const char*,LibraryAttrVisitor,CharPtrLess> LibraryAttrMap;
typedef Map<const char*,LibraryGroupVisitor,CharPtrLess> LibraryGroupMap;
typedef Vector<PortGroup*> PortGroupSeq;
typedef Vector<SequentialGroup*> SequentialGroupSeq;
typedef Vector<LibertyFunc*> LibertyFuncSeq;
typedef Vector<TimingGroup*> TimingGroupSeq;
typedef Vector<InternalPowerGroup*> InternalPowerGroupSeq;
typedef Vector<LeakagePowerGroup*> LeakagePowerGroupSeq;
typedef void (LibertyPort::*LibertyPortBoolSetter)(bool value);
typedef Vector<OutputWaveform*> OutputWaveformSeq;
2018-09-28 17:54:21 +02:00
class LibertyReader : public LibertyGroupVisitor
{
public:
explicit LibertyReader();
2018-09-28 17:54:21 +02:00
virtual ~LibertyReader();
virtual LibertyLibrary *readLibertyFile(const char *filename,
bool infer_latches,
Network *network);
LibertyLibrary *library() const { return library_; }
virtual bool save(LibertyGroup *) { return false; }
virtual bool save(LibertyAttr *) { return false; }
virtual bool save(LibertyVariable *) { return false; }
virtual void beginLibrary(LibertyGroup *group);
virtual void endLibrary(LibertyGroup *group);
virtual void endLibraryAttrs(LibertyGroup *group);
virtual void visitAttr(LibertyAttr *attr);
virtual void visitTimeUnit(LibertyAttr *attr);
virtual void visitCapacitiveLoadUnit(LibertyAttr *attr);
2018-12-05 23:18:41 +01:00
virtual void visitResistanceUnit(LibertyAttr *attr);
2018-09-28 17:54:21 +02:00
virtual void visitPullingResistanceUnit(LibertyAttr *attr);
virtual void visitVoltageUnit(LibertyAttr *attr);
virtual void visitCurrentUnit(LibertyAttr *attr);
virtual void visitPowerUnit(LibertyAttr *attr);
2019-07-08 20:50:41 +02:00
virtual void visitDistanceUnit(LibertyAttr *attr);
2018-09-28 17:54:21 +02:00
virtual void parseUnits(LibertyAttr *attr,
const char *suffix,
float &scale_var,
Unit *unit_suffix);
virtual void visitDelayModel(LibertyAttr *attr);
2018-12-21 07:41:54 +01:00
virtual void visitVoltageMap(LibertyAttr *attr);
2018-09-28 17:54:21 +02:00
virtual void visitBusStyle(LibertyAttr *attr);
virtual void visitNomTemp(LibertyAttr *attr);
virtual void visitNomVolt(LibertyAttr *attr);
virtual void visitNomProc(LibertyAttr *attr);
virtual void visitDefaultInoutPinCap(LibertyAttr *attr);
virtual void visitDefaultInputPinCap(LibertyAttr *attr);
virtual void visitDefaultOutputPinCap(LibertyAttr *attr);
virtual void visitDefaultMaxTransition(LibertyAttr *attr);
virtual void visitDefaultMaxFanout(LibertyAttr *attr);
virtual void visitDefaultIntrinsicRise(LibertyAttr *attr);
virtual void visitDefaultIntrinsicFall(LibertyAttr *attr);
virtual void visitDefaultIntrinsic(LibertyAttr *attr,
2019-11-11 23:30:19 +01:00
RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitDefaultInoutPinRiseRes(LibertyAttr *attr);
virtual void visitDefaultInoutPinFallRes(LibertyAttr *attr);
virtual void visitDefaultInoutPinRes(LibertyAttr *attr,
2019-11-11 23:30:19 +01:00
RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitDefaultOutputPinRiseRes(LibertyAttr *attr);
virtual void visitDefaultOutputPinFallRes(LibertyAttr *attr);
virtual void visitDefaultOutputPinRes(LibertyAttr *attr,
2019-11-11 23:30:19 +01:00
RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitDefaultFanoutLoad(LibertyAttr *attr);
virtual void visitDefaultWireLoad(LibertyAttr *attr);
virtual void visitDefaultWireLoadMode(LibertyAttr *attr);
virtual void visitDefaultWireLoadSelection(LibertyAttr *attr);
virtual void visitDefaultOperatingConditions(LibertyAttr *attr);
virtual void visitInputThresholdPctFall(LibertyAttr *attr);
virtual void visitInputThresholdPctRise(LibertyAttr *attr);
virtual void visitInputThresholdPct(LibertyAttr *attr,
2019-11-11 23:30:19 +01:00
RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitOutputThresholdPctFall(LibertyAttr *attr);
virtual void visitOutputThresholdPctRise(LibertyAttr *attr);
virtual void visitOutputThresholdPct(LibertyAttr *attr,
2019-11-11 23:30:19 +01:00
RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitSlewLowerThresholdPctFall(LibertyAttr *attr);
virtual void visitSlewLowerThresholdPctRise(LibertyAttr *attr);
virtual void visitSlewLowerThresholdPct(LibertyAttr *attr,
2019-11-11 23:30:19 +01:00
RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitSlewUpperThresholdPctFall(LibertyAttr *attr);
virtual void visitSlewUpperThresholdPctRise(LibertyAttr *attr);
virtual void visitSlewUpperThresholdPct(LibertyAttr *attr,
2019-11-11 23:30:19 +01:00
RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitSlewDerateFromLibrary(LibertyAttr *attr);
virtual void beginTableTemplateDelay(LibertyGroup *group);
virtual void beginTableTemplateOutputCurrent(LibertyGroup *group);
virtual void beginTableTemplate(LibertyGroup *group,
TableTemplateType type);
2018-09-28 17:54:21 +02:00
virtual void endTableTemplate(LibertyGroup *group);
virtual void visitVariable1(LibertyAttr *attr);
virtual void visitVariable2(LibertyAttr *attr);
virtual void visitVariable3(LibertyAttr *attr);
virtual void visitIndex1(LibertyAttr *attr);
virtual void visitIndex2(LibertyAttr *attr);
virtual void visitIndex3(LibertyAttr *attr);
virtual void beginType(LibertyGroup *group);
virtual void endType(LibertyGroup *group);
virtual void visitBitFrom(LibertyAttr *attr);
virtual void visitBitTo(LibertyAttr *attr);
virtual void beginCell(LibertyGroup *group);
virtual void endCell(LibertyGroup *group);
virtual void beginScaledCell(LibertyGroup *group);
virtual void endScaledCell(LibertyGroup *group);
virtual void checkScaledCell(LibertyGroup *group);
virtual void finishPortGroups();
virtual void checkPort(LibertyPort *port,
int line);
virtual void makeTimingArcs(PortGroup *port_group);
virtual void makeInternalPowers(PortGroup *port_group);
virtual void makeCellSequentials();
virtual void makeCellSequential(SequentialGroup *seq);
virtual void makeLeakagePowers();
virtual void parseCellFuncs();
virtual void makeLibertyFunc(const char *expr,
FuncExpr *&func_ref,
bool invert,
const char *attr_name,
LibertyStmt *stmt);
virtual void makeTimingArcs(LibertyPort *to_port,
TimingGroup *timing);
virtual void makeTimingArcs(const char *from_port_name,
PortNameBitIterator &from_port_iter,
LibertyPort *to_port,
LibertyPort *related_out_port,
TimingGroup *timing);
virtual void makeTimingArcs(LibertyPort *to_port,
LibertyPort *related_out_port,
TimingGroup *timing);
2018-09-28 17:54:21 +02:00
virtual void visitClockGatingIntegratedCell(LibertyAttr *attr);
virtual void visitArea(LibertyAttr *attr);
virtual void visitDontUse(LibertyAttr *attr);
2018-11-26 18:15:52 +01:00
virtual void visitIsMacro(LibertyAttr *attr);
2020-06-10 05:02:59 +02:00
virtual void visitIsMemory(LibertyAttr *attr);
2018-11-26 18:15:52 +01:00
virtual void visitIsPad(LibertyAttr *attr);
virtual void visitIsClockCell(LibertyAttr *attr);
virtual void visitIsLevelShifter(LibertyAttr *attr);
virtual void visitLevelShifterType(LibertyAttr *attr);
virtual void visitIsIsolationCell(LibertyAttr *attr);
virtual void visitAlwaysOn(LibertyAttr *attr);
virtual void visitSwitchCellType(LibertyAttr *attr);
2018-11-26 18:15:52 +01:00
virtual void visitInterfaceTiming(LibertyAttr *attr);
2018-09-28 17:54:21 +02:00
virtual void visitScalingFactors(LibertyAttr *attr);
2018-11-26 18:15:52 +01:00
virtual void visitCellLeakagePower(LibertyAttr *attr);
2018-09-28 17:54:21 +02:00
virtual void beginPin(LibertyGroup *group);
virtual void endPin(LibertyGroup *group);
virtual void beginBus(LibertyGroup *group);
virtual void endBus(LibertyGroup *group);
virtual void beginBundle(LibertyGroup *group);
virtual void endBundle(LibertyGroup *group);
virtual void beginBusOrBundle(LibertyGroup *group);
2019-02-16 21:07:59 +01:00
virtual void endBusOrBundle();
virtual void endPorts();
2018-09-28 17:54:21 +02:00
virtual void setPortCapDefault(LibertyPort *port);
virtual void visitMembers(LibertyAttr *attr);
virtual void visitDirection(LibertyAttr *attr);
virtual void visitFunction(LibertyAttr *attr);
virtual void visitThreeState(LibertyAttr *attr);
virtual void visitBusType(LibertyAttr *attr);
virtual void visitCapacitance(LibertyAttr *attr);
virtual void visitRiseCap(LibertyAttr *attr);
virtual void visitFallCap(LibertyAttr *attr);
virtual void visitRiseCapRange(LibertyAttr *attr);
virtual void visitFallCapRange(LibertyAttr *attr);
virtual void visitFanoutLoad(LibertyAttr *attr);
2018-09-28 17:54:21 +02:00
virtual void visitMaxFanout(LibertyAttr *attr);
virtual void visitMinFanout(LibertyAttr *attr);
virtual void visitFanout(LibertyAttr *attr,
MinMax *min_max);
virtual void visitMaxTransition(LibertyAttr *attr);
virtual void visitMinTransition(LibertyAttr *attr);
virtual void visitMinMaxTransition(LibertyAttr *attr,
MinMax *min_max);
virtual void visitMaxCapacitance(LibertyAttr *attr);
virtual void visitMinCapacitance(LibertyAttr *attr);
virtual void visitMinMaxCapacitance(LibertyAttr *attr,
MinMax *min_max);
virtual void visitMinPeriod(LibertyAttr *attr);
virtual void visitMinPulseWidthLow(LibertyAttr *attr);
virtual void visitMinPulseWidthHigh(LibertyAttr *attr);
virtual void visitMinPulseWidth(LibertyAttr *attr,
const RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitPulseClock(LibertyAttr *attr);
virtual void visitClockGateClockPin(LibertyAttr *attr);
virtual void visitClockGateEnablePin(LibertyAttr *attr);
virtual void visitClockGateOutPin(LibertyAttr *attr);
void visitIsPllFeedbackPin(LibertyAttr *attr);
virtual void visitSignalType(LibertyAttr *attr);
2018-11-26 18:15:52 +01:00
EarlyLateAll *getAttrEarlyLate(LibertyAttr *attr);
2018-09-28 17:54:21 +02:00
virtual void visitClock(LibertyAttr *attr);
virtual void visitIsolationCellDataPin(LibertyAttr *attr);
virtual void visitIsolationCellEnablePin(LibertyAttr *attr);
virtual void visitLevelShifterDataPin(LibertyAttr *attr);
virtual void visitSwitchPin(LibertyAttr *attr);
void visitPortBoolAttr(LibertyAttr *attr,
LibertyPortBoolSetter setter);
2018-09-28 17:54:21 +02:00
virtual void beginScalingFactors(LibertyGroup *group);
virtual void endScalingFactors(LibertyGroup *group);
virtual void defineScalingFactorVisitors();
virtual void visitScaleFactorSuffix(LibertyAttr *attr);
virtual void visitScaleFactorPrefix(LibertyAttr *attr);
virtual void visitScaleFactorHiLow(LibertyAttr *attr);
virtual void visitScaleFactor(LibertyAttr *attr);
virtual void beginOpCond(LibertyGroup *group);
virtual void endOpCond(LibertyGroup *group);
virtual void visitProc(LibertyAttr *attr);
virtual void visitVolt(LibertyAttr *attr);
virtual void visitTemp(LibertyAttr *attr);
virtual void visitTreeType(LibertyAttr *attr);
virtual void beginWireload(LibertyGroup *group);
virtual void endWireload(LibertyGroup *group);
virtual void visitResistance(LibertyAttr *attr);
virtual void visitSlope(LibertyAttr *attr);
virtual void visitFanoutLength(LibertyAttr *attr);
virtual void beginWireloadSelection(LibertyGroup *group);
virtual void endWireloadSelection(LibertyGroup *group);
virtual void visitWireloadFromArea(LibertyAttr *attr);
virtual void beginFF(LibertyGroup *group);
virtual void endFF(LibertyGroup *group);
virtual void beginFFBank(LibertyGroup *group);
virtual void endFFBank(LibertyGroup *group);
virtual void beginLatch(LibertyGroup *group);
virtual void endLatch(LibertyGroup *group);
virtual void beginLatchBank(LibertyGroup *group);
virtual void endLatchBank(LibertyGroup *group);
virtual void beginSequential(LibertyGroup *group,
bool is_register,
bool is_bank);
virtual void seqPortNames(LibertyGroup *group,
const char *&out_name,
const char *&out_inv_name,
bool &has_size,
int &size);
virtual void checkLatchEnableSense(FuncExpr *enable_func,
int line);
virtual void visitClockedOn(LibertyAttr *attr);
virtual void visitDataIn(LibertyAttr *attr);
virtual void visitClear(LibertyAttr *attr);
virtual void visitPreset(LibertyAttr *attr);
virtual void visitClrPresetVar1(LibertyAttr *attr);
virtual void visitClrPresetVar2(LibertyAttr *attr);
virtual void beginTiming(LibertyGroup *group);
virtual void endTiming(LibertyGroup *group);
virtual void visitRelatedPin(LibertyAttr *attr);
virtual void visitRelatedPin(LibertyAttr *attr,
RelatedPortGroup *group);
virtual void visitRelatedBusPins(LibertyAttr *attr);
virtual void visitRelatedBusPins(LibertyAttr *attr,
RelatedPortGroup *group);
virtual void visitRelatedOutputPin(LibertyAttr *attr);
virtual void visitTimingType(LibertyAttr *attr);
virtual void visitTimingSense(LibertyAttr *attr);
virtual void visitSdfCondStart(LibertyAttr *attr);
virtual void visitSdfCondEnd(LibertyAttr *attr);
virtual void visitMode(LibertyAttr *attr);
virtual void visitIntrinsicRise(LibertyAttr *attr);
virtual void visitIntrinsicFall(LibertyAttr *attr);
virtual void visitIntrinsic(LibertyAttr *attr,
2019-11-11 23:30:19 +01:00
RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitRiseResistance(LibertyAttr *attr);
virtual void visitFallResistance(LibertyAttr *attr);
virtual void visitRiseFallResistance(LibertyAttr *attr,
2019-11-11 23:30:19 +01:00
RiseFall *rf);
2018-09-28 17:54:21 +02:00
virtual void visitValue(LibertyAttr *attr);
virtual void visitValues(LibertyAttr *attr);
virtual void beginCellRise(LibertyGroup *group);
virtual void beginCellFall(LibertyGroup *group);
virtual void endCellRiseFall(LibertyGroup *group);
virtual void beginRiseTransition(LibertyGroup *group);
virtual void endRiseFallTransition(LibertyGroup *group);
virtual void beginFallTransition(LibertyGroup *group);
virtual void beginRiseConstraint(LibertyGroup *group);
virtual void endRiseFallConstraint(LibertyGroup *group);
virtual void beginFallConstraint(LibertyGroup *group);
virtual void beginRiseTransitionDegredation(LibertyGroup *group);
virtual void beginFallTransitionDegredation(LibertyGroup *group);
virtual void endRiseFallTransitionDegredation(LibertyGroup *group);
virtual void beginTableModel(LibertyGroup *group,
TableTemplateType type,
2019-11-11 23:30:19 +01:00
RiseFall *rf,
2018-09-28 17:54:21 +02:00
float scale,
ScaleFactorType scale_factor_type);
virtual void endTableModel();
virtual void beginTimingTableModel(LibertyGroup *group,
2019-11-11 23:30:19 +01:00
RiseFall *rf,
2018-09-28 17:54:21 +02:00
ScaleFactorType scale_factor_type);
virtual void beginTable(LibertyGroup *group,
TableTemplateType type,
float scale);
2018-09-28 17:54:21 +02:00
virtual void endTable();
virtual void makeTable(LibertyAttr *attr,
float scale);
virtual FloatTable *makeFloatTable(LibertyAttr *attr,
size_t rows,
size_t cols,
float scale);
virtual void beginLut(LibertyGroup *group);
virtual void endLut(LibertyGroup *group);
virtual void beginTestCell(LibertyGroup *group);
virtual void endTestCell(LibertyGroup *group);
virtual void beginModeDef(LibertyGroup *group);
virtual void endModeDef(LibertyGroup *group);
virtual void beginModeValue(LibertyGroup *group);
virtual void endModeValue(LibertyGroup *group);
virtual void visitWhen(LibertyAttr *attr);
virtual void visitSdfCond(LibertyAttr *attr);
// Power attributes.
virtual void beginTableTemplatePower(LibertyGroup *group);
2018-09-28 17:54:21 +02:00
virtual void beginLeakagePower(LibertyGroup *group);
virtual void endLeakagePower(LibertyGroup *group);
virtual void beginInternalPower(LibertyGroup *group);
virtual void endInternalPower(LibertyGroup *group);
virtual InternalPowerGroup *makeInternalPowerGroup(int line);
virtual void beginFallPower(LibertyGroup *group);
virtual void beginRisePower(LibertyGroup *group);
virtual void endRiseFallPower(LibertyGroup *group);
virtual void endPower(LibertyGroup *group);
2018-12-24 22:07:10 +01:00
virtual void visitRelatedGroundPin(LibertyAttr *attr);
2018-11-26 18:15:52 +01:00
virtual void visitRelatedPowerPin(LibertyAttr *attr);
virtual void visitRelatedPgPin(LibertyAttr *attr);
2018-09-28 17:54:21 +02:00
virtual void makeInternalPowers(LibertyPort *port,
InternalPowerGroup *power_group);
virtual void makeInternalPowers(LibertyPort *port,
const char *related_port_name,
PortNameBitIterator &related_port_iter,
InternalPowerGroup *power_group);
// AOCV attributes.
virtual void beginTableTemplateOcv(LibertyGroup *group);
2018-09-28 17:54:21 +02:00
virtual void visitOcvArcDepth(LibertyAttr *attr);
virtual void visitDefaultOcvDerateGroup(LibertyAttr *attr);
virtual void visitOcvDerateGroup(LibertyAttr *attr);
virtual void beginOcvDerate(LibertyGroup *group);
virtual void endOcvDerate(LibertyGroup *group);
virtual void beginOcvDerateFactors(LibertyGroup *group);
virtual void endOcvDerateFactors(LibertyGroup *group);
virtual void visitRfType(LibertyAttr *attr);
virtual void visitDerateType(LibertyAttr *attr);
virtual void visitPathType(LibertyAttr *attr);
2018-11-26 18:15:52 +01:00
// POCV attributes.
virtual void beginOcvSigmaCellRise(LibertyGroup *group);
virtual void beginOcvSigmaCellFall(LibertyGroup *group);
virtual void endOcvSigmaCell(LibertyGroup *group);
virtual void beginOcvSigmaRiseTransition(LibertyGroup *group);
virtual void beginOcvSigmaFallTransition(LibertyGroup *group);
virtual void endOcvSigmaTransition(LibertyGroup *group);
2019-06-04 17:12:22 +02:00
virtual void beginOcvSigmaRiseConstraint(LibertyGroup *group);
virtual void beginOcvSigmaFallConstraint(LibertyGroup *group);
virtual void endOcvSigmaConstraint(LibertyGroup *group);
2018-11-26 18:15:52 +01:00
virtual void visitSigmaType(LibertyAttr *attr);
2018-12-24 22:07:10 +01:00
// PgPin group.
virtual void beginPgPin(LibertyGroup *group);
virtual void endPgPin(LibertyGroup *group);
virtual void visitPgType(LibertyAttr *attr);
virtual void visitVoltageName(LibertyAttr *attr);
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
// ccs receiver
virtual void beginReceiverCapacitance(LibertyGroup *group);
virtual void endReceiverCapacitance(LibertyGroup *group);
virtual void beginReceiverCapacitance1Rise(LibertyGroup *group);
virtual void endReceiverCapacitanceRiseFall(LibertyGroup *group);
virtual void beginReceiverCapacitance1Fall(LibertyGroup *group);
virtual void beginReceiverCapacitance2Rise(LibertyGroup *group);
virtual void beginReceiverCapacitance2Fall(LibertyGroup *group);
void beginReceiverCapacitance(LibertyGroup *group,
int index,
RiseFall *rf);
void endReceiverCapacitance(LibertyGroup *group,
int index,
RiseFall *rf);
// ccs
void beginOutputCurrentRise(LibertyGroup *group);
void beginOutputCurrentFall(LibertyGroup *group);
void beginOutputCurrent(RiseFall *rf,
LibertyGroup *group);
void endOutputCurrentRiseFall(LibertyGroup *group);
void beginVector(LibertyGroup *group);
void endVector(LibertyGroup *group);
void visitReferenceTime(LibertyAttr *attr);
void beginNormalizedDriverWaveform(LibertyGroup *group);
void endNormalizedDriverWaveform(LibertyGroup *group);
void visitDriverWaveformName(LibertyAttr *attr);
void visitDriverWaveformRise(LibertyAttr *attr);
void visitDriverWaveformFall(LibertyAttr *attr);
void visitDriverWaveformRiseFall(LibertyAttr *attr,
const RiseFall *rf);
2018-09-28 17:54:21 +02:00
// Visitors for derived classes to overload.
virtual void beginGroup1(LibertyGroup *) {}
virtual void beginGroup2(LibertyGroup *) {}
virtual void beginGroup3(LibertyGroup *) {}
virtual void beginGroup4(LibertyGroup *) {}
virtual void beginGroup5(LibertyGroup *) {}
virtual void endGroup1(LibertyGroup *) {}
virtual void endGroup2(LibertyGroup *) {}
virtual void endGroup3(LibertyGroup *) {}
virtual void endGroup4(LibertyGroup *) {}
virtual void endGroup5(LibertyGroup *) {}
virtual void visitAttr1(LibertyAttr *) {}
virtual void visitAttr2(LibertyAttr *) {}
virtual void visitAttr3(LibertyAttr *) {}
virtual void visitAttr4(LibertyAttr *) {}
virtual void visitAttr5(LibertyAttr *) {}
virtual void visitAttr6(LibertyAttr *) {}
virtual void visitAttr7(LibertyAttr *) {}
virtual void visitAttr8(LibertyAttr *) {}
virtual void visitAttr9(LibertyAttr *) {}
protected:
TimingModel *makeScalarCheckModel(float value,
ScaleFactorType scale_factor_type,
const RiseFall *rf);
void makeMinPulseWidthArcs(LibertyPort *port,
int line);
2019-04-19 03:01:10 +02:00
void setEnergyScale();
2018-09-28 17:54:21 +02:00
void defineVisitors();
virtual void begin(LibertyGroup *group);
virtual void end(LibertyGroup *group);
void defineGroupVisitor(const char *type,
LibraryGroupVisitor begin_visitor,
LibraryGroupVisitor end_visitor);
void defineAttrVisitor(const char *attr_name,
LibraryAttrVisitor visitor);
void parseNames(const char *name_str);
void clearAxisValues();
void makeTableAxis(int index);
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
2018-09-28 17:54:21 +02:00
StringSeq *parseNameList(const char *name_list);
LibertyPort *findPort(const char *port_name);
LibertyPort *findPort(LibertyCell *cell,
const char *port_name);
float defaultCap(LibertyPort *port);
virtual void visitVariable(LibertyVariable *var);
void visitPorts(std::function<void (LibertyPort *port)> func);
2018-09-28 17:54:21 +02:00
const char *getAttrString(LibertyAttr *attr);
void getAttrInt(LibertyAttr *attr,
// Return values.
int &value,
bool &exists);
void getAttrFloat(LibertyAttr *attr,
// Return values.
float &value,
bool &valid);
void getAttrFloat(LibertyAttr *attr,
LibertyAttrValue *attr_value,
// Return values.
float &value,
bool &valid);
2018-09-28 17:54:21 +02:00
void getAttrFloat2(LibertyAttr *attr,
// Return values.
float &value1,
float &value2,
bool &exists);
void parseStringFloatList(const char *float_list,
float scale,
FloatSeq *values,
LibertyAttr *attr);
LogicValue getAttrLogicValue(LibertyAttr *attr);
void getAttrBool(LibertyAttr *attr,
// Return values.
bool &value,
bool &exists);
void visitVariable(int index,
LibertyAttr *attr);
void visitIndex(int index,
LibertyAttr *attr);
TableAxisPtr makeAxis(int index,
LibertyGroup *group);
2018-09-28 17:54:21 +02:00
FloatSeq *readFloatSeq(LibertyAttr *attr,
float scale);
void variableValue(const char *var,
float &value,
bool &exists);
FuncExpr *parseFunc(const char *func,
const char *attr_name,
int line);
2020-12-14 02:21:35 +01:00
void libWarn(int id,
LibertyStmt *stmt,
2018-09-28 17:54:21 +02:00
const char *fmt,
...)
2020-12-14 02:21:35 +01:00
__attribute__((format (printf, 4, 5)));
void libWarn(int id,
int line,
2018-09-28 17:54:21 +02:00
const char *fmt,
...)
2020-12-14 02:21:35 +01:00
__attribute__((format (printf, 4, 5)));
void libError(int id,
LibertyStmt *stmt,
2018-09-28 17:54:21 +02:00
const char *fmt, ...)
2020-12-14 02:21:35 +01:00
__attribute__((format (printf, 4, 5)));
2018-09-28 17:54:21 +02:00
const char *filename_;
bool infer_latches_;
Report *report_;
Debug *debug_;
Network *network_;
LibertyBuilder builder_;
2018-09-28 17:54:21 +02:00
LibertyVariableMap *var_map_;
LibertyLibrary *library_;
LibraryGroupMap group_begin_map_;
LibraryGroupMap group_end_map_;
LibraryAttrMap attr_visitor_map_;
Wireload *wireload_;
WireloadSelection *wireload_selection_;
const char *default_wireload_;
const char *default_wireload_selection_;
ScaleFactors *scale_factors_;
ScaleFactors *save_scale_factors_;
2019-11-11 23:30:19 +01:00
bool have_input_threshold_[RiseFall::index_count];
bool have_output_threshold_[RiseFall::index_count];
bool have_slew_lower_threshold_[RiseFall::index_count];
bool have_slew_upper_threshold_[RiseFall::index_count];
2018-09-28 17:54:21 +02:00
TableTemplate *tbl_template_;
LibertyCell *cell_;
LibertyCell *save_cell_;
LibertyCell *scaled_cell_owner_;
TestCell *test_cell_;
const char *ocv_derate_name_;
PortGroupSeq cell_port_groups_;
OperatingConditions *op_cond_;
LibertyPortSeq *ports_;
LibertyPort *port_; // Used by test_cell.
PortGroup *port_group_;
LibertyPortSeq *saved_ports_;
PortGroup *saved_port_group_;
StringSeq bus_names_;
bool in_bus_;
bool in_bundle_;
TableAxisVariable axis_var_[3];
FloatSeq *axis_values_[3];
int type_bit_from_;
bool type_bit_from_exists_;
int type_bit_to_;
bool type_bit_to_exists_;
SequentialGroup *sequential_;
SequentialGroupSeq cell_sequentials_;
TimingGroup *timing_;
InternalPowerGroup *internal_power_;
LeakagePowerGroup *leakage_power_;
LeakagePowerGroupSeq leakage_powers_;
2019-11-11 23:30:19 +01:00
RiseFall *rf_;
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
int index_;
2018-09-28 17:54:21 +02:00
OcvDerate *ocv_derate_;
2019-11-11 23:30:19 +01:00
RiseFallBoth *rf_type_;
2018-11-26 18:15:52 +01:00
EarlyLateAll *derate_type_;
EarlyLateAll *sigma_type_;
2018-09-28 17:54:21 +02:00
PathType path_type_;
2018-12-24 22:07:10 +01:00
LibertyPgPort *pg_port_;
2018-09-28 17:54:21 +02:00
ScaleFactorType scale_factor_type_;
TableAxisPtr axis_[3];
TablePtr table_;
2018-09-28 17:54:21 +02:00
float table_model_scale_;
ModeDef *mode_def_;
ModeValueDef *mode_value_;
LibertyFuncSeq cell_funcs_;
float time_scale_;
float cap_scale_;
float res_scale_;
float volt_scale_;
2019-07-08 20:50:41 +02:00
float current_scale_;
2018-09-28 17:54:21 +02:00
float power_scale_;
2018-11-26 18:15:52 +01:00
float energy_scale_;
2019-07-08 20:50:41 +02:00
float distance_scale_;
const char *default_operating_condition_;
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
ReceiverModelPtr receiver_model_;
OutputWaveformSeq output_currents_;
OutputWaveforms *output_waveforms_;
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
float reference_time_;
bool reference_time_exists_;
const char *driver_waveform_name_;
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
2019-08-14 06:34:35 +02:00
static constexpr char escape_ = '\\';
2018-09-28 17:54:21 +02:00
private:
friend class PortNameBitIterator;
friend class TimingGroup;
};
// Reference to a function that will be parsed at the end of the cell
// definition when all of the ports are defined.
class LibertyFunc
{
public:
LibertyFunc(const char *expr,
FuncExpr *&func_ref,
bool invert,
const char *attr_name,
int line);
~LibertyFunc();
const char *expr() const { return expr_; }
FuncExpr *&funcRef() const { return func_ref_; }
bool invert() const { return invert_; }
const char *attrName() const { return attr_name_; }
int line() const { return line_; }
protected:
const char *expr_;
FuncExpr *&func_ref_;
bool invert_;
const char *attr_name_;
int line_;
};
// Port attributes that refer to other ports cannot be parsed
// until all of the ports are defined. This class saves them
// so they can be parsed at the end of the cell.
class PortGroup
{
public:
PortGroup(LibertyPortSeq *ports,
int line);
~PortGroup();
LibertyPortSeq *ports() const { return ports_; }
TimingGroupSeq &timingGroups() { return timings_; }
2018-09-28 17:54:21 +02:00
void addTimingGroup(TimingGroup *timing);
InternalPowerGroupSeq &internalPowerGroups() { return internal_power_groups_; }
2018-09-28 17:54:21 +02:00
void addInternalPowerGroup(InternalPowerGroup *internal_power);
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
ReceiverModel *receiverModel() const { return receiver_model_; }
void setReceiverModel(ReceiverModelPtr receiver_model);
2018-09-28 17:54:21 +02:00
int line() const { return line_; }
private:
LibertyPortSeq *ports_;
TimingGroupSeq timings_;
InternalPowerGroupSeq internal_power_groups_;
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
ReceiverModel *receiver_model_;
2018-09-28 17:54:21 +02:00
int line_;
};
class SequentialGroup
{
public:
SequentialGroup(bool is_register,
bool is_bank,
LibertyPort *out_port,
LibertyPort *out_inv_port,
int size,
int line);
~SequentialGroup();
LibertyPort *outPort() const { return out_port_; }
LibertyPort *outInvPort() const { return out_inv_port_; }
int size() const { return size_; }
bool isRegister() const { return is_register_; }
bool isBank() const { return is_bank_; }
const char *clock() const { return clk_; }
void setClock(const char *clk);
const char *data() const { return data_; }
void setData(const char *data);
const char *clear() const { return clear_; }
void setClear(const char *clr);
const char *preset() const { return preset_; }
void setPreset(const char *preset);
LogicValue clrPresetVar1() const { return clr_preset_var1_; }
void setClrPresetVar1(LogicValue var);
LogicValue clrPresetVar2() const { return clr_preset_var2_; }
void setClrPresetVar2(LogicValue var);
int line() const { return line_; }
protected:
bool is_register_;
bool is_bank_;
LibertyPort *out_port_;
LibertyPort *out_inv_port_;
int size_;
const char *clk_;
const char *data_;
const char *preset_;
const char *clear_;
LogicValue clr_preset_var1_;
LogicValue clr_preset_var2_;
int line_;
};
// Liberty group with related_pins group attribute.
class RelatedPortGroup
{
public:
explicit RelatedPortGroup(int line);
virtual ~RelatedPortGroup();
int line() const { return line_; }
StringSeq *relatedPortNames() const { return related_port_names_; }
void setRelatedPortNames(StringSeq *names);
bool isOneToOne() const { return is_one_to_one_; }
void setIsOneToOne(bool one);
protected:
StringSeq *related_port_names_;
bool is_one_to_one_;
int line_;
};
class TimingGroup : public RelatedPortGroup
2018-09-28 17:54:21 +02:00
{
public:
explicit TimingGroup(int line);
virtual ~TimingGroup();
TimingArcAttrsPtr attrs() { return attrs_; }
2018-09-28 17:54:21 +02:00
const char *relatedOutputPortName()const {return related_output_port_name_;}
void setRelatedOutputPortName(const char *name);
2019-11-11 23:30:19 +01:00
void intrinsic(RiseFall *rf,
2018-09-28 17:54:21 +02:00
// Return values.
float &value,
bool &exists);
2019-11-11 23:30:19 +01:00
void setIntrinsic(RiseFall *rf,
2018-09-28 17:54:21 +02:00
float value);
2019-11-11 23:30:19 +01:00
void resistance(RiseFall *rf,
2018-09-28 17:54:21 +02:00
// Return values.
float &value,
bool &exists);
2019-11-11 23:30:19 +01:00
void setResistance(RiseFall *rf,
2018-09-28 17:54:21 +02:00
float value);
2019-11-11 23:30:19 +01:00
TableModel *cell(RiseFall *rf);
void setCell(RiseFall *rf,
2018-09-28 17:54:21 +02:00
TableModel *model);
2019-11-11 23:30:19 +01:00
TableModel *constraint(RiseFall *rf);
void setConstraint(RiseFall *rf,
2018-09-28 17:54:21 +02:00
TableModel *model);
2019-11-11 23:30:19 +01:00
TableModel *transition(RiseFall *rf);
void setTransition(RiseFall *rf,
2018-09-28 17:54:21 +02:00
TableModel *model);
DelayCalc reorg commit 410ed56c2c2d0d7afb0e84d0c65d5ff75234e9e3 Author: James Cherry <cherry@parallaxsw.com> Date: Sun Nov 19 08:44:13 2023 -0700 ArcDelayCalcBase -> DelayCalcBase Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1fdfebe2838c47f6c1866c8a10b14df6439506e0 Author: James Cherry <cherry@parallaxsw.com> Date: Sun Nov 19 08:25:36 2023 -0700 LumpedCapDelayCalc::inputPortDelay Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 3a5e1d01aaff240b2f71d006d620ccd6a70bce6d Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 16:32:32 2023 -0700 gateDelayInit cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit d0133319126ae4a488a7b31679fbf6507c7f6266 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 15:36:12 2023 -0700 mv RCDelayCalc to ArcDelayCalcBase Signed-off-by: James Cherry <cherry@parallaxsw.com> commit fd028e6ba5e092243a84685eb1756a8e4e4bad76 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 14:32:53 2023 -0700 ArcDelayCalcBase Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0ce9cf4c766f7419b998b40aed5af14df97249f1 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 10:57:41 2023 -0700 ParallelArcDelayCalc -> ParallelDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7fa7db6b252f1450fa5b546f5d33d8cb8a94d4bb Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 08:45:01 2023 -0700 parallelGateDelay args Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 6b85756774ce049c0f5f123f6d60ebbcd62cdd2b Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 19:55:20 2023 -0700 TimingModel cell_ Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e536d6b0ca0d01e2ad8bd609ad20f9a02497d8f5 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 18:07:11 2023 -0700 TimingModel cell_ Signed-off-by: James Cherry <cherry@parallaxsw.com> commit d2d622da4206e06d176e4ae741334fde8df35007 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 17:21:15 2023 -0700 rm drvr_cell from arc dcalc funcs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 522961e8f58bc1a0f0530a0a5218086280a2bcb0 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 16:24:34 2023 -0700 tr -> rf Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 29aa0ed40345611b9e3a898342ecc17f6355396f Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 13:17:44 2023 -0700 GraphDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 934d9f19c52c62925b23ae9b457f14d25e818f1a Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 12:52:55 2023 -0700 ParallelArcDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit d5687d9482ad0f572b017f0ef806ba8e6ff8b6fa Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 12:16:05 2023 -0700 ParallelArcDelayCalc pvt Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0de501e5bf2329364b572d1360c18d5aedf3b841 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 10:46:22 2023 -0700 ParallelArcDelayCalc::findMultiDrvrGateDelay Signed-off-by: James Cherry <cherry@parallaxsw.com> commit d7457b9e335ed5fa583798e0512914aab6524fcc Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 10:19:01 2023 -0700 mv multi_drvr_slew_factor_ to ParallelArcDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit afec4daa2ab6dd61a2450f1ac8a8cad1ef015a29 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 08:02:40 2023 -0700 MultiDrvrNet::net_caps vector Signed-off-by: James Cherry <cherry@parallaxsw.com> commit b450b3a35616ffc8d85610158a91c5d9483b6958 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 07:46:43 2023 -0700 sic Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 65767403b3b2ab4e6f7552625accf9aa4766628a Author: James Cherry <cherry@parallaxsw.com> Date: Tue Nov 14 17:49:22 2023 -0700 Sta::connectedCap simplify Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 85bdb8f3362413e7b05f49447a0383140cbb924f Author: James Cherry <cherry@parallaxsw.com> Date: Tue Nov 14 16:43:38 2023 -0700 ParallelArcDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4feea3ba2277d53697b644d79832e309ce98058a Author: James Cherry <cherry@parallaxsw.com> Date: Tue Nov 14 15:10:18 2023 -0700 mv parallel dcalc to arc delay calc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 915ed28a2c05acce6569c7933366ef94da8bfaeb Author: James Cherry <cherry@parallaxsw.com> Date: Mon Nov 13 17:47:14 2023 -0700 rm MultiDrvrNet::delays_valid_ Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 2384eb4e5bdca1410c4bf5e23f35bfb49f013e74 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Nov 13 16:02:57 2023 -0700 mkae MultiDrvrNets on the fly Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-11-19 18:04:45 +01:00
void makeTimingModels(LibertyCell *cell,
2018-09-28 17:54:21 +02:00
LibertyReader *visitor);
2019-11-11 23:30:19 +01:00
void setDelaySigma(RiseFall *rf,
2018-11-26 18:15:52 +01:00
EarlyLate *early_late,
TableModel *model);
2019-11-11 23:30:19 +01:00
void setSlewSigma(RiseFall *rf,
2018-11-26 18:15:52 +01:00
EarlyLate *early_late,
TableModel *model);
2019-11-11 23:30:19 +01:00
void setConstraintSigma(RiseFall *rf,
2019-06-04 17:12:22 +02:00
EarlyLate *early_late,
TableModel *model);
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
void setReceiverModel(ReceiverModelPtr receiver_model);
OutputWaveforms *outputWaveforms(RiseFall *rf);
void setOutputWaveforms(RiseFall *rf,
OutputWaveforms *output_current);
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
2018-09-28 17:54:21 +02:00
protected:
DelayCalc reorg commit 410ed56c2c2d0d7afb0e84d0c65d5ff75234e9e3 Author: James Cherry <cherry@parallaxsw.com> Date: Sun Nov 19 08:44:13 2023 -0700 ArcDelayCalcBase -> DelayCalcBase Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1fdfebe2838c47f6c1866c8a10b14df6439506e0 Author: James Cherry <cherry@parallaxsw.com> Date: Sun Nov 19 08:25:36 2023 -0700 LumpedCapDelayCalc::inputPortDelay Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 3a5e1d01aaff240b2f71d006d620ccd6a70bce6d Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 16:32:32 2023 -0700 gateDelayInit cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit d0133319126ae4a488a7b31679fbf6507c7f6266 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 15:36:12 2023 -0700 mv RCDelayCalc to ArcDelayCalcBase Signed-off-by: James Cherry <cherry@parallaxsw.com> commit fd028e6ba5e092243a84685eb1756a8e4e4bad76 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 14:32:53 2023 -0700 ArcDelayCalcBase Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0ce9cf4c766f7419b998b40aed5af14df97249f1 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 10:57:41 2023 -0700 ParallelArcDelayCalc -> ParallelDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7fa7db6b252f1450fa5b546f5d33d8cb8a94d4bb Author: James Cherry <cherry@parallaxsw.com> Date: Fri Nov 17 08:45:01 2023 -0700 parallelGateDelay args Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 6b85756774ce049c0f5f123f6d60ebbcd62cdd2b Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 19:55:20 2023 -0700 TimingModel cell_ Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e536d6b0ca0d01e2ad8bd609ad20f9a02497d8f5 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 18:07:11 2023 -0700 TimingModel cell_ Signed-off-by: James Cherry <cherry@parallaxsw.com> commit d2d622da4206e06d176e4ae741334fde8df35007 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 17:21:15 2023 -0700 rm drvr_cell from arc dcalc funcs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 522961e8f58bc1a0f0530a0a5218086280a2bcb0 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 16:24:34 2023 -0700 tr -> rf Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 29aa0ed40345611b9e3a898342ecc17f6355396f Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 13:17:44 2023 -0700 GraphDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 934d9f19c52c62925b23ae9b457f14d25e818f1a Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 12:52:55 2023 -0700 ParallelArcDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit d5687d9482ad0f572b017f0ef806ba8e6ff8b6fa Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 12:16:05 2023 -0700 ParallelArcDelayCalc pvt Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0de501e5bf2329364b572d1360c18d5aedf3b841 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 10:46:22 2023 -0700 ParallelArcDelayCalc::findMultiDrvrGateDelay Signed-off-by: James Cherry <cherry@parallaxsw.com> commit d7457b9e335ed5fa583798e0512914aab6524fcc Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 10:19:01 2023 -0700 mv multi_drvr_slew_factor_ to ParallelArcDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit afec4daa2ab6dd61a2450f1ac8a8cad1ef015a29 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 08:02:40 2023 -0700 MultiDrvrNet::net_caps vector Signed-off-by: James Cherry <cherry@parallaxsw.com> commit b450b3a35616ffc8d85610158a91c5d9483b6958 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Nov 16 07:46:43 2023 -0700 sic Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 65767403b3b2ab4e6f7552625accf9aa4766628a Author: James Cherry <cherry@parallaxsw.com> Date: Tue Nov 14 17:49:22 2023 -0700 Sta::connectedCap simplify Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 85bdb8f3362413e7b05f49447a0383140cbb924f Author: James Cherry <cherry@parallaxsw.com> Date: Tue Nov 14 16:43:38 2023 -0700 ParallelArcDelayCalc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4feea3ba2277d53697b644d79832e309ce98058a Author: James Cherry <cherry@parallaxsw.com> Date: Tue Nov 14 15:10:18 2023 -0700 mv parallel dcalc to arc delay calc Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 915ed28a2c05acce6569c7933366ef94da8bfaeb Author: James Cherry <cherry@parallaxsw.com> Date: Mon Nov 13 17:47:14 2023 -0700 rm MultiDrvrNet::delays_valid_ Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 2384eb4e5bdca1410c4bf5e23f35bfb49f013e74 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Nov 13 16:02:57 2023 -0700 mkae MultiDrvrNets on the fly Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-11-19 18:04:45 +01:00
void makeLinearModels(LibertyCell *cell);
void makeTableModels(LibertyCell *cell,
LibertyReader *reader);
2018-09-28 17:54:21 +02:00
TimingArcAttrsPtr attrs_;
2018-09-28 17:54:21 +02:00
const char *related_output_port_name_;
2019-11-11 23:30:19 +01:00
float intrinsic_[RiseFall::index_count];
bool intrinsic_exists_[RiseFall::index_count];
float resistance_[RiseFall::index_count];
bool resistance_exists_[RiseFall::index_count];
TableModel *cell_[RiseFall::index_count];
TableModel *constraint_[RiseFall::index_count];
TableModel *constraint_sigma_[RiseFall::index_count][EarlyLate::index_count];
TableModel *transition_[RiseFall::index_count];
TableModel *delay_sigma_[RiseFall::index_count][EarlyLate::index_count];
TableModel *slew_sigma_[RiseFall::index_count][EarlyLate::index_count];
OutputWaveforms *output_waveforms_[RiseFall::index_count];
liberty ccs support commit 8f90f9e7ba1eb29621faa3efed9154501c600537 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Feb 3 09:02:22 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 0bb6b07fd965dc948a63ed383ac05893af4cbd87 Author: James Cherry <cherry@parallaxsw.com> Date: Thu Feb 2 08:07:17 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 408a19ae7750bdd41641ac6efebec0df565987bc Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:55:03 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit a193adf0efdfa9c2a3b4272609e03f9279fc3479 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 16:37:36 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit f26f47698ccd3a43d31f031f5cb6a70f0ffe1f91 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:34:41 2023 -0700 cleanup Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 54613569fcb9d714b77833d54492b4dc8121a966 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 10:18:20 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 4e34c391abc46e9e98d78725e139d739aff7fd44 Author: James Cherry <cherry@parallaxsw.com> Date: Wed Feb 1 09:05:43 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 7b1e5af344948d84f82621d054efa206508a5cb8 Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:58:23 2023 -0700 table report Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 501a53715f27a1ada6477f29b2efdc96fbaec8be Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 31 08:33:53 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit e68cd932db03724e1344259d79bd6397cca777d2 Author: James Cherry <cherry@parallaxsw.com> Date: Mon Jan 30 11:47:01 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 1b279d3ae1e4a8fc156ee92999eab92e6a0a50ff Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 13:56:05 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 43e039650373f9a9bb9e7b7cae6b48d7d2db455b Author: James Cherry <cherry@parallaxsw.com> Date: Sun Jan 29 11:54:08 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 648965c2433f4e7ed87371fced85e80d0198df10 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Jan 27 19:16:39 2023 -0700 ccs Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 02ac4e3e3f3f97308ff71a2f9984aa3aacb6e7ee Author: James Cherry <cherry@parallaxsw.com> Date: Tue Jan 24 09:40:22 2023 -0700 ccs liberty Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-02-08 17:23:24 +01:00
ReceiverModelPtr receiver_model_;
2018-09-28 17:54:21 +02:00
};
class InternalPowerGroup : public InternalPowerAttrs, public RelatedPortGroup
{
public:
explicit InternalPowerGroup(int line);
virtual ~InternalPowerGroup();
};
class LeakagePowerGroup : public LeakagePowerAttrs
{
public:
explicit LeakagePowerGroup(int line);
virtual ~LeakagePowerGroup();
protected:
int line_;
};
// Named port iterator. Port name can be:
// Single bit port name - iterates over port.
// Bus port name - iterates over bus bit ports.
// Bus range - iterates over bus bit ports.
class PortNameBitIterator : public Iterator<LibertyPort*>
{
public:
PortNameBitIterator(LibertyCell *cell,
const char *port_name,
LibertyReader *visitor,
int line);
~PortNameBitIterator();
virtual bool hasNext();
virtual LibertyPort *next();
unsigned size() const { return size_; }
protected:
void findRangeBusNameNext();
void init(const char *port_name);
LibertyCell *cell_;
LibertyReader *visitor_;
int line_;
LibertyPort *port_;
LibertyPortMemberIterator *bit_iterator_;
LibertyPort *range_bus_port_;
rm tmp string uses commit 2d0a4f8e9a8b46faa2ba91e1be636c3c3ad95a7f Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 21:25:37 2023 -0700 leaks Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 5514910a91707d615bac0bbed3a29f579eca8de2 Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 18:21:54 2023 -0700 foo Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 076a51d5816444e883232933c2ded7309291d0bc Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 16:38:42 2023 -0700 parse bus string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 2b80e563cbbb6563a6b716431f391bbb6639f816 Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 15:57:05 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 9e4f2308658232d0b1ee9efcd948bb19ae5dd30f Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 14:37:35 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit ebad3afd49b08e7194452dd082c3c7c05767f875 Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 10:59:11 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 69647913932312a04ca06e7a04cca17ed50d4daf Author: James Cherry <cherry@parallaxsw.com> Date: Fri Mar 24 21:02:20 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 55e67996a7b0651dbb5ee06cb89fe0410648c3c1 Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 10:42:43 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 73cee43925c0d32940989c616440b4da18640121 Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 09:55:17 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit eba6d1413b8d87a64a90141e5263a56eede1df51 Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 09:40:16 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 95d6ed78144512a37fd7c1d3d8a62fc4c8965818 Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 08:18:46 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit faf82464d7be7fd6c958a21d401fa48ece4ac341 Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 07:49:11 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit cfc9064496cb6f46ec562b104bc7fff2fbc1b32e Author: James Cherry <cherry@parallaxsw.com> Date: Sat Mar 25 07:37:12 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit 057933a6ac356a7541883aa64b5109c7a0e8b8d1 Author: James Cherry <cherry@parallaxsw.com> Date: Fri Mar 24 21:02:20 2023 -0700 rm tmp string Signed-off-by: James Cherry <cherry@parallaxsw.com> commit fdeb6436a72413356a627dd1de1d8cec7fca4c4a Author: James Cherry <cherry@parallaxsw.com> Date: Fri Mar 24 19:53:44 2023 -0700 rm TmpString uses Signed-off-by: James Cherry <cherry@parallaxsw.com> Signed-off-by: James Cherry <cherry@parallaxsw.com>
2023-03-26 15:34:36 +02:00
string range_bus_name_;
2018-09-28 17:54:21 +02:00
LibertyPort *range_name_next_;
int range_from_;
int range_to_;
int range_bit_;
unsigned size_;
};
class OutputWaveform
{
public:
OutputWaveform(float axis_value1,
float axis_value2,
Table1 *currents,
float reference_time);
~OutputWaveform();
float slew() const { return slew_; }
float cap() const { return cap_; }
Table1 *currents() const { return currents_; }
Table1 *stealCurrents();
float referenceTime() { return reference_time_; }
private:
float slew_;
float cap_;
Table1 *currents_;
float reference_time_;
};
2018-09-28 17:54:21 +02:00
} // namespace