sv_parser_syntaxtree/specify_section/
system_timing_check_commands.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub enum SystemTimingCheck {
7    SetupTimingCheck(Box<SetupTimingCheck>),
8    HoldTimingCheck(Box<HoldTimingCheck>),
9    SetupholdTimingCheck(Box<SetupholdTimingCheck>),
10    RecoveryTimingCheck(Box<RecoveryTimingCheck>),
11    RemovalTimingCheck(Box<RemovalTimingCheck>),
12    RecremTimingCheck(Box<RecremTimingCheck>),
13    SkewTimingCheck(Box<SkewTimingCheck>),
14    TimeskewTimingCheck(Box<TimeskewTimingCheck>),
15    FullskewTimingCheck(Box<FullskewTimingCheck>),
16    PeriodTimingCheck(Box<PeriodTimingCheck>),
17    WidthTimingCheck(Box<WidthTimingCheck>),
18    NochangeTimingCheck(Box<NochangeTimingCheck>),
19}
20
21#[derive(Clone, Debug, PartialEq, Node)]
22pub struct SetupTimingCheck {
23    pub nodes: (
24        Keyword,
25        Paren<(
26            DataEvent,
27            Symbol,
28            ReferenceEvent,
29            Symbol,
30            TimingCheckLimit,
31            Option<(Symbol, Option<Notifier>)>,
32        )>,
33        Symbol,
34    ),
35}
36
37#[derive(Clone, Debug, PartialEq, Node)]
38pub struct HoldTimingCheck {
39    pub nodes: (
40        Keyword,
41        Paren<(
42            ReferenceEvent,
43            Symbol,
44            DataEvent,
45            Symbol,
46            TimingCheckLimit,
47            Option<(Symbol, Option<Notifier>)>,
48        )>,
49        Symbol,
50    ),
51}
52
53#[derive(Clone, Debug, PartialEq, Node)]
54pub struct SetupholdTimingCheck {
55    pub nodes: (
56        Keyword,
57        Paren<(
58            ReferenceEvent,
59            Symbol,
60            DataEvent,
61            Symbol,
62            TimingCheckLimit,
63            Symbol,
64            TimingCheckLimit,
65            Option<(
66                Symbol,
67                Option<Notifier>,
68                Option<(
69                    Symbol,
70                    Option<TimestampCondition>,
71                    Option<(
72                        Symbol,
73                        Option<TimecheckCondition>,
74                        Option<(
75                            Symbol,
76                            Option<DelayedReference>,
77                            Option<(Symbol, Option<DelayedData>)>,
78                        )>,
79                    )>,
80                )>,
81            )>,
82        )>,
83        Symbol,
84    ),
85}
86
87#[derive(Clone, Debug, PartialEq, Node)]
88pub struct RecoveryTimingCheck {
89    pub nodes: (
90        Keyword,
91        Paren<(
92            ReferenceEvent,
93            Symbol,
94            DataEvent,
95            Symbol,
96            TimingCheckLimit,
97            Option<(Symbol, Option<Notifier>)>,
98        )>,
99        Symbol,
100    ),
101}
102
103#[derive(Clone, Debug, PartialEq, Node)]
104pub struct RemovalTimingCheck {
105    pub nodes: (
106        Keyword,
107        Paren<(
108            ReferenceEvent,
109            Symbol,
110            DataEvent,
111            Symbol,
112            TimingCheckLimit,
113            Option<(Symbol, Option<Notifier>)>,
114        )>,
115        Symbol,
116    ),
117}
118
119#[derive(Clone, Debug, PartialEq, Node)]
120pub struct RecremTimingCheck {
121    pub nodes: (
122        Keyword,
123        Paren<(
124            ReferenceEvent,
125            Symbol,
126            DataEvent,
127            Symbol,
128            TimingCheckLimit,
129            Symbol,
130            TimingCheckLimit,
131            Option<(
132                Symbol,
133                Option<Notifier>,
134                Option<(
135                    Symbol,
136                    Option<TimestampCondition>,
137                    Option<(
138                        Symbol,
139                        Option<TimecheckCondition>,
140                        Option<(
141                            Symbol,
142                            Option<DelayedReference>,
143                            Option<(Symbol, Option<DelayedData>)>,
144                        )>,
145                    )>,
146                )>,
147            )>,
148        )>,
149        Symbol,
150    ),
151}
152
153#[derive(Clone, Debug, PartialEq, Node)]
154pub struct SkewTimingCheck {
155    pub nodes: (
156        Keyword,
157        Paren<(
158            ReferenceEvent,
159            Symbol,
160            DataEvent,
161            Symbol,
162            TimingCheckLimit,
163            Option<(Symbol, Option<Notifier>)>,
164        )>,
165        Symbol,
166    ),
167}
168
169#[derive(Clone, Debug, PartialEq, Node)]
170pub struct TimeskewTimingCheck {
171    pub nodes: (
172        Keyword,
173        Paren<(
174            ReferenceEvent,
175            Symbol,
176            DataEvent,
177            Symbol,
178            TimingCheckLimit,
179            Option<(
180                Symbol,
181                Option<Notifier>,
182                Option<(
183                    Symbol,
184                    Option<EventBasedFlag>,
185                    Option<(Symbol, Option<RemainActiveFlag>)>,
186                )>,
187            )>,
188        )>,
189        Symbol,
190    ),
191}
192
193#[derive(Clone, Debug, PartialEq, Node)]
194pub struct FullskewTimingCheck {
195    pub nodes: (
196        Keyword,
197        Paren<(
198            ReferenceEvent,
199            Symbol,
200            DataEvent,
201            Symbol,
202            TimingCheckLimit,
203            Symbol,
204            TimingCheckLimit,
205            Option<(
206                Symbol,
207                Option<Notifier>,
208                Option<(
209                    Symbol,
210                    Option<EventBasedFlag>,
211                    Option<(Symbol, Option<RemainActiveFlag>)>,
212                )>,
213            )>,
214        )>,
215        Symbol,
216    ),
217}
218
219#[derive(Clone, Debug, PartialEq, Node)]
220pub struct PeriodTimingCheck {
221    pub nodes: (
222        Keyword,
223        Paren<(
224            ControlledReferenceEvent,
225            Symbol,
226            TimingCheckLimit,
227            Option<(Symbol, Option<Notifier>)>,
228        )>,
229        Symbol,
230    ),
231}
232
233#[derive(Clone, Debug, PartialEq, Node)]
234pub struct WidthTimingCheck {
235    pub nodes: (
236        Keyword,
237        Paren<(
238            ControlledReferenceEvent,
239            Symbol,
240            TimingCheckLimit,
241            Symbol,
242            Threshold,
243            Option<(Symbol, Option<Notifier>)>,
244        )>,
245        Symbol,
246    ),
247}
248
249#[derive(Clone, Debug, PartialEq, Node)]
250pub struct NochangeTimingCheck {
251    pub nodes: (
252        Keyword,
253        Paren<(
254            ReferenceEvent,
255            Symbol,
256            DataEvent,
257            Symbol,
258            StartEdgeOffset,
259            Symbol,
260            EndEdgeOffset,
261            Option<(Symbol, Option<Notifier>)>,
262        )>,
263        Symbol,
264    ),
265}