sv_parser_syntaxtree/source_text/
configuration_source_text.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub struct ConfigDeclaration {
7    pub nodes: (
8        Keyword,
9        ConfigIdentifier,
10        Symbol,
11        Vec<(LocalParameterDeclaration, Symbol)>,
12        DesignStatement,
13        Vec<ConfigRuleStatement>,
14        Keyword,
15        Option<(Symbol, ConfigIdentifier)>,
16    ),
17}
18
19#[derive(Clone, Debug, PartialEq, Node)]
20pub struct DesignStatement {
21    pub nodes: (
22        Keyword,
23        Vec<(Option<(LibraryIdentifier, Symbol)>, CellIdentifier)>,
24        Symbol,
25    ),
26}
27
28#[derive(Clone, Debug, PartialEq, Node)]
29pub enum ConfigRuleStatement {
30    Default(Box<ConfigRuleStatementDefault>),
31    InstLib(Box<ConfigRuleStatementInstLib>),
32    InstUse(Box<ConfigRuleStatementInstUse>),
33    CellLib(Box<ConfigRuleStatementCellLib>),
34    CellUse(Box<ConfigRuleStatementCellUse>),
35}
36
37#[derive(Clone, Debug, PartialEq, Node)]
38pub struct ConfigRuleStatementDefault {
39    pub nodes: (DefaultClause, LiblistClause, Symbol),
40}
41
42#[derive(Clone, Debug, PartialEq, Node)]
43pub struct ConfigRuleStatementInstLib {
44    pub nodes: (InstClause, LiblistClause, Symbol),
45}
46
47#[derive(Clone, Debug, PartialEq, Node)]
48pub struct ConfigRuleStatementInstUse {
49    pub nodes: (InstClause, UseClause, Symbol),
50}
51
52#[derive(Clone, Debug, PartialEq, Node)]
53pub struct ConfigRuleStatementCellLib {
54    pub nodes: (CellClause, LiblistClause, Symbol),
55}
56
57#[derive(Clone, Debug, PartialEq, Node)]
58pub struct ConfigRuleStatementCellUse {
59    pub nodes: (CellClause, UseClause, Symbol),
60}
61
62#[derive(Clone, Debug, PartialEq, Node)]
63pub struct DefaultClause {
64    pub nodes: (Keyword,),
65}
66
67#[derive(Clone, Debug, PartialEq, Node)]
68pub struct InstClause {
69    pub nodes: (Keyword, InstName),
70}
71
72#[derive(Clone, Debug, PartialEq, Node)]
73pub struct InstName {
74    pub nodes: (TopmoduleIdentifier, Vec<(Symbol, InstanceIdentifier)>),
75}
76
77#[derive(Clone, Debug, PartialEq, Node)]
78pub struct CellClause {
79    pub nodes: (Keyword, Option<(LibraryIdentifier, Symbol)>, CellIdentifier),
80}
81
82#[derive(Clone, Debug, PartialEq, Node)]
83pub struct LiblistClause {
84    pub nodes: (Keyword, Vec<LibraryIdentifier>),
85}
86
87#[derive(Clone, Debug, PartialEq, Node)]
88pub enum UseClause {
89    Cell(Box<UseClauseCell>),
90    Named(Box<UseClauseNamed>),
91    CellNamed(Box<UseClauseCellNamed>),
92}
93
94#[derive(Clone, Debug, PartialEq, Node)]
95pub struct UseClauseCell {
96    pub nodes: (
97        Keyword,
98        Option<(LibraryIdentifier, Symbol)>,
99        CellIdentifier,
100        Option<(Symbol, Config)>,
101    ),
102}
103
104#[derive(Clone, Debug, PartialEq, Node)]
105pub struct UseClauseNamed {
106    pub nodes: (
107        Keyword,
108        List<Symbol, NamedParameterAssignment>,
109        Option<(Symbol, Config)>,
110    ),
111}
112
113#[derive(Clone, Debug, PartialEq, Node)]
114pub struct UseClauseCellNamed {
115    pub nodes: (
116        Keyword,
117        Option<(LibraryIdentifier, Symbol)>,
118        CellIdentifier,
119        List<Symbol, NamedParameterAssignment>,
120        Option<(Symbol, Config)>,
121    ),
122}
123
124#[derive(Clone, Debug, PartialEq, Node)]
125pub struct Config {
126    pub nodes: (Keyword,),
127}