pub struct Sensitization<C: Ctx> {
pub name: String,
pub extra_ctx: C::Other,
pub attributes: Attributes,
pub pin_names: Vec<String>,
pub vector: Vec<SensitizationVector>,
/* private fields */
}
Expand description
The sensitization
group defined at the library level describes.
the complete state patterns for a specific list of pins (defined by the pin_names
attribute)
that are referenced and instantiated as stimuli in the timing arc.
Vector attributes in the group define all possible pin states used as stimuli.
Actual stimulus waveforms can be described by a combination of these vectors.
Multiple sensitization groups are allowed in a library. Each sensitization
group
can be referenced by multiple cells, and each cell can make reference to
multiple sensitization
groups.
Fields§
§name: String
name
extra_ctx: C::Other
§attributes: Attributes
group undefined attributes
pin_names: Vec<String>
The pin_names
attribute specified at the library level defines
a default list of pin names. All vectors in this sensitization
group
are the exhaustive list of all possible transitions of the input pins
and their subsequent output response.
The pin_names
attribute is required, and it must be declared in
the sensitization
group before all vector declarations.
Reference
vector: Vec<SensitizationVector>
§vector Complex Attribute
Similar to the pin_names
attribute,
the vector
attribute describes a transition pattern for the specified pins.
The stimulus is described by an ordered list of vectors.
The arguments for the vector
attribute are as follows:
vector id
The vector id
argument is an identifier to the vector string (a number tag
that defines the list of possible sensitization combinations in a cell).
The vector id value must be an integer greater than or equal to zero and
unique among all vectors in the current sensitization
group. It is recommended
that you start numbering from 0 or 1.
vector string
The vector string
argument represents a pin transition state. The string consists
of the following transition status values: 0, 1, X, and Z where each character is separated by a space.
The number of elements in the vector string must equal the number of arguments in pin_names
.
The vector
attribute can also be declared as:
vector (positive_integer, "{0|1|X|Z} [0|1|X|Z]…");
§Syntax
vector (integer, string);
§Example
sensitization(sensitization_nand2) {
pin_names ( IN1, IN2, OUT1 );
vector ( 1, "0 0 1" );
vector ( 2, "0 1 1" );
vector ( 3, "1 0 1" );
vector ( 4, "1 1 0" );
}
Implementations§
Source§impl<C: Ctx> Sensitization<C>
impl<C: Ctx> Sensitization<C>
pub fn comments_this(&self) -> Option<&String>
pub fn comments_this_entry<'a>(&'a mut self) -> Entry<'a, u64, String>
pub fn comments_pin_names(&self) -> Option<&String>
pub fn comments_pin_names_entry<'a>(&'a mut self) -> Entry<'a, u64, String>
Trait Implementations§
Source§impl<C: Ctx> Borrow<String> for Sensitization<C>
impl<C: Ctx> Borrow<String> for Sensitization<C>
Source§fn borrow(&self) -> &SensitizationId
fn borrow(&self) -> &SensitizationId
Source§impl<C: Clone + Ctx> Clone for Sensitization<C>
impl<C: Clone + Ctx> Clone for Sensitization<C>
Source§fn clone(&self) -> Sensitization<C>
fn clone(&self) -> Sensitization<C>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'de, C: Ctx> Deserialize<'de> for Sensitization<C>
impl<'de, C: Ctx> Deserialize<'de> for Sensitization<C>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<C: Ctx> Item for Sensitization<C>
impl<C: Ctx> Item for Sensitization<C>
type Id = String
type IdReadonlyItem = IdReadonlySensitization<C>
Source§unsafe fn __unsafe_deref_mut(&self) -> &mut Self::IdReadonlyItem
unsafe fn __unsafe_deref_mut(&self) -> &mut Self::IdReadonlyItem
fn id(&self) -> &Self::Id
fn id_readonly(&mut self) -> &mut Self::IdReadonlyItem
Auto Trait Implementations§
impl<C> Freeze for Sensitization<C>
impl<C> RefUnwindSafe for Sensitization<C>
impl<C> Send for Sensitization<C>
impl<C> Sync for Sensitization<C>
impl<C> Unpin for Sensitization<C>
impl<C> UnwindSafe for Sensitization<C>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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