sv_parser_syntaxtree/behavioral_statements/
assertion_statements.rs1use crate::*;
2
3#[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}