Skip to main content

TestbenchStatement

Enum TestbenchStatement 

Source
pub enum TestbenchStatement<Event, Signal, Expression, Argument, Target = Signal> {
Show 14 variants ClockNext { clock_event: Event, count: ClockCount<Expression>, }, ResetAssert { reset_signal: Signal, reset_event: Option<Event>, clock_event: Event, duration: ClockCount<Expression>, assert_value: u8, deassert_value: u8, }, Assert { expr: Expression, site_id: u32, continue_on_fail: bool, message: Option<AssertMessage<Argument>>, location: Option<SourceLocation>, }, Display { message: Option<AssertMessage<Argument>>, newline: bool, }, If { expr: Expression, then_block: Vec<Self>, else_block: Vec<Self>, }, For { loop_var: Option<(Signal, usize, bool)>, start: LoopBound<Expression>, end: LoopBound<Expression>, inclusive: bool, step: usize, step_op: Option<TestbenchOperator>, reverse: bool, body: Vec<Self>, }, Assign { dst: Target, expr: Expression, }, RandomSeed { handle: String, value: Expression, }, RandomGet { handle: String, width: u32, signed: bool, ret: Option<Target>, }, RandomGetRange { handle: String, min: Expression, max: Expression, width: u32, signed: bool, ret: Option<Target>, }, RandomGetSeed { handle: String, ret: Option<Target>, }, ComponentMethod { instance: String, method: String, args: Vec<Argument>, ret: Option<Target>, ret_width: Option<u32>, ret_signed: bool, ret_strict: bool, }, Break, Finish,
}
Expand description

Source-independent testbench control program.

Frontends instantiate this with semantic state/event identities and unbound expressions. Runtime binding instantiates the same contract with backend event/signal handles and executable expressions.

Variants§

§

ClockNext

Fields

§clock_event: Event
§count: ClockCount<Expression>
§

ResetAssert

Fields

§reset_signal: Signal
§reset_event: Option<Event>
§clock_event: Event
§duration: ClockCount<Expression>
§assert_value: u8
§deassert_value: u8
§

Assert

Fields

§expr: Expression
§site_id: u32
§continue_on_fail: bool
§message: Option<AssertMessage<Argument>>
§

Display

Fields

§message: Option<AssertMessage<Argument>>
§newline: bool
§

If

Fields

§expr: Expression
§then_block: Vec<Self>
§else_block: Vec<Self>
§

For

Fields

§loop_var: Option<(Signal, usize, bool)>
§start: LoopBound<Expression>
§end: LoopBound<Expression>
§inclusive: bool
§step: usize
§reverse: bool
§body: Vec<Self>
§

Assign

Fields

§dst: Target
§expr: Expression
§

RandomSeed

Fields

§handle: String
§value: Expression
§

RandomGet

Fields

§handle: String
§width: u32
§signed: bool
§ret: Option<Target>
§

RandomGetRange

Fields

§handle: String
§min: Expression
§max: Expression
§width: u32
§signed: bool
§ret: Option<Target>
§

RandomGetSeed

Fields

§handle: String
§ret: Option<Target>
§

ComponentMethod

Fields

§instance: String
§method: String
§args: Vec<Argument>
§ret: Option<Target>
§ret_width: Option<u32>
§ret_signed: bool
§ret_strict: bool
§

Break

§

Finish

Trait Implementations§

Source§

impl<Event: Clone, Signal: Clone, Expression: Clone, Argument: Clone, Target: Clone> Clone for TestbenchStatement<Event, Signal, Expression, Argument, Target>

Source§

fn clone( &self, ) -> TestbenchStatement<Event, Signal, Expression, Argument, Target>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<Event: Debug, Signal: Debug, Expression: Debug, Argument: Debug, Target: Debug> Debug for TestbenchStatement<Event, Signal, Expression, Argument, Target>

Source§

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

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

impl<'de, Event, Signal, Expression, Argument, Target> Deserialize<'de> for TestbenchStatement<Event, Signal, Expression, Argument, Target>
where Event: Deserialize<'de>, Signal: Deserialize<'de>, Expression: Deserialize<'de>, Argument: Deserialize<'de>, Target: 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<Event: Eq, Signal: Eq, Expression: Eq, Argument: Eq, Target: Eq> Eq for TestbenchStatement<Event, Signal, Expression, Argument, Target>

Source§

impl<Event: PartialEq, Signal: PartialEq, Expression: PartialEq, Argument: PartialEq, Target: PartialEq> PartialEq for TestbenchStatement<Event, Signal, Expression, Argument, Target>

Source§

fn eq( &self, other: &TestbenchStatement<Event, Signal, Expression, Argument, Target>, ) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<Event, Signal, Expression, Argument, Target> Serialize for TestbenchStatement<Event, Signal, Expression, Argument, Target>
where Event: Serialize, Signal: Serialize, Expression: Serialize, Argument: Serialize, Target: 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
Source§

impl<Event: PartialEq, Signal: PartialEq, Expression: PartialEq, Argument: PartialEq, Target: PartialEq> StructuralPartialEq for TestbenchStatement<Event, Signal, Expression, Argument, Target>

Auto Trait Implementations§

§

impl<Event, Signal, Expression, Argument, Target> Freeze for TestbenchStatement<Event, Signal, Expression, Argument, Target>
where Event: Freeze, ClockCount<Expression>: Freeze, Signal: Freeze, Option<Event>: Freeze, Expression: Freeze, Option<AssertMessage<Argument>>: Freeze, Vec<TestbenchStatement<Event, Signal, Expression, Argument, Target>>: Freeze, Option<(Signal, usize, bool)>: Freeze, LoopBound<Expression>: Freeze, Target: Freeze, Option<Target>: Freeze, Vec<Argument>: Freeze,

§

impl<Event, Signal, Expression, Argument, Target> RefUnwindSafe for TestbenchStatement<Event, Signal, Expression, Argument, Target>
where Event: RefUnwindSafe, ClockCount<Expression>: RefUnwindSafe, Signal: RefUnwindSafe, Option<Event>: RefUnwindSafe, Expression: RefUnwindSafe, Option<AssertMessage<Argument>>: RefUnwindSafe, Vec<TestbenchStatement<Event, Signal, Expression, Argument, Target>>: RefUnwindSafe, Option<(Signal, usize, bool)>: RefUnwindSafe, LoopBound<Expression>: RefUnwindSafe, Target: RefUnwindSafe, Option<Target>: RefUnwindSafe, Vec<Argument>: RefUnwindSafe,

§

impl<Event, Signal, Expression, Argument, Target> Send for TestbenchStatement<Event, Signal, Expression, Argument, Target>
where Event: Send, ClockCount<Expression>: Send, Signal: Send, Option<Event>: Send, Expression: Send, Option<AssertMessage<Argument>>: Send, Vec<TestbenchStatement<Event, Signal, Expression, Argument, Target>>: Send, Option<(Signal, usize, bool)>: Send, LoopBound<Expression>: Send, Target: Send, Option<Target>: Send, Vec<Argument>: Send,

§

impl<Event, Signal, Expression, Argument, Target> Sync for TestbenchStatement<Event, Signal, Expression, Argument, Target>
where Event: Sync, ClockCount<Expression>: Sync, Signal: Sync, Option<Event>: Sync, Expression: Sync, Option<AssertMessage<Argument>>: Sync, Vec<TestbenchStatement<Event, Signal, Expression, Argument, Target>>: Sync, Option<(Signal, usize, bool)>: Sync, LoopBound<Expression>: Sync, Target: Sync, Option<Target>: Sync, Vec<Argument>: Sync,

§

impl<Event, Signal, Expression, Argument, Target> Unpin for TestbenchStatement<Event, Signal, Expression, Argument, Target>
where Event: Unpin, ClockCount<Expression>: Unpin, Signal: Unpin, Option<Event>: Unpin, Expression: Unpin, Option<AssertMessage<Argument>>: Unpin, Vec<TestbenchStatement<Event, Signal, Expression, Argument, Target>>: Unpin, Option<(Signal, usize, bool)>: Unpin, LoopBound<Expression>: Unpin, Target: Unpin, Option<Target>: Unpin, Vec<Argument>: Unpin,

§

impl<Event, Signal, Expression, Argument, Target> UnsafeUnpin for TestbenchStatement<Event, Signal, Expression, Argument, Target>
where Event: UnsafeUnpin, ClockCount<Expression>: UnsafeUnpin, Signal: UnsafeUnpin, Option<Event>: UnsafeUnpin, Expression: UnsafeUnpin, Option<AssertMessage<Argument>>: UnsafeUnpin, Vec<TestbenchStatement<Event, Signal, Expression, Argument, Target>>: UnsafeUnpin, Option<(Signal, usize, bool)>: UnsafeUnpin, LoopBound<Expression>: UnsafeUnpin, Target: UnsafeUnpin, Option<Target>: UnsafeUnpin, Vec<Argument>: UnsafeUnpin,

§

impl<Event, Signal, Expression, Argument, Target> UnwindSafe for TestbenchStatement<Event, Signal, Expression, Argument, Target>
where Event: UnwindSafe, ClockCount<Expression>: UnwindSafe, Signal: UnwindSafe, Option<Event>: UnwindSafe, Expression: UnwindSafe, Option<AssertMessage<Argument>>: UnwindSafe, Vec<TestbenchStatement<Event, Signal, Expression, Argument, Target>>: UnwindSafe, Option<(Signal, usize, bool)>: UnwindSafe, LoopBound<Expression>: UnwindSafe, Target: UnwindSafe, Option<Target>: UnwindSafe, Vec<Argument>: 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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 = !

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.