pub struct Gate { /* private fields */ }Expand description
A primitive gate in a digital circuit, such as AND, OR, NOT, etc. VDD and GND are reserved to represent logic one and zero, respectively.
Implementations§
Source§impl Gate
impl Gate
Sourcepub fn new_logical(
name: Identifier,
inputs: Vec<Identifier>,
output: Identifier,
) -> Self
pub fn new_logical( name: Identifier, inputs: Vec<Identifier>, output: Identifier, ) -> Self
Creates a new gate primitive with four-state logic types
Examples found in repository?
More examples
Sourcepub fn new_logical_multi(
name: Identifier,
inputs: Vec<Identifier>,
outputs: Vec<Identifier>,
) -> Self
pub fn new_logical_multi( name: Identifier, inputs: Vec<Identifier>, outputs: Vec<Identifier>, ) -> Self
Creates a new gate primitive with four-state logic types with multiple outputs
Sourcepub fn get_single_output_port(&self) -> &Net
pub fn get_single_output_port(&self) -> &Net
Returns the single output port of the gate
Sourcepub fn set_gate_name(&mut self, new_name: Identifier)
pub fn set_gate_name(&mut self, new_name: Identifier)
Set the type of cell by name
Sourcepub fn get_gate_name(&self) -> &Identifier
pub fn get_gate_name(&self) -> &Identifier
Returns the name of the gate primitive
Trait Implementations§
Source§impl Instantiable for Gate
impl Instantiable for Gate
Source§fn get_name(&self) -> &Identifier
fn get_name(&self) -> &Identifier
Returns the name of the primitive
Source§fn get_input_ports(&self) -> impl IntoIterator<Item = &Net>
fn get_input_ports(&self) -> impl IntoIterator<Item = &Net>
Returns the input ports of the primitive
Source§fn get_output_ports(&self) -> impl IntoIterator<Item = &Net>
fn get_output_ports(&self) -> impl IntoIterator<Item = &Net>
Returns the output ports of the primitive
Source§fn has_parameter(&self, _id: &Identifier) -> bool
fn has_parameter(&self, _id: &Identifier) -> bool
Returns
true if the type intakes a parameter with this name.Source§fn get_parameter(&self, _id: &Identifier) -> Option<Parameter>
fn get_parameter(&self, _id: &Identifier) -> Option<Parameter>
Returns the parameter value for the given key, if it exists.
Source§fn set_parameter(
&mut self,
_id: &Identifier,
_val: Parameter,
) -> Option<Parameter>
fn set_parameter( &mut self, _id: &Identifier, _val: Parameter, ) -> Option<Parameter>
Returns the old parameter value for the given key, if it existed.
Source§fn parameters(&self) -> impl Iterator<Item = (Identifier, Parameter)>
fn parameters(&self) -> impl Iterator<Item = (Identifier, Parameter)>
Returns an iterator over the parameters of the primitive.
Source§fn from_constant(val: Logic) -> Option<Self>
fn from_constant(val: Logic) -> Option<Self>
Creates the primitive used to represent a constant value, like VDD or GND.
If the implementer does not support the specific constant,
None is returned.Source§fn get_constant(&self) -> Option<Logic>
fn get_constant(&self) -> Option<Logic>
Returns the constant value represented by this primitive, if it is constant.
Source§fn is_parameterized(&self) -> bool
fn is_parameterized(&self) -> bool
Returns
true if the primitive is parameterized (has at least one parameter).Source§fn get_single_output_port(&self) -> &Net
fn get_single_output_port(&self) -> &Net
Returns the single output port of the primitive.
Source§fn get_output_port(&self, index: usize) -> &Net
fn get_output_port(&self, index: usize) -> &Net
Returns the output port at the given index. Read more
Source§fn get_input_port(&self, index: usize) -> &Net
fn get_input_port(&self, index: usize) -> &Net
Returns the input port at the given index. Read more
Source§fn find_input(&self, id: &Identifier) -> Option<usize>
fn find_input(&self, id: &Identifier) -> Option<usize>
Returns the index of the input port with the given identifier, if it exists.
This method should be overriden if the implemenation is capable of O(1) lookup.
Source§fn find_output(&self, id: &Identifier) -> Option<usize>
fn find_output(&self, id: &Identifier) -> Option<usize>
Returns the index of the output port with the given identifier, if it exists.
This method should be overriden if the implemenation is capable of O(1) lookup.
Source§fn is_driverless(&self) -> bool
fn is_driverless(&self) -> bool
Returns
true if the primitive has no input ports. In most cases, this means the cell represents a constant.
This method should be overriden if the implemenation of get_input_ports() is expensive.Auto Trait Implementations§
impl Freeze for Gate
impl RefUnwindSafe for Gate
impl Send for Gate
impl Sync for Gate
impl Unpin for Gate
impl UnsafeUnpin for Gate
impl UnwindSafe for Gate
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.