pub struct Timed<'a, N, Lib>{ /* private fields */ }Expand description
Reference to STA engine in timed state.
Implementations§
Source§impl<'a, N, Lib> Timed<'a, N, Lib>
impl<'a, N, Lib> Timed<'a, N, Lib>
Sourcepub fn report_clock(
&self,
pin: TerminalId<N>,
edge_polarity: RiseFall,
) -> Option<ClockId>
pub fn report_clock( &self, pin: TerminalId<N>, edge_polarity: RiseFall, ) -> Option<ClockId>
For testing only.
Sourcepub fn report_critical_paths(&self, clock_id: ClockId, setup_hold: SetupHold)
pub fn report_critical_paths(&self, clock_id: ClockId, setup_hold: SetupHold)
Report longest or shortest paths.
Trait Implementations§
Source§impl<'b, N, Lib> HierarchyBase for Timed<'b, N, Lib>
impl<'b, N, Lib> HierarchyBase for Timed<'b, N, Lib>
Source§type NameType = <N as HierarchyBase>::NameType
type NameType = <N as HierarchyBase>::NameType
Type for names of cells, instances, etc.
Source§fn num_dependent_cells(&self, cell: &Self::CellId) -> usize
fn num_dependent_cells(&self, cell: &Self::CellId) -> usize
Count all cells that are directly dependent on
cell, i.e. contain an instance of cell.Source§fn get_cell_property(
&self,
cell: &Self::CellId,
key: &Self::NameType,
) -> Option<PropertyValue>
fn get_cell_property( &self, cell: &Self::CellId, key: &Self::NameType, ) -> Option<PropertyValue>
Get a property of a cell.
Source§fn template_cell(&self, cell_instance: &Self::CellInstId) -> Self::CellId
fn template_cell(&self, cell_instance: &Self::CellInstId) -> Self::CellId
Get the ID of the template cell of this instance.
Source§fn each_cell_reference(
&self,
cell: &Self::CellId,
) -> Box<dyn Iterator<Item = Self::CellInstId> + '_>
fn each_cell_reference( &self, cell: &Self::CellId, ) -> Box<dyn Iterator<Item = Self::CellInstId> + '_>
Iterate over all instances of this
cell, i.e. instances that use this cell as
a template.Source§fn num_cell_dependencies(&self, cell: &Self::CellId) -> usize
fn num_cell_dependencies(&self, cell: &Self::CellId) -> usize
Count all cells that are dependencies of
cell.Source§fn get_cell_instance_property(
&self,
inst: &Self::CellInstId,
key: &Self::NameType,
) -> Option<PropertyValue>
fn get_cell_instance_property( &self, inst: &Self::CellInstId, key: &Self::NameType, ) -> Option<PropertyValue>
Get a property of a cell instance.
Source§fn cell_instance_name(
&self,
cell_inst: &Self::CellInstId,
) -> Option<Self::NameType>
fn cell_instance_name( &self, cell_inst: &Self::CellInstId, ) -> Option<Self::NameType>
Get the name of the cell instance.
Source§fn each_cell_dependency<'a>(
&'a self,
cell: &Self::CellId,
) -> Box<dyn Iterator<Item = Self::CellId> + 'a>
fn each_cell_dependency<'a>( &'a self, cell: &Self::CellId, ) -> Box<dyn Iterator<Item = Self::CellId> + 'a>
Iterate over all cells that are instantiated in this
cell.Source§fn each_dependent_cell<'a>(
&'a self,
cell: &Self::CellId,
) -> Box<dyn Iterator<Item = Self::CellId> + 'a>
fn each_dependent_cell<'a>( &'a self, cell: &Self::CellId, ) -> Box<dyn Iterator<Item = Self::CellId> + 'a>
Iterate over each cell that directly depends on
cell.Source§fn each_cell_vec(&self) -> Vec<Self::CellId>
fn each_cell_vec(&self) -> Vec<Self::CellId>
Get a
Vec of all cell IDs in this netlist.Source§fn for_each_cell_instance<F>(&self, cell: &Self::CellId, f: F)where
F: FnMut(Self::CellInstId),
fn for_each_cell_instance<F>(&self, cell: &Self::CellId, f: F)where
F: FnMut(Self::CellInstId),
Call a function on each instance in this cell.
Source§fn for_each_cell_dependency<F>(&self, cell: &Self::CellId, f: F)
fn for_each_cell_dependency<F>(&self, cell: &Self::CellId, f: F)
Call a function for each cell that is a child of this
cell.Source§fn for_each_cell<F>(&self, f: F)
fn for_each_cell<F>(&self, f: F)
Call a function on each cell of the netlist.
Source§fn parent_cell(&self, cell_instance: &Self::CellInstId) -> Self::CellId
fn parent_cell(&self, cell_instance: &Self::CellInstId) -> Self::CellId
Get the ID of the parent cell of this instance.
Source§fn each_cell_instance_vec(&self, cell: &Self::CellId) -> Vec<Self::CellInstId>
fn each_cell_instance_vec(&self, cell: &Self::CellId) -> Vec<Self::CellInstId>
Get a
Vec of the IDs of all instances in this cell.Source§fn cell_instance_by_name(
&self,
parent_cell: &Self::CellId,
name: &str,
) -> Option<Self::CellInstId>
fn cell_instance_by_name( &self, parent_cell: &Self::CellId, name: &str, ) -> Option<Self::CellInstId>
Find a cell instance by its name.
Returns
None if the name does not exist.Source§fn for_each_dependent_cell<F>(&self, cell: &Self::CellId, f: F)
fn for_each_dependent_cell<F>(&self, cell: &Self::CellId, f: F)
Call a function for each cell that directly depends on
cell.Source§fn for_each_cell_reference<F>(&self, cell: &Self::CellId, f: F)where
F: FnMut(Self::CellInstId),
fn for_each_cell_reference<F>(&self, cell: &Self::CellId, f: F)where
F: FnMut(Self::CellInstId),
Iterate over all instances of this
cell, i.e. instances that use this cell as
a template.Source§fn cell_by_name(&self, name: &str) -> Option<Self::CellId>
fn cell_by_name(&self, name: &str) -> Option<Self::CellId>
Find a cell by its name.
Return the cell with the given name. Returns
None if the cell does not exist.Source§fn get_chip_property(&self, key: &Self::NameType) -> Option<PropertyValue>
fn get_chip_property(&self, key: &Self::NameType) -> Option<PropertyValue>
Get a property of the top-level chip data structure.
Source§fn each_cell_reference_vec(&self, cell: &Self::CellId) -> Vec<Self::CellInstId>
fn each_cell_reference_vec(&self, cell: &Self::CellId) -> Vec<Self::CellInstId>
Get a
Vec with all cell instances referencing this cell.Source§fn each_cell_dependency_vec(&self, cell: &Self::CellId) -> Vec<Self::CellId>
fn each_cell_dependency_vec(&self, cell: &Self::CellId) -> Vec<Self::CellId>
Get a
Vec of each cell that is a child of this cell.Source§fn each_dependent_cell_vec(&self, cell: &Self::CellId) -> Vec<Self::CellId>
fn each_dependent_cell_vec(&self, cell: &Self::CellId) -> Vec<Self::CellId>
Get a
Vec of each cell that directly depends on cell.Source§fn num_child_instances(&self, cell: &Self::CellId) -> usize
fn num_child_instances(&self, cell: &Self::CellId) -> usize
Get the number of cell instances inside the
cell.Source§fn num_cell_references(&self, cell: &Self::CellId) -> usize
fn num_cell_references(&self, cell: &Self::CellId) -> usize
Count all instantiations of
cell.Source§fn each_cell_instance(
&self,
cell: &Self::CellId,
) -> Box<dyn Iterator<Item = Self::CellInstId> + '_>
fn each_cell_instance( &self, cell: &Self::CellId, ) -> Box<dyn Iterator<Item = Self::CellInstId> + '_>
Iterate over all instances in a cell.
Source§impl<'a, N, Lib> HierarchyIds for Timed<'a, N, Lib>
impl<'a, N, Lib> HierarchyIds for Timed<'a, N, Lib>
Source§type CellId = <N as HierarchyIds>::CellId
type CellId = <N as HierarchyIds>::CellId
Cell/module identifier type.
Source§type CellInstId = <N as HierarchyIds>::CellInstId
type CellInstId = <N as HierarchyIds>::CellInstId
Cell instance identifier type.
Source§impl<'b, N, Lib> L2NBase for Timed<'b, N, Lib>
impl<'b, N, Lib> L2NBase for Timed<'b, N, Lib>
Source§fn shapes_of_net(
&self,
net_id: &Self::NetId,
) -> Box<dyn Iterator<Item = Self::ShapeId> + '_>
fn shapes_of_net( &self, net_id: &Self::NetId, ) -> Box<dyn Iterator<Item = Self::ShapeId> + '_>
Iterate over all shapes that are marked to belong to the specified net.
Source§fn get_pin_of_shape(&self, shape_id: &Self::ShapeId) -> Option<Self::PinId>
fn get_pin_of_shape(&self, shape_id: &Self::ShapeId) -> Option<Self::PinId>
Get the pin that belongs to the shape (if any).
Source§impl<'b, N, Lib> LayoutBase for Timed<'b, N, Lib>
impl<'b, N, Lib> LayoutBase for Timed<'b, N, Lib>
Source§fn dbu(&self) -> Self::Coord
fn dbu(&self) -> Self::Coord
Get the distance unit used in this layout in ‘pixels per micron’.
Source§fn get_shape_property(
&self,
shape: &Self::ShapeId,
key: &Self::NameType,
) -> Option<PropertyValue>
fn get_shape_property( &self, shape: &Self::ShapeId, key: &Self::NameType, ) -> Option<PropertyValue>
Get a property of a shape.
Source§fn get_transform(
&self,
cell_inst: &Self::CellInstId,
) -> SimpleTransform<Self::Coord>
fn get_transform( &self, cell_inst: &Self::CellInstId, ) -> SimpleTransform<Self::Coord>
Get the geometric transform that describes the location of a cell instance relative to its parent.
Source§fn for_each_shape<F>(&self, cell: &Self::CellId, layer: &Self::LayerId, f: F)
fn for_each_shape<F>(&self, cell: &Self::CellId, layer: &Self::LayerId, f: F)
Call a function for each shape on this layer.
Source§fn parent_of_shape(
&self,
shape_id: &Self::ShapeId,
) -> (Self::CellId, Self::LayerId)
fn parent_of_shape( &self, shape_id: &Self::ShapeId, ) -> (Self::CellId, Self::LayerId)
Get the parent cell and the layer of a shape as a (cell, layer) tuple.
Source§fn shape_geometry(&self, shape_id: &Self::ShapeId) -> Geometry<Self::Coord>
fn shape_geometry(&self, shape_id: &Self::ShapeId) -> Geometry<Self::Coord>
Get a clone of the shape geometry.
Source§fn bounding_box(&self, cell: &Self::CellId) -> Option<Rect<Self::Coord>>
fn bounding_box(&self, cell: &Self::CellId) -> Option<Rect<Self::Coord>>
Compute the bounding box of the cell over all layers.
The bounding box is not defined if the cell is empty. In this
case return
None.Source§fn each_layer(&self) -> Box<dyn Iterator<Item = Self::LayerId> + '_>
fn each_layer(&self) -> Box<dyn Iterator<Item = Self::LayerId> + '_>
Iterate over all defined layers.
Source§fn for_each_shape_recursive<F>(
&self,
cell: &Self::CellId,
layer: &Self::LayerId,
f: F,
)
fn for_each_shape_recursive<F>( &self, cell: &Self::CellId, layer: &Self::LayerId, f: F, )
Call a function
f for each shape of this cell and its sub cells.
Along to the geometric shape f also gets a transformation as argument.
The transformation describes the actual position of the geometric shape relative to the cell.Source§fn with_shape<F, R>(&self, shape_id: &Self::ShapeId, f: F) -> R
fn with_shape<F, R>(&self, shape_id: &Self::ShapeId, f: F) -> R
Access a shape by its ID.
Source§fn shape_layer(&self, shape_id: &Self::ShapeId) -> Self::LayerId
fn shape_layer(&self, shape_id: &Self::ShapeId) -> Self::LayerId
Get the layer of a shape.
Source§fn bounding_box_per_layer(
&self,
cell: &Self::CellId,
layer: &Self::LayerId,
) -> Option<Rect<Self::Coord>>
fn bounding_box_per_layer( &self, cell: &Self::CellId, layer: &Self::LayerId, ) -> Option<Rect<Self::Coord>>
Compute the bounding box of the shapes on one layer.
The bounding box also includes all child cell instances.
Source§fn layer_info(&self, layer: &Self::LayerId) -> LayerInfo<Self::NameType>
fn layer_info(&self, layer: &Self::LayerId) -> LayerInfo<Self::NameType>
Get the
LayerInfo data structure for this layer.Source§impl<'a, N, Lib> LayoutIds for Timed<'a, N, Lib>
impl<'a, N, Lib> LayoutIds for Timed<'a, N, Lib>
Source§impl<'b, N, Lib> NetlistBase for Timed<'b, N, Lib>
impl<'b, N, Lib> NetlistBase for Timed<'b, N, Lib>
Source§fn each_pin_instance_vec(
&self,
circuit_instance: &Self::CellInstId,
) -> Vec<Self::PinInstId>
fn each_pin_instance_vec( &self, circuit_instance: &Self::CellInstId, ) -> Vec<Self::PinInstId>
Get a
Vec with the IDs of all pin instance of this circuit instance.Source§fn parent_of_pin_instance(&self, pin_inst: &Self::PinInstId) -> Self::CellInstId
fn parent_of_pin_instance(&self, pin_inst: &Self::PinInstId) -> Self::CellInstId
Get the ID of the circuit instance that holds this pin instance.
Source§fn each_internal_net<'a>(
&'a self,
circuit: &Self::CellId,
) -> Box<dyn Iterator<Item = Self::NetId> + 'a>
fn each_internal_net<'a>( &'a self, circuit: &Self::CellId, ) -> Box<dyn Iterator<Item = Self::NetId> + 'a>
Iterate over all defined nets inside a circuit.
Source§fn each_pin_of_net_vec(&self, net: &Self::NetId) -> Vec<Self::PinId>
fn each_pin_of_net_vec(&self, net: &Self::NetId) -> Vec<Self::PinId>
Get a
Vec with all pin IDs connected to this net.Source§fn net_zero(&self, parent_circuit: &Self::CellId) -> Self::NetId
fn net_zero(&self, parent_circuit: &Self::CellId) -> Self::NetId
Get the net of the logical constant zero.
Source§fn for_each_pin_instance_of_net<F>(&self, net: &Self::NetId, f: F)
fn for_each_pin_instance_of_net<F>(&self, net: &Self::NetId, f: F)
Call a function for each pin instance connected to this net.
Source§fn each_pin_instance<'a>(
&'a self,
circuit_instance: &Self::CellInstId,
) -> Box<dyn Iterator<Item = Self::PinInstId> + 'a>
fn each_pin_instance<'a>( &'a self, circuit_instance: &Self::CellInstId, ) -> Box<dyn Iterator<Item = Self::PinInstId> + 'a>
Iterate over all pin instances of a circuit.
Source§fn net_of_pin(&self, pin: &Self::PinId) -> Option<Self::NetId>
fn net_of_pin(&self, pin: &Self::PinId) -> Option<Self::NetId>
Get the internal net attached to this pin.
Source§fn template_pin(&self, pin_instance: &Self::PinInstId) -> Self::PinId
fn template_pin(&self, pin_instance: &Self::PinInstId) -> Self::PinId
Get the ID of the template pin of this pin instance.
Source§fn pin_instance(
&self,
cell_inst: &Self::CellInstId,
pin: &Self::PinId,
) -> Self::PinInstId
fn pin_instance( &self, cell_inst: &Self::CellInstId, pin: &Self::PinId, ) -> Self::PinInstId
Get the ID of a pin instance given the cell instance and the pin ID.
Source§fn for_each_pin_of_net<F>(&self, net: &Self::NetId, f: F)
fn for_each_pin_of_net<F>(&self, net: &Self::NetId, f: F)
Call a function for each pin connected to this net.
Source§fn each_pin_instance_of_net<'a>(
&'a self,
net: &Self::NetId,
) -> Box<dyn Iterator<Item = Self::PinInstId> + 'a>
fn each_pin_instance_of_net<'a>( &'a self, net: &Self::NetId, ) -> Box<dyn Iterator<Item = Self::PinInstId> + 'a>
Iterate over all pins of a net.
Source§fn net_by_name(
&self,
parent_circuit: &Self::CellId,
name: &str,
) -> Option<Self::NetId>
fn net_by_name( &self, parent_circuit: &Self::CellId, name: &str, ) -> Option<Self::NetId>
Find a net by its name inside the parent circuit.
Returns
None if no such net can be found.Source§fn each_pin<'a>(
&'a self,
circuit: &Self::CellId,
) -> Box<dyn Iterator<Item = Self::PinId> + 'a>
fn each_pin<'a>( &'a self, circuit: &Self::CellId, ) -> Box<dyn Iterator<Item = Self::PinId> + 'a>
Iterate over all pins of a circuit.
Source§fn each_pin_instance_of_net_vec(
&self,
net: &Self::NetId,
) -> Vec<Self::PinInstId>
fn each_pin_instance_of_net_vec( &self, net: &Self::NetId, ) -> Vec<Self::PinInstId>
Get a
Vec with all pin instance IDs connected to this net.Source§fn each_pin_of_net<'a>(
&'a self,
net: &Self::NetId,
) -> Box<dyn Iterator<Item = Self::PinId> + 'a>
fn each_pin_of_net<'a>( &'a self, net: &Self::NetId, ) -> Box<dyn Iterator<Item = Self::PinId> + 'a>
Iterate over all pins of a net.
Source§fn for_each_internal_net<F>(&self, circuit: &Self::CellId, f: F)
fn for_each_internal_net<F>(&self, circuit: &Self::CellId, f: F)
Call a function for net of the circuit.
Source§fn net_of_pin_instance(
&self,
pin_instance: &Self::PinInstId,
) -> Option<Self::NetId>
fn net_of_pin_instance( &self, pin_instance: &Self::PinInstId, ) -> Option<Self::NetId>
Get the external net attached to this pin instance.
Source§fn each_external_net_vec(
&self,
circuit_instance: &Self::CellInstId,
) -> Vec<Self::NetId>
fn each_external_net_vec( &self, circuit_instance: &Self::CellInstId, ) -> Vec<Self::NetId>
Get a vector of all external nets connected to the circuit instance.
A net might appear more than once.
Source§fn pin_by_name(
&self,
parent_circuit: &Self::CellId,
name: &str,
) -> Option<Self::PinId>
fn pin_by_name( &self, parent_circuit: &Self::CellId, name: &str, ) -> Option<Self::PinId>
Find a pin by its name.
Returns
None if no such pin can be found.Source§fn net_one(&self, parent_circuit: &Self::CellId) -> Self::NetId
fn net_one(&self, parent_circuit: &Self::CellId) -> Self::NetId
Get the net of the logical constant one.
Source§fn num_net_pin_instances(&self, net: &Self::NetId) -> usize
fn num_net_pin_instances(&self, net: &Self::NetId) -> usize
Get the number of pin instances that are connected to this net.
Source§fn each_external_net<'a>(
&'a self,
circuit_instance: &Self::CellInstId,
) -> Box<dyn Iterator<Item = Self::NetId> + 'a>
fn each_external_net<'a>( &'a self, circuit_instance: &Self::CellInstId, ) -> Box<dyn Iterator<Item = Self::NetId> + 'a>
Iterate over all external nets connected to the circuit instance.
A net might appear more than once.
Source§fn for_each_pin_instance<F>(&self, circuit_inst: &Self::CellInstId, f: F)
fn for_each_pin_instance<F>(&self, circuit_inst: &Self::CellInstId, f: F)
Call a function for each pin instance of the circuit instance.
Source§fn parent_cell_of_net(&self, net: &Self::NetId) -> Self::CellId
fn parent_cell_of_net(&self, net: &Self::NetId) -> Self::CellId
Get the ID of the parent circuit of this net.
Source§fn each_pin_vec(&self, circuit: &Self::CellId) -> Vec<Self::PinId>
fn each_pin_vec(&self, circuit: &Self::CellId) -> Vec<Self::PinId>
Get a
Vec with the IDs of all pins of this circuit.Source§fn num_internal_nets(&self, circuit: &Self::CellId) -> usize
fn num_internal_nets(&self, circuit: &Self::CellId) -> usize
Return the number of nets defined inside a cell.
Source§fn each_internal_net_vec(&self, circuit: &Self::CellId) -> Vec<Self::NetId>
fn each_internal_net_vec(&self, circuit: &Self::CellId) -> Vec<Self::NetId>
Get a
Vec with all nets in this circuit.Source§fn for_each_pin<F>(&self, circuit: &Self::CellId, f: F)
fn for_each_pin<F>(&self, circuit: &Self::CellId, f: F)
Call a function for each pin of the circuit.
Source§fn num_net_pins(&self, net: &Self::NetId) -> usize
fn num_net_pins(&self, net: &Self::NetId) -> usize
Get the number of pins that are connected to this net.
Source§fn for_each_external_net<F>(&self, circuit_instance: &Self::CellInstId, f: F)
fn for_each_external_net<F>(&self, circuit_instance: &Self::CellInstId, f: F)
Iterate over all external nets connected to the circuit instance.
A net might appear more than once.
Source§fn pin_direction(&self, pin: &Self::PinId) -> Direction
fn pin_direction(&self, pin: &Self::PinId) -> Direction
Get the signal direction of the pin.
Source§fn parent_cell_of_pin(&self, pin: &Self::PinId) -> Self::CellId
fn parent_cell_of_pin(&self, pin: &Self::PinId) -> Self::CellId
Get the ID of the parent circuit of this pin.
Source§fn num_net_terminals(&self, net: &Self::NetId) -> usize
fn num_net_terminals(&self, net: &Self::NetId) -> usize
Get the number of terminals that are connected to this net.
Source§impl<'a, N, Lib> NetlistIds for Timed<'a, N, Lib>
impl<'a, N, Lib> NetlistIds for Timed<'a, N, Lib>
Source§type NetId = <N as NetlistIds>::NetId
type NetId = <N as NetlistIds>::NetId
Net identifier type. Uniquely identifies a net in the whole netlist.
Source§type PinId = <N as NetlistIds>::PinId
type PinId = <N as NetlistIds>::PinId
Pin identifier type. Uniquely identifies a pin in the whole netlist.
Source§type PinInstId = <N as NetlistIds>::PinInstId
type PinInstId = <N as NetlistIds>::PinInstId
Pin instance identifier type. Uniquely identifies a pin instance in the whole netlist.
A pin instance is a pin of a circuit instance.
Source§impl<'a, N, Lib> TimingQuery for Timed<'a, N, Lib>
impl<'a, N, Lib> TimingQuery for Timed<'a, N, Lib>
Source§type NetlistIds = N
type NetlistIds = N
Type which defines IDs of netlist components.
Source§type ArrivalTime = <Lib as TimingBase>::Signal
type ArrivalTime = <Lib as TimingBase>::Signal
Type for the actual arrival times.
Source§type RequiredArrivalTime = <Lib as ConstraintBase>::RequiredSignal
type RequiredArrivalTime = <Lib as ConstraintBase>::RequiredSignal
Type for required arrival times.
Source§type Slack = <Lib as ConstraintBase>::Slack
type Slack = <Lib as ConstraintBase>::Slack
Type for delays (time difference) such as slack.
Source§fn report_aat(
&self,
pin: TerminalId<N>,
edge_polarity: RiseFall,
) -> Option<Self::ArrivalTime>
fn report_aat( &self, pin: TerminalId<N>, edge_polarity: RiseFall, ) -> Option<Self::ArrivalTime>
Report arrival time.
Assumes prior call to
update_timing if the netlist was modified. Might panic otherwise.
Returns an Option because some it is possible that no arrival time is defined (for example
for a floating part of the netlist which is not attached to a clock).Source§fn report_rat(
&self,
pin: TerminalId<N>,
edge_polarity: RiseFall,
) -> Option<Self::RequiredArrivalTime>
fn report_rat( &self, pin: TerminalId<N>, edge_polarity: RiseFall, ) -> Option<Self::RequiredArrivalTime>
Report required arrival time.
Assumes prior call to
update_timing if the netlist was modified. Might panic otherwise.Source§fn report_slack(
&self,
pin: TerminalId<N>,
edge_polarity: RiseFall,
) -> Option<Self::Slack>
fn report_slack( &self, pin: TerminalId<N>, edge_polarity: RiseFall, ) -> Option<Self::Slack>
Report slack (arrival time - required arrival time).
Assumes prior call to
update_timing if the netlist was modified. Might panic otherwise.Source§fn report_timing(&self) -> Vec<()>
fn report_timing(&self) -> Vec<()>
Report a list of worst paths.
Auto Trait Implementations§
impl<'a, N, Lib> Freeze for Timed<'a, N, Lib>
impl<'a, N, Lib> !RefUnwindSafe for Timed<'a, N, Lib>
impl<'a, N, Lib> Send for Timed<'a, N, Lib>where
N: Sync,
<N as HierarchyIds>::CellId: Sync,
Lib: Sync,
<N as NetlistIds>::PinId: Sync,
<N as NetlistIds>::PinInstId: Sync,
impl<'a, N, Lib> Sync for Timed<'a, N, Lib>where
N: Sync,
<N as HierarchyIds>::CellId: Sync,
Lib: Sync,
<N as NetlistIds>::PinId: Sync,
<N as NetlistIds>::PinInstId: Sync,
impl<'a, N, Lib> Unpin for Timed<'a, N, Lib>
impl<'a, N, Lib> !UnwindSafe for Timed<'a, N, Lib>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> HierarchyReferenceAccess for Twhere
T: HierarchyBase,
impl<T> HierarchyReferenceAccess for Twhere
T: HierarchyBase,
Source§fn each_cell_ref(&self) -> Box<dyn Iterator<Item = CellRef<'_, Self>> + '_>
fn each_cell_ref(&self) -> Box<dyn Iterator<Item = CellRef<'_, Self>> + '_>
Iterate over all cell objects.
Source§fn cell_instance_ref(&self, inst_id: &Self::CellInstId) -> CellInstRef<'_, Self>
fn cell_instance_ref(&self, inst_id: &Self::CellInstId) -> CellInstRef<'_, Self>
Get a cell instance object by its ID.
Source§impl<N> HierarchyUtil for Nwhere
N: HierarchyBase,
impl<N> HierarchyUtil for Nwhere
N: HierarchyBase,
Source§fn is_top_level_cell(&self, cell: &Self::CellId) -> bool
fn is_top_level_cell(&self, cell: &Self::CellId) -> bool
Check if the cell is a top level cell.
This is done by checking that no other cells have an instance of this cell.
Source§fn is_leaf_cell(&self, cell: &Self::CellId) -> bool
fn is_leaf_cell(&self, cell: &Self::CellId) -> bool
Check if the cell is a leaf cell.
This is done by checking that this cell contains no other cell instances.
Source§fn each_top_level_cell(&self) -> Box<dyn Iterator<Item = Self::CellId> + '_>
fn each_top_level_cell(&self) -> Box<dyn Iterator<Item = Self::CellId> + '_>
Iterate over all top level cells.
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutReferenceAccess for Twhere
T: LayoutBase,
impl<T> LayoutReferenceAccess for Twhere
T: LayoutBase,
Source§fn shape_ref(&self, shape_id: &Self::ShapeId) -> ShapeRef<'_, Self>
fn shape_ref(&self, shape_id: &Self::ShapeId) -> ShapeRef<'_, Self>
Get a cell object by its ID.
Source§fn layer_ref(&self, layer_id: &Self::LayerId) -> LayerRef<'_, Self>
fn layer_ref(&self, layer_id: &Self::LayerId) -> LayerRef<'_, Self>
Get a layer object by its ID.
Source§impl<T> NetlistReferenceAccess for Twhere
T: NetlistBase,
impl<T> NetlistReferenceAccess for Twhere
T: NetlistBase,
Source§fn pin_ref(&self, pin: &Self::PinId) -> PinRef<'_, Self>
fn pin_ref(&self, pin: &Self::PinId) -> PinRef<'_, Self>
Get a reference to a pin from a pin ID.
Source§fn pin_instance_ref(&self, id: &Self::PinInstId) -> PinInstRef<'_, Self>
fn pin_instance_ref(&self, id: &Self::PinInstId) -> PinInstRef<'_, Self>
Get a reference to a pin instance.
Source§fn terminal_ref(&self, t: &TerminalId<Self>) -> TerminalRef<'_, Self>
fn terminal_ref(&self, t: &TerminalId<Self>) -> TerminalRef<'_, Self>
Get a reference to a terminal.
Source§impl<N> NetlistUtil for Nwhere
N: NetlistBase,
impl<N> NetlistUtil for Nwhere
N: NetlistBase,
Source§fn net_of_terminal(&self, terminal: &TerminalId<Self>) -> Option<Self::NetId>
fn net_of_terminal(&self, terminal: &TerminalId<Self>) -> Option<Self::NetId>
Get the net that is attached to this terminal.
Source§fn for_each_terminal_of_net<F>(&self, net: &Self::NetId, f: F)where
F: FnMut(TerminalId<Self>),
fn for_each_terminal_of_net<F>(&self, net: &Self::NetId, f: F)where
F: FnMut(TerminalId<Self>),
Call a function for each terminal connected to this net.
Source§fn each_terminal_of_net_vec(&self, net: &Self::NetId) -> Vec<TerminalId<Self>>
fn each_terminal_of_net_vec(&self, net: &Self::NetId) -> Vec<TerminalId<Self>>
Get a
Vec with all terminal IDs connected to this net.Source§fn each_terminal_of_net<'a>(
&'a self,
net: &Self::NetId,
) -> Box<dyn Iterator<Item = TerminalId<Self>> + 'a>
fn each_terminal_of_net<'a>( &'a self, net: &Self::NetId, ) -> Box<dyn Iterator<Item = TerminalId<Self>> + 'a>
Iterate over all terminals of a net.
Source§fn is_constant_net(&self, net: &Self::NetId) -> bool
fn is_constant_net(&self, net: &Self::NetId) -> bool
Check if the net is either the constant LOW or HIGH.
Source§fn nets_of_cell_instance(
&self,
inst: &Self::CellInstId,
) -> Box<dyn Iterator<Item = Self::NetId> + '_>
fn nets_of_cell_instance( &self, inst: &Self::CellInstId, ) -> Box<dyn Iterator<Item = Self::NetId> + '_>
Get all nets that are connected to the circuit instance.
Source§fn for_each_circuit_instance_of_net<F>(&self, net: &Self::NetId, f: F)where
F: FnMut(Self::CellInstId),
fn for_each_circuit_instance_of_net<F>(&self, net: &Self::NetId, f: F)where
F: FnMut(Self::CellInstId),
Visit all circuit instances connected to this net.
An instance is touched not more than once.
Source§fn each_circuit_instance_of_net_vec(
&self,
net: &Self::NetId,
) -> Vec<Self::CellInstId>
fn each_circuit_instance_of_net_vec( &self, net: &Self::NetId, ) -> Vec<Self::CellInstId>
Iterate over all circuit instances connected to this net.
An instance is touched not more than once.