mv code out of StaTcl.i
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
8178eeeb77
commit
faded478a8
|
|
@ -82,6 +82,24 @@ private:
|
||||||
|
|
||||||
%inline %{
|
%inline %{
|
||||||
|
|
||||||
|
int
|
||||||
|
graph_vertex_count()
|
||||||
|
{
|
||||||
|
return cmdGraph()->vertexCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
graph_edge_count()
|
||||||
|
{
|
||||||
|
return cmdGraph()->edgeCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
graph_arc_count()
|
||||||
|
{
|
||||||
|
return cmdGraph()->arcCount();
|
||||||
|
}
|
||||||
|
|
||||||
VertexIterator *
|
VertexIterator *
|
||||||
vertex_iterator()
|
vertex_iterator()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
%module liberty
|
%module liberty
|
||||||
|
|
||||||
%{
|
%{
|
||||||
|
#include "PortDirection.hh"
|
||||||
#include "Liberty.hh"
|
#include "Liberty.hh"
|
||||||
#include "EquivCells.hh"
|
#include "EquivCells.hh"
|
||||||
#include "LibertyWriter.hh"
|
#include "LibertyWriter.hh"
|
||||||
|
|
|
||||||
|
|
@ -173,6 +173,42 @@ set_current_instance(Instance *inst)
|
||||||
Sta::sta()->setCurrentInstance(inst);
|
Sta::sta()->setCurrentInstance(inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Includes top instance.
|
||||||
|
int
|
||||||
|
network_instance_count()
|
||||||
|
{
|
||||||
|
Network *network = cmdNetwork();
|
||||||
|
return network->instanceCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
network_pin_count()
|
||||||
|
{
|
||||||
|
Network *network = cmdNetwork();
|
||||||
|
return network->pinCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
network_net_count()
|
||||||
|
{
|
||||||
|
Network *network = cmdNetwork();
|
||||||
|
return network->netCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
network_leaf_instance_count()
|
||||||
|
{
|
||||||
|
Network *network = cmdNetwork();
|
||||||
|
return network->leafInstanceCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
network_leaf_pin_count()
|
||||||
|
{
|
||||||
|
Network *network = cmdNetwork();
|
||||||
|
return network->leafPinCount();
|
||||||
|
}
|
||||||
|
|
||||||
Library *
|
Library *
|
||||||
find_library(const char *name)
|
find_library(const char *name)
|
||||||
{
|
{
|
||||||
|
|
@ -490,6 +526,36 @@ find_nets_hier_matching(const char *pattern,
|
||||||
return matches;
|
return matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PinSet
|
||||||
|
net_driver_pins(Net *net)
|
||||||
|
{
|
||||||
|
Network *network = cmdLinkedNetwork();
|
||||||
|
PinSet pins(network);
|
||||||
|
NetConnectedPinIterator *pin_iter = network->connectedPinIterator(net);
|
||||||
|
while (pin_iter->hasNext()) {
|
||||||
|
const Pin *pin = pin_iter->next();
|
||||||
|
if (network->isDriver(pin))
|
||||||
|
pins.insert(pin);
|
||||||
|
}
|
||||||
|
delete pin_iter;
|
||||||
|
return pins;
|
||||||
|
}
|
||||||
|
|
||||||
|
PinSet
|
||||||
|
net_load_pins(Net *net)
|
||||||
|
{
|
||||||
|
Network *network = cmdLinkedNetwork();
|
||||||
|
PinSet pins(network);
|
||||||
|
NetConnectedPinIterator *pin_iter = network->connectedPinIterator(net);
|
||||||
|
while (pin_iter->hasNext()) {
|
||||||
|
const Pin *pin = pin_iter->next();
|
||||||
|
if (network->isLoad(pin))
|
||||||
|
pins.insert(pin);
|
||||||
|
}
|
||||||
|
delete pin_iter;
|
||||||
|
return pins;
|
||||||
|
}
|
||||||
|
|
||||||
%} // inline
|
%} // inline
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
%{
|
%{
|
||||||
#include "Sdc.hh"
|
#include "Sdc.hh"
|
||||||
|
#include "Wireload.hh"
|
||||||
#include "Clock.hh"
|
#include "Clock.hh"
|
||||||
#include "PortDelay.hh"
|
#include "PortDelay.hh"
|
||||||
#include "Sta.hh"
|
#include "Sta.hh"
|
||||||
|
|
|
||||||
415
tcl/StaTcl.i
415
tcl/StaTcl.i
|
|
@ -40,16 +40,9 @@
|
||||||
#include "FuncExpr.hh"
|
#include "FuncExpr.hh"
|
||||||
#include "Units.hh"
|
#include "Units.hh"
|
||||||
#include "Transition.hh"
|
#include "Transition.hh"
|
||||||
#include "TimingRole.hh"
|
|
||||||
#include "TimingArc.hh"
|
|
||||||
#include "TableModel.hh"
|
|
||||||
#include "Liberty.hh"
|
#include "Liberty.hh"
|
||||||
#include "Wireload.hh"
|
|
||||||
#include "PortDirection.hh"
|
|
||||||
#include "Network.hh"
|
#include "Network.hh"
|
||||||
#include "ExceptionPath.hh"
|
|
||||||
#include "Sdc.hh"
|
#include "Sdc.hh"
|
||||||
#include "Graph.hh"
|
|
||||||
#include "DelayCalc.hh"
|
#include "DelayCalc.hh"
|
||||||
#include "DcalcAnalysisPt.hh"
|
#include "DcalcAnalysisPt.hh"
|
||||||
#include "Corner.hh"
|
#include "Corner.hh"
|
||||||
|
|
@ -369,167 +362,6 @@ is_object_list(const char *list,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
|
||||||
rise_short_name()
|
|
||||||
{
|
|
||||||
return RiseFall::rise()->shortName();
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *
|
|
||||||
fall_short_name()
|
|
||||||
{
|
|
||||||
return RiseFall::fall()->shortName();
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
pin_property(const Pin *pin,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
cmdLinkedNetwork();
|
|
||||||
return getProperty(pin, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
instance_property(const Instance *inst,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
cmdLinkedNetwork();
|
|
||||||
return getProperty(inst, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
net_property(const Net *net,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
cmdLinkedNetwork();
|
|
||||||
return getProperty(net, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
port_property(const Port *port,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
return getProperty(port, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
liberty_cell_property(const LibertyCell *cell,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
return getProperty(cell, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
cell_property(const Cell *cell,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
return getProperty(cell, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
liberty_port_property(const LibertyPort *port,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
return getProperty(port, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
library_property(const Library *lib,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
return getProperty(lib, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
liberty_library_property(const LibertyLibrary *lib,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
return getProperty(lib, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
edge_property(Edge *edge,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
cmdGraph();
|
|
||||||
return getProperty(edge, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
clock_property(Clock *clk,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
cmdLinkedNetwork();
|
|
||||||
return getProperty(clk, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
path_end_property(PathEnd *end,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
cmdLinkedNetwork();
|
|
||||||
return getProperty(end, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
path_ref_property(PathRef *path,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
cmdLinkedNetwork();
|
|
||||||
return getProperty(path, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyValue
|
|
||||||
timing_arc_set_property(TimingArcSet *arc_set,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
cmdLinkedNetwork();
|
|
||||||
return getProperty(arc_set, property, Sta::sta());
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
void
|
|
||||||
define_corners_cmd(StringSet *corner_names)
|
|
||||||
{
|
|
||||||
Sta *sta = Sta::sta();
|
|
||||||
sta->makeCorners(corner_names);
|
|
||||||
delete corner_names;
|
|
||||||
}
|
|
||||||
|
|
||||||
Corner *
|
|
||||||
cmd_corner()
|
|
||||||
{
|
|
||||||
return Sta::sta()->cmdCorner();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
set_cmd_corner(Corner *corner)
|
|
||||||
{
|
|
||||||
Sta::sta()->setCmdCorner(corner);
|
|
||||||
}
|
|
||||||
|
|
||||||
Corner *
|
|
||||||
find_corner(const char *corner_name)
|
|
||||||
{
|
|
||||||
return Sta::sta()->findCorner(corner_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
Corners *
|
|
||||||
corners()
|
|
||||||
{
|
|
||||||
return Sta::sta()->corners();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
multi_corner()
|
|
||||||
{
|
|
||||||
return Sta::sta()->multiCorner();
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// format_unit functions print with fixed digits and suffix.
|
// format_unit functions print with fixed digits and suffix.
|
||||||
|
|
@ -765,6 +597,169 @@ unit_scaled_suffix(const char *unit_name)
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
const char *
|
||||||
|
rise_short_name()
|
||||||
|
{
|
||||||
|
return RiseFall::rise()->shortName();
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
fall_short_name()
|
||||||
|
{
|
||||||
|
return RiseFall::fall()->shortName();
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
pin_property(const Pin *pin,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
return getProperty(pin, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
instance_property(const Instance *inst,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
return getProperty(inst, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
net_property(const Net *net,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
return getProperty(net, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
port_property(const Port *port,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
return getProperty(port, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
liberty_cell_property(const LibertyCell *cell,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
return getProperty(cell, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
cell_property(const Cell *cell,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
return getProperty(cell, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
liberty_port_property(const LibertyPort *port,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
return getProperty(port, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
library_property(const Library *lib,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
return getProperty(lib, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
liberty_library_property(const LibertyLibrary *lib,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
return getProperty(lib, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
edge_property(Edge *edge,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
cmdGraph();
|
||||||
|
return getProperty(edge, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
clock_property(Clock *clk,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
return getProperty(clk, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
path_end_property(PathEnd *end,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
return getProperty(end, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
path_ref_property(PathRef *path,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
return getProperty(path, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyValue
|
||||||
|
timing_arc_set_property(TimingArcSet *arc_set,
|
||||||
|
const char *property)
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
return getProperty(arc_set, property, Sta::sta());
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void
|
||||||
|
define_corners_cmd(StringSet *corner_names)
|
||||||
|
{
|
||||||
|
Sta *sta = Sta::sta();
|
||||||
|
sta->makeCorners(corner_names);
|
||||||
|
delete corner_names;
|
||||||
|
}
|
||||||
|
|
||||||
|
Corner *
|
||||||
|
cmd_corner()
|
||||||
|
{
|
||||||
|
return Sta::sta()->cmdCorner();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
set_cmd_corner(Corner *corner)
|
||||||
|
{
|
||||||
|
Sta::sta()->setCmdCorner(corner);
|
||||||
|
}
|
||||||
|
|
||||||
|
Corner *
|
||||||
|
find_corner(const char *corner_name)
|
||||||
|
{
|
||||||
|
return Sta::sta()->findCorner(corner_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
Corners *
|
||||||
|
corners()
|
||||||
|
{
|
||||||
|
return Sta::sta()->corners();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
multi_corner()
|
||||||
|
{
|
||||||
|
return Sta::sta()->multiCorner();
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
CheckErrorSeq &
|
CheckErrorSeq &
|
||||||
check_timing_cmd(bool no_input_delay,
|
check_timing_cmd(bool no_input_delay,
|
||||||
bool no_output_delay,
|
bool no_output_delay,
|
||||||
|
|
@ -1745,36 +1740,6 @@ find_fanout_insts(PinSeq *from,
|
||||||
return fanout;
|
return fanout;
|
||||||
}
|
}
|
||||||
|
|
||||||
PinSet
|
|
||||||
net_load_pins(Net *net)
|
|
||||||
{
|
|
||||||
Network *network = cmdLinkedNetwork();
|
|
||||||
PinSet pins(network);
|
|
||||||
NetConnectedPinIterator *pin_iter = network->connectedPinIterator(net);
|
|
||||||
while (pin_iter->hasNext()) {
|
|
||||||
const Pin *pin = pin_iter->next();
|
|
||||||
if (network->isLoad(pin))
|
|
||||||
pins.insert(pin);
|
|
||||||
}
|
|
||||||
delete pin_iter;
|
|
||||||
return pins;
|
|
||||||
}
|
|
||||||
|
|
||||||
PinSet
|
|
||||||
net_driver_pins(Net *net)
|
|
||||||
{
|
|
||||||
Network *network = cmdLinkedNetwork();
|
|
||||||
PinSet pins(network);
|
|
||||||
NetConnectedPinIterator *pin_iter = network->connectedPinIterator(net);
|
|
||||||
while (pin_iter->hasNext()) {
|
|
||||||
const Pin *pin = pin_iter->next();
|
|
||||||
if (network->isDriver(pin))
|
|
||||||
pins.insert(pin);
|
|
||||||
}
|
|
||||||
delete pin_iter;
|
|
||||||
return pins;
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -1790,60 +1755,6 @@ report_loops()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Includes top instance.
|
|
||||||
int
|
|
||||||
network_instance_count()
|
|
||||||
{
|
|
||||||
Network *network = cmdNetwork();
|
|
||||||
return network->instanceCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
network_pin_count()
|
|
||||||
{
|
|
||||||
Network *network = cmdNetwork();
|
|
||||||
return network->pinCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
network_net_count()
|
|
||||||
{
|
|
||||||
Network *network = cmdNetwork();
|
|
||||||
return network->netCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
network_leaf_instance_count()
|
|
||||||
{
|
|
||||||
Network *network = cmdNetwork();
|
|
||||||
return network->leafInstanceCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
network_leaf_pin_count()
|
|
||||||
{
|
|
||||||
Network *network = cmdNetwork();
|
|
||||||
return network->leafPinCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
graph_vertex_count()
|
|
||||||
{
|
|
||||||
return cmdGraph()->vertexCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
graph_edge_count()
|
|
||||||
{
|
|
||||||
return cmdGraph()->edgeCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
graph_arc_count()
|
|
||||||
{
|
|
||||||
return cmdGraph()->arcCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
tag_group_count()
|
tag_group_count()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue