Skip to main content

scarf_syntax/source_text/
checker_items.rs

1// =======================================================================
2// checker_items.rs
3// =======================================================================
4// CST Nodes from 1800-2023 A.1.8
5use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct CheckerPortList<'a>(
9    pub CheckerPortItem<'a>,
10    pub  Vec<(
11        Metadata<'a>, // ,
12        CheckerPortItem<'a>,
13    )>,
14);
15
16#[derive(Clone, Debug, PartialEq)]
17pub struct CheckerPortItem<'a>(
18    pub Vec<AttributeInstance<'a>>,
19    pub Option<CheckerPortDirection<'a>>,
20    pub PropertyFormalType<'a>,
21    pub FormalPortIdentifier<'a>,
22    pub Vec<VariableDimension<'a>>,
23    pub  Option<(
24        Metadata<'a>, // =
25        PropertyActualArg<'a>,
26    )>,
27);
28
29#[derive(Clone, Debug, PartialEq)]
30pub enum CheckerPortDirection<'a> {
31    Input(Metadata<'a>),
32    Output(Metadata<'a>),
33}
34
35#[derive(Clone, Debug, PartialEq)]
36pub enum CheckerOrGenerateItem<'a> {
37    Declaration(Box<CheckerOrGenerateItemDeclaration<'a>>),
38    Initial(Box<InitialConstruct<'a>>),
39    Always(Box<AlwaysConstruct<'a>>),
40    Final(Box<FinalConstruct<'a>>),
41    Assertion(Box<AssertionItem<'a>>),
42    Assign(Box<ContinuousAssign<'a>>),
43    Generate(Box<CheckerGenerateItem<'a>>),
44}
45
46#[derive(Clone, Debug, PartialEq)]
47pub enum CheckerOrGenerateItemDeclaration<'a> {
48    Data(
49        Box<(
50            Option<Metadata<'a>>, // rand
51            DataDeclaration<'a>,
52        )>,
53    ),
54    Function(Box<FunctionDeclaration<'a>>),
55    Checker(Box<CheckerDeclaration<'a>>),
56    AssertionItem(Box<AssertionItemDeclaration<'a>>),
57    Covergroup(Box<CovergroupDeclaration<'a>>),
58    Genvar(Box<GenvarDeclaration<'a>>),
59    Clocking(Box<ClockingDeclaration<'a>>),
60    DefaultClocking(
61        Box<(
62            Metadata<'a>, // default
63            Metadata<'a>, // clocking
64            ClockingIdentifier<'a>,
65            Metadata<'a>, // ;
66        )>,
67    ),
68    DefaultDisable(
69        Box<(
70            Metadata<'a>, // default
71            Metadata<'a>, // disable
72            Metadata<'a>, // iff
73            ExpressionOrDist<'a>,
74            Metadata<'a>, // ;
75        )>,
76    ),
77    Null(Box<Metadata<'a>>),
78}
79
80#[derive(Clone, Debug, PartialEq)]
81pub enum CheckerGenerateItem<'a> {
82    Loop(Box<LoopGenerateConstruct<'a>>),
83    Conditional(Box<ConditionalGenerateConstruct<'a>>),
84    Region(Box<GenerateRegion<'a>>),
85    ElaborationSeverity(Box<ElaborationSeveritySystemTask<'a>>),
86}