This commit is contained in:
parent
af1b9fe123
commit
a2cfd01891
|
@ -0,0 +1 @@
|
||||||
|
SUBDIRS = src
|
|
@ -0,0 +1,45 @@
|
||||||
|
dnl
|
||||||
|
/*
|
||||||
|
dnl This file is part of the Alliance CAD System
|
||||||
|
dnl Copyright (C) Laboratoire LIP6 - Département ASIM
|
||||||
|
dnl Universite Pierre et Marie Curie
|
||||||
|
dnl
|
||||||
|
dnl Home page : http://www-asim.lip6.fr/alliance/
|
||||||
|
dnl E-mail support : mailto:alliance-support@asim.lip6.fr
|
||||||
|
dnl
|
||||||
|
dnl This library is free software; you can redistribute it and/or modify it
|
||||||
|
dnl under the terms of the GNU Library General Public License as published
|
||||||
|
dnl by the Free Software Foundation; either version 2 of the License, or (at
|
||||||
|
dnl your option) any later version.
|
||||||
|
dnl
|
||||||
|
dnl Alliance VLSI CAD System is distributed in the hope that it will be
|
||||||
|
dnl useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||||
|
dnl Public License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU General Public License along
|
||||||
|
dnl with the GNU C Library; see the file COPYING. If not, write to the Free
|
||||||
|
dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
dnl
|
||||||
|
dnl Purpose : Auto stuffing Alliance
|
||||||
|
dnl Almost ten years since I wrote this stuff, I just can't
|
||||||
|
dnl believe it
|
||||||
|
dnl Date : 01/02/2002
|
||||||
|
dnl Author : Frederic Petrot <Frederic.Petrot@lip6.fr>
|
||||||
|
dnl $Id: configure.in,v 1.1 2002/03/21 12:28:55 ludo Exp $
|
||||||
|
dnl
|
||||||
|
dnl
|
||||||
|
AC_INIT(src/rtd.h)
|
||||||
|
AM_INIT_AUTOMAKE(rtd, 1.1)
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_HEADER_STDC
|
||||||
|
AC_C_CONST
|
||||||
|
AC_PROG_RANLIB
|
||||||
|
|
||||||
|
AM_ALLIANCE
|
||||||
|
|
||||||
|
AC_OUTPUT([
|
||||||
|
Makefile
|
||||||
|
src/Makefile
|
||||||
|
])
|
|
@ -0,0 +1,7 @@
|
||||||
|
CFLAGS = @CFLAGS@ \
|
||||||
|
-DALLIANCE_TOP=\"${ALLIANCE_TOP}\"
|
||||||
|
lib_LIBRARIES = libRtd.a
|
||||||
|
include_HEADERS = rtd.h
|
||||||
|
libRtd_a_SOURCES = \
|
||||||
|
rtd.h rtd_drive.h rtd_error.h rtd_get.h rtd_parse.h \
|
||||||
|
rtd_drive.c rtd_error.c rtd_get.c rtd_parse.c
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Title : Structures and fonctions for RTD |
|
||||||
|
| |
|
||||||
|
| Date : 07.04.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTD_101_H
|
||||||
|
# define RTD_101_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Structures |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Global Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void savertlfig __P((rtlfig_list *RtlFigure));
|
||||||
|
extern void loadrtlfig __P((rtlfig_list *RtlFigure, char *FigureName));
|
||||||
|
extern rtlfig_list * getrtlfig __P((char *Name));
|
||||||
|
extern void rtlenv __P(());
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,440 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library 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 : RTD |
|
||||||
|
| |
|
||||||
|
| File : rtd_drive.c |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 01.01.95 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include VEX_H
|
||||||
|
# include RTN_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <string.h>
|
||||||
|
|
||||||
|
# include "rtd_error.h"
|
||||||
|
# include "rtd_drive.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static FILE *RtlFile;
|
||||||
|
static long RtlExprLength;
|
||||||
|
static char RtlBuffer[ 128 ];
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteNameFile |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteNameFile( Name )
|
||||||
|
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
int Length;
|
||||||
|
|
||||||
|
Length = strlen( Name );
|
||||||
|
|
||||||
|
RtlExprLength += Length;
|
||||||
|
|
||||||
|
if ( RtlExprLength > 80 )
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "\n" );
|
||||||
|
RtlExprLength = Length;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( RtlFile, Name );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteExprPrefix |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteExprPrefix( Expr )
|
||||||
|
|
||||||
|
vexexpr *Expr;
|
||||||
|
{
|
||||||
|
char *Name;
|
||||||
|
chain_list *ScanOper;
|
||||||
|
|
||||||
|
if ( IsVexNodeAtom( Expr ) )
|
||||||
|
{
|
||||||
|
sprintf( RtlBuffer, "{%d,%d,%x}%s",
|
||||||
|
Expr->LEFT, Expr->RIGHT, Expr->TYPE, GetVexAtomValue( Expr ) );
|
||||||
|
RtlWriteNameFile( RtlBuffer );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( IsVexNodeOper( Expr ) )
|
||||||
|
{
|
||||||
|
Name = getvexoperuppername( GetVexOperValue( Expr ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Name = GetVexFuncValue( Expr );
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf( RtlBuffer, "({%d,%d,%x}%s",
|
||||||
|
Expr->LEFT, Expr->RIGHT, Expr->TYPE, Name );
|
||||||
|
RtlWriteNameFile( RtlBuffer );
|
||||||
|
|
||||||
|
for ( ScanOper = Expr->OPERAND;
|
||||||
|
ScanOper != (chain_list *)0;
|
||||||
|
ScanOper = ScanOper->NEXT )
|
||||||
|
{
|
||||||
|
RtlWriteNameFile( "~" );
|
||||||
|
RtlWriteExprPrefix( GetVexOperand( ScanOper ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlWriteNameFile( ")" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteExpr |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteExpr( Label, Expr )
|
||||||
|
|
||||||
|
char *Label;
|
||||||
|
vexexpr *Expr;
|
||||||
|
{
|
||||||
|
if ( Expr != (vexexpr *)0 )
|
||||||
|
{
|
||||||
|
RtlExprLength = 0;
|
||||||
|
|
||||||
|
fprintf( RtlFile, "%s\t\n", Label );
|
||||||
|
RtlWriteExprPrefix( Expr );
|
||||||
|
fprintf( RtlFile, "\n" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteOneSymbol |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteOneSymbol( RtlSymbol )
|
||||||
|
|
||||||
|
rtlsym *RtlSymbol;
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "SYMBOL\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld\t%s\n",
|
||||||
|
(long)RtlSymbol->INDEX,
|
||||||
|
(long)RtlSymbol->INIT,
|
||||||
|
(long)RtlSymbol->DRIVE,
|
||||||
|
(long)RtlSymbol->EFFEC,
|
||||||
|
(long)RtlSymbol->EVENT,
|
||||||
|
(long)RtlSymbol->FLAGS,
|
||||||
|
RtlSymbol->NAME );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteOneDeclar |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteOneDeclar( RtlDeclar )
|
||||||
|
|
||||||
|
rtldecl_list *RtlDeclar;
|
||||||
|
{
|
||||||
|
int Width;
|
||||||
|
int Scan;
|
||||||
|
|
||||||
|
fprintf( RtlFile, "DECLAR\t%ld\t%ld\t%ld\t%ld\t%ld",
|
||||||
|
(long)RtlDeclar->DIR,
|
||||||
|
(long)RtlDeclar->TYPE,
|
||||||
|
(long)RtlDeclar->KIND,
|
||||||
|
(long)RtlDeclar->BASE,
|
||||||
|
(long)RtlDeclar->FLAGS );
|
||||||
|
|
||||||
|
RtlWriteExpr( "", RtlDeclar->VEX_ATOM );
|
||||||
|
RtlWriteExpr( "INIT", RtlDeclar->VEX_INIT );
|
||||||
|
|
||||||
|
Width = RtlDeclar->VEX_ATOM->WIDTH;
|
||||||
|
|
||||||
|
for ( Scan = 0; Scan < Width; Scan++ )
|
||||||
|
{
|
||||||
|
RtlWriteOneSymbol( &RtlDeclar->DECL_SYM[ Scan ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteDeclar |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteDeclar( RtlFigure )
|
||||||
|
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
{
|
||||||
|
rtldecl_list *ScanDeclar;
|
||||||
|
int Type;
|
||||||
|
|
||||||
|
for ( Type = 0; Type < RTL_MAX_DECLAR_TYPE; Type++ )
|
||||||
|
{
|
||||||
|
for ( ScanDeclar = RtlFigure->DECLAR[ Type ];
|
||||||
|
ScanDeclar != (rtldecl_list *)0;
|
||||||
|
ScanDeclar = ScanDeclar->NEXT )
|
||||||
|
{
|
||||||
|
RtlWriteOneDeclar( ScanDeclar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteAssign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteAssign( RtlFigure )
|
||||||
|
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
{
|
||||||
|
rtlasg_list *ScanAsg;
|
||||||
|
rtlbivex_list *ScanBiVex;
|
||||||
|
|
||||||
|
for ( ScanAsg = RtlFigure->ASSIGN;
|
||||||
|
ScanAsg != (rtlasg_list *)0;
|
||||||
|
ScanAsg = ScanAsg->NEXT )
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "ASG\t%ld\t%ld\t%ld\n",
|
||||||
|
(long)ScanAsg->TYPE,
|
||||||
|
(long)ScanAsg->REG_TYPE,
|
||||||
|
(long)ScanAsg->FLAGS );
|
||||||
|
|
||||||
|
RtlWriteExpr( "ASG_ATOM", ScanAsg->VEX_ATOM );
|
||||||
|
RtlWriteExpr( "ASG_DATA", ScanAsg->VEX_DATA );
|
||||||
|
|
||||||
|
for ( ScanBiVex = ScanAsg->BIVEX;
|
||||||
|
ScanBiVex != (rtlbivex_list *)0;
|
||||||
|
ScanBiVex = ScanBiVex->NEXT )
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "ASG_BIVEX\t%ld\t%ld\n",
|
||||||
|
(long)ScanBiVex->TYPE,
|
||||||
|
(long)ScanBiVex->FLAGS );
|
||||||
|
|
||||||
|
RtlWriteExpr( "BIVEX_COND", ScanBiVex->VEX_COND );
|
||||||
|
RtlWriteExpr( "BIVEX_DATA", ScanBiVex->VEX_DATA );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteFsm |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteFsm( RtlFigure )
|
||||||
|
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
{
|
||||||
|
/* TO BE DONE */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteModel |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteModel( RtlFigure )
|
||||||
|
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
{
|
||||||
|
rtlmod_list *ScanMod;
|
||||||
|
rtlport_list *ScanPort;
|
||||||
|
rtlgen_list *ScanGen;
|
||||||
|
|
||||||
|
for ( ScanMod = RtlFigure->MODEL;
|
||||||
|
ScanMod != (rtlmod_list *)0;
|
||||||
|
ScanMod = ScanMod->NEXT )
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "MODEL\t%ld\t%s\n",
|
||||||
|
(long)ScanMod->FLAGS,
|
||||||
|
ScanMod->NAME );
|
||||||
|
|
||||||
|
for ( ScanPort = ScanMod->PORT;
|
||||||
|
ScanPort != (rtlport_list *)0;
|
||||||
|
ScanPort = ScanPort->NEXT )
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "PORT\t%ld\t%ld\t%ld",
|
||||||
|
(long)ScanPort->DIR,
|
||||||
|
(long)ScanPort->BASE,
|
||||||
|
(long)ScanPort->FLAGS );
|
||||||
|
|
||||||
|
RtlWriteExpr( "", ScanPort->VEX_ATOM );
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( ScanGen = ScanMod->GENERIC;
|
||||||
|
ScanGen != (rtlgen_list *)0;
|
||||||
|
ScanGen = ScanGen->NEXT )
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "GEN_MOD\t%ld\t%ld\t",
|
||||||
|
(long)ScanGen->BASE,
|
||||||
|
(long)ScanGen->FLAGS );
|
||||||
|
|
||||||
|
RtlWriteExpr( "", ScanGen->VEX_ATOM );
|
||||||
|
|
||||||
|
RtlWriteExpr( "GEN_EXPR", ScanGen->VEX_EXPR );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteInstance |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteInstance( RtlFigure )
|
||||||
|
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
{
|
||||||
|
rtlins_list *ScanIns;
|
||||||
|
rtlmap_list *ScanMap;
|
||||||
|
rtlgen_list *ScanGen;
|
||||||
|
|
||||||
|
for ( ScanIns = RtlFigure->INSTANCE;
|
||||||
|
ScanIns != (rtlins_list *)0;
|
||||||
|
ScanIns = ScanIns->NEXT )
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "INSTANCE\t%ld\t%s\n",
|
||||||
|
(long)ScanIns->FLAGS,
|
||||||
|
ScanIns->NAME );
|
||||||
|
|
||||||
|
fprintf( RtlFile, "INS_MOD\t%s\n", ScanIns->MODEL->NAME );
|
||||||
|
|
||||||
|
for ( ScanMap = ScanIns->MAP;
|
||||||
|
ScanMap != (rtlmap_list *)0;
|
||||||
|
ScanMap = ScanMap->NEXT )
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "MAP\t%ld\n", (long)ScanMap->FLAGS );
|
||||||
|
|
||||||
|
RtlWriteExpr( "MAP_FOR", ScanMap->VEX_FORMAL );
|
||||||
|
RtlWriteExpr( "MAP_ACT", ScanMap->VEX_ACTUAL );
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( ScanGen = ScanIns->GENERIC;
|
||||||
|
ScanGen != (rtlgen_list *)0;
|
||||||
|
ScanGen = ScanGen->NEXT )
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "GEN_MAP\t%ld\t%ld\t",
|
||||||
|
(long)ScanGen->BASE,
|
||||||
|
(long)ScanGen->FLAGS );
|
||||||
|
|
||||||
|
RtlWriteExpr( "", ScanGen->VEX_ATOM );
|
||||||
|
|
||||||
|
RtlWriteExpr( "GEN_EXPR", ScanGen->VEX_EXPR );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlWriteFigure |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlWriteFigure( RtlFigure )
|
||||||
|
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
{
|
||||||
|
fprintf( RtlFile, "FIGURE\t%ld\t%s\n",
|
||||||
|
(long)RtlFigure->FLAGS,
|
||||||
|
RtlFigure->NAME );
|
||||||
|
|
||||||
|
RtlWriteDeclar( RtlFigure );
|
||||||
|
RtlWriteAssign( RtlFigure );
|
||||||
|
RtlWriteFsm( RtlFigure );
|
||||||
|
RtlWriteModel( RtlFigure );
|
||||||
|
RtlWriteInstance( RtlFigure );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| savertlfig |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void savertlfig( RtlFigure )
|
||||||
|
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
{
|
||||||
|
RtlFile = mbkfopen( RtlFigure->NAME, "rtl", "w" );
|
||||||
|
|
||||||
|
if ( RtlFile == (FILE *)0 )
|
||||||
|
{
|
||||||
|
rtderror( RTD_ERROR_OPEN_FILE, RtlFigure->NAME, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlWriteFigure( RtlFigure );
|
||||||
|
|
||||||
|
fclose( RtlFile );
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : RTD |
|
||||||
|
| |
|
||||||
|
| File : vpddrive.c |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 01.01.95 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTD_DRIVE_H
|
||||||
|
# define RTD_DRIVE_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,124 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library 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 : RTD |
|
||||||
|
| |
|
||||||
|
| File : rtd_error.c |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 01.01.95 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <string.h>
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
|
||||||
|
# include "rtd_error.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void rtd_error( Error, Text, Value, File, Line )
|
||||||
|
|
||||||
|
int Error;
|
||||||
|
char *Text;
|
||||||
|
long Value;
|
||||||
|
char *File;
|
||||||
|
int Line;
|
||||||
|
{
|
||||||
|
char *Name;
|
||||||
|
|
||||||
|
Name = mbkstrdup( File );
|
||||||
|
Name[ strlen( File ) - 1 ] = '\0';
|
||||||
|
|
||||||
|
fprintf( stderr, "%s%d ", Name, Line );
|
||||||
|
|
||||||
|
switch( Error )
|
||||||
|
{
|
||||||
|
case RTD_ERROR_OPEN_FILE :
|
||||||
|
fprintf( stderr, "Unable to open file \"%s\"\n", Text );
|
||||||
|
break;
|
||||||
|
case RTD_ERROR_PARSE_FILE :
|
||||||
|
fprintf( stderr, "Unable to parse file \"%s\" line %ld\n", Text, Value );
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
fprintf( stderr, "Internal error number %d\n", Error );
|
||||||
|
}
|
||||||
|
|
||||||
|
autexit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
void rtd_warning( Warning, Text, Value, File, Line )
|
||||||
|
|
||||||
|
int Warning;
|
||||||
|
char *Text;
|
||||||
|
long Value;
|
||||||
|
char *File;
|
||||||
|
int Line;
|
||||||
|
{
|
||||||
|
char *Name;
|
||||||
|
|
||||||
|
Name = mbkstrdup( File );
|
||||||
|
Name[ strlen( File ) - 1 ] = '\0';
|
||||||
|
|
||||||
|
fprintf( stderr, "%s%d ", Name, Line );
|
||||||
|
|
||||||
|
switch ( Warning )
|
||||||
|
{
|
||||||
|
default :
|
||||||
|
fprintf( stderr, "Internal warning number %d\n", Warning );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,91 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : RTD |
|
||||||
|
| |
|
||||||
|
| File : rtderror.c |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 01.01.95 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTD_ERROR_H
|
||||||
|
# define RTD_ERROR_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define RTD_ERROR_OPEN_FILE 1
|
||||||
|
# define RTD_ERROR_PARSE_FILE 2
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Warnings |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define rtderror( E, T, V ) (rtd_error ( (E), (T), (V), __FILE__, __LINE__ ))
|
||||||
|
# define rtdwarning( E, T, V ) (rtd_warning( (E), (T), (V), __FILE__, __LINE__ ))
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void rtd_error __P((int Error, char *Text, long Value, char *File, int Line));
|
||||||
|
extern void rtd_warning __P((int Warning, char *Text, long Value, char *File, int Line));
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,126 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library 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 : Vtl |
|
||||||
|
| |
|
||||||
|
| File : rtd_get.c |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <unistd.h>
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include VEX_H
|
||||||
|
# include RTN_H
|
||||||
|
# include RTD_H
|
||||||
|
|
||||||
|
# include "rtd_get.h"
|
||||||
|
# include "rtd_error.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
char *RTL_IN;
|
||||||
|
char *RTL_OUT;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| rtlenv |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void rtlenv()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| getrtlfig |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfig_list *getrtlfig( Name )
|
||||||
|
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
char *FigName;
|
||||||
|
|
||||||
|
FigName = namealloc( Name );
|
||||||
|
|
||||||
|
for ( Figure = HEAD_RTLFIG;
|
||||||
|
Figure != (rtlfig_list *)0;
|
||||||
|
Figure = Figure->NEXT )
|
||||||
|
{
|
||||||
|
if ( Figure->NAME == FigName ) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Figure == (rtlfig_list *)0 )
|
||||||
|
{
|
||||||
|
Figure = addrtlfig( Name );
|
||||||
|
|
||||||
|
loadrtlfig( Figure, Name );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( Figure );
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : RTD |
|
||||||
|
| |
|
||||||
|
| File : rtdget.c |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 01.01.95 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTD_GET_H
|
||||||
|
# define RTD_GET_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,704 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library 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 : RTD |
|
||||||
|
| |
|
||||||
|
| File : rtd_parse.c |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 01.01.95 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include VEX_H
|
||||||
|
# include RTN_H
|
||||||
|
# include RTD_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <string.h>
|
||||||
|
|
||||||
|
# include "rtd_error.h"
|
||||||
|
# include "rtd_parse.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static FILE *RtlFile;
|
||||||
|
static char RtlBuffer[ 512 ];
|
||||||
|
static long RtlLine;
|
||||||
|
|
||||||
|
static char *RtlKeyFigure = (char *)0;
|
||||||
|
static char *RtlKeyDeclar = (char *)0;
|
||||||
|
static char *RtlKeyInit = (char *)0;
|
||||||
|
static char *RtlKeySymbol = (char *)0;
|
||||||
|
static char *RtlKeyAsg = (char *)0;
|
||||||
|
static char *RtlKeyAsgData = (char *)0;
|
||||||
|
static char *RtlKeyAsgAtom = (char *)0;
|
||||||
|
static char *RtlKeyAsgBiVex = (char *)0;
|
||||||
|
static char *RtlKeyBiVexCond = (char *)0;
|
||||||
|
static char *RtlKeyBiVexData = (char *)0;
|
||||||
|
static char *RtlKeyInstance = (char *)0;
|
||||||
|
static char *RtlKeyInsMod = (char *)0;
|
||||||
|
static char *RtlKeyMap = (char *)0;
|
||||||
|
static char *RtlKeyMapFor = (char *)0;
|
||||||
|
static char *RtlKeyMapAct = (char *)0;
|
||||||
|
static char *RtlKeyModel = (char *)0;
|
||||||
|
static char *RtlKeyPort = (char *)0;
|
||||||
|
static char *RtlKeyGenMod = (char *)0;
|
||||||
|
static char *RtlKeyGenMap = (char *)0;
|
||||||
|
static char *RtlKeyGenExpr = (char *)0;
|
||||||
|
|
||||||
|
static char *RtlScanString = (char *)0;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlInitKeyword |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void RtlInitKeyword()
|
||||||
|
{
|
||||||
|
if ( RtlKeyFigure == (char *)0 )
|
||||||
|
{
|
||||||
|
RtlKeyFigure = namealloc( "FIGURE" );
|
||||||
|
RtlKeyDeclar = namealloc( "DECLAR" );
|
||||||
|
RtlKeyInit = namealloc( "INIT" );
|
||||||
|
RtlKeySymbol = namealloc( "SYMBOL" );
|
||||||
|
RtlKeyAsg = namealloc( "ASG" );
|
||||||
|
RtlKeyAsgData = namealloc( "ASG_DATA" );
|
||||||
|
RtlKeyAsgAtom = namealloc( "ASG_ATOM" );
|
||||||
|
RtlKeyAsgBiVex = namealloc( "ASG_BIVEX" );
|
||||||
|
RtlKeyBiVexCond = namealloc( "BIVEX_COND" );
|
||||||
|
RtlKeyBiVexData = namealloc( "BIVEX_DATA" );
|
||||||
|
RtlKeyInstance = namealloc( "INSTANCE" );
|
||||||
|
RtlKeyInsMod = namealloc( "INS_MOD" );
|
||||||
|
RtlKeyMap = namealloc( "MAP" );
|
||||||
|
RtlKeyMapFor = namealloc( "MAP_FOR" );
|
||||||
|
RtlKeyMapAct = namealloc( "MAP_ACT" );
|
||||||
|
RtlKeyModel = namealloc( "MODEL" );
|
||||||
|
RtlKeyPort = namealloc( "PORT" );
|
||||||
|
RtlKeyGenMap = namealloc( "GEN_MAP" );
|
||||||
|
RtlKeyGenMod = namealloc( "GEN_MOD" );
|
||||||
|
RtlKeyGenExpr = namealloc( "GEN_EXPR" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Read Name File |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static char *RtlReadNameFile( Line )
|
||||||
|
|
||||||
|
long Line;
|
||||||
|
{
|
||||||
|
char *Name;
|
||||||
|
char SaveChar;
|
||||||
|
|
||||||
|
while ( ( RtlScanString == (char *)0 ) ||
|
||||||
|
( *RtlScanString == '\0' ) ||
|
||||||
|
( *RtlScanString == '\n' ) )
|
||||||
|
{
|
||||||
|
if ( fgets( RtlBuffer, 512, RtlFile ) == (char *)0 )
|
||||||
|
{
|
||||||
|
return( (char *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlScanString = RtlBuffer;
|
||||||
|
RtlLine = RtlLine + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( *RtlScanString == '~' ) ||
|
||||||
|
( *RtlScanString == '(' ) ||
|
||||||
|
( *RtlScanString == ')' ) )
|
||||||
|
{
|
||||||
|
return( RtlScanString );
|
||||||
|
}
|
||||||
|
|
||||||
|
Name = RtlScanString;
|
||||||
|
|
||||||
|
while ( ( *RtlScanString != '~' ) &&
|
||||||
|
( *RtlScanString != ')' ) &&
|
||||||
|
( *RtlScanString != '\0' ) &&
|
||||||
|
( *RtlScanString != '\n' ) )
|
||||||
|
{
|
||||||
|
RtlScanString = RtlScanString + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SaveChar = *RtlScanString;
|
||||||
|
*RtlScanString = '\0';
|
||||||
|
Name = namealloc( Name );
|
||||||
|
*RtlScanString = SaveChar;
|
||||||
|
|
||||||
|
return( Name );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Read Prefix Expr |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static vexexpr *RtlReadPrefixExpr()
|
||||||
|
{
|
||||||
|
vexexpr *Expr;
|
||||||
|
chain_list **PrevOper;
|
||||||
|
chain_list *ScanOper;
|
||||||
|
vexexpr *ExprStr;
|
||||||
|
char *Name;
|
||||||
|
char *Scan;
|
||||||
|
long Oper;
|
||||||
|
long Left;
|
||||||
|
long Right;
|
||||||
|
long Type;
|
||||||
|
|
||||||
|
Scan = RtlReadNameFile();
|
||||||
|
|
||||||
|
if ( ( Scan == (char *)0 ) ||
|
||||||
|
( *Scan == '~' ) ||
|
||||||
|
( *Scan == ')' ) )
|
||||||
|
{
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( *RtlScanString == '(' )
|
||||||
|
{
|
||||||
|
RtlScanString = RtlScanString + 1;
|
||||||
|
Name = RtlReadNameFile();
|
||||||
|
|
||||||
|
if ( ( Name == (char *)0 ) ||
|
||||||
|
( Name[ 0 ] != '{' ) )
|
||||||
|
{
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Scan = strchr( Name, '}' );
|
||||||
|
|
||||||
|
if ( Scan == (char *)0 )
|
||||||
|
{
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
sscanf( Name, "{%ld,%ld,%lx}", &Left, &Right, &Type );
|
||||||
|
Name = Scan + 1;
|
||||||
|
|
||||||
|
Oper = getvexoperbyname( Name );
|
||||||
|
Scan = RtlReadNameFile();
|
||||||
|
|
||||||
|
if ( Scan == (char *)0 )
|
||||||
|
{
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( *RtlScanString == ')' )
|
||||||
|
{
|
||||||
|
if ( Oper == -1 )
|
||||||
|
{
|
||||||
|
Expr = createvexatomvec( Name, Left, Right );
|
||||||
|
Expr->TYPE = Type;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( *RtlScanString == '~' )
|
||||||
|
{
|
||||||
|
RtlScanString = RtlScanString + 1;
|
||||||
|
|
||||||
|
if ( Oper == -1 )
|
||||||
|
{
|
||||||
|
Expr = createvexfunc( Name, 0 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Expr = createvexoper( Oper, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Expr->LEFT = Left;
|
||||||
|
Expr->RIGHT = Right;
|
||||||
|
Expr->TYPE = Type;
|
||||||
|
|
||||||
|
if ( Left > Right ) Expr->WIDTH = ( Left - Right ) + 1;
|
||||||
|
else Expr->WIDTH = ( Right - Left ) + 1;
|
||||||
|
|
||||||
|
PrevOper = &Expr->OPERAND;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
ExprStr = RtlReadPrefixExpr();
|
||||||
|
|
||||||
|
if ( ExprStr == (vexexpr *)0 )
|
||||||
|
{
|
||||||
|
freevexexpr( Expr );
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
ScanOper = addchain( (chain_list *)0, (void *)ExprStr );
|
||||||
|
*PrevOper = ScanOper;
|
||||||
|
PrevOper = &ScanOper->NEXT;
|
||||||
|
|
||||||
|
Scan = RtlReadNameFile();
|
||||||
|
|
||||||
|
if ( Scan == (char *)0 )
|
||||||
|
{
|
||||||
|
freevexexpr( Expr );
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( *RtlScanString == '~' )
|
||||||
|
{
|
||||||
|
RtlScanString = RtlScanString + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while ( *RtlScanString != ')');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( *RtlScanString == ')' )
|
||||||
|
{
|
||||||
|
RtlScanString = RtlScanString + 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
freevexexpr( Expr );
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Name = Scan;
|
||||||
|
|
||||||
|
if ( ( Name == (char *)0 ) ||
|
||||||
|
( Name[ 0 ] != '{' ) )
|
||||||
|
{
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Scan = strchr( Name, '}' );
|
||||||
|
|
||||||
|
if ( Scan == (char *)0 )
|
||||||
|
{
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
sscanf( Name, "{%ld,%ld,%lx}", &Left, &Right, &Type );
|
||||||
|
Name = Scan + 1;
|
||||||
|
|
||||||
|
Oper = getvexoperbyname( Name );
|
||||||
|
|
||||||
|
if ( Oper == -1 )
|
||||||
|
{
|
||||||
|
Expr = createvexatomvec( Name, Left, Right );
|
||||||
|
Expr->TYPE = Type;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return( (vexexpr *)0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return( Expr );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlReadExpr |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static vexexpr *RtlReadExpr()
|
||||||
|
{
|
||||||
|
RtlScanString = (char *)0;
|
||||||
|
|
||||||
|
return( RtlReadPrefixExpr() );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| RtlLoadFigure |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static int RtlLoadFigure( RtlFigure )
|
||||||
|
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
{
|
||||||
|
rtldecl_list *RtlDeclar;
|
||||||
|
rtlasg_list *RtlAsg;
|
||||||
|
rtlgen_list *RtlGen;
|
||||||
|
rtlbivex_list *RtlBiVex;
|
||||||
|
rtlsym *RtlSymbol;
|
||||||
|
rtlmod_list *RtlModel;
|
||||||
|
rtlport_list *RtlPort;
|
||||||
|
rtlins_list *RtlInst;
|
||||||
|
rtlmap_list *RtlMap;
|
||||||
|
vexexpr *Expr;
|
||||||
|
vexexpr *Atom;
|
||||||
|
char *ScanBuffer;
|
||||||
|
char *Keyword;
|
||||||
|
char *Name;
|
||||||
|
int Index;
|
||||||
|
int Length;
|
||||||
|
int Error;
|
||||||
|
long Value1;
|
||||||
|
long Value2;
|
||||||
|
long Value3;
|
||||||
|
long Value4;
|
||||||
|
long Value5;
|
||||||
|
long Value6;
|
||||||
|
|
||||||
|
RtlInitKeyword();
|
||||||
|
|
||||||
|
RtlDeclar = (rtldecl_list *)0;
|
||||||
|
RtlSymbol = (rtlsym *)0;
|
||||||
|
RtlAsg = (rtlasg_list *)0;
|
||||||
|
RtlBiVex = (rtlbivex_list *)0;
|
||||||
|
|
||||||
|
RtlLine = 0;
|
||||||
|
|
||||||
|
while ( fgets( RtlBuffer, 512, RtlFile ) != (char *)0 )
|
||||||
|
{
|
||||||
|
RtlLine = RtlLine + 1;
|
||||||
|
|
||||||
|
if ( ( RtlBuffer[ 0 ] == '#' ) ||
|
||||||
|
( RtlBuffer[ 0 ] == '\0' ) ||
|
||||||
|
( RtlBuffer[ 0 ] == '\n' ) ) continue;
|
||||||
|
|
||||||
|
Length = strlen( RtlBuffer );
|
||||||
|
if ( RtlBuffer[ Length - 1 ] == '\n' )
|
||||||
|
{
|
||||||
|
Length = Length - 1;
|
||||||
|
RtlBuffer[ Length ] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( Index = Length; Index >= 0; Index-- )
|
||||||
|
{
|
||||||
|
if ( RtlBuffer[ Index ] == '\t' ) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Index < 0 ) return( 1 );
|
||||||
|
Name = &RtlBuffer[ Index + 1 ];
|
||||||
|
|
||||||
|
ScanBuffer = strchr( RtlBuffer, '\t' );
|
||||||
|
if ( ScanBuffer == (char *)0 ) return( 1 );
|
||||||
|
|
||||||
|
*ScanBuffer = '\0';
|
||||||
|
Keyword = namealloc( RtlBuffer );
|
||||||
|
ScanBuffer = ScanBuffer + 1;
|
||||||
|
|
||||||
|
if ( Keyword == RtlKeyAsgBiVex )
|
||||||
|
{
|
||||||
|
Error = 2 - sscanf( ScanBuffer, "%ld\t%ld",
|
||||||
|
&Value1, &Value2 );
|
||||||
|
|
||||||
|
RtlBiVex = addrtlasgbivex( RtlFigure, RtlAsg, (vexexpr *)0, (vexexpr *)0, Value1 );
|
||||||
|
RtlBiVex->FLAGS = Value2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyBiVexData )
|
||||||
|
{
|
||||||
|
Expr = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Expr == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlBiVex->VEX_DATA = Expr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyBiVexCond )
|
||||||
|
{
|
||||||
|
Expr = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Expr == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlBiVex->VEX_COND = Expr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyAsg )
|
||||||
|
{
|
||||||
|
Error = 3 - sscanf( ScanBuffer, "%ld\t%ld\t%ld",
|
||||||
|
&Value1, &Value2, &Value3 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
RtlAsg = addrtlasg( RtlFigure, (vexexpr *)0, Value1 );
|
||||||
|
RtlAsg->REG_TYPE = Value2;
|
||||||
|
RtlAsg->FLAGS = Value3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyAsgData )
|
||||||
|
{
|
||||||
|
Expr = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Expr == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlAsg->VEX_DATA = Expr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyAsgAtom )
|
||||||
|
{
|
||||||
|
Atom = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Atom == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlAsg->VEX_ATOM = Atom;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyDeclar )
|
||||||
|
{
|
||||||
|
Error = 5 - sscanf( ScanBuffer, "%ld\t%ld\t%ld\t%ld\t%ld",
|
||||||
|
&Value1, &Value2, &Value3, &Value4, &Value5 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
Atom = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Atom == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlDeclar = addrtldecl( RtlFigure, Atom, Value2 );
|
||||||
|
|
||||||
|
RtlDeclar->DIR = Value1;
|
||||||
|
RtlDeclar->TYPE = Value2;
|
||||||
|
RtlDeclar->KIND = Value3;
|
||||||
|
RtlDeclar->BASE = Value4;
|
||||||
|
RtlDeclar->FLAGS = Value5;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyInit )
|
||||||
|
{
|
||||||
|
Expr = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Expr == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlDeclar->VEX_INIT = Expr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeySymbol )
|
||||||
|
{
|
||||||
|
Error = 6 - sscanf( ScanBuffer, "%ld\t%ld\t%ld\t%ld\t%ld\t%ld",
|
||||||
|
&Value1, &Value2, &Value3, &Value4, &Value5, &Value6 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
RtlSymbol = searchrtlsym( RtlFigure, Name, Value1 );
|
||||||
|
|
||||||
|
RtlSymbol->INIT = Value2;
|
||||||
|
RtlSymbol->DRIVE = Value3;
|
||||||
|
RtlSymbol->EFFEC = Value4;
|
||||||
|
RtlSymbol->EVENT = Value5;
|
||||||
|
RtlSymbol->FLAGS = Value6;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyInstance )
|
||||||
|
{
|
||||||
|
Error = 1 - sscanf( ScanBuffer, "%ld", &Value1 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
RtlInst = addrtlins( RtlFigure, Name, (rtlmod_list *)0 );
|
||||||
|
|
||||||
|
RtlInst->FLAGS = Value1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyInsMod )
|
||||||
|
{
|
||||||
|
RtlModel = searchrtlmod( RtlFigure, Name );
|
||||||
|
|
||||||
|
if ( RtlModel == (rtlmod_list *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlInst->MODEL = RtlModel;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyMap )
|
||||||
|
{
|
||||||
|
Error = 1 - sscanf( ScanBuffer, "%ld", &Value1 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
RtlMap = addrtlinsmap( RtlFigure, RtlInst, (vexexpr *)0, (vexexpr *)0 );
|
||||||
|
|
||||||
|
RtlMap->FLAGS = Value1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyMapFor )
|
||||||
|
{
|
||||||
|
Atom = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Atom == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlMap->VEX_FORMAL = Atom;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyMapAct )
|
||||||
|
{
|
||||||
|
Atom = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Atom == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlMap->VEX_ACTUAL = Atom;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyModel )
|
||||||
|
{
|
||||||
|
Error = 1 - sscanf( ScanBuffer, "%ld", &Value1 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
RtlModel = addrtlmod( RtlFigure, Name );
|
||||||
|
|
||||||
|
RtlModel->FLAGS = Value1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyPort )
|
||||||
|
{
|
||||||
|
Error = 3 - sscanf( ScanBuffer, "%ld\t%ld\t%ld", &Value1, &Value2, &Value3 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
Atom = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Atom == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlPort = addrtlmodport( RtlFigure, RtlModel, Atom, Value2, Value1 );
|
||||||
|
RtlPort->FLAGS = Value3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyFigure )
|
||||||
|
{
|
||||||
|
Error = 1 - sscanf( ScanBuffer, "%ld",
|
||||||
|
&Value1 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
RtlFigure->NAME = namealloc( Name );
|
||||||
|
RtlFigure->FLAGS = Value1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyGenMap )
|
||||||
|
{
|
||||||
|
Error = 2 - sscanf( ScanBuffer, "%ld\t%ld", &Value1, &Value2 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
Atom = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Atom == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlGen = addrtlinsgen( RtlFigure, RtlInst, Atom, (vexexpr *)0 );
|
||||||
|
|
||||||
|
RtlGen->BASE = Value1;
|
||||||
|
RtlGen->FLAGS = Value2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyGenMod )
|
||||||
|
{
|
||||||
|
Error = 2 - sscanf( ScanBuffer, "%ld\t%ld", &Value1, &Value2 );
|
||||||
|
|
||||||
|
if ( Error ) return( 1 );
|
||||||
|
|
||||||
|
Atom = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Atom == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlGen = addrtlmodgen( RtlFigure, RtlModel, Atom, (vexexpr *)0, Value1 );
|
||||||
|
|
||||||
|
RtlGen->FLAGS = Value2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( Keyword == RtlKeyGenExpr )
|
||||||
|
{
|
||||||
|
Expr = RtlReadExpr();
|
||||||
|
|
||||||
|
if ( Expr == (vexexpr *)0 ) return( 1 );
|
||||||
|
|
||||||
|
RtlGen->VEX_EXPR = Expr;
|
||||||
|
}
|
||||||
|
else return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| loadrtlfig |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void loadrtlfig( RtlFigure, FigureName )
|
||||||
|
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
char *FigureName;
|
||||||
|
{
|
||||||
|
int Value;
|
||||||
|
|
||||||
|
RtlFile = mbkfopen( FigureName, "rtl", "r" );
|
||||||
|
|
||||||
|
if ( RtlFile == (FILE *)0 )
|
||||||
|
{
|
||||||
|
rtderror( RTD_ERROR_OPEN_FILE, FigureName, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Value = RtlLoadFigure( RtlFigure );
|
||||||
|
|
||||||
|
if ( Value ) rtderror( RTD_ERROR_PARSE_FILE, FigureName, RtlLine );
|
||||||
|
|
||||||
|
fclose( RtlFile );
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : RTD |
|
||||||
|
| |
|
||||||
|
| File : vpdparse.c |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 01.01.95 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTD_PARSE_H
|
||||||
|
# define RTD_PARSE_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
Loading…
Reference in New Issue