use crate::*; // ----------------------------------------------------------------------------- #[derive(Clone, Debug, PartialEq, Node)] pub enum ClockingDeclaration { Local(Box), Global(Box), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingDeclarationLocal { pub nodes: ( Option, Keyword, Option, ClockingEvent, Symbol, Vec, Keyword, Option<(Symbol, ClockingIdentifier)>, ), } #[derive(Clone, Debug, PartialEq, Node)] pub struct Default { pub nodes: (Keyword,), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingDeclarationGlobal { pub nodes: ( Keyword, Keyword, Option, ClockingEvent, Symbol, Keyword, Option<(Symbol, ClockingIdentifier)>, ), } #[derive(Clone, Debug, PartialEq, Node)] pub enum ClockingEvent { Identifier(Box), Expression(Box), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingEventIdentifier { pub nodes: (Symbol, Identifier), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingEventExpression { pub nodes: (Symbol, Paren), } #[derive(Clone, Debug, PartialEq, Node)] pub enum ClockingItem { Default(Box), Direction(Box), Assertion(Box), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingItemDefault { pub nodes: (Keyword, DefaultSkew, Symbol), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingItemDirection { pub nodes: (ClockingDirection, ListOfClockingDeclAssign, Symbol), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingItemAssertion { pub nodes: (Vec, AssertionItemDeclaration), } #[derive(Clone, Debug, PartialEq, Node)] pub enum DefaultSkew { Input(Box), Output(Box), InputOutput(Box), } #[derive(Clone, Debug, PartialEq, Node)] pub struct DefaultSkewInput { pub nodes: (Keyword, ClockingSkew), } #[derive(Clone, Debug, PartialEq, Node)] pub struct DefaultSkewOutput { pub nodes: (Keyword, ClockingSkew), } #[derive(Clone, Debug, PartialEq, Node)] pub struct DefaultSkewInputOutput { pub nodes: (Keyword, ClockingSkew, Keyword, ClockingSkew), } #[derive(Clone, Debug, PartialEq, Node)] pub enum ClockingDirection { Input(Box), Output(Box), InputOutput(Box), Inout(Box), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingDirectionInput { pub nodes: (Keyword, Option), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingDirectionOutput { pub nodes: (Keyword, Option), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingDirectionInputOutput { pub nodes: (Keyword, Option, Keyword, Option), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ListOfClockingDeclAssign { pub nodes: (List,), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingDeclAssign { pub nodes: (SignalIdentifier, Option<(Symbol, Expression)>), } #[derive(Clone, Debug, PartialEq, Node)] pub enum ClockingSkew { Edge(Box), DelayControl(Box), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingSkewEdge { pub nodes: (EdgeIdentifier, Option), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockingDrive { pub nodes: (ClockvarExpression, Symbol, Option, Expression), } #[derive(Clone, Debug, PartialEq, Node)] pub enum CycleDelay { Integral(Box), Identifier(Box), Expression(Box), } #[derive(Clone, Debug, PartialEq, Node)] pub struct CycleDelayIntegral { pub nodes: (Symbol, IntegralNumber), } #[derive(Clone, Debug, PartialEq, Node)] pub struct CycleDelayIdentifier { pub nodes: (Symbol, Identifier), } #[derive(Clone, Debug, PartialEq, Node)] pub struct CycleDelayExpression { pub nodes: (Symbol, Paren), } #[derive(Clone, Debug, PartialEq, Node)] pub struct Clockvar { pub nodes: (HierarchicalIdentifier,), } #[derive(Clone, Debug, PartialEq, Node)] pub struct ClockvarExpression { pub nodes: (Clockvar, Select), }