sv_parser_syntaxtree/source_text/
module_items.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub enum ElaborationSystemTask {
7    TaskFatal(Box<ElaborationSystemTaskFatal>),
8    TaskError(Box<ElaborationSystemTaskError>),
9    TaskWarning(Box<ElaborationSystemTaskWarning>),
10    TaskInfo(Box<ElaborationSystemTaskInfo>),
11}
12
13#[derive(Clone, Debug, PartialEq, Node)]
14pub struct ElaborationSystemTaskFatal {
15    pub nodes: (
16        Keyword,
17        Option<Paren<(FinishNumber, Option<(Symbol, ListOfArguments)>)>>,
18        Symbol,
19    ),
20}
21
22#[derive(Clone, Debug, PartialEq, Node)]
23pub struct ElaborationSystemTaskError {
24    pub nodes: (Keyword, Option<Paren<Option<ListOfArguments>>>, Symbol),
25}
26
27#[derive(Clone, Debug, PartialEq, Node)]
28pub struct ElaborationSystemTaskWarning {
29    pub nodes: (Keyword, Option<Paren<Option<ListOfArguments>>>, Symbol),
30}
31
32#[derive(Clone, Debug, PartialEq, Node)]
33pub struct ElaborationSystemTaskInfo {
34    pub nodes: (Keyword, Option<Paren<Option<ListOfArguments>>>, Symbol),
35}
36
37#[derive(Clone, Debug, PartialEq, Node)]
38pub enum FinishNumber {
39    Zero(Box<Symbol>),
40    One(Box<Symbol>),
41    Two(Box<Symbol>),
42}
43
44#[derive(Clone, Debug, PartialEq, Node)]
45pub enum ModuleCommonItem {
46    ModuleOrGenerateItemDeclaration(Box<ModuleOrGenerateItemDeclaration>),
47    InterfaceInstantiation(Box<InterfaceInstantiation>),
48    ProgramInstantiation(Box<ProgramInstantiation>),
49    AssertionItem(Box<AssertionItem>),
50    BindDirective(Box<BindDirective>),
51    ContinuousAssign(Box<ContinuousAssign>),
52    NetAlias(Box<NetAlias>),
53    InitialConstruct(Box<InitialConstruct>),
54    FinalConstruct(Box<FinalConstruct>),
55    AlwaysConstruct(Box<AlwaysConstruct>),
56    LoopGenerateConstruct(Box<LoopGenerateConstruct>),
57    ConditionalGenerateConstruct(Box<ConditionalGenerateConstruct>),
58    ElaborationSystemTask(Box<ElaborationSystemTask>),
59}
60
61#[derive(Clone, Debug, PartialEq, Node)]
62pub enum ModuleItem {
63    PortDeclaration(Box<(PortDeclaration, Symbol)>),
64    NonPortModuleItem(Box<NonPortModuleItem>),
65}
66
67#[derive(Clone, Debug, PartialEq, Node)]
68pub enum ModuleOrGenerateItem {
69    Parameter(Box<ModuleOrGenerateItemParameter>),
70    Gate(Box<ModuleOrGenerateItemGate>),
71    Udp(Box<ModuleOrGenerateItemUdp>),
72    Module(Box<ModuleOrGenerateItemModule>),
73    ModuleItem(Box<ModuleOrGenerateItemModuleItem>),
74}
75
76#[derive(Clone, Debug, PartialEq, Node)]
77pub struct ModuleOrGenerateItemParameter {
78    pub nodes: (Vec<AttributeInstance>, ParameterOverride),
79}
80
81#[derive(Clone, Debug, PartialEq, Node)]
82pub struct ModuleOrGenerateItemGate {
83    pub nodes: (Vec<AttributeInstance>, GateInstantiation),
84}
85
86#[derive(Clone, Debug, PartialEq, Node)]
87pub struct ModuleOrGenerateItemUdp {
88    pub nodes: (Vec<AttributeInstance>, UdpInstantiation),
89}
90
91#[derive(Clone, Debug, PartialEq, Node)]
92pub struct ModuleOrGenerateItemModule {
93    pub nodes: (Vec<AttributeInstance>, ModuleInstantiation),
94}
95
96#[derive(Clone, Debug, PartialEq, Node)]
97pub struct ModuleOrGenerateItemModuleItem {
98    pub nodes: (Vec<AttributeInstance>, ModuleCommonItem),
99}
100
101#[derive(Clone, Debug, PartialEq, Node)]
102pub enum ModuleOrGenerateItemDeclaration {
103    PackageOrGenerateItemDeclaration(Box<PackageOrGenerateItemDeclaration>),
104    GenvarDeclaration(Box<GenvarDeclaration>),
105    ClockingDeclaration(Box<ClockingDeclaration>),
106    Clocking(Box<ModuleOrGenerateItemDeclarationClocking>),
107    Disable(Box<ModuleOrGenerateItemDeclarationDisable>),
108}
109
110#[derive(Clone, Debug, PartialEq, Node)]
111pub struct ModuleOrGenerateItemDeclarationClocking {
112    pub nodes: (Keyword, Keyword, ClockingIdentifier, Symbol),
113}
114
115#[derive(Clone, Debug, PartialEq, Node)]
116pub struct ModuleOrGenerateItemDeclarationDisable {
117    pub nodes: (Keyword, Keyword, Keyword, ExpressionOrDist, Symbol),
118}
119
120#[derive(Clone, Debug, PartialEq, Node)]
121pub enum NonPortModuleItem {
122    GenerateRegion(Box<GenerateRegion>),
123    ModuleOrGenerateItem(Box<ModuleOrGenerateItem>),
124    SpecifyBlock(Box<SpecifyBlock>),
125    Specparam(Box<NonPortModuleItemSpecparam>),
126    ProgramDeclaration(Box<ProgramDeclaration>),
127    ModuleDeclaration(Box<ModuleDeclaration>),
128    InterfaceDeclaration(Box<InterfaceDeclaration>),
129    TimeunitsDeclaration(Box<TimeunitsDeclaration>),
130}
131
132#[derive(Clone, Debug, PartialEq, Node)]
133pub struct NonPortModuleItemSpecparam {
134    pub nodes: (Vec<AttributeInstance>, SpecparamDeclaration),
135}
136
137#[derive(Clone, Debug, PartialEq, Node)]
138pub struct ParameterOverride {
139    pub nodes: (Keyword, ListOfDefparamAssignments, Symbol),
140}
141
142#[derive(Clone, Debug, PartialEq, Node)]
143pub enum BindDirective {
144    Scope(Box<BindDirectiveScope>),
145    Instance(Box<BindDirectiveInstance>),
146}
147
148#[derive(Clone, Debug, PartialEq, Node)]
149pub struct BindDirectiveScope {
150    pub nodes: (
151        Keyword,
152        BindTargetScope,
153        Option<(Symbol, BindTargetInstanceList)>,
154        BindInstantiation,
155    ),
156}
157
158#[derive(Clone, Debug, PartialEq, Node)]
159pub struct BindDirectiveInstance {
160    pub nodes: (Keyword, BindTargetInstance, BindInstantiation),
161}
162
163#[derive(Clone, Debug, PartialEq, Node)]
164pub enum BindTargetScope {
165    ModuleIdentifier(Box<ModuleIdentifier>),
166    InterfaceIdentifier(Box<InterfaceIdentifier>),
167}
168
169#[derive(Clone, Debug, PartialEq, Node)]
170pub struct BindTargetInstance {
171    pub nodes: (HierarchicalIdentifier, ConstantBitSelect),
172}
173
174#[derive(Clone, Debug, PartialEq, Node)]
175pub struct BindTargetInstanceList {
176    pub nodes: (List<Symbol, BindTargetInstance>,),
177}
178
179#[derive(Clone, Debug, PartialEq, Node)]
180pub enum BindInstantiation {
181    ProgramInstantiation(Box<ProgramInstantiation>),
182    ModuleInstantiation(Box<ModuleInstantiation>),
183    InterfaceInstantiation(Box<InterfaceInstantiation>),
184    CheckerInstantiation(Box<CheckerInstantiation>),
185}