pub struct SvaTranslator {
pub bound: u32,
/* private fields */
}Expand description
Translator that converts SvaExpr to bounded timestep verification IR.
Fields§
§bound: u32Implementations§
Source§impl SvaTranslator
impl SvaTranslator
pub fn new(bound: u32) -> Self
Sourcepub fn translate(&mut self, expr: &SvaExpr, t: u32) -> BoundedExpr
pub fn translate(&mut self, expr: &SvaExpr, t: u32) -> BoundedExpr
Translate an SVA expression at a specific timestep.
Sourcepub fn translate_sequence(
&mut self,
expr: &SvaExpr,
t: u32,
) -> Vec<SequenceMatch>
pub fn translate_sequence( &mut self, expr: &SvaExpr, t: u32, ) -> Vec<SequenceMatch>
Translate an SvaExpr as a SEQUENCE, returning all possible match endpoints.
Unlike translate() which returns a single BoundedExpr, this returns the
set of (condition, length) pairs representing all possible matches.
This is the foundation for proper IEEE 1800 sequence-level operators:
- SequenceAnd: both match, composite at max endpoint
- SequenceOr: union of match sets
- Intersect: both match at SAME length
- first_match: only shortest match
- throughout / within: desugared via intersect
Sourcepub fn translate_property(&mut self, expr: &SvaExpr) -> TranslateResult
pub fn translate_property(&mut self, expr: &SvaExpr) -> TranslateResult
Translate a top-level SVA property: conjoin over all timesteps [0, bound). This models G(property) — the property must hold at every reachable state.
Sourcepub fn translate_directive(
&mut self,
directive: &SvaDirective,
) -> DirectiveResult
pub fn translate_directive( &mut self, directive: &SvaDirective, ) -> DirectiveResult
Translate a concurrent assertion directive (IEEE 16.14).
Returns a DirectiveResult with the translated expression and the directive’s
semantic role (check, constraint, or reachability query).
Auto Trait Implementations§
impl Freeze for SvaTranslator
impl RefUnwindSafe for SvaTranslator
impl Send for SvaTranslator
impl Sync for SvaTranslator
impl Unpin for SvaTranslator
impl UnsafeUnpin for SvaTranslator
impl UnwindSafe for SvaTranslator
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.