scarf_syntax/source_text/
interface_items.rs1use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub enum InterfaceOrGenerateItem<'a> {
9 ModuleCommon(Box<(Vec<AttributeInstance<'a>>, ModuleCommonItem<'a>)>),
10 ExternTf(Box<(Vec<AttributeInstance<'a>>, ExternTfDeclaration<'a>)>),
11}
12
13#[derive(Clone, Debug, PartialEq)]
14pub enum ExternTfDeclaration<'a> {
15 Method(
16 Box<(
17 Metadata<'a>, MethodPrototype<'a>,
19 Metadata<'a>, )>,
21 ),
22 Task(
23 Box<(
24 Metadata<'a>, Metadata<'a>, TaskPrototype<'a>,
27 Metadata<'a>, )>,
29 ),
30}
31
32#[derive(Clone, Debug, PartialEq)]
33pub enum InterfaceItem<'a> {
34 Port(
35 Box<(
36 PortDeclaration<'a>,
37 Metadata<'a>, )>,
39 ),
40 NonPort(Box<NonPortInterfaceItem<'a>>),
41}
42
43#[derive(Clone, Debug, PartialEq)]
44pub enum NonPortInterfaceItem<'a> {
45 Generate(Box<GenerateRegion<'a>>),
46 InterfaceOrGenerate(Box<InterfaceOrGenerateItem<'a>>),
47 Program(Box<ProgramDeclaration<'a>>),
48 Modport(Box<ModportDeclaration<'a>>),
49 Interface(Box<InterfaceDeclaration<'a>>),
50 Timeunits(Box<TimeunitsDeclaration<'a>>),
51}