Struct atoll::TileBuilder
source · pub struct TileBuilder<'a, PDK: Pdk + Schema + ?Sized> {
pub layout: &'a mut CellBuilder<PDK>,
pub layer_stack: Arc<LayerStack<PdkLayer>>,
/* private fields */
}
Expand description
A builder for ATOLL tiles.
Fields§
§layout: &'a mut CellBuilder<PDK>
The layout builder.
layer_stack: Arc<LayerStack<PdkLayer>>
The layer stack.
Implementations§
source§impl<'a, PDK: Pdk + Schema> TileBuilder<'a, PDK>
impl<'a, PDK: Pdk + Schema> TileBuilder<'a, PDK>
sourcepub fn generate_primitive<B: Clone + Schematic<PDK> + Layout<PDK>>(
&mut self,
block: B
) -> Instance<B>
pub fn generate_primitive<B: Clone + Schematic<PDK> + Layout<PDK>>( &mut self, block: B ) -> Instance<B>
sourcepub fn generate_primitive_connected<B: Clone + Schematic<PDK> + Layout<PDK>, C: IsBundle>(
&mut self,
block: B,
io: C
) -> Instance<B>
pub fn generate_primitive_connected<B: Clone + Schematic<PDK> + Layout<PDK>, C: IsBundle>( &mut self, block: B, io: C ) -> Instance<B>
sourcepub fn generate<B: Clone + Tile<PDK>>(
&mut self,
block: B
) -> Instance<TileWrapper<B>>
pub fn generate<B: Clone + Tile<PDK>>( &mut self, block: B ) -> Instance<TileWrapper<B>>
Generates an ATOLL instance from a block that implements Tile
.
sourcepub fn generate_connected<B: Clone + Tile<PDK>, C: IsBundle>(
&mut self,
block: B,
io: C
) -> Instance<TileWrapper<B>>
pub fn generate_connected<B: Clone + Tile<PDK>, C: IsBundle>( &mut self, block: B, io: C ) -> Instance<TileWrapper<B>>
Generates an ATOLL instance from a block that implements Tile
and connects its IO to the given bundle.
sourcepub fn generate_primitive_named<B: Clone + Schematic<PDK> + Layout<PDK>>(
&mut self,
block: B,
name: impl Into<ArcStr>
) -> Instance<B>
pub fn generate_primitive_named<B: Clone + Schematic<PDK> + Layout<PDK>>( &mut self, block: B, name: impl Into<ArcStr> ) -> Instance<B>
sourcepub fn generate_primitive_connected_named<B: Clone + Schematic<PDK> + Layout<PDK>, C: IsBundle>(
&mut self,
block: B,
io: C,
name: impl Into<ArcStr>
) -> Instance<B>
pub fn generate_primitive_connected_named<B: Clone + Schematic<PDK> + Layout<PDK>, C: IsBundle>( &mut self, block: B, io: C, name: impl Into<ArcStr> ) -> Instance<B>
sourcepub fn generate_named<B: Clone + Tile<PDK>>(
&mut self,
block: B,
name: impl Into<ArcStr>
) -> Instance<TileWrapper<B>>
pub fn generate_named<B: Clone + Tile<PDK>>( &mut self, block: B, name: impl Into<ArcStr> ) -> Instance<TileWrapper<B>>
Generates a named ATOLL instance from a block that implements Tile
.
sourcepub fn generate_connected_named<B: Clone + Tile<PDK>, C: IsBundle>(
&mut self,
block: B,
io: C,
name: impl Into<ArcStr>
) -> Instance<TileWrapper<B>>
pub fn generate_connected_named<B: Clone + Tile<PDK>, C: IsBundle>( &mut self, block: B, io: C, name: impl Into<ArcStr> ) -> Instance<TileWrapper<B>>
Generates a named ATOLL instance from a block that implements Tile
and connects its IO to the given bundle.
sourcepub fn draw<B: ExportsNestedData + Layout<PDK>>(
&mut self,
instance: Instance<B>
) -> Result<DrawnInstance<B>>
pub fn draw<B: ExportsNestedData + Layout<PDK>>( &mut self, instance: Instance<B> ) -> Result<DrawnInstance<B>>
Draws an ATOLL instance in layout.
sourcepub fn connect<D1, D2>(&mut self, s1: D1, s2: D2)
pub fn connect<D1, D2>(&mut self, s1: D1, s2: D2)
Connect all signals in the given data instances.
sourcepub fn signal<TY: HardwareType>(
&mut self,
name: impl Into<ArcStr>,
ty: TY
) -> <TY as HardwareType>::Bundle
pub fn signal<TY: HardwareType>( &mut self, name: impl Into<ArcStr>, ty: TY ) -> <TY as HardwareType>::Bundle
Create a new signal with the given name and hardware type.
sourcepub fn assign_grid_points(
&mut self,
node: Option<Node>,
layer: usize,
bounds: Rect
)
pub fn assign_grid_points( &mut self, node: Option<Node>, layer: usize, bounds: Rect )
Assigns grid points to the provided node.
If the provided node is None
, blocks the grid point for routing.
sourcepub fn assign_grid_points_if_available(
&mut self,
node: Option<Node>,
layer: usize,
bounds: Rect
)
pub fn assign_grid_points_if_available( &mut self, node: Option<Node>, layer: usize, bounds: Rect )
Assigns grid points to the provided node, but only if the grid point is currently marked available.
If the provided node is None
, blocks the grid point for routing.
sourcepub fn block_available_on_layer(&mut self, layer: usize)
pub fn block_available_on_layer(&mut self, layer: usize)
Blocks all remaining available grid points on the given layer.
sourcepub fn set_strapping(&mut self, node: Node, params: StrappingParams)
pub fn set_strapping(&mut self, node: Node, params: StrappingParams)
Set up straps for the provided node.
Order of calls to set_strapping
may matter depending on the Strapper
being used.
sourcepub fn ctx(&self) -> &PdkContext<PDK>
pub fn ctx(&self) -> &PdkContext<PDK>
Gets the global context.
sourcepub fn set_top_layer(&mut self, top_layer: usize)
pub fn set_top_layer(&mut self, top_layer: usize)
Sets the top layer of this tile, dictating the layers available for routing.
If the top layer is set to below the top layer of a constituent tile, it will be overwritten to the top layer of the constituent tile with the highest top layer.
sourcepub fn set_router<T: Any + Router>(&mut self, router: T)
pub fn set_router<T: Any + Router>(&mut self, router: T)
Sets the router.
sourcepub fn skip_routing(&mut self, node: Node)
pub fn skip_routing(&mut self, node: Node)
Skips routing a net.
sourcepub fn skip_routing_all(&mut self, node: Node)
pub fn skip_routing_all(&mut self, node: Node)
Skips routing a net.
sourcepub fn set_strapper<T: Any + Strapper>(&mut self, strapper: T)
pub fn set_strapper<T: Any + Strapper>(&mut self, strapper: T)
Sets the strapper.
sourcepub fn set_via_maker<T: Any + ViaMaker<PDK>>(&mut self, via_maker: T)
pub fn set_via_maker<T: Any + ViaMaker<PDK>>(&mut self, via_maker: T)
Sets the via maker.
Auto Trait Implementations§
impl<'a, PDK> !RefUnwindSafe for TileBuilder<'a, PDK>
impl<'a, PDK: ?Sized> Send for TileBuilder<'a, PDK>
impl<'a, PDK: ?Sized> Sync for TileBuilder<'a, PDK>
impl<'a, PDK: ?Sized> Unpin for TileBuilder<'a, PDK>
impl<'a, PDK> !UnwindSafe for TileBuilder<'a, PDK>
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, U> CustomHardwareType<Flipped<T>> for Uwhere
U: CustomHardwareType<T>,
T: HardwareType,
impl<T, U> CustomHardwareType<Flipped<T>> for Uwhere
U: CustomHardwareType<T>,
T: HardwareType,
source§fn from_layout_type(other: &Flipped<T>) -> U
fn from_layout_type(other: &Flipped<T>) -> U
source§impl<T, U> CustomHardwareType<InOut<T>> for Uwhere
U: CustomHardwareType<T>,
T: HardwareType,
impl<T, U> CustomHardwareType<InOut<T>> for Uwhere
U: CustomHardwareType<T>,
T: HardwareType,
source§fn from_layout_type(other: &InOut<T>) -> U
fn from_layout_type(other: &InOut<T>) -> U
source§impl<T, U> CustomHardwareType<Input<T>> for Uwhere
U: CustomHardwareType<T>,
T: HardwareType,
impl<T, U> CustomHardwareType<Input<T>> for Uwhere
U: CustomHardwareType<T>,
T: HardwareType,
source§fn from_layout_type(other: &Input<T>) -> U
fn from_layout_type(other: &Input<T>) -> U
source§impl<T, U> CustomHardwareType<Output<T>> for Uwhere
U: CustomHardwareType<T>,
T: HardwareType,
impl<T, U> CustomHardwareType<Output<T>> for Uwhere
U: CustomHardwareType<T>,
T: HardwareType,
source§fn from_layout_type(other: &Output<T>) -> U
fn from_layout_type(other: &Output<T>) -> U
§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<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request