pub enum MacroGrid {
Own,
WrapperFed,
}Expand description
How a vehicle user macro takes power from the wrapper around it, which decides how high it may route.
The wrapper’s grid generator keeps its straps off a macro’s obstructions and feeds the macro’s own power pins where the two cross. MEASURED (wrapper PDN spike, 2026-09-26: the DRAM wrapper around a copy of its macro’s abstract with the met5 power ports removed and met4 obstructed across the die): every supply’s met4 straps were cut at the macro — 0 of 257 segments over it, against 127 over the unmodified macro (RUN_2026.09.23_12.53.02) — and met5 crossed it and fed vccd1 and vssd1 through 190 via stacks each.
Variants§
Own
Its own grid, as a core: straps on both of the process’s PDN layers, and routing below them
(UserArea::macro_max_layer); the wrapper’s grid passes
over it on both layers.
WrapperFed
Straps on the vertical PDN layer only, crossed and fed by the wrapper’s horizontal straps, and routing up
to that layer (UserArea::fed_macro_max_layer); the
wrapper’s vertical straps stop at the macro. efabless’s reference user macro.
Implementations§
Trait Implementations§
impl Copy for MacroGrid
impl Eq for MacroGrid
impl StructuralPartialEq for MacroGrid
Auto Trait Implementations§
impl Freeze for MacroGrid
impl RefUnwindSafe for MacroGrid
impl Send for MacroGrid
impl Sync for MacroGrid
impl Unpin for MacroGrid
impl UnsafeUnpin for MacroGrid
impl UnwindSafe for MacroGrid
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.