Chip

Struct Chip 

Source
pub struct Chip<C = i32>
where C: CoordinateType,
{ /* private fields */ }
Expand description

A netlist is the container of circuits.

Trait Implementations§

Source§

impl<C> Clone for Chip<C>
where C: Clone + CoordinateType,

Source§

fn clone(&self) -> Chip<C>

Returns a duplicate 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> Debug for Chip<C>
where C: Debug + CoordinateType,

Source§

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

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

impl<C> Default for Chip<C>
where C: CoordinateType + One,

Source§

fn default() -> Chip<C>

Returns the “default value” for a type. Read more
Source§

impl HierarchyBase for Chip

Source§

type NameType = String

Type for names of cells, instances, etc.
Source§

type CellId = CellId

Cell/module identifier type.
Source§

type CellInstId = CellInstId

Cell instance identifier type.
Source§

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

Find a cell by its name. Return the cell with the given name. Returns None if the cell does not exist.
Source§

fn cell_instance_by_name( &self, parent_circuit: &<Chip as HierarchyBase>::CellId, name: &str, ) -> Option<<Chip as HierarchyBase>::CellInstId>

Find a cell instance by its name. Returns None if the name does not exist.
Source§

fn cell_name( &self, circuit: &<Chip as HierarchyBase>::CellId, ) -> <Chip as HierarchyBase>::NameType

Get the name of the cell.
Source§

fn cell_instance_name( &self, circuit_inst: &<Chip as HierarchyBase>::CellInstId, ) -> Option<<Chip as HierarchyBase>::NameType>

Get the name of the cell instance.
Source§

fn parent_cell( &self, circuit_instance: &<Chip as HierarchyBase>::CellInstId, ) -> <Chip as HierarchyBase>::CellId

Get the ID of the parent cell of this instance.
Source§

fn template_cell( &self, circuit_instance: &<Chip as HierarchyBase>::CellInstId, ) -> <Chip as HierarchyBase>::CellId

Get the ID of the template cell of this instance.
Source§

fn for_each_cell<F>(&self, f: F)
where F: FnMut(<Chip as HierarchyBase>::CellId),

Call a function on each cell of the netlist.
Source§

fn each_cell(&self) -> Box<dyn Iterator<Item = CellId> + '_>

Iterate over all cells.
Source§

fn for_each_cell_instance<F>( &self, circuit: &<Chip as HierarchyBase>::CellId, f: F, )

Call a function on each instance in this cell.
Source§

fn each_cell_instance( &self, circuit: &<Chip as HierarchyBase>::CellId, ) -> Box<dyn Iterator<Item = <Chip as HierarchyBase>::CellInstId> + '_>

Iterate over all instances in a cell.
Source§

fn for_each_cell_dependency<F>( &self, circuit: &<Chip as HierarchyBase>::CellId, f: F, )
where F: FnMut(<Chip as HierarchyBase>::CellId),

Call a function for each cell that is a child of this cell.
Source§

fn each_cell_dependency( &self, circuit: &<Chip as HierarchyBase>::CellId, ) -> Box<dyn Iterator<Item = <Chip as HierarchyBase>::CellId> + '_>

Iterate over all cells that are instantiated in this cell.
Source§

fn num_cell_dependencies(&self, cell: &<Chip as HierarchyBase>::CellId) -> usize

Count all cells that are dependencies of cell.
Source§

fn for_each_dependent_cell<F>( &self, circuit: &<Chip as HierarchyBase>::CellId, f: F, )
where F: FnMut(<Chip as HierarchyBase>::CellId),

Call a function for each cell that directly depends on cell.
Source§

fn each_dependent_cell( &self, circuit: &<Chip as HierarchyBase>::CellId, ) -> Box<dyn Iterator<Item = <Chip as HierarchyBase>::CellId> + '_>

Iterate over each cell that directly depends on cell.
Source§

fn num_dependent_cells(&self, cell: &<Chip as HierarchyBase>::CellId) -> usize

Count all cells that are directly dependent on cell, i.e. contain an instance of cell.
Source§

fn for_each_cell_reference<F>( &self, circuit: &<Chip as HierarchyBase>::CellId, f: F, )

Iterate over all instances of this cell, i.e. instances that use this cell as a template.
Source§

fn each_cell_reference( &self, circuit: &<Chip as HierarchyBase>::CellId, ) -> Box<dyn Iterator<Item = <Chip as HierarchyBase>::CellInstId> + '_>

Iterate over all instances of this cell, i.e. instances that use this cell as a template.
Source§

fn num_cell_references(&self, cell: &<Chip as HierarchyBase>::CellId) -> usize

Count all instantiations of cell.
Source§

fn num_child_instances(&self, cell: &<Chip as HierarchyBase>::CellId) -> usize

Get the number of cell instances inside the cell.
Source§

fn num_cells(&self) -> usize

Get the number of cell templates.
Source§

fn get_chip_property( &self, key: &<Chip as HierarchyBase>::NameType, ) -> Option<PropertyValue>

Get a property of the top-level chip data structure.
Source§

fn get_cell_property( &self, cell: &<Chip as HierarchyBase>::CellId, key: &<Chip as HierarchyBase>::NameType, ) -> Option<PropertyValue>

Get a property of a cell.
Source§

fn get_cell_instance_property( &self, inst: &<Chip as HierarchyBase>::CellInstId, key: &<Chip as HierarchyBase>::NameType, ) -> Option<PropertyValue>

Get a property of a cell instance.
Source§

fn each_cell_vec(&self) -> Vec<Self::CellId>

Get a Vec of all cell IDs in this netlist.
Source§

fn each_cell_instance_vec(&self, cell: &Self::CellId) -> Vec<Self::CellInstId>

Get a Vec of the IDs of all instances in this cell.
Source§

fn each_cell_dependency_vec(&self, cell: &Self::CellId) -> Vec<Self::CellId>

Get a Vec of each cell that is a child of this cell.
Source§

fn each_dependent_cell_vec(&self, cell: &Self::CellId) -> Vec<Self::CellId>

Get a Vec of each cell that directly depends on cell.
Source§

fn each_cell_reference_vec(&self, cell: &Self::CellId) -> Vec<Self::CellInstId>

Get a Vec with all cell instances referencing this cell.
Source§

impl HierarchyEdit for Chip

Source§

fn new() -> Chip

Create a new empty data structure.
Source§

fn create_cell( &mut self, name: <Chip as HierarchyBase>::NameType, ) -> <Chip as HierarchyBase>::CellId

Create a new and empty cell template. A cell template can be be instantiated in other cells. Read more
Source§

fn remove_cell(&mut self, cell_id: &<Chip as HierarchyBase>::CellId)

Remove a cell and all the instances of it. Read more
Source§

fn create_cell_instance( &mut self, parent_cell: &<Chip as HierarchyBase>::CellId, template_cell: &<Chip as HierarchyBase>::CellId, name: Option<<Chip as HierarchyBase>::NameType>, ) -> <Chip as HierarchyBase>::CellInstId

Create a new instance of template_cell in parent_cell. Recursive instantiation is forbidden and might panic. Read more
Source§

fn remove_cell_instance(&mut self, id: &<Chip as HierarchyBase>::CellInstId)

Remove cell instance if it exists. Read more
Source§

fn rename_cell_instance( &mut self, inst: &<Chip as HierarchyBase>::CellInstId, new_name: Option<<Chip as HierarchyBase>::NameType>, )

Change the name of a cell instance. Read more
Source§

fn rename_cell( &mut self, cell: &<Chip as HierarchyBase>::CellId, new_name: <Chip as HierarchyBase>::NameType, )

Change the name of a cell. Read more
Source§

fn set_chip_property( &mut self, key: <Chip as HierarchyBase>::NameType, value: PropertyValue, )

Set a property of the top-level chip data structure..
Source§

fn set_cell_property( &mut self, cell: &<Chip as HierarchyBase>::CellId, key: <Chip as HierarchyBase>::NameType, value: PropertyValue, )

Set a property of a cell.
Source§

fn set_cell_instance_property( &mut self, inst: &<Chip as HierarchyBase>::CellInstId, key: <Chip as HierarchyBase>::NameType, value: PropertyValue, )

Set a property of a cell instance.
Source§

impl L2NBase for Chip

Source§

fn shapes_of_net( &self, net_id: &<Chip as NetlistBase>::NetId, ) -> Box<dyn Iterator<Item = <Chip as LayoutBase>::ShapeId> + '_>

Iterate over all shapes that are marked to belong to the specified net.
Source§

fn shapes_of_pin( &self, pin_id: &<Chip as NetlistBase>::PinId, ) -> Box<dyn Iterator<Item = <Chip as LayoutBase>::ShapeId> + '_>

Iterate over all shapes that are part of the pin.
Source§

fn get_net_of_shape( &self, shape_id: &<Chip as LayoutBase>::ShapeId, ) -> Option<<Chip as NetlistBase>::NetId>

Get the net of a shape.
Source§

fn get_pin_of_shape( &self, shape_id: &<Chip as LayoutBase>::ShapeId, ) -> Option<<Chip as NetlistBase>::PinId>

Get the pin that belongs to the shape (if any).
Source§

impl L2NEdit for Chip

Source§

fn set_pin_of_shape( &mut self, shape_id: &<Chip as LayoutBase>::ShapeId, pin: Option<<Chip as NetlistBase>::PinId>, ) -> Option<<Chip as NetlistBase>::PinId>

Create the link between a circuit pin and its shapes in the layout. Return the current pin.
Source§

fn set_net_of_shape( &mut self, shape_id: &<Chip as LayoutBase>::ShapeId, net: Option<<Chip as NetlistBase>::NetId>, ) -> Option<<Chip as NetlistBase>::NetId>

Set the net of a shape. Return the current net.
Source§

impl LayoutBase for Chip

Source§

type Coord = i32

Number type used for coordinates and distances.
Source§

type Area = i64

Number type for areas. This is possibly another type then Coord for the following reasons: Read more
Source§

type LayerId = Index<LayerInfo<String>, u16>

Layer identifier type.
Source§

type ShapeId = Index<Shape<i32>>

Shape identifier type.
Source§

fn dbu(&self) -> <Chip as LayoutBase>::Coord

Get the distance unit used in this layout in ‘pixels per micron’.
Source§

fn each_layer( &self, ) -> Box<dyn Iterator<Item = <Chip as LayoutBase>::LayerId> + '_>

Iterate over all defined layers.
Source§

fn layer_info( &self, layer: &<Chip as LayoutBase>::LayerId, ) -> LayerInfo<<Chip as HierarchyBase>::NameType>

Get the LayerInfo data structure for this layer.
Source§

fn find_layer( &self, index: u32, datatype: u32, ) -> Option<<Chip as LayoutBase>::LayerId>

Find layer index by the (index, data type) tuple.
Source§

fn layer_by_name(&self, name: &str) -> Option<<Chip as LayoutBase>::LayerId>

Find layer index by the name.
Source§

fn bounding_box_per_layer( &self, cell: &<Chip as HierarchyBase>::CellId, layer: &<Chip as LayoutBase>::LayerId, ) -> Option<Rect<i32>>

Compute the bounding box of the shapes on one layer. The bounding box also includes all child cell instances.
Source§

fn each_shape_id( &self, cell: &<Chip as HierarchyBase>::CellId, layer: &<Chip as LayoutBase>::LayerId, ) -> Box<dyn Iterator<Item = <Chip as LayoutBase>::ShapeId> + '_>

Iterate over the IDs of all shapes in the cell on a specific layer.
Source§

fn for_each_shape<F>( &self, cell_id: &<Chip as HierarchyBase>::CellId, layer: &<Chip as LayoutBase>::LayerId, f: F, )

Call a function for each shape on this layer.
Source§

fn with_shape<F, R>(&self, shape_id: &<Chip as LayoutBase>::ShapeId, f: F) -> R
where F: FnMut(&<Chip as LayoutBase>::LayerId, &Geometry<<Chip as LayoutBase>::Coord>) -> R,

Access a shape by its ID.
Source§

fn parent_of_shape( &self, shape_id: &<Chip as LayoutBase>::ShapeId, ) -> (<Chip as HierarchyBase>::CellId, <Chip as LayoutBase>::LayerId)

Get the parent cell and the layer of a shape as a (cell, layer) tuple.
Source§

fn get_transform( &self, cell_inst: &<Chip as HierarchyBase>::CellInstId, ) -> SimpleTransform<<Chip as LayoutBase>::Coord>

Get the geometric transform that describes the location of a cell instance relative to its parent.
Source§

fn get_shape_property( &self, shape: &<Chip as LayoutBase>::ShapeId, key: &<Chip as HierarchyBase>::NameType, ) -> Option<PropertyValue>

Get a property of a shape.
Source§

fn bounding_box(&self, cell: &Self::CellId) -> Option<Rect<Self::Coord>>

Compute the bounding box of the cell over all layers. The bounding box is not defined if the cell is empty. In this case return None.
Source§

fn shape_geometry(&self, shape_id: &Self::ShapeId) -> Geometry<Self::Coord>

Get a clone of the shape geometry.
Source§

fn shape_layer(&self, shape_id: &Self::ShapeId) -> Self::LayerId

Get the layer of a shape.
Source§

fn for_each_shape_recursive<F>( &self, cell: &Self::CellId, layer: &Self::LayerId, f: F, )
where F: FnMut(SimpleTransform<Self::Coord>, &Self::ShapeId, &Geometry<Self::Coord>),

Call a function f for each shape of this cell and its sub cells. Along to the geometric shape f also gets a transformation as argument. The transformation describes the actual position of the geometric shape relative to the cell.
Source§

impl LayoutEdit for Chip

Source§

fn set_dbu(&mut self, dbu: <Chip as LayoutBase>::Coord)

Set the distance unit used in this layout in ‘pixels per micron’.
Source§

fn create_layer( &mut self, index: u32, datatype: u32, ) -> <Chip as LayoutBase>::LayerId

Create a new layer. Use set_layer_name() to define a name.
Source§

fn create_layer_with_id( &mut self, layer_id: <Chip as LayoutBase>::LayerId, index: u32, datatype: u32, ) -> Result<(), ()>

Create a new layer with a specific ID. This is used to clone layer-stacks between layouts while preserving their IDs. Returns an Err when the ID already exists.
Source§

fn set_layer_name( &mut self, layer: &<Chip as LayoutBase>::LayerId, name: Option<<Chip as HierarchyBase>::NameType>, ) -> Option<<Chip as HierarchyBase>::NameType>

Set the name of a layer or clear the layer name when passing None. This method should not change the ID of the layer. Returns the previous name of the layer.
Source§

fn insert_shape( &mut self, parent_cell: &<Chip as HierarchyBase>::CellId, layer: &<Chip as LayoutBase>::LayerId, geometry: Geometry<<Chip as LayoutBase>::Coord>, ) -> <Chip as LayoutBase>::ShapeId

Insert a geometric shape into the parent cell.
Source§

fn remove_shape( &mut self, shape_id: &<Chip as LayoutBase>::ShapeId, ) -> Option<Geometry<<Chip as LayoutBase>::Coord>>

Remove shape from the parent cell.
Source§

fn replace_shape( &mut self, shape_id: &<Chip as LayoutBase>::ShapeId, geometry: Geometry<<Chip as LayoutBase>::Coord>, ) -> Geometry<<Chip as LayoutBase>::Coord>

Replace the geometry of a shape.
Source§

fn set_transform( &mut self, cell_inst: &<Chip as HierarchyBase>::CellInstId, tf: SimpleTransform<<Chip as LayoutBase>::Coord>, )

Set the geometric transform that describes the location of a cell instance relative to its parent.
Source§

fn set_shape_property( &mut self, shape: &<Chip as LayoutBase>::ShapeId, key: <Chip as HierarchyBase>::NameType, value: PropertyValue, )

Set a property of a shape.
Source§

impl NetlistBase for Chip

Source§

type PinId = PinId

Pin identifier type. Uniquely identifies a pin in the whole netlist.
Source§

type PinInstId = PinInstId

Pin instance identifier type. Uniquely identifies a pin instance in the whole netlist. A pin instance is a pin of a circuit instance.
Source§

type NetId = NetId

Net identifier type. Uniquely identifies a net in the whole netlist.
Source§

fn template_pin( &self, pin_instance: &<Chip as NetlistBase>::PinInstId, ) -> <Chip as NetlistBase>::PinId

Get the ID of the template pin of this pin instance.
Source§

fn pin_direction(&self, pin: &<Chip as NetlistBase>::PinId) -> Direction

Get the signal direction of the pin.
Source§

fn pin_name( &self, pin: &<Chip as NetlistBase>::PinId, ) -> <Chip as HierarchyBase>::NameType

Get the name of the pin.
Source§

fn pin_by_name( &self, parent_circuit: &<Chip as HierarchyBase>::CellId, name: &str, ) -> Option<<Chip as NetlistBase>::PinId>

Find a pin by its name. Returns None if no such pin can be found.
Source§

fn parent_cell_of_pin( &self, pin: &<Chip as NetlistBase>::PinId, ) -> <Chip as HierarchyBase>::CellId

Get the ID of the parent circuit of this pin.
Source§

fn parent_of_pin_instance( &self, pin_inst: &<Chip as NetlistBase>::PinInstId, ) -> <Chip as HierarchyBase>::CellInstId

Get the ID of the circuit instance that holds this pin instance.
Source§

fn parent_cell_of_net( &self, net: &<Chip as NetlistBase>::NetId, ) -> <Chip as HierarchyBase>::CellId

Get the ID of the parent circuit of this net.
Source§

fn net_of_pin( &self, pin: &<Chip as NetlistBase>::PinId, ) -> Option<<Chip as NetlistBase>::NetId>

Get the internal net attached to this pin.
Source§

fn net_of_pin_instance( &self, pin_inst: &<Chip as NetlistBase>::PinInstId, ) -> Option<<Chip as NetlistBase>::NetId>

Get the external net attached to this pin instance.
Source§

fn net_zero( &self, parent_circuit: &<Chip as HierarchyBase>::CellId, ) -> <Chip as NetlistBase>::NetId

Get the net of the logical constant zero.
Source§

fn net_one( &self, parent_circuit: &<Chip as HierarchyBase>::CellId, ) -> <Chip as NetlistBase>::NetId

Get the net of the logical constant one.
Source§

fn net_by_name( &self, parent_circuit: &<Chip as HierarchyBase>::CellId, name: &str, ) -> Option<<Chip as NetlistBase>::NetId>

Find a net by its name inside the parent circuit. Returns None if no such net can be found.
Source§

fn net_name( &self, net: &<Chip as NetlistBase>::NetId, ) -> Option<<Chip as HierarchyBase>::NameType>

Get the name of the net.
Source§

fn for_each_pin<F>(&self, circuit: &<Chip as HierarchyBase>::CellId, f: F)
where F: FnMut(<Chip as NetlistBase>::PinId),

Call a function for each pin of the circuit.
Source§

fn each_pin(&self, circuit_id: &CellId) -> Box<dyn Iterator<Item = PinId> + '_>

Iterate over all pins of a circuit.
Source§

fn for_each_pin_instance<F>( &self, circuit_inst: &<Chip as HierarchyBase>::CellInstId, f: F, )
where F: FnMut(<Chip as NetlistBase>::PinInstId),

Call a function for each pin instance of the circuit instance.
Source§

fn each_pin_instance<'a>( &'a self, circuit_inst: &<Chip as HierarchyBase>::CellInstId, ) -> Box<dyn Iterator<Item = <Chip as NetlistBase>::PinInstId> + 'a>

Iterate over all pin instances of a circuit.
Source§

fn for_each_internal_net<F>( &self, circuit: &<Chip as HierarchyBase>::CellId, f: F, )
where F: FnMut(<Chip as NetlistBase>::NetId),

Call a function for net of the circuit.
Source§

fn each_internal_net( &self, circuit: &<Chip as HierarchyBase>::CellId, ) -> Box<dyn Iterator<Item = <Chip as NetlistBase>::NetId> + '_>

Iterate over all defined nets inside a circuit.
Source§

fn num_internal_nets(&self, circuit: &<Chip as HierarchyBase>::CellId) -> usize

Return the number of nets defined inside a cell.
Source§

fn num_pins(&self, circuit: &<Chip as HierarchyBase>::CellId) -> usize

Get the number of pins of a circuit.
Source§

fn for_each_pin_of_net<F>(&self, net: &<Chip as NetlistBase>::NetId, f: F)
where F: FnMut(<Chip as NetlistBase>::PinId),

Call a function for each pin connected to this net.
Source§

fn each_pin_of_net<'a>( &'a self, net: &<Chip as NetlistBase>::NetId, ) -> Box<dyn Iterator<Item = <Chip as NetlistBase>::PinId> + 'a>

Iterate over all pins of a net.
Source§

fn for_each_pin_instance_of_net<F>( &self, net: &<Chip as NetlistBase>::NetId, f: F, )
where F: FnMut(<Chip as NetlistBase>::PinInstId),

Call a function for each pin instance connected to this net.
Source§

fn each_pin_instance_of_net<'a>( &'a self, net: &<Chip as NetlistBase>::NetId, ) -> Box<dyn Iterator<Item = <Chip as NetlistBase>::PinInstId> + 'a>

Iterate over all pins of a net.
Source§

fn pin_instance( &self, cell_inst: &Self::CellInstId, pin: &Self::PinId, ) -> Self::PinInstId

Get the ID of a pin instance given the cell instance and the pin ID.
Source§

fn net_of_terminal(&self, terminal: &TerminalId<Self>) -> Option<Self::NetId>

Get the net that is attached to this terminal.
Source§

fn each_pin_vec(&self, circuit: &Self::CellId) -> Vec<Self::PinId>

Get a Vec with the IDs of all pins of this circuit.
Source§

fn each_pin_instance_vec( &self, circuit_instance: &Self::CellInstId, ) -> Vec<Self::PinInstId>

Get a Vec with the IDs of all pin instance of this circuit instance.
Source§

fn each_external_net<'a>( &'a self, circuit_instance: &Self::CellInstId, ) -> Box<dyn Iterator<Item = Self::NetId> + 'a>

Iterate over all external nets connected to the circuit instance. A net might appear more than once.
Source§

fn for_each_external_net<F>(&self, circuit_instance: &Self::CellInstId, f: F)
where F: FnMut(Self::NetId),

Iterate over all external nets connected to the circuit instance. A net might appear more than once.
Source§

fn each_external_net_vec( &self, circuit_instance: &Self::CellInstId, ) -> Vec<Self::NetId>

Get a vector of all external nets connected to the circuit instance. A net might appear more than once.
Source§

fn each_internal_net_vec(&self, circuit: &Self::CellId) -> Vec<Self::NetId>

Get a Vec with all nets in this circuit.
Source§

fn num_net_pins(&self, net: &Self::NetId) -> usize

Get the number of pins that are connected to this net.
Source§

fn num_net_pin_instances(&self, net: &Self::NetId) -> usize

Get the number of pin instances that are connected to this net.
Source§

fn num_net_terminals(&self, net: &Self::NetId) -> usize

Get the number of terminals that are connected to this net.
Source§

fn each_pin_of_net_vec(&self, net: &Self::NetId) -> Vec<Self::PinId>

Get a Vec with all pin IDs connected to this net.
Source§

fn each_pin_instance_of_net_vec( &self, net: &Self::NetId, ) -> Vec<Self::PinInstId>

Get a Vec with all pin instance IDs connected to this net.
Source§

fn for_each_terminal_of_net<F>(&self, net: &Self::NetId, f: F)
where F: FnMut(TerminalId<Self>),

Call a function for each terminal connected to this net.
Source§

fn each_terminal_of_net_vec(&self, net: &Self::NetId) -> Vec<TerminalId<Self>>

Get a Vec with all terminal IDs connected to this net.
Source§

fn each_terminal_of_net<'a>( &'a self, net: &Self::NetId, ) -> Box<dyn Iterator<Item = TerminalId<Self>> + 'a>

Iterate over all terminals of a net.
Source§

impl NetlistEdit for Chip

Source§

fn create_pin( &mut self, circuit: &<Chip as HierarchyBase>::CellId, name: <Chip as HierarchyBase>::NameType, direction: Direction, ) -> <Chip as NetlistBase>::PinId

Create a new pin in this cell. Also adds the pin to all instances of the cell.
Source§

fn remove_pin(&mut self, id: &<Chip as NetlistBase>::PinId)

Remove the pin from this circuit and from all instances of this circuit.
Source§

fn rename_pin( &mut self, pin: &<Chip as NetlistBase>::PinId, new_name: <Chip as HierarchyBase>::NameType, ) -> <Chip as HierarchyBase>::NameType

Change the name of the pin, returns the old name. Read more
Source§

fn create_net( &mut self, parent: &CellId, name: Option<<Chip as HierarchyBase>::NameType>, ) -> NetId

Create a net net that lives in the parent circuit.
Source§

fn rename_net( &mut self, net_id: &<Chip as NetlistBase>::NetId, new_name: Option<<Chip as HierarchyBase>::NameType>, ) -> Option<<Chip as HierarchyBase>::NameType>

Set a new name for the net. This might panic if the name already exists. Returns the old name.
Source§

fn remove_net(&mut self, net: &NetId)

Delete the net if it exists and disconnect all connected terminals.
Source§

fn connect_pin(&mut self, pin: &PinId, net: Option<NetId>) -> Option<NetId>

Connect a pin to a net. Returns the old connected net, if any.
Source§

fn connect_pin_instance( &mut self, pin: &PinInstId, net: Option<NetId>, ) -> Option<<Chip as NetlistBase>::NetId>

Connect a pin instance to a net. Returns the old connected net, if any.
Source§

fn disconnect_pin(&mut self, pin: &Self::PinId) -> Option<Self::NetId>

Disconnect the pin from any connected net. Returns the old connected net, if any.
Source§

fn disconnect_pin_instance( &mut self, pin_instance: &Self::PinInstId, ) -> Option<Self::NetId>

Disconnect the pin instance from any connected net. Returns the old connected net, if any.
Source§

fn connect_terminal( &mut self, terminal: &TerminalId<Self>, net: Option<Self::NetId>, ) -> Option<Self::NetId>

Connect a terminal to a net. Returns the old connected net, if any.
Source§

fn disconnect_terminal( &mut self, terminal: &TerminalId<Self>, ) -> Option<Self::NetId>

Disconnect the terminal from any connected net. Returns the old connected net, if any.

Auto Trait Implementations§

§

impl<C> Freeze for Chip<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for Chip<C>
where C: RefUnwindSafe,

§

impl<C> Send for Chip<C>
where C: Send,

§

impl<C> Sync for Chip<C>
where C: Sync,

§

impl<C> Unpin for Chip<C>
where C: Unpin,

§

impl<C> UnwindSafe for Chip<C>
where C: 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<N> HierarchyEditUtil for N
where N: HierarchyEdit,

Source§

fn clear_cell_instances(&mut self, cell: &Self::CellId)

Remove all child instances inside the cell.
Source§

fn prune_cell_instance(&mut self, inst: &Self::CellInstId)

Remove the cell instance and all cells which are then not used anymore.
Source§

fn prune_cell(&mut self, cell: &Self::CellId)

Remove the cell and all other cells which are then not used anymore.
Source§

impl<T> HierarchyReferenceAccess for T
where T: HierarchyBase,

Source§

fn each_cell_ref(&self) -> Box<dyn Iterator<Item = CellRef<'_, Self>> + '_>

Iterate over all cell objects.
Source§

fn cell_ref(&self, cell_id: &Self::CellId) -> CellRef<'_, Self>

Get a cell object by its ID.
Source§

fn cell_instance_ref(&self, inst_id: &Self::CellInstId) -> CellInstRef<'_, Self>

Get a cell instance object by its ID.
Source§

impl<N> HierarchyUtil for N
where N: HierarchyBase,

Source§

fn is_top_level_cell(&self, cell: &Self::CellId) -> bool

Check if the cell is a top level cell. This is done by checking that no other cells have an instance of this cell.
Source§

fn is_leaf_cell(&self, cell: &Self::CellId) -> bool

Check if the cell is a leaf cell. This is done by checking that this cell contains no other cell instances.
Source§

fn each_top_level_cell(&self) -> Box<dyn Iterator<Item = Self::CellId> + '_>

Iterate over all top level cells.
Source§

fn each_leaf_cell(&self) -> Box<dyn Iterator<Item = Self::CellId> + '_>

Iterate over all leaf cells, i.e. cells which contain no other cells.
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<L> LayoutEditUtil for L
where L: LayoutEdit,

Source§

fn find_or_create_layer(&mut self, index: u32, datatype: u32) -> Self::LayerId

Create a layer or return an existing one.
Source§

impl<T> LayoutReferenceAccess for T
where T: LayoutBase,

Source§

fn shape_ref(&self, shape_id: &Self::ShapeId) -> ShapeRef<'_, Self>

Get a cell object by its ID.
Source§

fn layer_ref(&self, layer_id: &Self::LayerId) -> LayerRef<'_, Self>

Get a layer object by its ID.
Source§

fn each_layer_ref(&self) -> Box<dyn Iterator<Item = LayerRef<'_, Self>> + '_>

Iterate over all layers defined in this layout.
Source§

fn layer_ref_by_name(&self, name: &str) -> Option<LayerRef<'_, Self>>

Get a layer object by the layer name.
Source§

impl<N> NetlistEditUtil for N
where N: NetlistEdit + ?Sized,

Source§

fn replace_net(&mut self, old_net: &Self::NetId, new_net: &Self::NetId)

Take all terminals that are connected to old_net and connect them to new_net instead. The old net is no longer used and removed. Read more
Source§

fn flatten_circuit_instance(&mut self, circuit_instance: &Self::CellInstId)

Replace the circuit instance with its contents. Remove the circuit instance afterwards. Does not purge nets nor unconnected instances. So there could be unconnected nets or unconnected instances. Read more
Source§

fn flatten_circuit(&mut self, circuit: &Self::CellId)

Flatten all instances of this circuit by replacing them with their content. Remove the circuit from the netlist afterwards. For top level circuits this is equivalent to removing them.
Source§

fn purge_nets_in_circuit(&mut self, circuit_id: &Self::CellId) -> usize

Delete all unconnected nets in this circuit. Return number of purged nets.
Source§

fn purge_nets(&mut self) -> usize

Delete all unconnected nets in all circuits. Return number of purged nets.
Source§

fn create_net_names_in_circuit( &mut self, circuit_id: &Self::CellId, prefix: &str, )

Create names for all unnamed nets in the specified circuit. The names will consist of the prefix and an appended number. After calling this method, no net inside this circuit will be unnamed.
Source§

impl<T> NetlistReferenceAccess for T
where T: NetlistBase,

Source§

fn pin_ref(&self, pin: &Self::PinId) -> PinRef<'_, Self>

Get a reference to a pin from a pin ID.
Source§

fn pin_instance_ref(&self, id: &Self::PinInstId) -> PinInstRef<'_, Self>

Get a reference to a pin instance.
Source§

fn net_ref(&self, net: &Self::NetId) -> NetRef<'_, Self>

Get a reference to a net.
Source§

fn terminal_ref(&self, t: &TerminalId<Self>) -> TerminalRef<'_, Self>

Get a reference to a terminal.
Source§

impl<N> NetlistUtil for N
where N: NetlistBase,

Source§

fn is_constant_net(&self, net: &Self::NetId) -> bool

Check if the net is either the constant LOW or HIGH.
Source§

fn nets_of_cell_instance( &self, inst: &Self::CellInstId, ) -> Box<dyn Iterator<Item = Self::NetId> + '_>

Get all nets that are connected to the circuit instance.
Source§

fn for_each_circuit_instance_of_net<F>(&self, net: &Self::NetId, f: F)
where F: FnMut(Self::CellInstId),

Visit all circuit instances connected to this net. An instance is touched not more than once.
Source§

fn each_circuit_instance_of_net_vec( &self, net: &Self::NetId, ) -> Vec<Self::CellInstId>

Iterate over all circuit instances connected to this net. An instance is touched not more than once.
Source§

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

Write the netlist in a human readable form.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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

Source§

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

Source§

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.