pub struct DMEAlgorithm { /* private fields */ }Expand description
The DME (Deferred Merge Embedding) algorithm for clock tree synthesis.
Builds a prescribed-skew clock tree using a bottom-up merging phase and
a top-down embedding phase. Uses an arena-allocated node representation
(Tree) for cache efficiency. The constructed tree can be queried
via get_tree().
Supports both linear and Elmore delay models via the DelayCalculator
trait.
Implementations§
Source§impl DMEAlgorithm
impl DMEAlgorithm
Sourcepub fn new(sinks: Vec<Sink>, calculator: Box<dyn DelayCalculator>) -> Self
pub fn new(sinks: Vec<Sink>, calculator: Box<dyn DelayCalculator>) -> Self
Creates a new DME algorithm instance with the given sinks and delay model.
§Panics
Panics if sinks is empty.
Sourcepub fn with_source(
sinks: Vec<Sink>,
calculator: Box<dyn DelayCalculator>,
source: Point<i32, i32>,
) -> Self
pub fn with_source( sinks: Vec<Sink>, calculator: Box<dyn DelayCalculator>, source: Point<i32, i32>, ) -> Self
Creates a new DME algorithm with a specified clock source position.
§Panics
Panics if sinks is empty.
Sourcepub fn get_tree_mut(&mut self) -> &mut Tree
pub fn get_tree_mut(&mut self) -> &mut Tree
Returns a mutable reference to the constructed tree.
Sourcepub fn build_clock_tree(&mut self) -> NodeIdx
pub fn build_clock_tree(&mut self) -> NodeIdx
Builds the clock tree and returns the root index.
Sourcepub fn analyze_skew(&self, root: NodeIdx) -> SkewAnalysis
pub fn analyze_skew(&self, root: NodeIdx) -> SkewAnalysis
Analyze clock skew from the constructed tree.
Auto Trait Implementations§
impl !RefUnwindSafe for DMEAlgorithm
impl !Send for DMEAlgorithm
impl !Sync for DMEAlgorithm
impl !UnwindSafe for DMEAlgorithm
impl Freeze for DMEAlgorithm
impl Unpin for DMEAlgorithm
impl UnsafeUnpin for DMEAlgorithm
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