sv_parser_syntaxtree/source_text/
program_items.rs1use crate::*;
2
3#[derive(Clone, Debug, PartialEq, Node)]
6pub enum ProgramItem {
7 PortDeclaration(Box<(PortDeclaration, Symbol)>),
8 NonPortProgramItem(Box<NonPortProgramItem>),
9}
10
11#[derive(Clone, Debug, PartialEq, Node)]
12pub enum NonPortProgramItem {
13 Assign(Box<NonPortProgramItemAssign>),
14 Module(Box<NonPortProgramItemModule>),
15 Initial(Box<NonPortProgramItemInitial>),
16 Final(Box<NonPortProgramItemFinal>),
17 Assertion(Box<NonPortProgramItemAssertion>),
18 TimeunitsDeclaration(Box<TimeunitsDeclaration>),
19 ProgramGenerateItem(Box<ProgramGenerateItem>),
20}
21
22#[derive(Clone, Debug, PartialEq, Node)]
23pub struct NonPortProgramItemAssign {
24 pub nodes: (Vec<AttributeInstance>, ContinuousAssign),
25}
26
27#[derive(Clone, Debug, PartialEq, Node)]
28pub struct NonPortProgramItemModule {
29 pub nodes: (Vec<AttributeInstance>, ModuleOrGenerateItemDeclaration),
30}
31
32#[derive(Clone, Debug, PartialEq, Node)]
33pub struct NonPortProgramItemInitial {
34 pub nodes: (Vec<AttributeInstance>, InitialConstruct),
35}
36
37#[derive(Clone, Debug, PartialEq, Node)]
38pub struct NonPortProgramItemFinal {
39 pub nodes: (Vec<AttributeInstance>, FinalConstruct),
40}
41
42#[derive(Clone, Debug, PartialEq, Node)]
43pub struct NonPortProgramItemAssertion {
44 pub nodes: (Vec<AttributeInstance>, ConcurrentAssertionItem),
45}
46
47#[derive(Clone, Debug, PartialEq, Node)]
48pub enum ProgramGenerateItem {
49 LoopGenerateConstruct(Box<LoopGenerateConstruct>),
50 ConditionalGenerateConstruct(Box<ConditionalGenerateConstruct>),
51 GenerateRegion(Box<GenerateRegion>),
52 ElaborationSystemTask(Box<ElaborationSystemTask>),
53}