Skip to main content

scarf_syntax/source_text/
configuration_source_text.rs

1// =======================================================================
2// system_verilog_source_text.rs
3// =======================================================================
4// CST Nodes from 1800-2023 A.1.5
5use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct ConfigDeclaration<'a>(
9    pub Metadata<'a>, // config
10    pub ConfigIdentifier<'a>,
11    pub Metadata<'a>, // ;
12    pub  Vec<(
13        LocalParameterDeclaration<'a>,
14        Metadata<'a>, // ;
15    )>,
16    pub DesignStatement<'a>,
17    pub Vec<ConfigRuleStatement<'a>>,
18    pub Metadata<'a>, // endconfig
19    pub  Option<(
20        Metadata<'a>, // :
21        ConfigIdentifier<'a>,
22    )>,
23);
24
25#[derive(Clone, Debug, PartialEq)]
26pub struct DesignStatement<'a>(
27    pub Metadata<'a>, // design
28    pub  Vec<(
29        Option<(
30            LibraryIdentifier<'a>,
31            Metadata<'a>, // .
32        )>,
33        CellIdentifier<'a>,
34    )>,
35    pub Metadata<'a>, // ;
36);
37
38#[derive(Clone, Debug, PartialEq)]
39pub enum ConfigRuleStatement<'a> {
40    DefaultLiblist(
41        Box<(
42            DefaultClause<'a>,
43            LiblistClause<'a>,
44            Metadata<'a>, // ;
45        )>,
46    ),
47    InstLiblist(
48        Box<(
49            InstClause<'a>,
50            LiblistClause<'a>,
51            Metadata<'a>, // ;
52        )>,
53    ),
54    InstUse(
55        Box<(
56            InstClause<'a>,
57            UseClause<'a>,
58            Metadata<'a>, // ;
59        )>,
60    ),
61    CellLiblist(
62        Box<(
63            CellClause<'a>,
64            LiblistClause<'a>,
65            Metadata<'a>, // ;
66        )>,
67    ),
68    CellUse(
69        Box<(
70            CellClause<'a>,
71            UseClause<'a>,
72            Metadata<'a>, // ;
73        )>,
74    ),
75}
76
77#[derive(Clone, Debug, PartialEq)]
78pub struct DefaultClause<'a>(
79    pub Metadata<'a>, // default
80);
81
82#[derive(Clone, Debug, PartialEq)]
83pub struct InstClause<'a>(
84    pub Metadata<'a>, // instance
85    pub InstName<'a>,
86);
87
88#[derive(Clone, Debug, PartialEq)]
89pub struct InstName<'a>(
90    pub TopmoduleIdentifier<'a>,
91    pub  Vec<(
92        Metadata<'a>, // .
93        InstanceIdentifier<'a>,
94    )>,
95);
96
97#[derive(Clone, Debug, PartialEq)]
98pub struct CellClause<'a>(
99    pub Metadata<'a>, // cell
100    pub  Option<(
101        LibraryIdentifier<'a>,
102        Metadata<'a>, // .
103    )>,
104    pub CellIdentifier<'a>,
105);
106
107#[derive(Clone, Debug, PartialEq)]
108pub struct LiblistClause<'a>(
109    pub Metadata<'a>, // liblist
110    pub Vec<LibraryIdentifier<'a>>,
111);
112
113#[derive(Clone, Debug, PartialEq)]
114pub enum UseClause<'a> {
115    Cell(
116        Box<(
117            Metadata<'a>, // use
118            Option<(
119                LibraryIdentifier<'a>,
120                Metadata<'a>, // .
121            )>,
122            CellIdentifier<'a>,
123            Option<(
124                Metadata<'a>, // :
125                Metadata<'a>, // config
126            )>,
127        )>,
128    ),
129    Parameter(
130        Box<(
131            Metadata<'a>, // use
132            NamedParameterAssignment<'a>,
133            Vec<(
134                Metadata<'a>, // ,
135                NamedParameterAssignment<'a>,
136            )>,
137            Option<(
138                Metadata<'a>, // :
139                Metadata<'a>, // config
140            )>,
141        )>,
142    ),
143    CellParameter(
144        Box<(
145            Metadata<'a>, // use
146            Option<(
147                LibraryIdentifier<'a>,
148                Metadata<'a>, // .
149            )>,
150            CellIdentifier<'a>,
151            NamedParameterAssignment<'a>,
152            Vec<(
153                Metadata<'a>, // ,
154                NamedParameterAssignment<'a>,
155            )>,
156            Option<(
157                Metadata<'a>, // :
158                Metadata<'a>, // config
159            )>,
160        )>,
161    ),
162}