Struct substrate::scir::Library

source ·
pub struct Library<S = NoSchema>(/* private fields */)
where
    S: Schema + ?Sized;
Expand description

A SCIR library that is guaranteed to be valid (with the exception of primitives, which are opaque to SCIR).

The contents of the library cannot be mutated.

Implementations§

source§

impl<S> Library<S>
where S: Schema + ?Sized,

source

pub fn drop_schema(self) -> Result<Library, NoSchemaError>

Converts a Library<S> to a Library<NoSchema>, throwing an error if there are any primitives.

source

pub fn convert_schema<C>( self ) -> Result<LibraryBuilder<C>, <C as FromSchema<S>>::Error>
where C: Schema + FromSchema<S> + ?Sized,

Converts a Library<S> into a LibraryBuilder<C>.

A LibraryBuilder is created to indicate that validation must be done again to ensure errors were not introduced during the conversion.

source

pub fn into_builder(self) -> LibraryBuilder<S>

Converts this library into a LibraryBuilder that can be modified.

source§

impl<S> Library<S>
where S: Schema<Primitive = impl Clone> + ?Sized,

source

pub fn from_cell_named(lib: &Library<S>, cell: &str) -> Library<S>

Creates a new SCIR library containing only the named cell and its children from an existing library.

Methods from Deref<Target = LibraryBuilder<S>>§

source

pub fn validate_drivers(&self) -> IssueSet<DriverIssue>

Perform driver analysis on this library.

source

pub fn validate(&self) -> IssueSet<ValidatorIssue>

Check whether this library is valid.

source

pub fn top_cell(&self) -> Option<CellId>

The ID of the top-level cell, if there is one.

source

pub fn is_top(&self, cell: CellId) -> bool

Returns true if the given cell is the top cell.

source

pub fn cell(&self, id: CellId) -> &Cell

Gets the cell with the given ID.

§Panics

Panics if no cell has the given ID. For a non-panicking alternative, see try_cell.

source

pub fn try_cell(&self, id: CellId) -> Option<&Cell>

Gets the cell with the given ID.

source

pub fn cell_named(&self, name: &str) -> &Cell

Gets the cell with the given name.

§Panics

Panics if no cell has the given name.

source

pub fn try_cell_named(&self, name: &str) -> Option<&Cell>

Gets the cell with the given name.

source

pub fn cell_id_named(&self, name: &str) -> CellId

Gets the cell ID corresponding to the given name.

§Panics

Panics if no cell has the given name. For a non-panicking alternative, see try_cell_id_named.

source

pub fn try_cell_id_named(&self, name: &str) -> Option<CellId>

Gets the cell ID corresponding to the given name.

source

pub fn cells(&self) -> impl Iterator<Item = (CellId, &Cell)>

Iterates over the (id, cell) pairs in this library.

source

pub fn primitive(&self, id: PrimitiveId) -> &<S as Schema>::Primitive

Gets the primitive with the given ID.

§Panics

Panics if no primitive has the given ID. For a non-panicking alternative, see try_primitive.

source

pub fn try_primitive( &self, id: PrimitiveId ) -> Option<&<S as Schema>::Primitive>

Gets the primitive with the given ID.

source

pub fn primitives( &self ) -> impl Iterator<Item = (PrimitiveId, &<S as Schema>::Primitive)>

Iterates over the (id, primitive) pairs in this library.

source

pub fn annotate_instance_path( &self, path: InstancePath ) -> AnnotatedInstancePath

Annotates an InstancePath with additional metadata.

Finds cell IDs associated with instances in the path if they are in the SCIR library, and converts the top of the path to a cell ID if possible.

source

pub fn convert_annotated_instance_path( &self, conv: Option<&NetlistLibConversion>, path: AnnotatedInstancePath ) -> NamedPath

Annotates an instance path with additional metadata, such as whether each instance in the path corresponds to an actual SCIR instance.

source

pub fn convert_instance_path(&self, path: InstancePath) -> NamedPath

Converts an InstancePath to a NamedPath.

§Panics

Panics if the path contains instance or cell IDs that do not exist.

source

pub fn convert_instance_path_with_conv( &self, conv: &NetlistLibConversion, path: InstancePath ) -> NamedPath

Converts an InstancePath to a NamedPath, using the provided conv to modify instance names that were converted during netlisting.

§Panics

Panics if the path contains instance or cell IDs that do not exist.

source

pub fn convert_slice_one_path( &self, path: SliceOnePath, index_fmt: impl FnOnce(&ArcStr, Option<usize>) -> ArcStr ) -> NamedPath

Converts a SliceOnePath to a NamedPath. to modify instance names that were converted during netlisting.

§Panics

Panics if the path contains instance or cell IDs that do not exist.

source

pub fn convert_slice_one_path_with_conv( &self, conv: &NetlistLibConversion, path: SliceOnePath, index_fmt: impl FnOnce(&ArcStr, Option<usize>) -> ArcStr ) -> NamedPath

Converts a SliceOnePath to a NamedPath, using the provided conv to modify instance names that were converted during netlisting.

§Panics

Panics if the path contains instance or cell IDs that do not exist.

source

pub fn simplify_path(&self, path: SliceOnePath) -> SliceOnePath

Returns a simplified path to the provided node, bubbling up through IOs.

§Panics

Panics if the provided path does not exist within the SCIR library.

Trait Implementations§

source§

impl<S> Clone for Library<S>
where S: Schema + ?Sized, LibraryBuilder<S>: Clone,

source§

fn clone(&self) -> Library<S>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<S> Debug for Library<S>
where S: Schema<Primitive = impl Debug> + ?Sized,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<S> Deref for Library<S>
where S: Schema + ?Sized,

§

type Target = LibraryBuilder<S>

The resulting type after dereferencing.
source§

fn deref(&self) -> &<Library<S> as Deref>::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<S: ?Sized> RefUnwindSafe for Library<S>

§

impl<S: ?Sized> Send for Library<S>
where <S as Schema>::Primitive: Send,

§

impl<S: ?Sized> Sync for Library<S>
where <S as Schema>::Primitive: Sync,

§

impl<S: ?Sized> Unpin for Library<S>
where <S as Schema>::Primitive: Unpin,

§

impl<S: ?Sized> UnwindSafe for Library<S>
where <S as Schema>::Primitive: UnwindSafe,

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> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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
where T: Clone + Send + Sync + Any,

source§

impl<T> Primitive for T