sv_parser_syntaxtree/specify_section/
system_timing_check_event_definitions.rs1use crate::*;
2
3#[derive(Clone, Debug, PartialEq, Node)]
6pub struct TimingCheckEvent {
7 pub nodes: (
8 Option<TimingCheckEventControl>,
9 SpecifyTerminalDescriptor,
10 Option<(Symbol, TimingCheckCondition)>,
11 ),
12}
13
14#[derive(Clone, Debug, PartialEq, Node)]
15pub struct ControlledTimingCheckEvent {
16 pub nodes: (
17 TimingCheckEventControl,
18 SpecifyTerminalDescriptor,
19 Option<(Symbol, TimingCheckCondition)>,
20 ),
21}
22
23#[derive(Clone, Debug, PartialEq, Node)]
24pub enum TimingCheckEventControl {
25 Posedge(Box<Keyword>),
26 Negedge(Box<Keyword>),
27 Edge(Box<Keyword>),
28 EdgeControlSpecifier(Box<EdgeControlSpecifier>),
29}
30
31#[derive(Clone, Debug, PartialEq, Node)]
32pub enum SpecifyTerminalDescriptor {
33 SpecifyInputTerminalDescriptor(Box<SpecifyInputTerminalDescriptor>),
34 SpecifyOutputTerminalDescriptor(Box<SpecifyOutputTerminalDescriptor>),
35}
36
37#[derive(Clone, Debug, PartialEq, Node)]
38pub struct EdgeControlSpecifier {
39 pub nodes: (Keyword, Bracket<List<Symbol, EdgeDescriptor>>),
40}
41
42#[derive(Clone, Debug, PartialEq, Node)]
43pub struct EdgeDescriptor {
44 pub nodes: (Keyword,),
45}
46
47#[derive(Clone, Debug, PartialEq, Node)]
48pub enum TimingCheckCondition {
49 ScalarTimingCheckCondition(Box<ScalarTimingCheckCondition>),
50 Paren(Box<TimingCheckConditionParen>),
51}
52
53#[derive(Clone, Debug, PartialEq, Node)]
54pub struct TimingCheckConditionParen {
55 pub nodes: (Paren<ScalarTimingCheckCondition>,),
56}
57
58#[derive(Clone, Debug, PartialEq, Node)]
59pub enum ScalarTimingCheckCondition {
60 Expression(Box<Expression>),
61 Unary(Box<ScalarTimingCheckConditionUnary>),
62 Binary(Box<ScalarTimingCheckConditionBinary>),
63}
64
65#[derive(Clone, Debug, PartialEq, Node)]
66pub struct ScalarTimingCheckConditionUnary {
67 pub nodes: (Symbol, Expression),
68}
69
70#[derive(Clone, Debug, PartialEq, Node)]
71pub struct ScalarTimingCheckConditionBinary {
72 pub nodes: (Expression, Symbol, ScalarConstant),
73}
74
75#[derive(Clone, Debug, PartialEq, Node)]
76pub struct ScalarConstant {
77 pub nodes: (Keyword,),
78}