sv_parser_syntaxtree/behavioral_statements/
assertion_statements.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub enum AssertionItem {
7    Concurrent(Box<ConcurrentAssertionItem>),
8    Immediate(Box<DeferredImmediateAssertionItem>),
9}
10
11#[derive(Clone, Debug, PartialEq, Node)]
12pub struct DeferredImmediateAssertionItem {
13    pub nodes: (
14        Option<(BlockIdentifier, Symbol)>,
15        DeferredImmediateAssertionStatement,
16    ),
17}
18
19#[derive(Clone, Debug, PartialEq, Node)]
20pub enum ProceduralAssertionStatement {
21    Concurrent(Box<ConcurrentAssertionStatement>),
22    Immediate(Box<ImmediateAssertionStatement>),
23    Checker(Box<CheckerInstantiation>),
24}
25
26#[derive(Clone, Debug, PartialEq, Node)]
27pub enum ImmediateAssertionStatement {
28    Simple(Box<SimpleImmediateAssertionStatement>),
29    Deferred(Box<DeferredImmediateAssertionStatement>),
30}
31
32#[derive(Clone, Debug, PartialEq, Node)]
33pub enum SimpleImmediateAssertionStatement {
34    Assert(Box<SimpleImmediateAssertStatement>),
35    Assume(Box<SimpleImmediateAssumeStatement>),
36    Cover(Box<SimpleImmediateCoverStatement>),
37}
38
39#[derive(Clone, Debug, PartialEq, Node)]
40pub struct SimpleImmediateAssertStatement {
41    pub nodes: (Keyword, Paren<Expression>, ActionBlock),
42}
43
44#[derive(Clone, Debug, PartialEq, Node)]
45pub struct SimpleImmediateAssumeStatement {
46    pub nodes: (Keyword, Paren<Expression>, ActionBlock),
47}
48
49#[derive(Clone, Debug, PartialEq, Node)]
50pub struct SimpleImmediateCoverStatement {
51    pub nodes: (Keyword, Paren<Expression>, StatementOrNull),
52}
53
54#[derive(Clone, Debug, PartialEq, Node)]
55pub enum DeferredImmediateAssertionStatement {
56    Assert(Box<DeferredImmediateAssertStatement>),
57    Assume(Box<DeferredImmediateAssumeStatement>),
58    Cover(Box<DeferredImmediateCoverStatement>),
59}
60
61#[derive(Clone, Debug, PartialEq, Node)]
62pub struct DeferredImmediateAssertStatement {
63    pub nodes: (Keyword, AssertTiming, Paren<Expression>, ActionBlock),
64}
65
66#[derive(Clone, Debug, PartialEq, Node)]
67pub struct DeferredImmediateAssumeStatement {
68    pub nodes: (Keyword, AssertTiming, Paren<Expression>, ActionBlock),
69}
70
71#[derive(Clone, Debug, PartialEq, Node)]
72pub struct DeferredImmediateCoverStatement {
73    pub nodes: (Keyword, AssertTiming, Paren<Expression>, StatementOrNull),
74}
75
76#[derive(Clone, Debug, PartialEq, Node)]
77pub enum AssertTiming {
78    Zero(Box<Symbol>),
79    Final(Box<Keyword>),
80}