pub type SemanticStatement<A> = TestbenchStatement<A, SemanticSignal<A>, ExprBytecode<StateLocation<A>>, SemanticArgument<A>, TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>;Aliased Type§
pub enum SemanticStatement<A> {
Show 14 variants
ClockNext {
clock_event: A,
count: ClockCount<ExprBytecode<StateLocation<A>>>,
},
ResetAssert {
reset_signal: SemanticSignal<A>,
reset_event: Option<A>,
clock_event: A,
duration: ClockCount<ExprBytecode<StateLocation<A>>>,
assert_value: u8,
deassert_value: u8,
},
Assert {
expr: ExprBytecode<StateLocation<A>>,
site_id: u32,
continue_on_fail: bool,
message: Option<AssertMessage<SemanticArgument<A>>>,
location: Option<SourceLocation>,
},
Display {
message: Option<AssertMessage<SemanticArgument<A>>>,
newline: bool,
},
If {
expr: ExprBytecode<StateLocation<A>>,
then_block: Vec<TestbenchStatement<A, SemanticSignal<A>, ExprBytecode<StateLocation<A>>, SemanticArgument<A>, TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>>,
else_block: Vec<TestbenchStatement<A, SemanticSignal<A>, ExprBytecode<StateLocation<A>>, SemanticArgument<A>, TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>>,
},
For {
loop_var: Option<(SemanticSignal<A>, usize, bool)>,
start: LoopBound<ExprBytecode<StateLocation<A>>>,
end: LoopBound<ExprBytecode<StateLocation<A>>>,
inclusive: bool,
step: usize,
step_op: Option<TestbenchOperator>,
reverse: bool,
body: Vec<TestbenchStatement<A, SemanticSignal<A>, ExprBytecode<StateLocation<A>>, SemanticArgument<A>, TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>>,
},
Assign {
dst: TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>,
expr: ExprBytecode<StateLocation<A>>,
},
RandomSeed {
handle: String,
value: ExprBytecode<StateLocation<A>>,
},
RandomGet {
handle: String,
width: u32,
signed: bool,
ret: Option<TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>,
},
RandomGetRange {
handle: String,
min: ExprBytecode<StateLocation<A>>,
max: ExprBytecode<StateLocation<A>>,
width: u32,
signed: bool,
ret: Option<TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>,
},
RandomGetSeed {
handle: String,
ret: Option<TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>,
},
ComponentMethod {
instance: String,
method: String,
args: Vec<SemanticArgument<A>>,
ret: Option<TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>,
ret_width: Option<u32>,
ret_signed: bool,
ret_strict: bool,
},
Break,
Finish,
}Variants§
ClockNext
ResetAssert
Fields
§
reset_signal: SemanticSignal<A>§
clock_event: A§
duration: ClockCount<ExprBytecode<StateLocation<A>>>Assert
Fields
§
expr: ExprBytecode<StateLocation<A>>§
message: Option<AssertMessage<SemanticArgument<A>>>§
location: Option<SourceLocation>Display
If
Fields
§
expr: ExprBytecode<StateLocation<A>>§
then_block: Vec<TestbenchStatement<A, SemanticSignal<A>, ExprBytecode<StateLocation<A>>, SemanticArgument<A>, TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>>§
else_block: Vec<TestbenchStatement<A, SemanticSignal<A>, ExprBytecode<StateLocation<A>>, SemanticArgument<A>, TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>>For
Fields
§
loop_var: Option<(SemanticSignal<A>, usize, bool)>§
start: LoopBound<ExprBytecode<StateLocation<A>>>§
end: LoopBound<ExprBytecode<StateLocation<A>>>§
step_op: Option<TestbenchOperator>§
body: Vec<TestbenchStatement<A, SemanticSignal<A>, ExprBytecode<StateLocation<A>>, SemanticArgument<A>, TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>>Assign
Fields
§
dst: TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>§
expr: ExprBytecode<StateLocation<A>>RandomSeed
RandomGet
Fields
§
ret: Option<TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>RandomGetRange
Fields
§
min: ExprBytecode<StateLocation<A>>§
max: ExprBytecode<StateLocation<A>>§
ret: Option<TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>RandomGetSeed
Fields
§
ret: Option<TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>ComponentMethod
Fields
§
args: Vec<SemanticArgument<A>>§
ret: Option<TestbenchTarget<SemanticSignal<A>, ExprBytecode<StateLocation<A>>>>