source: vis_dev/vl2mv-2.3/src/parser/vl_types.h @ 106

Last change on this file since 106 was 18, checked in by cecile, 13 years ago

vl2mv added

File size: 11.4 KB
Line 
1/*
2
3  Copyright (c) 1992, 1993
4        Regents of the University of California
5  All rights reserved.
6
7  Use and copying of this software and preparation of derivative works
8  based upon this software are permitted.  However, any distribution of
9  this software or derivative works must include the above copyright
10  notice.
11
12  This software is made available AS IS, and neither the Electronics
13  Research Laboratory or the Universify of California make any
14  warranty about the software, its performance or its conformity to
15  any specification.
16
17  Author: Szu-Tsung Cheng, stcheng@ic.Berkeley.EDU
18          10/92
19          10/93
20
21  $Header: /projects/development/hsv/CVSRepository/vl2mv/src/parser/vl_types.h,v 1.4 2009/03/09 20:25:58 fabio Exp $
22
23
24*/
25
26#ifndef _VL_TYPES
27#define _VL_TYPES
28
29#define MAXINLEN 10
30
31
32typedef struct vl_id_range {
33    short dummy_type;
34    char * name;
35    short flags;
36    struct vl_range *range;
37    lsList initial;
38    lsList syndrome_expr_list;
39    lsList rst_syndrome_expr_list;
40    st_table *symbolic_values;
41    void * mpg_master_exp;
42    struct vl_type *id_type;
43    struct vl_term *edge_trigger;
44    st_table *sensitiveList;
45    char *unintType;
46} vl_id_range, *vl_id_rangePtr;
47
48
49typedef struct vl_type {
50    char *name;
51    struct vl_type_specifier *specifier;
52} vl_type, *vl_typePtr;
53
54
55typedef struct vl_type_specifier {
56    short typeform;
57    union {
58        struct vl_enum_type *enum_type;
59    } u;
60} vl_type_specifier, *vl_type_specifierPtr;
61
62
63typedef struct vl_enum_type {
64    char *name;
65    st_table *domain_st;
66    lsList domain_list;
67} vl_enum_type, *vl_enum_typePtr;
68
69
70typedef struct vl_enumerator {
71    char *name;
72    int val;
73} vl_enumerator, *vl_enumeratorPtr;
74
75
76typedef struct vl_desc {
77    char *filename;
78    st_table *type_st;
79    lsList modules;
80    st_table *mp_st;
81    lsHandle handle;
82    st_table *decl_st;
83    st_table *lib_st;
84    set_t *mp_undefined;
85    st_table *fg_vars_st;
86    st_table *mod_holes;
87    st_table *synclock_st;
88} vl_desc, *vl_descPtr;
89
90
91typedef struct vl_module {
92    short type;
93    short unsigned flags;
94    vl_id_range *name;
95    lsList ports;
96    st_table *sig_st;
97    st_table *uninit_set;
98    st_table *param_st;
99    lsList param_list;
100    st_table *inst_st;
101    st_table *latch_st;
102    st_table *quasi_st;
103    st_table *func_st;
104    st_table *combVar_st;
105    st_table *seqVar_st;
106    lsList mod_items;
107    struct vl_event_expr *clk;
108    int syndrome_width;
109    int rst_syndrome_width;
110    lsList flow_graphs;
111    st_table *task_st;
112    int dup_count;
113    int visited;
114} vl_module, *vl_modulePtr;
115
116
117typedef struct vl_primitive {
118    short type;
119    short unsigned flags;
120    struct vl_id_range *name;
121    lsList ports;
122    st_table *sig_st;
123    st_table *uninit_set;
124    lsList decls;
125    lsList entries;
126    lsHandle handle;
127} vl_primitive, *vl_primitivePtr;
128
129
130typedef struct vl_port {
131    short type;
132    lsList port_exp;
133    struct vl_id_range *id;
134} vl_port, *vl_portPtr;
135
136
137typedef struct vl_port_connect {
138    short type;
139    struct vl_expr *expr;
140    struct vl_id_range *id;
141} vl_port_connect, *vl_port_connectPtr;
142
143
144typedef struct vl_prim_entry {
145    unsigned char inputs[MAXINLEN];
146    unsigned char state;
147    unsigned char next_state;
148    struct vl_prim_entry *next;
149} vl_prim_entry, *vl_prim_entryPtr;
150
151
152typedef struct vl_decl {
153    short type;
154    short unsigned flags;
155    struct vl_range *range;
156    lsList ids;
157    lsHandle handle;
158} vl_decl, *vl_declPtr;
159
160
161typedef struct vl_rangedecl {
162    short type;
163    short unsigned flags;
164    int strength_pad;
165    struct vl_range *range;
166    struct vl_delay *delay_pad;
167    lsList ids;
168    lsHandle handle;
169} vl_rangedecl, *vl_rangedeclPtr;
170
171
172typedef struct vl_paramdecl {
173    short type;
174    short unsigned flags;
175    lsList assigns;
176    lsHandle handle;
177} vl_paramdecl, *vl_paramdeclPtr;
178
179
180typedef struct vl_netdecl {
181    short type;
182    short unsigned flags;
183    int strength;
184    struct vl_range *range;
185    struct vl_delay *delay;
186    lsList ids;
187    lsHandle handle;
188} vl_netdecl, *vl_netdeclPtr;
189
190
191typedef struct vl_cont_assign {
192    short type;
193    short unsigned flags;
194    int strength;
195    struct vl_delay *delay;
196    void *assigns;
197} vl_cont_assign, *vl_cont_assignPtr;
198
199
200typedef struct vl_task {
201    short type;
202    short unsigned flags;
203    struct vl_id_range *name;
204    lsList decls;
205    lsList io_lst;
206    st_table *sig_st;
207    lsList stmts;
208    lsHandle handle;
209} vl_task, *vl_taskPtr;
210
211
212typedef struct vl_function {
213    short type;
214    short unsigned flags;
215    struct vl_id_range *name;
216    lsList ports;
217    st_table *sig_st;
218    st_table *uninit_set;
219    st_table *param_st;
220    lsList decls;
221    struct vl_range *range;
222    lsList stmts;
223    lsHandle handle;
224    lsList param_list;
225    st_table *inst_st;
226    st_table *latch_st;
227    st_table *quasi_st;
228    st_table *func_st;
229    st_table *combVar_st;
230    st_table *seqVar_st;
231    lsList mod_items;
232    struct vl_event_expr *clk;
233    int syndrome_width;
234    int rst_syndrome_width;
235    lsList flow_graphs;
236    st_table *task_st;
237    int dup_count;
238    int visited;
239} vl_function, *vl_functionPtr;
240
241
242typedef struct vl_gate_inst_list {
243    short type;
244    short unsigned flags;
245    int strength;
246    struct vl_delay *delays;
247    lsList gates;
248    lsHandle handle;
249} vl_gate_inst_list, *vl_gate_inst_listPtr;
250
251
252typedef struct vl_gate_inst {
253    struct vl_id_range *name;
254    lsList terms;
255    lsHandle handle;
256} vl_gate_inst, *vl_gate_instPtr;
257
258
259typedef struct vl_mod_prim_inst_list {
260    short type;
261    short unsigned flags;
262    struct vl_id_range *name;
263    lsList mps;
264    lsHandle handle;
265    int strength;
266    struct vl_delay *delays;
267} vl_mod_prim_inst_list, *vl_mod_prim_inst_listPtr;
268
269
270typedef struct vl_mod_prim_inst {
271    struct vl_id_range *name;
272    lsList ports;
273    void *master;
274    lsHandle handle;
275} vl_mod_prim_inst, vl_mod_prim_instPtr;
276
277
278typedef struct vl_procstmt {
279    short type;
280    short flags;
281    void *stmt;
282    struct symbolic_var *pc;
283    char *fg_info;
284} vl_procstmt, *vl_procstmtPtr;
285
286
287typedef struct vl_begin_end_stmt {
288    short type;
289    short unsigned flags;
290    struct vl_id_range *name;
291    void *decls;
292    st_table *sig_st;
293    void *stmts;
294    lsHandle handle;
295} vl_begin_end_stmt, *vl_begin_end_stmtPtr;
296
297
298typedef struct vl_if_else_stmt {
299    short type;
300    short unsigned flags;
301    struct vl_expr *cond;
302    void *if_stmt;
303    void *else_stmt;
304    lsHandle handle;
305} vl_if_else_stmt;
306
307
308typedef struct vl_case_stmt {
309    short type;
310    short unsigned flags;
311    struct vl_expr *cond;
312    lsList case_items;
313    lsHandle handle;
314} vl_case_stmt;
315
316
317typedef struct vl_forever_stmt {
318    short type;
319    short unsigned flags;
320    void *stmt;
321    lsHandle handle;
322} vl_forever_stmt;
323
324
325typedef struct vl_repeat_stmt {
326    short type;
327    short unsigned flags;
328    struct vl_expr *count;
329    void *stmt;
330    void *pad1, *pad2;
331    lsHandle handle;
332} vl_repeat_stmt;
333
334
335typedef struct vl_while_stmt {
336    short type;
337    short unsigned flags;
338    struct vl_expr *cond;
339    void *stmt;
340    lsHandle handle;
341} vl_while_stmt;
342
343
344typedef struct vl_for_stmt {
345    short type;
346    short unsigned flags;
347    struct vl_bassign_stmt *init;
348    struct vl_expr *cond;
349    struct vl_bassign_stmt *end;
350    void *stmt;
351    lsHandle handle;
352} vl_for_stmt;
353
354
355typedef struct vl_delay_control_stmt {
356    short type;
357    short unsigned flags;
358    struct vl_delay *delay;
359    void *stmt;
360    lsHandle handle;
361    char *fg_info;
362} vl_delay_control_stmt;
363
364
365typedef struct vl_event_control_stmt {
366    short type;
367    short unsigned flags;
368    struct vl_event_expr *event;
369    void *stmt;
370    lsHandle handle;
371    char *fg_info;
372} vl_event_control_stmt;
373
374
375typedef struct vl_bassign_stmt {
376    short type;
377    short unsigned flags;
378    struct vl_lval *lhs;
379    void *control;
380    struct vl_expr *rhs;
381    int lineno;
382    char *fg_info;
383} vl_bassign_stmt, *vl_bassign_stmtPtr;
384
385
386typedef struct vl_wait_stmt {
387    short type;
388    short unsigned flags;
389    struct vl_expr *cond;
390    void *stmt;
391    lsHandle handle;
392} vl_wait_stmt;
393
394
395typedef struct vl_send_event_stmt {
396    short type;
397    struct vl_id_range *name;
398    char *fg_info;
399} vl_send_event_stmt, vl_send_event_stmtPtr;
400
401
402typedef struct vl_fork_join_stmt {
403    short type;
404    short unsigned flags;
405    struct vl_id_range *name;
406    lsList decls;
407    st_table *sig_st;
408    lsList stmts;
409    lsHandle handle;
410} vl_fork_join_stmt, *vl_fork_join_stmtPtr;
411
412
413typedef struct vl_task_enable_stmt {
414    short type;
415    short unsigned flags;
416    struct vl_id_range *name;
417    lsList args;
418    lsHandle handle;
419} vl_task_enable_stmt, *vl_task_enable_stmtPtr;
420
421
422typedef struct vl_disable_stmt {
423    short type;
424    short unsigned flags;
425    struct vl_id_range *name;
426    lsHandle handle;
427} vl_disable_stmt;
428
429
430typedef struct vl_deassign_stmt {
431    short type;
432    short unsigned flags;
433    struct vl_lval *lhs;
434    lsHandle handle;
435    char *fg_info;
436} vl_deassign_stmt;
437
438
439typedef struct vl_case_item {
440    short type;
441    short unsigned flags;
442    lsList exprs;
443    void *stmt;
444    lsHandle handle;
445    char *fg_info;
446} vl_case_item, *vl_case_itemPtr;
447
448
449typedef struct vl_event_expr {
450    short type;
451    short unsigned flags;
452    struct vl_expr *expr;
453    lsList list;
454} vl_event_expr, *vl_event_exprPtr;
455
456
457typedef struct vl_lval {
458    short type;
459    short unsigned flags;
460    struct vl_id_range *name;
461    struct vl_range *range;
462    lsList concat;
463} vl_lval, *vl_lvalPtr;
464
465
466typedef struct vl_expr {
467    short type;
468    short unsigned flags;
469    union {
470        int intval;
471        double realval;
472        struct vl_id_range *name;
473        char *string;
474        struct vl_id_range *idrng;
475        struct func_call {
476            struct vl_id_range *name;
477            lsList args;
478        } func_call;
479        struct bexpr {
480            unsigned int part1;
481            unsigned int part0;
482        } bexpr;
483        struct exprs {
484            struct vl_expr *e1;
485            struct vl_expr *e2;
486            struct vl_expr *e3;
487        } exprs;
488        lsList expr_list;
489    } u;
490    struct vl_term *term;
491    char *fg_info1, *fg_info2;
492    char *fg_aux1, *fg_aux2;
493} vl_expr, *vl_exprPtr;
494
495
496typedef struct vl_range {
497    struct vl_expr *left;
498    struct vl_expr *right;
499} vl_range, *vl_rangePtr;
500
501
502typedef struct vl_delay {
503    vl_expr *delay1;
504    vl_expr *delay2;
505    vl_expr *delay3;
506} vl_delay, *vl_delayPtr;
507
508
509typedef struct typestruct {
510    short type;
511} typestruct, *typestructPtr;
512
513
514typedef struct vl_range_or_type {
515    short  type;
516    vl_range *range;
517} vl_range_or_type, *vl_range_or_typePtr;
518
519
520typedef struct vl_term {
521    vl_id_range *name;
522    unsigned short flag;
523    int hi, lo;
524    vl_type *term_type;
525} vl_term, *vl_termPtr;
526
527
528typedef struct blif_latch {
529    vl_id_range *name;
530    short flags;
531    vl_term *inport, *outport;
532} blif_latch, *blif_latchPtr;
533
534
535typedef struct var_info {
536    vl_id_range *id;
537    vl_term *current_terminal;
538    lsList cond_list;
539    void *extra;
540} var_info, *var_infoPtr;
541
542
543typedef struct syndrome_expr {
544    char *syndrome;
545    vl_term *expr;
546    st_table *pre_cond;
547    int fg_id;
548} syndrome_expr, *syndrome_exprPtr;
549
550
551typedef struct const_term {
552    vl_expr *const_expr;
553    vl_term *term;
554} const_term, *const_termPtr;
555
556
557typedef struct symbolic_var {
558    char *name;
559    set_t *values;
560} symbolic_var, *symbolic_varPtr;
561
562
563typedef struct lib_gate {
564    short type;
565    int op1Width, op2Width, op3width, resWidth;
566} lib_gate, *lib_gatePtr;
567
568
569typedef struct multi_concat {
570    vl_expr *rep;
571    lsList concat;
572} multi_concat, *multi_concatPtr;
573
574
575typedef struct vl_synClock {
576    char *name;
577    int edge;
578    int pi;
579    float rho;
580} vl_synClock, *vl_synClockPtr;
581
582
583typedef struct ctrlNetNode {
584    char   *N;
585    lsList B;
586    lsList Rcv;
587    lsList Snd;
588} ctrlNetNode, *ctrlNetNodePtr;
589
590
591EXTERN int data_width ARGS((vl_expr *expr));
592
593#endif /* _VL_TYPES */
Note: See TracBrowser for help on using the repository browser.