1 /*------------------------------------------------------------\
2 | |
3 | This file is part of the Alliance CAD System Copyright |
4 | (C) Laboratoire LIP6 - D�partement ASIM Universite P&M Curie|
5 | |
6 | Home page : http://www-asim.lip6.fr/alliance/ |
7 | E-mail : mailto:alliance-users@asim.lip6.fr |
8 | |
9 | This progam is free software; you can redistribute it |
10 | and/or modify it under the terms of the GNU Library General|
11 | Public License as published by the Free Software Foundation |
12 | either version 2 of the License, or (at your option) any |
13 | later version. |
14 | |
15 | Alliance VLSI CAD System is distributed in the hope that |
16 | it will be useful, but WITHOUT ANY WARRANTY; |
17 | without even the implied warranty of MERCHANTABILITY or |
18 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
19 | Public License for more details. |
20 | |
21 | You should have received a copy of the GNU General Public |
22 | License along with the GNU C Library; see the file COPYING. |
23 | If not, write to the Free Software Foundation, Inc., |
24 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
25 | |
26 \------------------------------------------------------------*/
27 /*------------------------------------------------------------\
28 | |
29 | Tool : Vbh |
30 | |
31 | File : vbhview.c |
32 | |
33 | Date : 03.12.96 |
34 | |
35 | Author : Jacomme Ludovic |
36 | |
37 \------------------------------------------------------------*/
38 /*------------------------------------------------------------\
39 | |
40 | Include Files |
41 | |
42 \------------------------------------------------------------*/
43
44 # include "mut.h"
45 # include "aut.h"
46 # include "vex.h"
47 # include "vbh.h"
48
49 # include <stdio.h>
50 # include <string.h>
51
52 /*------------------------------------------------------------\
53 | |
54 | Constants |
55 | |
56 \------------------------------------------------------------*/
57
58 static char *VBH_TIME_UNIT_NAME[ VBH_MAX_TIME_UNIT ] =
59 {
60 "UNKNOWN",
61 "FS",
62 "PS",
63 "NS",
64 "MS"
65 };
66
67 /*------------------------------------------------------------\
68 | |
69 | Types |
70 | |
71 \------------------------------------------------------------*/
72 /*------------------------------------------------------------\
73 | |
74 | Functions |
75 | |
76 \------------------------------------------------------------*/
77 /*------------------------------------------------------------\
78 | |
79 | View Functions |
80 | |
81 \------------------------------------------------------------*/
82 /*------------------------------------------------------------\
83 | |
84 | Local Get Vbh Type |
85 | |
86 \------------------------------------------------------------*/
87
loc_getvbhtypename(Type)88 static char *loc_getvbhtypename( Type )
89
90 vbtyp_list *Type;
91 {
92 static char NotDefined[] = "not defined !";
93
94 if ( Type == (vbtyp_list *)0 )
95 {
96 return( NotDefined );
97 }
98
99 return( Type->NAME );
100 }
101
102 /*------------------------------------------------------------\
103 | |
104 | Local View Vbh Port |
105 | |
106 \------------------------------------------------------------*/
107
loc_viewvbpor(BePor)108 static void loc_viewvbpor( BePor )
109
110 vbpor_list *BePor;
111 {
112 fprintf( stdout, " > [%ld]", BePor->LINE );
113 viewvexexprbound( BePor->TARGET );
114 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( BePor->TYPE ) );
115 fprintf( stdout, " DIR %c ", BePor->DIR );
116 fprintf( stdout, " KIND %d ", BePor->KIND );
117 if ( BePor->VEX != (vexexpr *)0 )
118 {
119 fprintf( stdout, " := " );
120 viewvexexprbound( BePor->VEX );
121 }
122 fprintf( stdout, "\n" );
123 }
124
125 /*------------------------------------------------------------\
126 | |
127 | Local View Vbh Generic |
128 | |
129 \------------------------------------------------------------*/
130
loc_viewvbgen(BeGen)131 static void loc_viewvbgen( BeGen )
132
133 vbgen_list *BeGen;
134 {
135 fprintf( stdout, " > [%ld]", BeGen->LINE );
136 viewvexexprbound( BeGen->TARGET );
137 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( BeGen->TYPE ) );
138 if ( BeGen->VEX != (vexexpr *)0 )
139 {
140 fprintf( stdout, " := " );
141 viewvexexprbound( BeGen->VEX );
142 }
143 fprintf( stdout, "\n" );
144 }
145
146 /*------------------------------------------------------------\
147 | |
148 | Local View Vbh Ifs |
149 | |
150 \------------------------------------------------------------*/
151
loc_viewvbifs(ScanIfs)152 static void loc_viewvbifs( ScanIfs )
153
154 vbifs_list *ScanIfs;
155 {
156 fprintf( stdout, "[%ld] ", ScanIfs->LINE );
157 fprintf( stdout, "IF (" );
158 viewvexexprbound( ScanIfs->CND );
159 fprintf( stdout, ")\nTHEN\n" );
160
161 if ( ScanIfs->CNDTRUE != (ptype_list *)0 )
162 {
163 vbh_viewvbinst( ScanIfs->CNDTRUE );
164 }
165
166 if ( ScanIfs->CNDFALSE != (ptype_list *)0 )
167 {
168 fprintf( stdout, "ELSE\n" );
169 vbh_viewvbinst( ScanIfs->CNDFALSE );
170 }
171 fprintf( stdout, "END IF\n" );
172 }
173
174 /*------------------------------------------------------------\
175 | |
176 | Local View Vbh Var |
177 | |
178 \------------------------------------------------------------*/
179
loc_viewvbvar(ScanVar)180 static void loc_viewvbvar( ScanVar )
181
182 vbvar_list *ScanVar;
183 {
184 fprintf( stdout, "[%ld] ", ScanVar->LINE );
185 viewvexexprbound( ScanVar->TARGET );
186 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( ScanVar->TYPE ) );
187 fprintf( stdout, " := " );
188 viewvexexprbound( ScanVar->VEX );
189 fprintf( stdout, "\n" );
190 }
191
192 /*------------------------------------------------------------\
193 | |
194 | Local View Vbh Asg |
195 | |
196 \------------------------------------------------------------*/
197
loc_viewvbasg(ScanAsg)198 static void loc_viewvbasg( ScanAsg )
199
200 vbasg_list *ScanAsg;
201 {
202 fprintf( stdout, "[%ld] ", ScanAsg->LINE );
203 viewvexexprbound( ScanAsg->TARGET );
204 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( ScanAsg->TYPE ) );
205 fprintf( stdout, " <= " );
206 viewvexexprbound( ScanAsg->VEX );
207 fprintf( stdout, "\n" );
208 }
209
210 /*------------------------------------------------------------\
211 | |
212 | Local View Vbh Case |
213 | |
214 \------------------------------------------------------------*/
215
loc_viewvbcas(ScanCase)216 static void loc_viewvbcas( ScanCase )
217
218 vbcas_list *ScanCase;
219 {
220 vbcho_list *ScanChoice;
221 chain_list *ScanChain;
222 int Offset;
223
224 fprintf( stdout, "[%ld] ", ScanCase->LINE );
225 fprintf( stdout, "CASE (" );
226 viewvexexprbound( ScanCase->VEX );
227 fprintf( stdout, ") IS\n" );
228
229 for ( Offset = 0; Offset < ScanCase->SIZE; Offset++ )
230 {
231 ScanChoice = &ScanCase->CHOICE[ Offset ];
232
233 fprintf( stdout, "WHEN " );
234
235 for ( ScanChain = ScanChoice->VALUES;
236 ScanChain != (chain_list *)0;
237 ScanChain = ScanChain->NEXT )
238 {
239 fprintf( stdout, "%s ", (char *)ScanChain->DATA );
240
241 if ( ScanChain->NEXT != (chain_list *)0 )
242 {
243 fprintf( stdout, " | " );
244 }
245 }
246
247 fprintf( stdout, "=> " );
248
249 vbh_viewvbinst( ScanChoice->INSTRUCTION );
250 }
251
252 fprintf( stdout, "END CASE\n" );
253 }
254
255 /*------------------------------------------------------------\
256 | |
257 | Local View Vbh Wait |
258 | |
259 \------------------------------------------------------------*/
260
loc_viewvbwas(ScanWait)261 static void loc_viewvbwas( ScanWait )
262
263 vbwas_list *ScanWait;
264 {
265 chain_list *ScanSens;
266
267 fprintf( stdout, "[%ld] ", ScanWait->LINE );
268 fprintf( stdout, "WAIT" );
269
270 if ( ScanWait->SEN != (chain_list *)0 )
271 {
272 fprintf( stdout, " ON " );
273 for ( ScanSens = ScanWait->SEN;
274 ScanSens != (chain_list *)0;
275 ScanSens = ScanSens->NEXT )
276 {
277 fprintf( stdout, "%s", (char *)ScanSens->DATA );
278 if ( ScanSens->NEXT != (chain_list *)0 )
279 {
280 fprintf( stdout, ", " );
281 }
282 }
283 }
284
285 if ( ScanWait->CND != (vexexpr *)0 )
286 {
287 fprintf( stdout, " UNTIL " );
288 viewvexexprbound( ScanWait->CND );
289 }
290
291 if ( ScanWait->TIMEOUT != (vexexpr *)0 )
292 {
293 fprintf( stdout, " FOR " );
294 viewvexexprbound( ScanWait->TIMEOUT );
295
296 if ( ScanWait->TIME_UNIT < VBH_MAX_TIME_UNIT )
297 {
298 fprintf( stdout, " %s", VBH_TIME_UNIT_NAME[ ScanWait->TIME_UNIT ] );
299 }
300 else
301 {
302 fprintf( stdout, " unknown (%d)", ScanWait->TIME_UNIT );
303 }
304 }
305
306 fprintf( stdout, "\n" );
307 }
308
309 /*------------------------------------------------------------\
310 | |
311 | Local View Vbh For |
312 | |
313 \------------------------------------------------------------*/
314
loc_viewvbfor(ScanFor)315 static void loc_viewvbfor( ScanFor )
316
317 vbfor_list *ScanFor;
318 {
319 fprintf( stdout, "[%ld] ", ScanFor->LINE );
320 fprintf( stdout, "%s : ", ScanFor->LABEL );
321
322 fprintf( stdout, "FOR " );
323 viewvexexprbound( ScanFor->VARIABLE );
324 fprintf( stdout, "IN " );
325
326 viewvexexprbound( ScanFor->LEFT );
327 if ( ScanFor->UP ) fprintf( stdout, " TO " );
328 else fprintf( stdout, " DOWNTO " );
329 viewvexexprbound( ScanFor->RIGHT );
330
331 fprintf( stdout, "\nLOOP\n" );
332
333 vbh_viewvbinst( ScanFor->INSTRUCTION );
334
335 fprintf( stdout, "END LOOP %s\n", ScanFor->LABEL );
336 }
337
338 /*------------------------------------------------------------\
339 | |
340 | Local View Vbh Loop |
341 | |
342 \------------------------------------------------------------*/
343
loc_viewvblop(ScanLoop)344 static void loc_viewvblop( ScanLoop )
345
346 vblop_list *ScanLoop;
347 {
348 fprintf( stdout, "[%ld] ", ScanLoop->LINE );
349 fprintf( stdout, "%s : ", ScanLoop->LABEL );
350
351 fprintf( stdout, "LOOP\n" );
352
353 vbh_viewvbinst( ScanLoop->INSTRUCTION );
354
355 fprintf( stdout, "END LOOP %s\n", ScanLoop->LABEL );
356 fprintf( stdout, "\n" );
357 }
358
359 /*------------------------------------------------------------\
360 | |
361 | Local View Vbh While |
362 | |
363 \------------------------------------------------------------*/
364
loc_viewvbwhi(ScanWhile)365 static void loc_viewvbwhi( ScanWhile )
366
367 vbwhi_list *ScanWhile;
368 {
369 fprintf( stdout, "[%ld] ", ScanWhile->LINE );
370 fprintf( stdout, "%s : ", ScanWhile->LABEL );
371
372 fprintf( stdout, "WHILE ( " );
373 viewvexexprbound( ScanWhile->CND );
374 fprintf( stdout, " )\n" );
375 fprintf( stdout, "LOOP\n" );
376
377 vbh_viewvbinst( ScanWhile->INSTRUCTION );
378
379 fprintf( stdout, "END LOOP %s\n", ScanWhile->LABEL );
380 fprintf( stdout, "\n" );
381 }
382
383 /*------------------------------------------------------------\
384 | |
385 | Local View Vbh Aggregate |
386 | |
387 \------------------------------------------------------------*/
388
loc_viewvbagr(ScanAggreg)389 static void loc_viewvbagr( ScanAggreg )
390
391 vbagr_list *ScanAggreg;
392 {
393 fprintf( stdout, "[%ld] ", ScanAggreg->LINE );
394 fprintf( stdout, "AGGREGATE (\n" );
395 vbh_viewvbinst( ScanAggreg->ASSIGN );
396 fprintf( stdout, ")\n\n" );
397 }
398
399 /*------------------------------------------------------------\
400 | |
401 | Local View Vbh Exit |
402 | |
403 \------------------------------------------------------------*/
404
loc_viewvbext(ScanExit)405 static void loc_viewvbext( ScanExit )
406
407 vbext_list *ScanExit;
408 {
409 fprintf( stdout, "[%ld] ", ScanExit->LINE );
410 fprintf( stdout, "EXIT" );
411
412 if ( ScanExit->LABEL != (char *)0 )
413 {
414 fprintf( stdout, " %s", ScanExit->LABEL );
415 }
416
417 if ( ScanExit->CND != (vexexpr *)0 )
418 {
419 fprintf( stdout," WHEN ( " );
420 viewvexexprbound( ScanExit->CND );
421 fprintf( stdout, " )\n" );
422 }
423 else
424 {
425 fprintf( stdout, "\n" );
426 }
427 }
428
429 /*------------------------------------------------------------\
430 | |
431 | Local View Vbh Next |
432 | |
433 \------------------------------------------------------------*/
434
loc_viewvbnxt(ScanNext)435 static void loc_viewvbnxt( ScanNext )
436
437 vbnxt_list *ScanNext;
438 {
439 fprintf( stdout, "[%ld] ", ScanNext->LINE );
440 fprintf( stdout, "NEXT" );
441
442 if ( ScanNext->LABEL != (char *)0 )
443 {
444 fprintf( stdout, " %s", ScanNext->LABEL );
445 }
446
447 if ( ScanNext->CND != (vexexpr *)0 )
448 {
449 fprintf( stdout," WHEN ( " );
450 viewvexexprbound( ScanNext->CND );
451 fprintf( stdout, " )\n" );
452 }
453 else
454 {
455 fprintf( stdout, "\n" );
456 }
457 }
458
459 /*------------------------------------------------------------\
460 | |
461 | Local View Vbh Return |
462 | |
463 \------------------------------------------------------------*/
464
loc_viewvbret(ScanReturn)465 static void loc_viewvbret( ScanReturn )
466
467 vbret_list *ScanReturn;
468 {
469 fprintf( stdout, "[%ld] ", ScanReturn->LINE );
470 fprintf( stdout, "RETURN " );
471
472 viewvexexprbound( ScanReturn->RET );
473
474 fprintf( stdout, "\n" );
475 }
476
477 /*------------------------------------------------------------\
478 | |
479 | Local View Vbh Call |
480 | |
481 \------------------------------------------------------------*/
482
loc_viewvbcal(ScanCall)483 static void loc_viewvbcal( ScanCall )
484
485 vbcal_list *ScanCall;
486 {
487 fprintf( stdout, "[%ld] ", ScanCall->LINE );
488 fprintf( stdout, "CALL " );
489
490 viewvexexprbound( ScanCall->CALL );
491
492 fprintf( stdout, "\n" );
493 }
494
495 /*------------------------------------------------------------\
496 | |
497 | Local View Vbh Instruction |
498 | |
499 \------------------------------------------------------------*/
500
vbh_viewvbinst(Instruction)501 void vbh_viewvbinst( Instruction )
502
503 ptype_list *Instruction;
504 {
505 while ( Instruction != (ptype_list *)0 )
506 {
507 switch ( Instruction->TYPE )
508 {
509 case VBH_BEIFS : loc_viewvbifs( Instruction->DATA );
510 break;
511
512 case VBH_BEASG : loc_viewvbasg( Instruction->DATA );
513 break;
514
515 case VBH_BEVAR : loc_viewvbvar( Instruction->DATA );
516 break;
517
518 case VBH_BECAS : loc_viewvbcas( Instruction->DATA );
519 break;
520
521 case VBH_BEWAS : loc_viewvbwas( Instruction->DATA );
522 break;
523
524 case VBH_BEFOR : loc_viewvbfor( Instruction->DATA );
525 break;
526
527 case VBH_BEWHI : loc_viewvbwhi( Instruction->DATA );
528 break;
529
530 case VBH_BELOP : loc_viewvblop( Instruction->DATA );
531 break;
532
533 case VBH_BENXT : loc_viewvbnxt( Instruction->DATA );
534 break;
535
536 case VBH_BEEXT : loc_viewvbext( Instruction->DATA );
537 break;
538
539 case VBH_BERET : loc_viewvbret( Instruction->DATA );
540 break;
541
542 case VBH_BECAL : loc_viewvbcal( Instruction->DATA );
543 break;
544
545 case VBH_BEAGR : loc_viewvbagr( Instruction->DATA );
546 break;
547
548 default : fprintf( stdout, "ERROR unknown instruction %ld\n",
549 Instruction->TYPE );
550 }
551
552 Instruction = Instruction->NEXT;
553 }
554 }
555
556 /*------------------------------------------------------------\
557 | |
558 | View Vbh Type |
559 | |
560 \------------------------------------------------------------*/
561
vbh_viewvbtyp(BeTyp)562 void vbh_viewvbtyp( BeTyp )
563
564 vbtyp_list *BeTyp;
565 {
566 int Index;
567
568 fprintf( stdout, " > [%ld]\n", BeTyp->LINE );
569 fprintf( stdout, " NAME : %s\n", BeTyp->NAME );
570 fprintf( stdout, " LEFT : %d\n", (int)BeTyp->LEFT );
571 fprintf( stdout, " RIGHT : %d\n", (int)BeTyp->RIGHT );
572 fprintf( stdout, " VALUE : \n" );
573
574 for ( Index = 0; Index < BeTyp->SIZE; Index++ )
575 {
576 fprintf( stdout, "%s ", BeTyp->VALUE[ Index ] );
577 }
578
579 if ( BeTyp->SIZE != 0 ) fprintf( stdout, "\n" );
580
581 fprintf( stdout, " SIZE : %d\n", BeTyp->SIZE );
582 fprintf( stdout, " BYTE : %d\n", BeTyp->BYTE );
583 fprintf( stdout, " CLASS : %c\n", BeTyp->CLASS );
584 fprintf( stdout, " INDEX : %d\n", BeTyp->INDEX );
585
586 if ( BeTyp->BASE != (vbtyp_list *)0 )
587 {
588 fprintf( stdout, " BASE : %s\n", BeTyp->BASE->NAME );
589 }
590 else
591 {
592 fprintf( stdout, " BASE : none\n" );
593 }
594
595 if ( BeTyp->RESOLV != (vbfun_list *)0 )
596 {
597 fprintf( stdout, " RESOLV : %s\n", BeTyp->RESOLV->NAME );
598 }
599 else
600 {
601 fprintf( stdout, " RESOLV : none\n" );
602 }
603
604 if ( BeTyp->DYNAMIC )
605 {
606 fprintf( stdout, " DYNAMIC: %lx %lx ",
607 (long)BeTyp->DYNAMIC_LEFT, (long)BeTyp->DYNAMIC_RIGHT );
608
609 viewvexexprbound( BeTyp->DYNAMIC_LEFT );
610 if ( BeTyp->DYNAMIC == VBH_DYNAMIC_TO ) fprintf( stdout, " TO " );
611 else fprintf( stdout, " DOWNTO " );
612 viewvexexprboundln( BeTyp->DYNAMIC_RIGHT );
613 }
614 }
615
616 /*------------------------------------------------------------\
617 | |
618 | View Vbh Instance |
619 | |
620 \------------------------------------------------------------*/
621
loc_viewvbins(BeIns)622 static void loc_viewvbins( BeIns )
623
624 vbins_list *BeIns;
625 {
626 vbmap_list *BeMap;
627
628 fprintf( stdout, " > [%ld]", BeIns->LINE );
629 fprintf( stdout, " NAME %s ", BeIns->NAME );
630 fprintf( stdout, " MODEL %s\n", BeIns->MODEL );
631 fprintf( stdout, " PORT_MAP\n" );
632
633 for ( BeMap = BeIns->PORT_MAP;
634 BeMap != (vbmap_list *)0;
635 BeMap = BeMap->NEXT )
636 {
637 fprintf( stdout, " > [%ld] FORMAL: ", BeMap->LINE );
638 viewvexexprbound( BeMap->FORMAL );
639 fprintf( stdout, " ACTUAL: " );
640 viewvexexprboundln( BeMap->ACTUAL );
641 }
642
643 fprintf( stdout, "\n" );
644
645 fprintf( stdout, " GEN_MAP\n" );
646
647 for ( BeMap = BeIns->GEN_MAP;
648 BeMap != (vbmap_list *)0;
649 BeMap = BeMap->NEXT )
650 {
651 fprintf( stdout, " > [%ld] FORMAL: ", BeMap->LINE );
652 viewvexexprbound( BeMap->FORMAL );
653 fprintf( stdout, " ACTUAL: " );
654 viewvexexprboundln( BeMap->ACTUAL );
655 }
656
657 fprintf( stdout, "\n" );
658 }
659
660 /*------------------------------------------------------------\
661 | |
662 | View Vbh Aux |
663 | |
664 \------------------------------------------------------------*/
665
loc_viewvbaux(BeAux)666 static void loc_viewvbaux( BeAux )
667
668 vbaux_list *BeAux;
669 {
670 fprintf( stdout, " > [%ld]", BeAux->LINE );
671 viewvexexprbound( BeAux->TARGET );
672 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( BeAux->TYPE ) );
673 fprintf( stdout, " KIND %d ", (int)BeAux->KIND );
674 if ( BeAux->VEX != (vexexpr *)0 )
675 {
676 fprintf( stdout, " := " );
677 viewvexexprbound( BeAux->VEX );
678 }
679 fprintf( stdout, "\n" );
680 }
681
682 /*------------------------------------------------------------\
683 | |
684 | View Vbh Pcs |
685 | |
686 \------------------------------------------------------------*/
687
loc_viewvbpcs(BePcs)688 static void loc_viewvbpcs( BePcs )
689
690 vbpcs_list *BePcs;
691 {
692 ptype_list *ScanPtype;
693 vbvar_list *BeVar;
694
695 fprintf( stdout, " > [%ld]\n", BePcs->LINE );
696
697 if ( BePcs->LABEL != (char *)0 )
698 {
699 fprintf( stdout, "LABEL : %s\n", BePcs->LABEL );
700 }
701
702 fprintf( stdout, "TYPE : %x\n", (int)BePcs->TYPE );
703
704 fprintf( stdout, "VARIABLE\n" );
705
706 for ( ScanPtype = BePcs->VARIABLE;
707 ScanPtype != (ptype_list *)0;
708 ScanPtype = ScanPtype->NEXT )
709 {
710 BeVar = (vbvar_list *)ScanPtype->DATA;
711
712 fprintf( stdout, " > [%ld]\n", BeVar->LINE );
713 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( BeVar->TYPE ) );
714 viewvexexprbound( BeVar->TARGET );
715 if ( BeVar->VEX != (vexexpr *)0 )
716 {
717 fprintf( stdout, " := " );
718 viewvexexprbound( BeVar->VEX );
719 }
720 fprintf( stdout, "\n" );
721 }
722
723 fprintf( stdout, "INSTRUCTION\n" );
724
725 vbh_viewvbinst( BePcs->INSTRUCTION );
726 }
727
728 /*------------------------------------------------------------\
729 | |
730 | View Vbh Gnr |
731 | |
732 \------------------------------------------------------------*/
733
loc_viewvbgnr(BeGnr)734 static void loc_viewvbgnr( BeGnr )
735
736 vbgnr_list *BeGnr;
737 {
738 vbins_list *BeIns;
739 vbpcs_list *BePcs;
740
741 fprintf( stdout, " > [%ld]\n", BeGnr->LINE );
742
743 if ( BeGnr->LABEL != (char *)0 )
744 {
745 fprintf( stdout, "LABEL : %s\n", BeGnr->LABEL );
746 }
747
748 fprintf( stdout, "TYPE : %x\n", (int)BeGnr->TYPE );
749
750 if ( BeGnr->TYPE == VBH_GENERATE_IF )
751 {
752 fprintf( stdout, "IF (" );
753 viewvexexprbound( BeGnr->IF_COND );
754 fprintf( stdout, ")" );
755 }
756 else
757 {
758 fprintf( stdout, "FOR " );
759 viewvexexprbound( BeGnr->FOR_VARIABLE );
760 fprintf( stdout, " IN " );
761
762 viewvexexprbound( BeGnr->FOR_LEFT );
763 if ( BeGnr->FOR_UP ) fprintf( stdout, " TO " );
764 else fprintf( stdout, " DOWNTO " );
765 viewvexexprbound( BeGnr->FOR_RIGHT );
766 }
767
768 fprintf( stdout, "\nGENERATE\n" );
769
770 fprintf( stdout, "BEINS\n" );
771
772 for ( BeIns = BeGnr->BEINS;
773 BeIns != (vbins_list *)0;
774 BeIns = BeIns->NEXT )
775 {
776 loc_viewvbins( BeIns );
777 }
778
779 fprintf( stdout, "BEPCS\n" );
780
781 for ( BePcs = BeGnr->BEPCS;
782 BePcs != (vbpcs_list *)0;
783 BePcs = BePcs->NEXT )
784 {
785 loc_viewvbpcs( BePcs );
786 }
787
788 fprintf( stdout, "BEGNR\n" );
789
790 for ( BeGnr = BeGnr->BEGNR;
791 BeGnr != (vbgnr_list *)0;
792 BeGnr = BeGnr->NEXT )
793 {
794 loc_viewvbgnr( BeGnr );
795 }
796
797 fprintf( stdout, "\nEND GENERATE\n" );
798 }
799
800 /*------------------------------------------------------------\
801 | |
802 | View Vbh Figure |
803 | |
804 \------------------------------------------------------------*/
805
vbh_viewvbfig(Figure)806 void vbh_viewvbfig( Figure )
807
808 vbfig_list *Figure;
809 {
810 vbgnr_list *BeGnr;
811 vbgen_list *BeGen;
812 vbins_list *BeIns;
813 vbmod_list *BeMod;
814 vbaux_list *BeAux;
815 vbatr_list *BeAtr;
816 vbcst_list *BeCst;
817 vbpor_list *BePor;
818 vbpcs_list *BePcs;
819 vbfun_list *BeFun;
820 vbarg_list *BePar;
821 vbvar_list *BeVar;
822 vbtyp_list *BeTyp;
823 chain_list *ScanPack;
824 ptype_list *ScanPtype;
825
826 fprintf( stdout, "NAME: %s\n", Figure->NAME );
827 fprintf( stdout, "FLAG: %d\n", Figure->FLAG );
828 fprintf( stdout, "PACK: %d\n", Figure->IS_PACKAGE );
829
830 fprintf( stdout, "PACK_LIST\n" );
831
832 for ( ScanPack = Figure->PACK_LIST;
833 ScanPack != (chain_list *)0;
834 ScanPack = ScanPack->NEXT )
835 {
836 fprintf( stdout, "%s\n", (char *)ScanPack->DATA );
837 }
838
839 fprintf( stdout, "BETYP\n" );
840
841 for ( BeTyp = Figure->BETYP;
842 BeTyp != (vbtyp_list *)0;
843 BeTyp = BeTyp->NEXT )
844 {
845 vbh_viewvbtyp( BeTyp );
846 }
847
848 fprintf( stdout, "BEPOR\n" );
849
850 for ( BePor = Figure->BEPOR;
851 BePor != (vbpor_list *)0;
852 BePor = BePor->NEXT )
853 {
854 loc_viewvbpor( BePor );
855 }
856
857 fprintf( stdout, "BEGEN\n" );
858
859 for ( BeGen = Figure->BEGEN;
860 BeGen != (vbgen_list *)0;
861 BeGen = BeGen->NEXT )
862 {
863 loc_viewvbgen( BeGen );
864 }
865
866 fprintf( stdout, "BEMOD\n" );
867
868 for ( BeMod = Figure->BEMOD;
869 BeMod != (vbmod_list *)0;
870 BeMod = BeMod->NEXT )
871 {
872 fprintf( stdout, " > [%ld]", BeMod->LINE );
873 fprintf( stdout, " NAME %s\n", BeMod->NAME );
874 fprintf( stdout, " BEPOR\n" );
875
876 for ( BePor = BeMod->BEPOR;
877 BePor != (vbpor_list *)0;
878 BePor = BePor->NEXT )
879 {
880 loc_viewvbpor( BePor );
881 }
882
883 fprintf( stdout, " BEGEN\n" );
884
885 for ( BeGen = BeMod->BEGEN;
886 BeGen != (vbgen_list *)0;
887 BeGen = BeGen->NEXT )
888 {
889 loc_viewvbgen( BeGen );
890 }
891
892 fprintf( stdout, "\n" );
893 }
894
895 fprintf( stdout, "BEATR\n" );
896
897 for ( BeAtr = Figure->BEATR;
898 BeAtr != (vbatr_list *)0;
899 BeAtr = BeAtr->NEXT )
900 {
901 fprintf( stdout, " > [%ld]", BeAtr->LINE );
902 fprintf( stdout, " NAME %s ", BeAtr->NAME );
903 fprintf( stdout, " ENTITY %s ", BeAtr->ENTITY );
904 fprintf( stdout, " TYPE %d ", BeAtr->TYPE );
905 fprintf( stdout, " VALUE %s ", BeAtr->VALUE );
906
907 fprintf( stdout, "\n" );
908 }
909
910 fprintf( stdout, "BECST\n" );
911
912 for ( BeCst = Figure->BECST;
913 BeCst != (vbcst_list *)0;
914 BeCst = BeCst->NEXT )
915 {
916 fprintf( stdout, " > [%ld]", BeCst->LINE );
917 viewvexexprbound( BeCst->TARGET );
918 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( BeCst->TYPE ) );
919 if ( BeCst->VEX != (vexexpr *)0 )
920 {
921 fprintf( stdout, " := " );
922 viewvexexprbound( BeCst->VEX );
923 }
924 fprintf( stdout, "\n" );
925 }
926
927 fprintf( stdout, "BEFUN\n" );
928
929 for ( BeFun = Figure->BEFUN;
930 BeFun != (vbfun_list *)0;
931 BeFun = BeFun->NEXT )
932 {
933 fprintf( stdout, " > [%ld]\n", BeFun->LINE );
934 fprintf( stdout, " NAME : %s\n", BeFun->NAME );
935 fprintf( stdout, " TYPE : %x\n", (int)BeFun->TYPE );
936
937 fprintf( stdout, "ARGUMENT\n" );
938
939 for ( BePar = BeFun->ARGUMENT;
940 BePar != (vbarg_list *)0;
941 BePar = BePar->NEXT )
942 {
943 fprintf( stdout, " > [%ld]\n", BePar->LINE );
944 viewvexexprbound( BePar->TARGET );
945 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( BePar->TYPE ) );
946 fprintf( stdout, " DIR %c ", BePar->DIR );
947 fprintf( stdout, " CLASS %d ", BePar->CLASS );
948 fprintf( stdout, "\n" );
949 }
950
951 if ( BeFun->RETURN != (vbarg_list *)0 )
952 {
953 BePar = BeFun->RETURN;
954
955 fprintf( stdout, " > [%ld]\n", BePar->LINE );
956 fprintf( stdout, "RETURN\n" );
957
958 fprintf( stdout, " < " );
959 viewvexexprbound( BePar->TARGET );
960 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( BePar->TYPE ) );
961 fprintf( stdout, "\n" );
962 }
963
964 fprintf( stdout, "VARIABLE\n" );
965
966 for ( ScanPtype = BeFun->VARIABLE;
967 ScanPtype != (ptype_list *)0;
968 ScanPtype = ScanPtype->NEXT )
969 {
970 BeVar = (vbvar_list *)ScanPtype->DATA;
971
972 fprintf( stdout, " > [%ld]\n", BeVar->LINE );
973 fprintf( stdout, " TYPE %s ", loc_getvbhtypename( BeVar->TYPE ) );
974 viewvexexprbound( BeVar->TARGET );
975 if ( BeVar->VEX != (vexexpr *)0 )
976 {
977 fprintf( stdout, " := " );
978 viewvexexprbound( BeVar->VEX );
979 }
980 fprintf( stdout, "\n" );
981 }
982
983 fprintf( stdout, "INSTRUCTION\n" );
984
985 vbh_viewvbinst( BeFun->INSTRUCTION );
986 }
987
988 fprintf( stdout, "BEINS\n" );
989
990 for ( BeIns = Figure->BEINS;
991 BeIns != (vbins_list *)0;
992 BeIns = BeIns->NEXT )
993 {
994 loc_viewvbins( BeIns );
995 }
996
997 fprintf( stdout, "BEAUX\n" );
998
999 for ( BeAux = Figure->BEAUX;
1000 BeAux != (vbaux_list *)0;
1001 BeAux = BeAux->NEXT )
1002 {
1003 loc_viewvbaux( BeAux );
1004 }
1005
1006 fprintf( stdout, "BEPCS\n" );
1007
1008 for ( BePcs = Figure->BEPCS;
1009 BePcs != (vbpcs_list *)0;
1010 BePcs = BePcs->NEXT )
1011 {
1012 loc_viewvbpcs( BePcs );
1013 }
1014
1015 fprintf( stdout, "BEGNR\n" );
1016
1017 for ( BeGnr = Figure->BEGNR;
1018 BeGnr != (vbgnr_list *)0;
1019 BeGnr = BeGnr->NEXT )
1020 {
1021 loc_viewvbgnr( BeGnr );
1022 }
1023 }
1024