Struct libreda_db::chip::Circuit

source ·
pub struct Circuit<C = Coord, U = ()>where
    C: CoordinateType,
    U: Default,{
Show 16 fields id: CellId, name: String, instances: FnvHashSet<CellInstId>, instances_by_name: HashMap<String, CellInstId>, references: FnvHashSet<CellInstId>, dependencies: FnvHashMap<CellId, usize>, dependent_circuits: FnvHashMap<CellId, usize>, instance_properties: FnvHashMap<CellInstId, PropertyStore<String>>, properties: PropertyStore<String>, user_data: U, pins: Vec<PinId>, nets: FnvHashSet<NetId>, nets_by_name: HashMap<String, NetId>, net_low: NetId, net_high: NetId, shapes_map: FnvHashMap<LayerId, Shapes<C>>,
}
Expand description

A circuit is defined by an interface (pins) and a content which consists of interconnected circuit instances.

Template parameters:

  • U: User defined data.

Fields§

§id: CellId

ID of this circuit.

§name: String

Name of the circuit.

§instances: FnvHashSet<CellInstId>

Instances inside this circuit.

§instances_by_name: HashMap<String, CellInstId>

Instances inside this circuit indexed by name. Not every instance needs to have a name.

§references: FnvHashSet<CellInstId>

Circuit instances that reference to this circuit.

§dependencies: FnvHashMap<CellId, usize>

Set of circuits that are direct dependencies of this circuit. Stored together with a counter of how many instances of the dependency are present. This are the circuits towards the leaves in the dependency tree.

§dependent_circuits: FnvHashMap<CellId, usize>

Circuits that use a instance of this circuit.

§instance_properties: FnvHashMap<CellInstId, PropertyStore<String>>

Properties related to the instances in this template. Instance properties are stored here for lower overhead of cell instances.

§properties: PropertyStore<String>

Properties related to this template.

§user_data: U

User-defined data.

§pins: Vec<PinId>

Pin definitions, the actual pin structs are in the top level Chip struct.

§nets: FnvHashSet<NetId>

All nets in this circuit.

§nets_by_name: HashMap<String, NetId>

Nets IDs stored by name.

§net_low: NetId

Logic constant LOW net.

§net_high: NetId

Logic constant HIGH net.

§shapes_map: FnvHashMap<LayerId, Shapes<C>>

Mapping from layer indices to geometry data.

Implementations§

source§

impl Circuit

source

fn id(&self) -> CellId

Get the ID of this circuit.

source

fn shapes(&self, layer_id: &LayerId) -> Option<&Shapes<Coord>>

Get the shape container of this layer. Returns None if the shapes object does not exist for this layer.

source

fn shapes_mut(&mut self, layer_id: &LayerId) -> Option<&mut Shapes<Coord>>

Get the mutable shape container of this layer. Returns None if the shapes object does not exist for this layer.

source

fn get_or_create_shapes_mut(&mut self, layer_id: &LayerId) -> &mut Shapes<Coord>

Get a mutable reference to the shapes container of the layer. When none exists a shapes object is created for this layer.

Trait Implementations§

source§

impl<C, U> Clone for Circuit<C, U>where C: CoordinateType + Clone, U: Default + Clone,

source§

fn clone(&self) -> Circuit<C, U>

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<C, U> Debug for Circuit<C, U>where C: CoordinateType + Debug, U: Default + Debug,

source§

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

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

impl<'de, C, U> Deserialize<'de> for Circuit<C, U>where C: CoordinateType + Deserialize<'de>, U: Default + Deserialize<'de>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<C, U> Serialize for Circuit<C, U>where C: CoordinateType + Serialize, U: Default + Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl<C, U> RefUnwindSafe for Circuit<C, U>where C: RefUnwindSafe, U: RefUnwindSafe,

§

impl<C, U> Send for Circuit<C, U>where C: Send, U: Send,

§

impl<C, U> Sync for Circuit<C, U>where C: Sync, U: Sync,

§

impl<C, U> Unpin for Circuit<C, U>where C: Unpin, U: Unpin,

§

impl<C, U> UnwindSafe for Circuit<C, U>where C: UnwindSafe, U: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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> ToOwned for Twhere 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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,