Skip to main content

scarf_syntax/specify_section/
specify_path_delays.rs

1// =======================================================================
2// specify_path_delays.rs
3// =======================================================================
4// CST Nodes from 1800-2023 A.7.4
5use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub enum PathDelayValue<'a> {
9    NoParen(Box<ListOfPathDelayExpressions<'a>>),
10    Paren(
11        Box<(
12            Metadata<'a>, // (
13            ListOfPathDelayExpressions<'a>,
14            Metadata<'a>, // )
15        )>,
16    ),
17}
18
19#[derive(Clone, Debug, PartialEq)]
20pub enum ListOfPathDelayExpressions<'a> {
21    Path(Box<TPathDelayExpression<'a>>),
22    RiseFall(
23        Box<(
24            TrisePathDelayExpression<'a>,
25            Metadata<'a>, // ,
26            TfallPathDelayExpression<'a>,
27        )>,
28    ),
29    RiseFallZ(
30        Box<(
31            TrisePathDelayExpression<'a>,
32            Metadata<'a>, // ,
33            TfallPathDelayExpression<'a>,
34            Metadata<'a>, // ,
35            TzPathDelayExpression<'a>,
36        )>,
37    ),
38    EdgeZ(
39        Box<(
40            T01PathDelayExpression<'a>,
41            Metadata<'a>, // ,
42            T10PathDelayExpression<'a>,
43            Metadata<'a>, // ,
44            T0zPathDelayExpression<'a>,
45            Metadata<'a>, // ,
46            Tz1PathDelayExpression<'a>,
47            Metadata<'a>, // ,
48            T1zPathDelayExpression<'a>,
49            Metadata<'a>, // ,
50            Tz0PathDelayExpression<'a>,
51        )>,
52    ),
53    // Nest statements to avoid compiler issues with long tuples
54    EdgeZX(
55        Box<(
56            (
57                T01PathDelayExpression<'a>,
58                Metadata<'a>, // ,
59                T10PathDelayExpression<'a>,
60                Metadata<'a>, // ,
61                T0zPathDelayExpression<'a>,
62                Metadata<'a>, // ,
63                Tz1PathDelayExpression<'a>,
64                Metadata<'a>, // ,
65                T1zPathDelayExpression<'a>,
66                Metadata<'a>, // ,
67                Tz0PathDelayExpression<'a>,
68                Metadata<'a>, // ,
69            ),
70            (
71                T0xPathDelayExpression<'a>,
72                Metadata<'a>, // ,
73                Tx1PathDelayExpression<'a>,
74                Metadata<'a>, // ,
75                T1xPathDelayExpression<'a>,
76                Metadata<'a>, // ,
77                Tx0PathDelayExpression<'a>,
78                Metadata<'a>, // ,
79                TxzPathDelayExpression<'a>,
80                Metadata<'a>, // ,
81                TzxPathDelayExpression<'a>,
82            ),
83        )>,
84    ),
85}
86
87#[derive(Clone, Debug, PartialEq)]
88pub struct TPathDelayExpression<'a>(pub PathDelayExpression<'a>);
89
90#[derive(Clone, Debug, PartialEq)]
91pub struct TrisePathDelayExpression<'a>(pub PathDelayExpression<'a>);
92
93#[derive(Clone, Debug, PartialEq)]
94pub struct TfallPathDelayExpression<'a>(pub PathDelayExpression<'a>);
95
96#[derive(Clone, Debug, PartialEq)]
97pub struct TzPathDelayExpression<'a>(pub PathDelayExpression<'a>);
98
99#[derive(Clone, Debug, PartialEq)]
100pub struct T01PathDelayExpression<'a>(pub PathDelayExpression<'a>);
101
102#[derive(Clone, Debug, PartialEq)]
103pub struct T10PathDelayExpression<'a>(pub PathDelayExpression<'a>);
104
105#[derive(Clone, Debug, PartialEq)]
106pub struct T0zPathDelayExpression<'a>(pub PathDelayExpression<'a>);
107
108#[derive(Clone, Debug, PartialEq)]
109pub struct Tz1PathDelayExpression<'a>(pub PathDelayExpression<'a>);
110
111#[derive(Clone, Debug, PartialEq)]
112pub struct T1zPathDelayExpression<'a>(pub PathDelayExpression<'a>);
113
114#[derive(Clone, Debug, PartialEq)]
115pub struct Tz0PathDelayExpression<'a>(pub PathDelayExpression<'a>);
116
117#[derive(Clone, Debug, PartialEq)]
118pub struct T0xPathDelayExpression<'a>(pub PathDelayExpression<'a>);
119
120#[derive(Clone, Debug, PartialEq)]
121pub struct Tx1PathDelayExpression<'a>(pub PathDelayExpression<'a>);
122
123#[derive(Clone, Debug, PartialEq)]
124pub struct T1xPathDelayExpression<'a>(pub PathDelayExpression<'a>);
125
126#[derive(Clone, Debug, PartialEq)]
127pub struct Tx0PathDelayExpression<'a>(pub PathDelayExpression<'a>);
128
129#[derive(Clone, Debug, PartialEq)]
130pub struct TxzPathDelayExpression<'a>(pub PathDelayExpression<'a>);
131
132#[derive(Clone, Debug, PartialEq)]
133pub struct TzxPathDelayExpression<'a>(pub PathDelayExpression<'a>);
134
135#[derive(Clone, Debug, PartialEq)]
136pub struct PathDelayExpression<'a>(pub ConstantMintypmaxExpression<'a>);