- new features (expand dynamic Std Function 2nd arguments)
All the following std arithmetic/logical functions : TO_UNSIGNED, TO_SIGNED, CONV_UNSIGNED, CONV_SIGNED CONV_STD_LOGIC_VECTOR, EXT, SXT, RESIZE SHL, SHIFT_LEFT, SHR, SHIFT_RIGHT can now be used with a NON constant 2nd argument : Ex: out0 <= shr( A(3 downto 0), B(1 downto 0) );
This commit is contained in:
parent
d24326d934
commit
ec4f581b78
|
@ -13,6 +13,7 @@ vasy_analys.c vasy_drvvlog.h vasy_mulwait.c vasy_redwait.h \
|
|||
vasy_analys.h vasy_elabo.c vasy_mulwait.h vasy_shared.c \
|
||||
vasy_array.c vasy_elabo.h vasy_onewait.c vasy_shared.h \
|
||||
vasy_array.h vasy_error.c vasy_onewait.h vasy_simprtl.c \
|
||||
vasy_dynfunc.c vasy_dynfunc.h \
|
||||
vasy_debug.c vasy_error.h vasy_parse.c vasy_simprtl.h \
|
||||
vasy_debug.h vasy_func.c vasy_parse.h vasy_simul.c \
|
||||
vasy_drvalc.c vasy_func.h vasy_preanal.c vasy_simul.h \
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
"vasy_drvrtl.c",
|
||||
"vasy_drvsyn.c",
|
||||
"vasy_drvvlog.c",
|
||||
"vasy_dynfunc.c",
|
||||
"vasy_elabo.c",
|
||||
"vasy_error.c",
|
||||
"vasy_func.c",
|
||||
|
|
|
@ -0,0 +1,521 @@
|
|||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| This file is part of the Alliance CAD System Copyright |
|
||||
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||
| |
|
||||
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||
| E-mail : mailto:alliance-users@asim.lip6.fr |
|
||||
| |
|
||||
| This progam is free software; you can redistribute it |
|
||||
| and/or modify it under the terms of the GNU General Public |
|
||||
| License as published by the Free Software Foundation; |
|
||||
| either version 2 of the License, or (at your option) any |
|
||||
| later version. |
|
||||
| |
|
||||
| Alliance VLSI CAD System is distributed in the hope that |
|
||||
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||
| without even the implied warranty of MERCHANTABILITY or |
|
||||
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||
| Public License for more details. |
|
||||
| |
|
||||
| You should have received a copy of the GNU General Public |
|
||||
| License along with the GNU C Library; see the file COPYING. |
|
||||
| If not, write to the Free Software Foundation, Inc., |
|
||||
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Tool : VASY |
|
||||
| |
|
||||
| File : vasy_array.c |
|
||||
| |
|
||||
| Authors : Jacomme Ludovic |
|
||||
| |
|
||||
| Date : 02.02.04 |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Include Files |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
# include <stdio.h>
|
||||
# include <string.h>
|
||||
|
||||
# include "mut.h"
|
||||
# include "aut.h"
|
||||
# include "vex.h"
|
||||
# include "vpn.h"
|
||||
# include "vbh.h"
|
||||
|
||||
# include "vasy_array.h"
|
||||
# include "vasy_debug.h"
|
||||
# include "vasy_error.h"
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Constants |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Types |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Variables |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Private variables |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
static ptype_list **VasyPrevInst = (ptype_list **)0;
|
||||
static vbpcs_list *VasyProcess = (vbpcs_list *)0;
|
||||
static long VasyNumberVar = 0;
|
||||
static vbtyp_list *VasyTypeNatural = (vbtyp_list *)0;
|
||||
|
||||
static char VasyBuffer[ 512 ];
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Functions |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| VasyDynFuncAddVariable |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
static vexexpr *VasyDynFuncAddVariable( BaseType, Width )
|
||||
|
||||
vbtyp_list *BaseType;
|
||||
int Width;
|
||||
{
|
||||
vexexpr *VexAtom;
|
||||
char *Name;
|
||||
|
||||
sprintf( VasyBuffer, "dynfunc_var_%ld", VasyNumberVar++ );
|
||||
Name = namealloc( VasyBuffer );
|
||||
|
||||
if ( Width == 0 )
|
||||
{
|
||||
VexAtom = createvexatomvec( Name, BaseType->LEFT, BaseType->RIGHT );
|
||||
}
|
||||
else
|
||||
if ( Width > 0 )
|
||||
{
|
||||
VexAtom = createvexatomvec( Name, Width - 1, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
VexAtom = createvexatombit( Name );
|
||||
}
|
||||
|
||||
VasyProcess->VARIABLE =
|
||||
vbh_addvbvar( VasyProcess->VARIABLE, VexAtom, (vexexpr *)0, BaseType, VasyProcess->LINE );
|
||||
|
||||
SetVbhProcSequential( VasyProcess );
|
||||
|
||||
return( dupvexexpr( VexAtom ) );
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| VasyExpandDynFuncVexFunc |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
static vexexpr *VasyExpandDynFuncVexFunc( VexExpr )
|
||||
|
||||
vexexpr *VexExpr;
|
||||
{
|
||||
vexexpr *VexAtom;
|
||||
vexexpr *VexDeclar;
|
||||
vexexpr *Operand;
|
||||
vexexpr *VexVar;
|
||||
vexexpr *VexData;
|
||||
vexexpr *VexCond;
|
||||
vexexpr *VexValue;
|
||||
authelem *Element;
|
||||
char *AtomValue;
|
||||
char *ChoiceValue;
|
||||
vbtyp_list *VbhType;
|
||||
vbtyp_list *VbhBase;
|
||||
vbcho_list *VbhChoice;
|
||||
vbcas_list *VbhCase;
|
||||
ptype_list *ScanPType;
|
||||
char *FuncName;
|
||||
int FuncId;
|
||||
int DynFuncSize;
|
||||
int Vector;
|
||||
int Step;
|
||||
int SizeValue;
|
||||
int IntValue;
|
||||
int Index;
|
||||
|
||||
FuncName = GetVexFuncValue( VexExpr );
|
||||
FuncId = getvexstdfuncid( FuncName );
|
||||
|
||||
VexAtom = GetVexOperand( VexExpr->OPERAND );
|
||||
Operand = GetVexOperand( VexExpr->OPERAND->NEXT );
|
||||
|
||||
SizeValue = Operand->WIDTH;
|
||||
/*
|
||||
** Too big !!
|
||||
*/
|
||||
if ( SizeValue > 8 ) return( VexExpr );
|
||||
|
||||
DynFuncSize = 1L << SizeValue;
|
||||
VexVar = VasyDynFuncAddVariable( VasyTypeNatural, VexAtom->WIDTH );
|
||||
|
||||
if ( ! IsVexNodeAtom( Operand ) )
|
||||
{
|
||||
VexCond = VasyDynFuncAddVariable( VasyTypeNatural, SizeValue );
|
||||
}
|
||||
else
|
||||
{
|
||||
VexCond = Operand;
|
||||
}
|
||||
|
||||
ScanPType = vbh_addvbcas( *VasyPrevInst, dupvexexpr( VexCond ),
|
||||
VasyTypeNatural, VasyProcess->LINE );
|
||||
*VasyPrevInst = ScanPType;
|
||||
VbhCase = (vbcas_list *)ScanPType->DATA;
|
||||
|
||||
if ( ! IsVexNodeAtom( Operand ) )
|
||||
{
|
||||
ScanPType = vbh_addvbvar( *VasyPrevInst, VexCond, dupvexexpr( Operand ),
|
||||
VasyTypeNatural, VasyProcess->LINE );
|
||||
*VasyPrevInst = ScanPType;
|
||||
}
|
||||
|
||||
VbhChoice = (vbcho_list *)autallocblock( sizeof( vbcho_list ) * DynFuncSize );
|
||||
VbhCase->SIZE = DynFuncSize;
|
||||
VbhCase->CHOICE = VbhChoice;
|
||||
|
||||
IntValue = 0;
|
||||
|
||||
for ( Index = 0; Index < DynFuncSize; Index++ )
|
||||
{
|
||||
VexValue = createvexatomlong( IntValue, SizeValue, 0 );
|
||||
ChoiceValue = GetVexAtomValue( VexValue );
|
||||
|
||||
VexData = createvexfunc( FuncName, VexAtom->WIDTH );
|
||||
addvexqexpr( VexData, dupvexexpr( VexAtom ) );
|
||||
addvexqexpr( VexData, VexValue );
|
||||
|
||||
ScanPType = vbh_addvbvar( (ptype_list *)0,
|
||||
dupvexexpr( VexVar ), VexData, VasyTypeNatural, VasyProcess->LINE );
|
||||
|
||||
VbhChoice[ Index ].INSTRUCTION = ScanPType;
|
||||
VbhChoice[ Index ].SIZE = SizeValue;
|
||||
VbhChoice[ Index ].VALUES = addchain( NULL, (void *)ChoiceValue );
|
||||
|
||||
IntValue++;
|
||||
}
|
||||
|
||||
freevexexpr( VexExpr );
|
||||
|
||||
return( VexVar );
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| VasyDynFuncScanVex |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
static vexexpr *VasyDynFuncScanVex( VexExpr )
|
||||
|
||||
vexexpr *VexExpr;
|
||||
{
|
||||
vexexpr *Operand;
|
||||
vexexpr *VexInt;
|
||||
chain_list *ScanChain;
|
||||
char *FuncName;
|
||||
long Length;
|
||||
int FuncId;
|
||||
|
||||
if ( IsVexNodeAtom( VexExpr ) )
|
||||
{
|
||||
return( VexExpr );
|
||||
}
|
||||
|
||||
for ( ScanChain = VexExpr->OPERAND;
|
||||
ScanChain != (chain_list *)0;
|
||||
ScanChain = ScanChain->NEXT )
|
||||
{
|
||||
Operand = GetVexOperand( ScanChain );
|
||||
Operand = VasyDynFuncScanVex( Operand );
|
||||
SetVexOperand( ScanChain, Operand );
|
||||
}
|
||||
|
||||
if ( IsVexNodeFunc( VexExpr ) )
|
||||
{
|
||||
FuncName = GetVexFuncValue( VexExpr );
|
||||
FuncId = getvexstdfuncid( FuncName );
|
||||
|
||||
if ( FuncId != -1 )
|
||||
{
|
||||
switch ( FuncId )
|
||||
{
|
||||
case VEX_STD_TO_UNSIGNED :
|
||||
case VEX_STD_TO_SIGNED :
|
||||
case VEX_STD_CONV_UNSIGNED :
|
||||
case VEX_STD_CONV_SIGNED :
|
||||
case VEX_STD_CONV_STD_LOGIC_VECTOR :
|
||||
case VEX_STD_EXT :
|
||||
case VEX_STD_SXT :
|
||||
case VEX_STD_RESIZE :
|
||||
case VEX_STD_SHL :
|
||||
case VEX_STD_SHIFT_LEFT :
|
||||
case VEX_STD_SHR :
|
||||
case VEX_STD_SHIFT_RIGHT :
|
||||
|
||||
|
||||
Operand = GetVexOperand( VexExpr->OPERAND );
|
||||
VexInt = GetVexOperand( VexExpr->OPERAND->NEXT );
|
||||
|
||||
if ( evalvexatomlong( VexInt, &Length ) )
|
||||
{
|
||||
VexExpr = VasyExpandDynFuncVexFunc( VexExpr );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( VexExpr );
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| VasyDynFuncScanVexCond |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
static vexexpr *VasyDynFuncScanVexCond( PrevInst, VexExpr )
|
||||
|
||||
ptype_list **PrevInst;
|
||||
vexexpr *VexExpr;
|
||||
{
|
||||
if ( VexExpr != (vexexpr *)0 )
|
||||
{
|
||||
VasyPrevInst = PrevInst;
|
||||
VexExpr = VasyDynFuncScanVex( VexExpr );
|
||||
}
|
||||
|
||||
return( VexExpr );
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| VasyDynFuncScanAsg |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
static void VasyDynFuncScanAsg( PrevInst, CurInst, Variable )
|
||||
|
||||
ptype_list **PrevInst;
|
||||
ptype_list *CurInst;
|
||||
int Variable;
|
||||
{
|
||||
vbasg_list *ScanAsg;
|
||||
vbvar_list *ScanVar;
|
||||
|
||||
VasyPrevInst = PrevInst;
|
||||
|
||||
if ( Variable )
|
||||
{
|
||||
ScanVar = (vbvar_list *)CurInst->DATA;
|
||||
ScanVar->VEX = VasyDynFuncScanVex( ScanVar->VEX );
|
||||
}
|
||||
else
|
||||
{
|
||||
ScanAsg = (vbasg_list *)CurInst->DATA;
|
||||
ScanAsg->VEX = VasyDynFuncScanVex( ScanAsg->VEX );
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| VasyDynFuncScanInstruction |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
static ptype_list *VasyDynFuncScanInstruction( Instruction )
|
||||
|
||||
ptype_list *Instruction;
|
||||
{
|
||||
ptype_list *ScanPType;
|
||||
ptype_list **PrevPType;
|
||||
vbifs_list *ScanIfs;
|
||||
vbcas_list *ScanCase;
|
||||
vbcho_list *ScanChoice;
|
||||
vblop_list *ScanLoop;
|
||||
vbfor_list *ScanFor;
|
||||
vbwhi_list *ScanWhile;
|
||||
vbwas_list *ScanWait;
|
||||
vbnxt_list *ScanNext;
|
||||
vbext_list *ScanExit;
|
||||
int Offset;
|
||||
|
||||
ScanPType = Instruction;
|
||||
PrevPType = &Instruction;
|
||||
|
||||
while ( ScanPType != (ptype_list *)0 )
|
||||
{
|
||||
switch ( ScanPType->TYPE )
|
||||
{
|
||||
case VBH_BEIFS :
|
||||
|
||||
ScanIfs = (vbifs_list *)ScanPType->DATA;
|
||||
ScanIfs->CND = VasyDynFuncScanVexCond( PrevPType, ScanIfs->CND );
|
||||
ScanIfs->CNDTRUE = VasyDynFuncScanInstruction( ScanIfs->CNDTRUE );
|
||||
ScanIfs->CNDFALSE = VasyDynFuncScanInstruction( ScanIfs->CNDFALSE );
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BECAS :
|
||||
|
||||
ScanCase = (vbcas_list *)ScanPType->DATA;
|
||||
ScanCase->VEX = VasyDynFuncScanVexCond( PrevPType, ScanCase->VEX );
|
||||
|
||||
for ( Offset = 0; Offset < ScanCase->SIZE; Offset++ )
|
||||
{
|
||||
ScanChoice = &ScanCase->CHOICE[ Offset ];
|
||||
ScanChoice->INSTRUCTION = VasyDynFuncScanInstruction( ScanChoice->INSTRUCTION );
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BEFOR :
|
||||
|
||||
ScanFor = (vbfor_list *)ScanPType->DATA;
|
||||
ScanFor->INSTRUCTION = VasyDynFuncScanInstruction( ScanFor->INSTRUCTION );
|
||||
|
||||
continue;
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BEWHI :
|
||||
|
||||
ScanWhile = (vbwhi_list *)ScanPType->DATA;
|
||||
ScanWhile->CND = VasyDynFuncScanVexCond( PrevPType, ScanWhile->CND );
|
||||
ScanWhile->INSTRUCTION = VasyDynFuncScanInstruction( ScanWhile->INSTRUCTION );
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BELOP :
|
||||
|
||||
ScanLoop = (vblop_list *)ScanPType->DATA;
|
||||
ScanLoop->INSTRUCTION = VasyDynFuncScanInstruction( ScanLoop->INSTRUCTION );
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BEASG :
|
||||
|
||||
VasyDynFuncScanAsg( PrevPType, ScanPType, 0 );
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BEVAR :
|
||||
|
||||
VasyDynFuncScanAsg( PrevPType, ScanPType, 1 );
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BEWAS :
|
||||
|
||||
ScanWait = (vbwas_list *)ScanPType->DATA;
|
||||
ScanWait->CND = VasyDynFuncScanVexCond( PrevPType, ScanWait->CND );
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BENXT :
|
||||
|
||||
ScanNext = (vbnxt_list *)ScanPType->DATA;
|
||||
ScanNext->CND = VasyDynFuncScanVexCond( PrevPType, ScanNext->CND );
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BEEXT :
|
||||
|
||||
ScanExit = (vbext_list *)ScanPType->DATA;
|
||||
ScanExit->CND = VasyDynFuncScanVexCond( PrevPType, ScanExit->CND );
|
||||
|
||||
break;
|
||||
|
||||
case VBH_BEAGR :
|
||||
|
||||
VasyError( VASY_NOT_YET_IMPLEMENTED_ERROR, "aggregate assignation" );
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
PrevPType = &ScanPType->NEXT;
|
||||
ScanPType = ScanPType->NEXT;
|
||||
}
|
||||
|
||||
return( Instruction );
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| VasyExpandDynFuncScanProcess |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
static void VasyDynFuncScanProcess( BePcs )
|
||||
|
||||
vbpcs_list *BePcs;
|
||||
{
|
||||
VasyProcess = BePcs;
|
||||
|
||||
BePcs->INSTRUCTION = VasyDynFuncScanInstruction( BePcs->INSTRUCTION );
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| VasyExpandDynFuncVbhFig |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
void VasyExpandDynFuncVbhFig( VbhFigure )
|
||||
|
||||
vbfig_list *VbhFigure;
|
||||
{
|
||||
vbpcs_list *BePcs;
|
||||
|
||||
if ( IsVasyDebugLevel0() )
|
||||
{
|
||||
VasyPrintf( stdout, "--> VasyExpandDynFuncVbhFig %s\n", VbhFigure->NAME );
|
||||
}
|
||||
|
||||
VasyTypeNatural = vbh_getvbtypbyindex( VbhFigure, VBH_TYPE_NATURAL );
|
||||
|
||||
for ( BePcs = VbhFigure->BEPCS;
|
||||
BePcs != (vbpcs_list *)0;
|
||||
BePcs = BePcs->NEXT )
|
||||
{
|
||||
VasyDynFuncScanProcess( BePcs );
|
||||
}
|
||||
|
||||
if ( IsVasyDebugLevel1() )
|
||||
{
|
||||
vbh_viewvbfig( VbhFigure );
|
||||
}
|
||||
|
||||
if ( IsVasyDebugLevel0() )
|
||||
{
|
||||
VasyPrintf( stdout, "<-- VasyExpandDynFuncVbhFig %s\n\n", VbhFigure->NAME );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| This file is part of the Alliance CAD System Copyright |
|
||||
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||
| |
|
||||
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||
| E-mail : mailto:alliance-users@asim.lip6.fr |
|
||||
| |
|
||||
| This progam is free software; you can redistribute it |
|
||||
| and/or modify it under the terms of the GNU General Public |
|
||||
| License as published by the Free Software Foundation; |
|
||||
| either version 2 of the License, or (at your option) any |
|
||||
| later version. |
|
||||
| |
|
||||
| Alliance VLSI CAD System is distributed in the hope that |
|
||||
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||
| without even the implied warranty of MERCHANTABILITY or |
|
||||
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||
| Public License for more details. |
|
||||
| |
|
||||
| You should have received a copy of the GNU General Public |
|
||||
| License along with the GNU C Library; see the file COPYING. |
|
||||
| If not, write to the Free Software Foundation, Inc., |
|
||||
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Tool : VASY |
|
||||
| |
|
||||
| File : vasy_dynfunc.h |
|
||||
| |
|
||||
| Authors : Jacomme Ludovic |
|
||||
| |
|
||||
| Date : 02.02.04 |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
|
||||
# ifndef VASY_DYNFUNC_H
|
||||
# define VASY_DYNFUNC_H
|
||||
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Constants |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Macro |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Types |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Variables |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
| Functions |
|
||||
| |
|
||||
\------------------------------------------------------------*/
|
||||
|
||||
extern void VasyExpandDynFuncVbhFig();
|
||||
|
||||
# endif
|
|
@ -794,6 +794,7 @@ vbfig_list *VasyParseVbhFig( FileName, GenMap, Deep )
|
|||
|
||||
VasyUnrollLoopVbhFig( VbhFigure );
|
||||
VasyExpandArrayVbhFig( VbhFigure );
|
||||
VasyExpandDynFuncVbhFig( VbhFigure );
|
||||
|
||||
VasyParseVerifyVbhFig( VbhFigure );
|
||||
|
||||
|
|
Loading…
Reference in New Issue