sv_parser_syntaxtree/source_text/
interface_items.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub enum InterfaceOrGenerateItem {
7    Module(Box<InterfaceOrGenerateItemModule>),
8    Extern(Box<InterfaceOrGenerateItemExtern>),
9}
10
11#[derive(Clone, Debug, PartialEq, Node)]
12pub struct InterfaceOrGenerateItemModule {
13    pub nodes: (Vec<AttributeInstance>, ModuleCommonItem),
14}
15
16#[derive(Clone, Debug, PartialEq, Node)]
17pub struct InterfaceOrGenerateItemExtern {
18    pub nodes: (Vec<AttributeInstance>, ExternTfDeclaration),
19}
20
21#[derive(Clone, Debug, PartialEq, Node)]
22pub enum ExternTfDeclaration {
23    Method(Box<ExternTfDeclarationMethod>),
24    Task(Box<ExternTfDeclarationTask>),
25}
26
27#[derive(Clone, Debug, PartialEq, Node)]
28pub struct ExternTfDeclarationMethod {
29    pub nodes: (Keyword, MethodPrototype, Symbol),
30}
31
32#[derive(Clone, Debug, PartialEq, Node)]
33pub struct ExternTfDeclarationTask {
34    pub nodes: (Keyword, Keyword, TaskPrototype, Symbol),
35}
36
37#[derive(Clone, Debug, PartialEq, Node)]
38pub enum InterfaceItem {
39    PortDeclaration(Box<(PortDeclaration, Symbol)>),
40    NonPortInterfaceItem(Box<NonPortInterfaceItem>),
41}
42
43#[derive(Clone, Debug, PartialEq, Node)]
44pub enum NonPortInterfaceItem {
45    GenerateRegion(Box<GenerateRegion>),
46    InterfaceOrGenerateItem(Box<InterfaceOrGenerateItem>),
47    ProgramDeclaration(Box<ProgramDeclaration>),
48    ModportDeclaration(Box<ModportDeclaration>),
49    InterfaceDeclaration(Box<InterfaceDeclaration>),
50    TimeunitsDeclaration(Box<TimeunitsDeclaration>),
51}