1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
use num_derive::{FromPrimitive, ToPrimitive};
/// VPI object and relation kinds used with handle traversal APIs.
///
/// Values map directly to `vpi_sys::vpi*` constants.
#[repr(u32)]
#[derive(Copy, Clone, Debug, FromPrimitive, ToPrimitive)]
pub enum ObjectType {
/// always procedure
Always = vpi_sys::vpiAlways,
/// quasi-continuous assignment
AssignStmt = vpi_sys::vpiAssignStmt,
/// procedural assignment
Assignment = vpi_sys::vpiAssignment,
/// block statement
Begin = vpi_sys::vpiBegin,
/// case statement
Case = vpi_sys::vpiCase,
/// case statement item
CaseItem = vpi_sys::vpiCaseItem,
/// numerical constant or string literal
Constant = vpi_sys::vpiConstant,
/// continuous assignment
ContAssign = vpi_sys::vpiContAssign,
/// deassignment statement
Deassign = vpi_sys::vpiDeassign,
/// defparam
DefParam = vpi_sys::vpiDefParam,
/// delay statement (e.g., #10)
DelayControl = vpi_sys::vpiDelayControl,
/// named block disable statement
Disable = vpi_sys::vpiDisable,
/// wait on event, e.g., @e
EventControl = vpi_sys::vpiEventControl,
/// event trigger, e.g., ->e
EventStmt = vpi_sys::vpiEventStmt,
/// for statement
ForStmt = vpi_sys::vpiFor,
/// force statement
Force = vpi_sys::vpiForce,
/// forever statement
Forever = vpi_sys::vpiForever,
/// fork-join block
Fork = vpi_sys::vpiFork,
/// function call
FuncCall = vpi_sys::vpiFuncCall,
/// function
Function = vpi_sys::vpiFunction,
/// primitive gate
Gate = vpi_sys::vpiGate,
/// if statement
IfStmt = vpi_sys::vpiIf,
/// if–else statement
IfElse = vpi_sys::vpiIfElse,
/// initial procedure
Initial = vpi_sys::vpiInitial,
/// integer variable
IntegerVar = vpi_sys::vpiIntegerVar,
/// intermodule wire delay
InterModPath = vpi_sys::vpiInterModPath,
/// iterator
Iterator = vpi_sys::vpiIterator,
/// input/output declaration
IODecl = vpi_sys::vpiIODecl,
/// behavioral memory
Memory = vpi_sys::vpiMemory,
/// single word of memory
MemoryWord = vpi_sys::vpiMemoryWord,
/// module path for path delays
ModPath = vpi_sys::vpiModPath,
/// module instance
Module = vpi_sys::vpiModule,
/// named block statement
NamedBegin = vpi_sys::vpiNamedBegin,
/// event variable
NamedEvent = vpi_sys::vpiNamedEvent,
/// named fork-join block
NamedFork = vpi_sys::vpiNamedFork,
/// scalar or vector net
Net = vpi_sys::vpiNet,
/// bit of vector net
NetBit = vpi_sys::vpiNetBit,
/// a semicolon. Ie. #10 ;
NullStmt = vpi_sys::vpiNullStmt,
/// behavioral operation
Operation = vpi_sys::vpiOperation,
/// module parameter assignment
ParamAssign = vpi_sys::vpiParamAssign,
/// module parameter
Parameter = vpi_sys::vpiParameter,
/// part-select
PartSelect = vpi_sys::vpiPartSelect,
/// terminal of module path
PathTerm = vpi_sys::vpiPathTerm,
/// module port
Port = vpi_sys::vpiPort,
/// bit of vector module port
PortBit = vpi_sys::vpiPortBit,
/// primitive terminal
PrimTerm = vpi_sys::vpiPrimTerm,
/// real variable
RealVar = vpi_sys::vpiRealVar,
/// scalar or vector reg
Reg = vpi_sys::vpiReg,
/// bit of vector reg
RegBit = vpi_sys::vpiRegBit,
/// release statement
Release = vpi_sys::vpiRelease,
/// repeat statement
Repeat = vpi_sys::vpiRepeat,
/// repeat control in an assign stmt
RepeatControl = vpi_sys::vpiRepeatControl,
/// `vpi_put_value()` event
SchedEvent = vpi_sys::vpiSchedEvent,
/// specparam
SpecParam = vpi_sys::vpiSpecParam,
/// transistor switch
Switch = vpi_sys::vpiSwitch,
/// system function call
SysFuncCall = vpi_sys::vpiSysFuncCall,
/// system task call
SysTaskCall = vpi_sys::vpiSysTaskCall,
/// UDP state table entry
TableEntry = vpi_sys::vpiTableEntry,
/// task
Task = vpi_sys::vpiTask,
/// task call
TaskCall = vpi_sys::vpiTaskCall,
/// timing check
Tchk = vpi_sys::vpiTchk,
/// terminal of timing check
TchkTerm = vpi_sys::vpiTchkTerm,
/// time variable
TimeVar = vpi_sys::vpiTimeVar,
/// simulation event queue
TimeQueue = vpi_sys::vpiTimeQueue,
/// user-defined primitive
Udp = vpi_sys::vpiUdp,
/// UDP definition
UdpDefn = vpi_sys::vpiUdpDefn,
/// user-defined system task/function
UserSystf = vpi_sys::vpiUserSystf,
/// variable array selection
VarSelect = vpi_sys::vpiVarSelect,
/// wait statement
Wait = vpi_sys::vpiWait,
/// while statement
WhileStmt = vpi_sys::vpiWhile,
/// condition expression
Condition = vpi_sys::vpiCondition,
/// net or gate delay
Delay = vpi_sys::vpiDelay,
/// else statement
ElseStmt = vpi_sys::vpiElseStmt,
/// increment statement in for loop
ForIncStmt = vpi_sys::vpiForIncStmt,
/// initialization statement in for loop
ForInitStmt = vpi_sys::vpiForInitStmt,
/// higher connection to port
HighConn = vpi_sys::vpiHighConn,
/// left-hand side of assignment
Lhs = vpi_sys::vpiLhs,
/// index of var select, bit-select, etc.
Index = vpi_sys::vpiIndex,
/// left range of vector or part-select
LeftRange = vpi_sys::vpiLeftRange,
/// lower connection to port
LowConn = vpi_sys::vpiLowConn,
/// parent object
Parent = vpi_sys::vpiParent,
/// right-hand side of assignment
Rhs = vpi_sys::vpiRhs,
/// right range of vector or part-select
RightRange = vpi_sys::vpiRightRange,
/// containing scope object
Scope = vpi_sys::vpiScope,
/// task function call
SysTfCall = vpi_sys::vpiSysTfCall,
/// timing check data term
TchkDataTerm = vpi_sys::vpiTchkDataTerm,
/// timing check notifier
TchkNotifier = vpi_sys::vpiTchkNotifier,
/// timing check reference term
TchkRefTerm = vpi_sys::vpiTchkRefTerm,
/// argument to (system) task/function
Argument = vpi_sys::vpiArgument,
/// bit of vector net or port
Bit = vpi_sys::vpiBit,
/// driver for a net
Driver = vpi_sys::vpiDriver,
/// internal scope in module
InternalScope = vpi_sys::vpiInternalScope,
/// load on net or reg
Load = vpi_sys::vpiLoad,
/// data terminal of a module path
ModDataPathIn = vpi_sys::vpiModDataPathIn,
/// Input terminal of a module path
ModPathIn = vpi_sys::vpiModPathIn,
/// output terminal of a module path
ModPathOut = vpi_sys::vpiModPathOut,
/// operand of expression
Operand = vpi_sys::vpiOperand,
/// connected port instance
PortInst = vpi_sys::vpiPortInst,
/// process in module
Process = vpi_sys::vpiProcess,
/// variables in module
Variables = vpi_sys::vpiVariables,
/// usage
Use = vpi_sys::vpiUse,
/// connected expression
Expr = vpi_sys::vpiExpr,
/// primitive (gate, switch, UDP)
Primitive = vpi_sys::vpiPrimitive,
/// statement in process or task
Stmt = vpi_sys::vpiStmt,
/// attribute of an object
Attribute = vpi_sys::vpiAttribute,
/// Bit-select of parameter, var select
BitSelect = vpi_sys::vpiBitSelect,
/// callback object
Callback = vpi_sys::vpiCallback,
/// Delay term which is a load or driver
DelayTerm = vpi_sys::vpiDelayTerm,
/// Delay object within a net
DelayDevice = vpi_sys::vpiDelayDevice,
/// reentrant task/func frame
Frame = vpi_sys::vpiFrame,
/// gate instance array
GateArray = vpi_sys::vpiGateArray,
/// module instance array
ModuleArray = vpi_sys::vpiModuleArray,
/// vpiprimitiveArray type
PrimitiveArray = vpi_sys::vpiPrimitiveArray,
/// multidimensional net
NetArray = vpi_sys::vpiNetArray,
/// range declaration
Range = vpi_sys::vpiRange,
/// multidimensional reg
RegArray = vpi_sys::vpiRegArray,
/// switch instance array
SwitchArray = vpi_sys::vpiSwitchArray,
/// UDP instance array
UdpArray = vpi_sys::vpiUdpArray,
/// active $`timeformat()` system task
ActiveTimeFormat = vpi_sys::vpiActiveTimeFormat,
/// To get to a delay device's drivers.
InTerm = vpi_sys::vpiInTerm,
/// vpiInstance arrays
InstanceArray = vpi_sys::vpiInstanceArray,
/// local drivers (within a module
LocalDriver = vpi_sys::vpiLocalDriver,
/// local loads (within a module
LocalLoad = vpi_sys::vpiLocalLoad,
/// To get to a delay device's loads.
OutTerm = vpi_sys::vpiOutTerm,
/// Module port
Ports = vpi_sys::vpiPorts,
/// simulated net after collapsing
SimNet = vpi_sys::vpiSimNet,
/// task/function
TaskFunc = vpi_sys::vpiTaskFunc,
/// Bit of a vector continuous assignment
ContAssignBit = vpi_sys::vpiContAssignBit,
/// multidimensional named event
NamedEventArray = vpi_sys::vpiNamedEventArray,
/// Indexed part-select object
IndexedPartSelect = vpi_sys::vpiIndexedPartSelect,
/// Indexed part-select's base expression
BaseExpr = vpi_sys::vpiBaseExpr,
/// Indexed part-select's width expression
WidthExpr = vpi_sys::vpiWidthExpr,
/// array of generated scopes
GenScopeArray = vpi_sys::vpiGenScopeArray,
/// A generated scope
GenScope = vpi_sys::vpiGenScope,
/// Object used to instantiate gen scopes
GenVar = vpi_sys::vpiGenVar,
/// Automatic variables of a frame
Automatics = vpi_sys::vpiAutomatics,
#[cfg(feature = "sv")]
// SystemVerilog package and namespace (600-609)
/// SystemVerilog package
Package = vpi_sys::vpiPackage,
#[cfg(feature = "sv")]
/// SystemVerilog interface
Interface = vpi_sys::vpiInterface,
#[cfg(feature = "sv")]
/// SystemVerilog program
Program = vpi_sys::vpiProgram,
#[cfg(feature = "sv")]
/// array of interface instances
InterfaceArray = vpi_sys::vpiInterfaceArray,
#[cfg(feature = "sv")]
/// array of program instances
ProgramArray = vpi_sys::vpiProgramArray,
#[cfg(feature = "sv")]
/// type specification
Typespec = vpi_sys::vpiTypespec,
#[cfg(feature = "sv")]
/// interface modport
Modport = vpi_sys::vpiModport,
#[cfg(feature = "sv")]
/// interface task/function declaration
InterfaceTfDecl = vpi_sys::vpiInterfaceTfDecl,
#[cfg(feature = "sv")]
/// SystemVerilog ref object
RefObj = vpi_sys::vpiRefObj,
#[cfg(feature = "sv")]
/// SystemVerilog type parameter
TypeParameter = vpi_sys::vpiTypeParameter,
#[cfg(feature = "sv")]
// SystemVerilog numeric variables (610-623)
/// long integer variable
LongIntVar = vpi_sys::vpiLongIntVar,
#[cfg(feature = "sv")]
/// short integer variable
ShortIntVar = vpi_sys::vpiShortIntVar,
#[cfg(feature = "sv")]
/// integer variable
IntVar = vpi_sys::vpiIntVar,
#[cfg(feature = "sv")]
/// short real variable
ShortRealVar = vpi_sys::vpiShortRealVar,
#[cfg(feature = "sv")]
/// byte variable
ByteVar = vpi_sys::vpiByteVar,
#[cfg(feature = "sv")]
/// class variable
ClassVar = vpi_sys::vpiClassVar,
#[cfg(feature = "sv")]
/// string variable
StringVar = vpi_sys::vpiStringVar,
#[cfg(feature = "sv")]
/// enumeration variable
EnumVar = vpi_sys::vpiEnumVar,
#[cfg(feature = "sv")]
/// struct variable
StructVar = vpi_sys::vpiStructVar,
#[cfg(feature = "sv")]
/// union variable
UnionVar = vpi_sys::vpiUnionVar,
#[cfg(feature = "sv")]
/// bit variable
BitVar = vpi_sys::vpiBitVar,
#[cfg(feature = "sv")]
/// class object
ClassObj = vpi_sys::vpiClassObj,
#[cfg(feature = "sv")]
/// chandle variable
ChandleVar = vpi_sys::vpiChandleVar,
#[cfg(feature = "sv")]
/// packed array variable
PackedArrayVar = vpi_sys::vpiPackedArrayVar,
#[cfg(feature = "sv")]
/// virtual interface variable
VirtualInterfaceVar = vpi_sys::vpiVirtualInterfaceVar,
#[cfg(feature = "sv")]
// SystemVerilog type specifications (625-643, 692, 696-698)
/// long int type specification
LongIntTypespec = vpi_sys::vpiLongIntTypespec,
#[cfg(feature = "sv")]
/// short real type specification
ShortRealTypespec = vpi_sys::vpiShortRealTypespec,
#[cfg(feature = "sv")]
/// byte type specification
ByteTypespec = vpi_sys::vpiByteTypespec,
#[cfg(feature = "sv")]
/// short int type specification
ShortIntTypespec = vpi_sys::vpiShortIntTypespec,
#[cfg(feature = "sv")]
/// int type specification
IntTypespec = vpi_sys::vpiIntTypespec,
#[cfg(feature = "sv")]
/// class type specification
ClassTypespec = vpi_sys::vpiClassTypespec,
#[cfg(feature = "sv")]
/// string type specification
StringTypespec = vpi_sys::vpiStringTypespec,
#[cfg(feature = "sv")]
/// chandle type specification
ChandleTypespec = vpi_sys::vpiChandleTypespec,
#[cfg(feature = "sv")]
/// enumeration type specification
EnumTypespec = vpi_sys::vpiEnumTypespec,
#[cfg(feature = "sv")]
/// enumeration constant
EnumConst = vpi_sys::vpiEnumConst,
#[cfg(feature = "sv")]
/// integer type specification
IntegerTypespec = vpi_sys::vpiIntegerTypespec,
#[cfg(feature = "sv")]
/// time type specification
TimeTypespec = vpi_sys::vpiTimeTypespec,
#[cfg(feature = "sv")]
/// real type specification
RealTypespec = vpi_sys::vpiRealTypespec,
#[cfg(feature = "sv")]
/// struct type specification
StructTypespec = vpi_sys::vpiStructTypespec,
#[cfg(feature = "sv")]
/// union type specification
UnionTypespec = vpi_sys::vpiUnionTypespec,
#[cfg(feature = "sv")]
/// bit type specification
BitTypespec = vpi_sys::vpiBitTypespec,
#[cfg(feature = "sv")]
/// logic type specification
LogicTypespec = vpi_sys::vpiLogicTypespec,
#[cfg(feature = "sv")]
/// array type specification
ArrayTypespec = vpi_sys::vpiArrayTypespec,
#[cfg(feature = "sv")]
/// void type specification
VoidTypespec = vpi_sys::vpiVoidTypespec,
#[cfg(feature = "sv")]
/// type specification member
TypespecMember = vpi_sys::vpiTypespecMember,
#[cfg(feature = "sv")]
/// packed array type specification
PackedArrayTypespec = vpi_sys::vpiPackedArrayTypespec,
#[cfg(feature = "sv")]
/// sequence type specification
SequenceTypespec = vpi_sys::vpiSequenceTypespec,
#[cfg(feature = "sv")]
/// property type specification
PropertyTypespec = vpi_sys::vpiPropertyTypespec,
#[cfg(feature = "sv")]
/// event type specification
EventTypespec = vpi_sys::vpiEventTypespec,
#[cfg(feature = "sv")]
/// interface type specification
InterfaceTypespec = vpi_sys::vpiInterfaceTypespec,
#[cfg(feature = "sv")]
// SystemVerilog class and constraint definitions (650-654)
/// clocking block
ClockingBlock = vpi_sys::vpiClockingBlock,
#[cfg(feature = "sv")]
/// clocking block input/output declaration
ClockingIODecl = vpi_sys::vpiClockingIODecl,
#[cfg(feature = "sv")]
/// class definition
ClassDefn = vpi_sys::vpiClassDefn,
#[cfg(feature = "sv")]
/// constraint definition
Constraint = vpi_sys::vpiConstraint,
#[cfg(feature = "sv")]
/// constraint ordering
ConstraintOrdering = vpi_sys::vpiConstraintOrdering,
#[cfg(feature = "sv")]
// SystemVerilog other constructs (645-649)
/// distribution item
DistItem = vpi_sys::vpiDistItem,
#[cfg(feature = "sv")]
/// alias statement
AliasStmt = vpi_sys::vpiAliasStmt,
#[cfg(feature = "sv")]
/// thread of execution
Thread = vpi_sys::vpiThread,
#[cfg(feature = "sv")]
/// method function call
MethodFuncCall = vpi_sys::vpiMethodFuncCall,
#[cfg(feature = "sv")]
/// method task call
MethodTaskCall = vpi_sys::vpiMethodTaskCall,
#[cfg(feature = "sv")]
// SystemVerilog assertions and properties (655-690)
/// property declaration
PropertyDecl = vpi_sys::vpiPropertyDecl,
#[cfg(feature = "sv")]
/// property specification
PropertySpec = vpi_sys::vpiPropertySpec,
#[cfg(feature = "sv")]
/// property expression
PropertyExpr = vpi_sys::vpiPropertyExpr,
#[cfg(feature = "sv")]
/// multi-clock sequence expression
MulticlockSequenceExpr = vpi_sys::vpiMulticlockSequenceExpr,
#[cfg(feature = "sv")]
/// clocked sequence
ClockedSeq = vpi_sys::vpiClockedSeq,
#[cfg(feature = "sv")]
/// clocked property
ClockedProp = vpi_sys::vpiClockedProp,
#[cfg(feature = "sv")]
/// property instantiation
PropertyInst = vpi_sys::vpiPropertyInst,
#[cfg(feature = "sv")]
/// sequence declaration
SequenceDecl = vpi_sys::vpiSequenceDecl,
#[cfg(feature = "sv")]
/// property case statement
CaseProperty = vpi_sys::vpiCaseProperty,
#[cfg(feature = "sv")]
/// property case item
CasePropertyItem = vpi_sys::vpiCasePropertyItem,
#[cfg(feature = "sv")]
/// sequence instantiation
SequenceInst = vpi_sys::vpiSequenceInst,
#[cfg(feature = "sv")]
/// immediate assertion
ImmediateAssert = vpi_sys::vpiImmediateAssert,
#[cfg(feature = "sv")]
/// immediate assume
ImmediateAssume = vpi_sys::vpiImmediateAssume,
#[cfg(feature = "sv")]
/// immediate cover
ImmediateCover = vpi_sys::vpiImmediateCover,
#[cfg(feature = "sv")]
/// return statement
Return = vpi_sys::vpiReturn,
#[cfg(feature = "sv")]
/// return statement (1364-2005)
ReturnStmt = vpi_sys::vpiReturnStmt,
#[cfg(feature = "sv")]
/// concurrent assertion
Assert = vpi_sys::vpiAssert,
#[cfg(feature = "sv")]
/// assume property
Assume = vpi_sys::vpiAssume,
#[cfg(feature = "sv")]
/// cover property
Cover = vpi_sys::vpiCover,
#[cfg(feature = "sv")]
/// restrict property
Restrict = vpi_sys::vpiRestrict,
#[cfg(feature = "sv")]
/// disable condition of assertion
DisableCondition = vpi_sys::vpiDisableCondition,
#[cfg(feature = "sv")]
/// clocking event of assertion
ClockingEvent = vpi_sys::vpiClockingEvent,
#[cfg(feature = "sv")]
// SystemVerilog patterns and sequences (667-673)
/// any pattern
AnyPattern = vpi_sys::vpiAnyPattern,
#[cfg(feature = "sv")]
/// tagged pattern
TaggedPattern = vpi_sys::vpiTaggedPattern,
#[cfg(feature = "sv")]
/// struct pattern
StructPattern = vpi_sys::vpiStructPattern,
#[cfg(feature = "sv")]
/// do-while loop
DoWhile = vpi_sys::vpiDoWhile,
#[cfg(feature = "sv")]
/// ordered wait statement
OrderedWait = vpi_sys::vpiOrderedWait,
#[cfg(feature = "sv")]
/// wait fork statement
WaitFork = vpi_sys::vpiWaitFork,
#[cfg(feature = "sv")]
/// disable fork statement
DisableFork = vpi_sys::vpiDisableFork,
#[cfg(feature = "sv")]
/// expect statement
ExpectStmt = vpi_sys::vpiExpectStmt,
#[cfg(feature = "sv")]
/// foreach statement
ForeachStmt = vpi_sys::vpiForeachStmt,
#[cfg(feature = "sv")]
/// final block
Final = vpi_sys::vpiFinal,
#[cfg(feature = "sv")]
/// extends declaration
Extends = vpi_sys::vpiExtends,
#[cfg(feature = "sv")]
/// distribution constraint
Distribution = vpi_sys::vpiDistribution,
#[cfg(feature = "sv")]
/// sequence formal parameter declaration
SeqFormalDecl = vpi_sys::vpiSeqFormalDecl,
#[cfg(feature = "sv")]
/// property formal parameter declaration
PropFormalDecl = vpi_sys::vpiPropFormalDecl,
#[cfg(feature = "sv")]
// SystemVerilog nets and variables (680-683, 693)
/// enumeration net
EnumNet = vpi_sys::vpiEnumNet,
#[cfg(feature = "sv")]
/// integer net
IntegerNet = vpi_sys::vpiIntegerNet,
#[cfg(feature = "sv")]
/// time net
TimeNet = vpi_sys::vpiTimeNet,
#[cfg(feature = "sv")]
/// struct net
StructNet = vpi_sys::vpiStructNet,
#[cfg(feature = "sv")]
/// break statement
Break = vpi_sys::vpiBreak,
#[cfg(feature = "sv")]
/// continue statement
Continue = vpi_sys::vpiContinue,
#[cfg(feature = "sv")]
/// packed array net
PackedArrayNet = vpi_sys::vpiPackedArrayNet,
#[cfg(feature = "sv")]
// SystemVerilog constraint-related (733-749)
/// soft constraint disable
SoftDisable = vpi_sys::vpiSoftDisable,
#[cfg(feature = "sv")]
/// constraint if statement
ConstrIf = vpi_sys::vpiConstrIf,
#[cfg(feature = "sv")]
/// constraint if-else statement
ConstrIfElse = vpi_sys::vpiConstrIfElse,
#[cfg(feature = "sv")]
/// constraint foreach statement
ConstrForEach = vpi_sys::vpiConstrForEach,
#[cfg(feature = "sv")]
/// let declaration
LetDecl = vpi_sys::vpiLetDecl,
#[cfg(feature = "sv")]
/// let expression
LetExpr = vpi_sys::vpiLetExpr,
#[cfg(feature = "sv")]
/// constraint expression
ConstraintExpr = vpi_sys::vpiConstraintExpr,
#[cfg(feature = "sv")]
/// else constant in constraint
ElseConst = vpi_sys::vpiElseConst,
#[cfg(feature = "sv")]
/// implication in constraint
Implication = vpi_sys::vpiImplication,
#[cfg(feature = "sv")]
/// constraint item
ConstraintItem = vpi_sys::vpiConstraintItem,
#[cfg(feature = "sv")]
// SystemVerilog global methods (700+)
/// actual argument/port connection
Actual = vpi_sys::vpiActual,
#[cfg(feature = "sv")]
/// typedef alias
TypedefAlias = vpi_sys::vpiTypedefAlias,
#[cfg(feature = "sv")]
/// index type specification
IndexTypespec = vpi_sys::vpiIndexTypespec,
#[cfg(feature = "sv")]
/// base type specification
BaseTypespec = vpi_sys::vpiBaseTypespec,
#[cfg(feature = "sv")]
/// element type specification
ElemTypespec = vpi_sys::vpiElemTypespec,
#[cfg(feature = "sv")]
/// input skew declaration
InputSkew = vpi_sys::vpiInputSkew,
#[cfg(feature = "sv")]
/// output skew declaration
OutputSkew = vpi_sys::vpiOutputSkew,
#[cfg(feature = "sv")]
/// global clocking block
GlobalClocking = vpi_sys::vpiGlobalClocking,
#[cfg(feature = "sv")]
/// default clocking block
DefaultClocking = vpi_sys::vpiDefaultClocking,
#[cfg(feature = "sv")]
/// default disable if condition
DefaultDisableIff = vpi_sys::vpiDefaultDisableIff,
#[cfg(feature = "sv")]
/// origin of typedef
Origin = vpi_sys::vpiOrigin,
#[cfg(feature = "sv")]
/// prefix of type parameter
Prefix = vpi_sys::vpiPrefix,
#[cfg(feature = "sv")]
/// with constraint
With = vpi_sys::vpiWith,
#[cfg(feature = "sv")]
/// property relation
Property = vpi_sys::vpiProperty,
#[cfg(feature = "sv")]
/// value range constraint
ValueRange = vpi_sys::vpiValueRange,
#[cfg(feature = "sv")]
/// pattern of constraint
Pattern = vpi_sys::vpiPattern,
#[cfg(feature = "sv")]
/// weight of distribution
Weight = vpi_sys::vpiWeight,
#[cfg(feature = "sv")]
/// typedef declaration
Typedef = vpi_sys::vpiTypedef,
#[cfg(feature = "sv")]
/// import declaration
Import = vpi_sys::vpiImport,
#[cfg(feature = "sv")]
/// derived classes
DerivedClasses = vpi_sys::vpiDerivedClasses,
#[cfg(feature = "sv")]
/// class methods
Methods = vpi_sys::vpiMethods,
#[cfg(feature = "sv")]
/// solve-before constraint ordering
SolveBefore = vpi_sys::vpiSolveBefore,
#[cfg(feature = "sv")]
/// solve-after constraint ordering
SolveAfter = vpi_sys::vpiSolveAfter,
#[cfg(feature = "sv")]
/// waiting processes
WaitingProcesses = vpi_sys::vpiWaitingProcesses,
#[cfg(feature = "sv")]
/// messages
Messages = vpi_sys::vpiMessages,
#[cfg(feature = "sv")]
/// loop variables
LoopVars = vpi_sys::vpiLoopVars,
#[cfg(feature = "sv")]
/// concurrent assertions
ConcurrentAssertions = vpi_sys::vpiConcurrentAssertions,
#[cfg(feature = "sv")]
/// match item in constraint
MatchItem = vpi_sys::vpiMatchItem,
#[cfg(feature = "sv")]
/// class member
Member = vpi_sys::vpiMember,
#[cfg(feature = "sv")]
/// array element
Element = vpi_sys::vpiElement,
#[cfg(feature = "sv")]
/// assertion item
AssetItem = vpi_sys::vpiAssertion,
#[cfg(feature = "sv")]
/// module/program instance for 1-1 and 1-many
Instance = vpi_sys::vpiInstance,
}