Struct libreda_sta::timing_graph::NodeData
source · pub(crate) struct NodeData<N, D>where
N: NetlistIds,
D: TimingBase + ConstraintBase,{
pub node_type: GraphNodeType<N>,
sync_data: DataCell<SyncNodeData<D>>,
pub forward_level: AtomicU32,
pub forward_dependencies: DependencyCounter,
pub backward_dependencies: DependencyCounter,
pub generation_forward: AtomicU32,
pub generation_backward: AtomicU32,
}Expand description
Data of a node in the timing graph. Holds timing information such as actual and required arrival times but also data used for concurrent graph operations.
Fields§
§node_type: GraphNodeType<N>Type of the node. Also makes a link to the corresponding pin or pin-instance in the netlist.
sync_data: DataCell<SyncNodeData<D>>Node data which can be accessed for read/write during parallel graph operations.
forward_level: AtomicU32The level of this node (minimal number of hops to a node without inputs)
forward_dependencies: DependencyCounterCount the number of unresolved input nodes.
backward_dependencies: DependencyCounterCount the number of unresolved output nodes + the current node. Note the node itself is considered a backward dependency because the back-propgation depends on the presence of the actual signal.
generation_forward: AtomicU32ID of the last iteration in which this node was touched for forward propagation. Used to mark nodes for incremental updates.
generation_backward: AtomicU32ID of the last iteration in which this node was touched for backward propagation. Used to mark nodes for incremental updates.
Implementations§
source§impl<N, D> NodeData<N, D>where
N: NetlistBase,
D: TimingBase + ConstraintBase,
impl<N, D> NodeData<N, D>where N: NetlistBase, D: TimingBase + ConstraintBase,
pub fn new(node_type: GraphNodeType<N>) -> Self
Trait Implementations§
source§impl<N, D> BorrowDataCell for NodeData<N, D>where
N: NetlistBase,
D: TimingBase + ConstraintBase,
impl<N, D> BorrowDataCell for NodeData<N, D>where N: NetlistBase, D: TimingBase + ConstraintBase,
§type UserData = SyncNodeData<D>
type UserData = SyncNodeData<D>
source§fn borrow_data_cell(&self) -> &DataCell<Self::UserData>
fn borrow_data_cell(&self) -> &DataCell<Self::UserData>
DataCell] structure.