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
ResetAssert
Assert
Display
If
For
Fields
§
step_op: Option<TestbenchOperator>Assign
RandomSeed
RandomGet
RandomGetRange
RandomGetSeed
ComponentMethod
Fields
Break
Finish
Trait Implementations§
Source§impl<Event: Clone, Signal: Clone, Expression: Clone, Argument: Clone, Target: Clone> Clone for TestbenchStatement<Event, Signal, Expression, Argument, Target>
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>
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)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<Event: Debug, Signal: Debug, Expression: Debug, Argument: Debug, Target: Debug> Debug for TestbenchStatement<Event, Signal, Expression, Argument, Target>
impl<Event: Debug, Signal: Debug, Expression: Debug, Argument: Debug, Target: Debug> Debug for TestbenchStatement<Event, Signal, Expression, Argument, Target>
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>,
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>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
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>
impl<Event: PartialEq, Signal: PartialEq, Expression: PartialEq, Argument: PartialEq, Target: PartialEq> PartialEq for TestbenchStatement<Event, Signal, Expression, Argument, Target>
Source§impl<Event, Signal, Expression, Argument, Target> Serialize for TestbenchStatement<Event, Signal, Expression, Argument, Target>
impl<Event, Signal, Expression, Argument, Target> Serialize for TestbenchStatement<Event, Signal, Expression, Argument, Target>
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> 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