Skip to main content

scarf_syntax/primitive_instances/
primitive_instantiation_and_instances.rs

1// =======================================================================
2// primitive_strengths.rs
3// =======================================================================
4//! CST Nodes from 1800-2023 A.3.1
5use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub enum GateInstantiation<'a> {
9    Cmos(
10        Box<(
11            CmosSwitchtype<'a>,
12            Option<Delay3<'a>>,
13            CmosSwitchInstance<'a>,
14            Vec<(
15                Metadata<'a>, // ,
16                CmosSwitchInstance<'a>,
17            )>,
18            Metadata<'a>, // ;
19        )>,
20    ),
21    Mos(
22        Box<(
23            MosSwitchtype<'a>,
24            Option<Delay3<'a>>,
25            MosSwitchInstance<'a>,
26            Vec<(
27                Metadata<'a>, // ,
28                MosSwitchInstance<'a>,
29            )>,
30            Metadata<'a>, // ;
31        )>,
32    ),
33    Enable(
34        Box<(
35            EnableGatetype<'a>,
36            Option<DriveStrength<'a>>,
37            Option<Delay3<'a>>,
38            EnableGateInstance<'a>,
39            Vec<(
40                Metadata<'a>, // ,
41                EnableGateInstance<'a>,
42            )>,
43            Metadata<'a>, // ;
44        )>,
45    ),
46    NInput(
47        Box<(
48            NInputGatetype<'a>,
49            Option<DriveStrength<'a>>,
50            Option<Delay2<'a>>,
51            NInputGateInstance<'a>,
52            Vec<(
53                Metadata<'a>, // ,
54                NInputGateInstance<'a>,
55            )>,
56            Metadata<'a>, // ;
57        )>,
58    ),
59    NOutput(
60        Box<(
61            NOutputGatetype<'a>,
62            Option<DriveStrength<'a>>,
63            Option<Delay2<'a>>,
64            NOutputGateInstance<'a>,
65            Vec<(
66                Metadata<'a>, // ,
67                NOutputGateInstance<'a>,
68            )>,
69            Metadata<'a>, // ;
70        )>,
71    ),
72    PassEn(
73        Box<(
74            PassEnSwitchtype<'a>,
75            Option<Delay2<'a>>,
76            PassEnableSwitchInstance<'a>,
77            Vec<(
78                Metadata<'a>, // ,
79                PassEnableSwitchInstance<'a>,
80            )>,
81            Metadata<'a>, // ;
82        )>,
83    ),
84    Pass(
85        Box<(
86            PassSwitchtype<'a>,
87            PassSwitchInstance<'a>,
88            Vec<(
89                Metadata<'a>, // ,
90                PassSwitchInstance<'a>,
91            )>,
92            Metadata<'a>, // ;
93        )>,
94    ),
95    Pulldown(
96        Box<(
97            Metadata<'a>, // pulldown
98            Option<PulldownStrength<'a>>,
99            PullGateInstance<'a>,
100            Vec<(
101                Metadata<'a>, // ,
102                PullGateInstance<'a>,
103            )>,
104            Metadata<'a>, // ;
105        )>,
106    ),
107    Pullup(
108        Box<(
109            Metadata<'a>, // pullup
110            Option<PullupStrength<'a>>,
111            PullGateInstance<'a>,
112            Vec<(
113                Metadata<'a>, // ,
114                PullGateInstance<'a>,
115            )>,
116            Metadata<'a>, // ;
117        )>,
118    ),
119}
120
121#[derive(Clone, Debug, PartialEq)]
122pub struct CmosSwitchInstance<'a>(
123    pub Option<NameOfInstance<'a>>,
124    pub Metadata<'a>, // (
125    pub OutputTerminal<'a>,
126    pub Metadata<'a>, // ,
127    pub InputTerminal<'a>,
128    pub Metadata<'a>, // ,
129    pub NcontrolTerminal<'a>,
130    pub Metadata<'a>, // ,
131    pub PcontrolTerminal<'a>,
132    pub Metadata<'a>, // )
133);
134
135#[derive(Clone, Debug, PartialEq)]
136pub struct EnableGateInstance<'a>(
137    pub Option<NameOfInstance<'a>>,
138    pub Metadata<'a>, // (
139    pub OutputTerminal<'a>,
140    pub Metadata<'a>, // ,
141    pub InputTerminal<'a>,
142    pub Metadata<'a>, // ,
143    pub EnableTerminal<'a>,
144    pub Metadata<'a>, // )
145);
146
147#[derive(Clone, Debug, PartialEq)]
148pub struct MosSwitchInstance<'a>(
149    pub Option<NameOfInstance<'a>>,
150    pub Metadata<'a>, // (
151    pub OutputTerminal<'a>,
152    pub Metadata<'a>, // ,
153    pub InputTerminal<'a>,
154    pub Metadata<'a>, // ,
155    pub EnableTerminal<'a>,
156    pub Metadata<'a>, // )
157);
158
159#[derive(Clone, Debug, PartialEq)]
160pub struct NInputGateInstance<'a>(
161    pub Option<NameOfInstance<'a>>,
162    pub Metadata<'a>, // (
163    pub OutputTerminal<'a>,
164    pub Metadata<'a>, // ,
165    pub InputTerminal<'a>,
166    pub  Vec<(
167        Metadata<'a>, // ,
168        InputTerminal<'a>,
169    )>,
170    pub Metadata<'a>, // )
171);
172
173#[derive(Clone, Debug, PartialEq)]
174pub struct NOutputGateInstance<'a>(
175    pub Option<NameOfInstance<'a>>,
176    pub Metadata<'a>, // (
177    pub OutputTerminal<'a>,
178    pub  Vec<(
179        Metadata<'a>, // ,
180        OutputTerminal<'a>,
181    )>,
182    pub Metadata<'a>, // ,
183    pub InputTerminal<'a>,
184    pub Metadata<'a>, // )
185);
186
187#[derive(Clone, Debug, PartialEq)]
188pub struct PassSwitchInstance<'a>(
189    pub Option<NameOfInstance<'a>>,
190    pub Metadata<'a>, // (
191    pub InoutTerminal<'a>,
192    pub Metadata<'a>, // ,
193    pub InoutTerminal<'a>,
194    pub Metadata<'a>, // )
195);
196
197#[derive(Clone, Debug, PartialEq)]
198pub struct PassEnableSwitchInstance<'a>(
199    pub Option<NameOfInstance<'a>>,
200    pub Metadata<'a>, // (
201    pub InoutTerminal<'a>,
202    pub Metadata<'a>, // ,
203    pub InoutTerminal<'a>,
204    pub Metadata<'a>, // ,
205    pub EnableTerminal<'a>,
206    pub Metadata<'a>, // )
207);
208
209#[derive(Clone, Debug, PartialEq)]
210pub struct PullGateInstance<'a>(
211    pub Option<NameOfInstance<'a>>,
212    pub Metadata<'a>, // (
213    pub OutputTerminal<'a>,
214    pub Metadata<'a>, // )
215);