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>

source

pub fn flatten(&mut self)

Flattens the schematic of this tile.

source

pub fn generate_primitive<B: Clone + Schematic<PDK> + Layout<PDK>>( &mut self, block: B ) -> Instance<B>

Generates an ATOLL instance from a Substrate block that implements Schematic and Layout.

source

pub fn generate_primitive_connected<B: Clone + Schematic<PDK> + Layout<PDK>, C: IsBundle>( &mut self, block: B, io: C ) -> Instance<B>
where for<'b> &'b TerminalView<<B::Io as HardwareType>::Bundle>: Connect<C>,

Generates an ATOLL instance from a Substrate block that implements Schematic and Layout and connects its IO to the given bundle.

source

pub fn generate<B: Clone + Tile<PDK>>( &mut self, block: B ) -> Instance<TileWrapper<B>>

Generates an ATOLL instance from a block that implements Tile.

source

pub fn generate_connected<B: Clone + Tile<PDK>, C: IsBundle>( &mut self, block: B, io: C ) -> Instance<TileWrapper<B>>
where for<'b> &'b TerminalView<<B::Io as HardwareType>::Bundle>: Connect<C>,

Generates an ATOLL instance from a block that implements Tile and connects its IO to the given bundle.

source

pub fn generate_primitive_named<B: Clone + Schematic<PDK> + Layout<PDK>>( &mut self, block: B, name: impl Into<ArcStr> ) -> Instance<B>

Generates a named ATOLL instance from a Substrate block that implements Schematic and Layout.

source

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>
where for<'b> &'b TerminalView<<B::Io as HardwareType>::Bundle>: Connect<C>,

Generates a named ATOLL instance from a Substrate block that implements Schematic and Layout and connects its IO to the given bundle.

source

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.

source

pub fn generate_connected_named<B: Clone + Tile<PDK>, C: IsBundle>( &mut self, block: B, io: C, name: impl Into<ArcStr> ) -> Instance<TileWrapper<B>>
where for<'b> &'b TerminalView<<B::Io as HardwareType>::Bundle>: Connect<C>,

Generates a named ATOLL instance from a block that implements Tile and connects its IO to the given bundle.

source

pub fn draw<B: ExportsNestedData + Layout<PDK>>( &mut self, instance: Instance<B> ) -> Result<DrawnInstance<B>>

Draws an ATOLL instance in layout.

source

pub fn connect<D1, D2>(&mut self, s1: D1, s2: D2)
where D1: Flatten<Node> + Connect<D2>, D2: Flatten<Node>,

Connect all signals in the given data instances.

source

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.

source

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.

source

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.

source

pub fn block_available_on_layer(&mut self, layer: usize)

Blocks all remaining available grid points on the given layer.

source

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.

source

pub fn ctx(&self) -> &PdkContext<PDK>

Gets the global context.

source

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.

source

pub fn set_router<T: Any + Router>(&mut self, router: T)

Sets the router.

source

pub fn skip_routing(&mut self, node: Node)

Skips routing a net.

source

pub fn skip_routing_all(&mut self, node: Node)

Skips routing a net.

source

pub fn set_strapper<T: Any + Strapper>(&mut self, strapper: T)

Sets the strapper.

source

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T, U> CustomHardwareType<Flipped<T>> for U

source§

fn from_layout_type(other: &Flipped<T>) -> U

Creates this layout type from another layout type.
source§

impl<T, U> CustomHardwareType<InOut<T>> for U

source§

fn from_layout_type(other: &InOut<T>) -> U

Creates this layout type from another layout type.
source§

impl<T, U> CustomHardwareType<Input<T>> for U

source§

fn from_layout_type(other: &Input<T>) -> U

Creates this layout type from another layout type.
source§

impl<T, U> CustomHardwareType<Output<T>> for U

source§

fn from_layout_type(other: &Output<T>) -> U

Creates this layout type from another layout type.
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> Connect<&T> for T

source§

impl<T> Connect<T> for T

source§

impl<T> Primitive for T