Hello
This commit is contained in:
parent
b967e9a7c0
commit
69af127fa0
|
@ -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:23:28 ludo Exp $
|
||||||
|
dnl
|
||||||
|
dnl
|
||||||
|
AC_INIT(src/rtn.h)
|
||||||
|
AM_INIT_AUTOMAKE(rtn, 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,8 @@
|
||||||
|
CFLAGS = @CFLAGS@ \
|
||||||
|
-DALLIANCE_TOP=\"${ALLIANCE_TOP}\"
|
||||||
|
lib_LIBRARIES = libRtn.a
|
||||||
|
include_HEADERS = rtn.h
|
||||||
|
libRtn_a_SOURCES = \
|
||||||
|
rtnadd.h rtndel.c rtnerror.h rtnget.c rtnsearch.h \
|
||||||
|
rtn.h rtnalloc.c rtndel.h rtnfree.c rtnget.h rtnview.c \
|
||||||
|
rtnadd.c rtnalloc.h rtnerror.c rtnfree.h rtnsearch.c rtnview.h
|
|
@ -0,0 +1,164 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtn |
|
||||||
|
| |
|
||||||
|
| File : main.c |
|
||||||
|
| |
|
||||||
|
| Date : 08.02.95 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <string.h>
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "vex.h"
|
||||||
|
# include "rtn.h"
|
||||||
|
# include "rtd.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Usage |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void RtlUsage()
|
||||||
|
{
|
||||||
|
fprintf( stderr, "\t\trtntest [Options] Input_name [Output_name]\n\n" );
|
||||||
|
fprintf( stdout, "\t\tOptions : -V Sets Verbose mode on\n" );
|
||||||
|
fprintf( stdout, "\t\t -S Saves Rtl figure\n" );
|
||||||
|
fprintf( stdout, "\n" );
|
||||||
|
|
||||||
|
exit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int main( argc, argv )
|
||||||
|
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
rtlfig_list *RtlFigure;
|
||||||
|
char *InputFileName;
|
||||||
|
char *OutputFileName;
|
||||||
|
int Number;
|
||||||
|
int Index;
|
||||||
|
char Option;
|
||||||
|
|
||||||
|
int FlagVerbose = 0;
|
||||||
|
int FlagSave = 0;
|
||||||
|
|
||||||
|
mbkenv();
|
||||||
|
autenv();
|
||||||
|
vexenv();
|
||||||
|
rtlenv();
|
||||||
|
|
||||||
|
InputFileName = (char *)0;
|
||||||
|
OutputFileName = (char *)0;
|
||||||
|
|
||||||
|
if ( argc < 2 ) RtlUsage();
|
||||||
|
|
||||||
|
InputFileName = (char *)0;
|
||||||
|
|
||||||
|
for ( Number = 1; Number < argc; Number++ )
|
||||||
|
{
|
||||||
|
if ( argv[ Number ][ 0 ] == '-' )
|
||||||
|
{
|
||||||
|
for ( Index = 1; argv[ Number ][ Index ] != '\0'; Index++ )
|
||||||
|
{
|
||||||
|
Option = argv[ Number ][ Index ];
|
||||||
|
|
||||||
|
switch ( Option )
|
||||||
|
{
|
||||||
|
case 'V' : FlagVerbose = 1;
|
||||||
|
break;
|
||||||
|
case 'S' : FlagSave = 1;
|
||||||
|
break;
|
||||||
|
default : RtlUsage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( InputFileName == (char *)0 ) InputFileName = argv[ Number ];
|
||||||
|
else
|
||||||
|
if ( OutputFileName == (char *)0 ) OutputFileName = argv[ Number ];
|
||||||
|
else
|
||||||
|
RtlUsage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( InputFileName == (char *)0 ) RtlUsage();
|
||||||
|
if ( OutputFileName == (char *)0 ) OutputFileName = InputFileName;
|
||||||
|
|
||||||
|
if ( ( FlagSave ) && ( InputFileName == OutputFileName ) )
|
||||||
|
{
|
||||||
|
RtlUsage();
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlFigure = getrtlfig( InputFileName );
|
||||||
|
|
||||||
|
if ( FlagVerbose ) viewrtlfig( RtlFigure );
|
||||||
|
|
||||||
|
if ( FlagSave )
|
||||||
|
{
|
||||||
|
RtlFigure->NAME = namealloc( OutputFileName );
|
||||||
|
savertlfig( RtlFigure );
|
||||||
|
}
|
||||||
|
|
||||||
|
delrtlfig( RtlFigure->NAME );
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
|
@ -0,0 +1,542 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : RTL |
|
||||||
|
| |
|
||||||
|
| File : rtn101.h |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 25.08.97 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTN_101_H
|
||||||
|
# define RTN_101_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Direction |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define RTL_DIR_IN 0
|
||||||
|
# define RTL_DIR_OUT 1
|
||||||
|
# define RTL_DIR_INOUT 2
|
||||||
|
# define RTL_MAX_DIR_TYPE 3
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Kind |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define RTL_KIND_NONE 0
|
||||||
|
# define RTL_KIND_BUS 1
|
||||||
|
# define RTL_KIND_REGISTER 2
|
||||||
|
# define RTL_MAX_KIND_TYPE 3
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Declar Type |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define RTL_DECLAR_PORT 0
|
||||||
|
# define RTL_DECLAR_SIGNAL 1
|
||||||
|
# define RTL_DECLAR_CONSTANT 2
|
||||||
|
# define RTL_DECLAR_GENERIC 3
|
||||||
|
# define RTL_MAX_DECLAR_TYPE 4
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Assgin Type |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define RTL_ASG_COMBINATORIAL 0
|
||||||
|
# define RTL_ASG_MULTIPLEXOR 1
|
||||||
|
# define RTL_ASG_CONDITIONAL 2
|
||||||
|
# define RTL_ASG_REGISTER 3
|
||||||
|
# define RTL_ASG_TRISTATE 4
|
||||||
|
# define RTL_ASG_PULL_UP 5
|
||||||
|
# define RTL_ASG_PULL_DOWN 6
|
||||||
|
# define RTL_MAX_ASG_TYPE 7
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Assgin Register Type |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define RTL_ASG_REGISTER_NONE 0
|
||||||
|
# define RTL_ASG_REGISTER_SYNC 1
|
||||||
|
# define RTL_ASG_REGISTER_ASYNC 2
|
||||||
|
# define RTL_ASG_REGISTER_MIXED 3
|
||||||
|
# define RTL_MAX_ASG_REGISTER_TYPE 4
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Bi Vex Type |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define RTL_BIVEX_NONE 0
|
||||||
|
# define RTL_BIVEX_FALLING_EDGE 1
|
||||||
|
# define RTL_BIVEX_RISING_EDGE 2
|
||||||
|
# define RTL_BIVEX_ASYNC_RESET 3
|
||||||
|
# define RTL_BIVEX_ASYNC_SET 4
|
||||||
|
# define RTL_BIVEX_ASYNC_WEN 5
|
||||||
|
# define RTL_BIVEX_SYNC_RESET 6
|
||||||
|
# define RTL_BIVEX_SYNC_SET 7
|
||||||
|
# define RTL_BIVEX_SYNC_WEN 8
|
||||||
|
# define RTL_BIVEX_MULTIPLEXOR 9
|
||||||
|
# define RTL_BIVEX_CONDITIONAL 10
|
||||||
|
# define RTL_MAX_BIVEX_TYPE 11
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Fsm Type |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define RTL_FSM_STANDARD 0
|
||||||
|
# define RTL_FSM_REGOUT 1
|
||||||
|
# define RTL_MAX_FSM_TYPE 2
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define GetRtlFsmTrans( C ) ((rtlfsmtrans_list *)((C)->DATA))
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Symbol |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlsym
|
||||||
|
{
|
||||||
|
char *NAME;
|
||||||
|
struct rtldecl_list *DECL;
|
||||||
|
short INDEX;
|
||||||
|
unsigned char INIT;
|
||||||
|
unsigned char DRIVE;
|
||||||
|
unsigned char EFFEC;
|
||||||
|
unsigned char EVENT;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlsym;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Declaration |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtldecl_list
|
||||||
|
{
|
||||||
|
struct rtldecl_list *NEXT;
|
||||||
|
vexexpr *VEX_ATOM;
|
||||||
|
vexexpr *VEX_INIT;
|
||||||
|
rtlsym *DECL_SYM;
|
||||||
|
unsigned char DIR;
|
||||||
|
unsigned char TYPE;
|
||||||
|
unsigned char KIND;
|
||||||
|
unsigned char BASE;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtldecl_list;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Bi Vex |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlbivex_list
|
||||||
|
{
|
||||||
|
struct rtlbivex_list *NEXT;
|
||||||
|
unsigned char TYPE;
|
||||||
|
vexexpr *VEX_COND;
|
||||||
|
vexexpr *VEX_DATA;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlbivex_list;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Assignment |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlasg_list
|
||||||
|
{
|
||||||
|
struct rtlasg_list *NEXT;
|
||||||
|
struct rtlasg_list **PREV;
|
||||||
|
vexexpr *VEX_ATOM;
|
||||||
|
vexexpr *VEX_DATA;
|
||||||
|
rtlbivex_list *BIVEX;
|
||||||
|
rtlbivex_list **LAST_BIVEX;
|
||||||
|
unsigned char TYPE;
|
||||||
|
unsigned char REG_TYPE;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlasg_list;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Fsm Assignment |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlfsmasg_list
|
||||||
|
{
|
||||||
|
struct rtlfsmasg_list *NEXT;
|
||||||
|
vexexpr *VEX_ATOM;
|
||||||
|
vexexpr *VEX_DATA;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlfsmasg_list;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Fsm State |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlfsmstate_list
|
||||||
|
{
|
||||||
|
struct rtlfsmstate_list *NEXT;
|
||||||
|
char *NAME;
|
||||||
|
chain_list *FROM;
|
||||||
|
chain_list *TO;
|
||||||
|
rtlfsmasg_list *ASSIGN;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlfsmstate_list;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Fsm Transition |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlfsmtrans_list
|
||||||
|
{
|
||||||
|
struct rtlfsmtrans_list *NEXT;
|
||||||
|
struct rtlfsmstate_list *FROM;
|
||||||
|
struct rtlfsmstate_list *TO;
|
||||||
|
rtlfsmasg_list *ASSIGN;
|
||||||
|
vexexpr *VEX_COND;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlfsmtrans_list;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Fsm |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlfsm_list
|
||||||
|
{
|
||||||
|
struct rtlfsm_list *NEXT;
|
||||||
|
char *NAME;
|
||||||
|
rtlfsmstate_list *STATE;
|
||||||
|
rtlfsmtrans_list *TRANS;
|
||||||
|
authtable *HASH_STATE;
|
||||||
|
rtlbivex_list *BIVEX;
|
||||||
|
rtlbivex_list **LAST_BIVEX;
|
||||||
|
unsigned char TYPE;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlfsm_list;
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Model |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlgen_list
|
||||||
|
{
|
||||||
|
struct rtlgen_list *NEXT;
|
||||||
|
vexexpr *VEX_ATOM;
|
||||||
|
vexexpr *VEX_EXPR;
|
||||||
|
unsigned char BASE;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlgen_list;
|
||||||
|
|
||||||
|
typedef struct rtlport_list
|
||||||
|
{
|
||||||
|
struct rtlport_list *NEXT;
|
||||||
|
vexexpr *VEX_ATOM;
|
||||||
|
unsigned char DIR;
|
||||||
|
unsigned char BASE;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlport_list;
|
||||||
|
|
||||||
|
typedef struct rtlmod_list
|
||||||
|
{
|
||||||
|
struct rtlmod_list *NEXT;
|
||||||
|
char *NAME;
|
||||||
|
rtlport_list *PORT;
|
||||||
|
rtlgen_list *GENERIC;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlmod_list;
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Instance |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlmap_list
|
||||||
|
{
|
||||||
|
struct rtlmap_list *NEXT;
|
||||||
|
vexexpr *VEX_FORMAL;
|
||||||
|
vexexpr *VEX_ACTUAL;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlmap_list;
|
||||||
|
|
||||||
|
typedef struct rtlins_list
|
||||||
|
{
|
||||||
|
struct rtlins_list *NEXT;
|
||||||
|
char *NAME;
|
||||||
|
rtlmod_list *MODEL;
|
||||||
|
rtlmap_list *MAP;
|
||||||
|
rtlgen_list *GENERIC;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlins_list;
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Figure |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct rtlfig_list
|
||||||
|
{
|
||||||
|
struct rtlfig_list *NEXT;
|
||||||
|
char *NAME;
|
||||||
|
rtlasg_list *ASSIGN;
|
||||||
|
rtlfsm_list *FSM;
|
||||||
|
rtlmod_list *MODEL;
|
||||||
|
rtlins_list *INSTANCE;
|
||||||
|
rtldecl_list *DECLAR[ RTL_MAX_DECLAR_TYPE ];
|
||||||
|
authtable *HASH_DECLAR;
|
||||||
|
authtable *HASH_MODEL;
|
||||||
|
authtable *HASH_INSTANCE;
|
||||||
|
long FLAGS;
|
||||||
|
void *USER;
|
||||||
|
|
||||||
|
} rtlfig_list;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern rtlfig_list *HEAD_RTLFIG;
|
||||||
|
|
||||||
|
extern char *RTL_DECLAR_TYPE[ RTL_MAX_DECLAR_TYPE ];
|
||||||
|
extern char *RTL_KIND_TYPE[ RTL_MAX_KIND_TYPE ];
|
||||||
|
extern char *RTL_DIR_TYPE[ RTL_MAX_DIR_TYPE ];
|
||||||
|
extern char *RTL_BIVEX_TYPE[ RTL_MAX_BIVEX_TYPE ];
|
||||||
|
extern char *RTL_ASG_TYPE[ RTL_MAX_ASG_TYPE ];
|
||||||
|
extern char *RTL_ASG_REGISTER_TYPE[ RTL_MAX_ASG_REGISTER_TYPE ];
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Alloc Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern rtlfig_list *allocrtlfig __P(());
|
||||||
|
extern rtldecl_list *allocrtldecl __P(());
|
||||||
|
extern rtlsym *allocrtlsym __P((unsigned int Width));
|
||||||
|
extern rtlasg_list *allocrtlasg __P(());
|
||||||
|
extern rtlbivex_list *allocrtlbivex __P(());
|
||||||
|
extern rtlfsm_list *allocrtlfsm __P(());
|
||||||
|
extern rtlfsmtrans_list *allocrtlfsmtrans __P(());
|
||||||
|
extern rtlfsmstate_list *allocrtlfsmstate __P(());
|
||||||
|
extern rtlfsmasg_list *allocrtlfsmasg __P(());
|
||||||
|
|
||||||
|
extern rtlmod_list *allocrtlmod __P(());
|
||||||
|
extern rtlins_list *allocrtlins __P(());
|
||||||
|
extern rtlport_list *allocrtlport __P(());
|
||||||
|
extern rtlmap_list *allocrtlmap __P(());
|
||||||
|
extern rtlgen_list *allocrtlgen __P(());
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Free Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void freertlfig __P((rtlfig_list *Figure));
|
||||||
|
extern void freertlasg __P((rtlasg_list *Asg));
|
||||||
|
extern void freertlbivex __P((rtlbivex_list *BiVex));
|
||||||
|
extern void freertldecl __P((rtldecl_list *Decl));
|
||||||
|
extern void freertlsym __P((rtlsym *Sym));
|
||||||
|
extern void freertlfsmasg __P((rtlfsmasg_list *FsmAsg));
|
||||||
|
extern void freertlfsmstate __P((rtlfsmstate_list *fsmstate));
|
||||||
|
extern void freertlfsmtrans __P((rtlfsmtrans_list *fsmtrans));
|
||||||
|
extern void freertlfsm __P((rtlfsm_list *Fsm));
|
||||||
|
|
||||||
|
extern void freertlmod __P((rtlmod_list *Model));
|
||||||
|
extern void freertlins __P((rtlins_list *Instance));
|
||||||
|
extern void freertlport __P((rtlport_list *Port));
|
||||||
|
extern void freertlmap __P((rtlmap_list *Map));
|
||||||
|
extern void freertlgen __P((rtlgen_list *Generic));
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Add Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern rtlfig_list *addrtlfig __P((char *Name));
|
||||||
|
extern rtldecl_list *addrtldecl __P((rtlfig_list *Figure, vexexpr *Atom, int Type));
|
||||||
|
extern rtlasg_list *addrtlasg __P((rtlfig_list *Figure, vexexpr *VexAtom, int Type));
|
||||||
|
extern rtlasg_list *addrtlasgafter __P((rtlfig_list *Figure, rtlasg_list *PrevAssign, vexexpr *VexAtom, int Type));
|
||||||
|
extern rtlbivex_list *addrtlasgbivex __P((rtlfig_list *Figure, rtlasg_list *Assign, vexexpr *VexCond, vexexpr *VexData, int Type));
|
||||||
|
|
||||||
|
extern rtlfsmasg_list *addrtlfsmstateasg __P((rtlfig_list *Figure, rtlfsm_list *Fsm, rtlfsmstate_list *State, vexexpr *VexAtom, vexexpr *VexData));
|
||||||
|
extern rtlfsmasg_list *addrtlfsmtransasg __P((rtlfig_list *Figure, rtlfsm_list *Fsm, rtlfsmtrans_list *Trans, vexexpr *VexAtom, vexexpr *VexData));
|
||||||
|
extern rtlfsmtrans_list *addrtlfsmtrans __P((rtlfig_list *Figure, rtlfsm_list *Fsm, rtlfsmstate_list *StateFrom, rtlfsmstate_list *StateTo, vexexpr *VexCond));
|
||||||
|
extern rtlfsmstate_list *addrtlfsmstate __P((rtlfig_list *Figure, rtlfsm_list *Fsm, char *Name));
|
||||||
|
extern rtlfsm_list *addrtlfsm __P((rtlfig_list *Figure, char *Name));
|
||||||
|
extern rtlbivex_list *addrtlfsmbivex __P((rtlfig_list *Figure, rtlfsm_list *Fsm, vexexpr *VexCond, vexexpr *VexData, int Type));
|
||||||
|
|
||||||
|
extern rtlmod_list *addrtlmod __P((rtlfig_list *Figure, char *Name));
|
||||||
|
extern rtlport_list *addrtlmodport __P((rtlfig_list *Figure, rtlmod_list *Model, vexexpr *Atom, unsigned char Base, unsigned char Dir ));
|
||||||
|
extern rtlgen_list *addrtlmodgen __P((rtlfig_list *Figure, rtlmod_list *Model, vexexpr *Atom, vexexpr *Expr, unsigned char Base ));
|
||||||
|
extern rtlins_list *addrtlins __P((rtlfig_list *Figure, char *Name, rtlmod_list *Model));
|
||||||
|
extern rtlmap_list *addrtlinsmap __P((rtlfig_list *Figure, rtlins_list *Instance, vexexpr *Formal, vexexpr *Actual ));
|
||||||
|
extern rtlgen_list *addrtlinsgen __P((rtlfig_list *Figure, rtlins_list *Instance, vexexpr *Atom, vexexpr *Expr ));
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Del Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern int delrtlfig __P((char *Name));
|
||||||
|
extern int delrtlasg __P((rtlfig_list *Figure, rtlasg_list *Assign));
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Search Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern rtlfig_list *searchrtlfig __P((char *Name));
|
||||||
|
extern rtldecl_list *searchrtldecl __P((rtlfig_list *Figure, char *Name));
|
||||||
|
extern rtlsym *searchrtlsym __P((rtlfig_list *Figure, char *Name, short Index));
|
||||||
|
extern rtlfsmstate_list *searchrtlfsmstate __P((rtlfig_list *Figure, rtlfsm_list *Fsm, char *Name));
|
||||||
|
|
||||||
|
extern rtlmod_list *searchrtlmod __P((rtlfig_list *Figure, char *Name));
|
||||||
|
extern rtlins_list *searchrtlins __P((rtlfig_list *Figure, char *Name));
|
||||||
|
extern rtlport_list *searchrtlmodport __P((rtlfig_list *Figure, rtlmod_list *Model, char *Name));
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Get Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern rtlsym *getrtlsymdecl __P((rtldecl_list *Declar, short Index));
|
||||||
|
extern rtlsym *getrtlsymdeclpos __P((rtldecl_list *Declar, int Position));
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| View Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void viewrtlsym __P((rtlsym *Symbol));
|
||||||
|
extern void viewrtldecl __P((rtldecl_list *Decl));
|
||||||
|
extern void viewrtlbivex __P((rtlbivex_list *BiVex));
|
||||||
|
extern void viewrtlasg __P((rtlasg_list *Asg));
|
||||||
|
extern void viewrtlfig __P((rtlfig_list *Figure));
|
||||||
|
extern void viewrtlfsm __P((rtlfsm_list *Fsm));
|
||||||
|
|
||||||
|
extern void viewrtlins __P((rtlins_list *Instance));
|
||||||
|
extern void viewrtlmod __P((rtlmod_list *Model));
|
||||||
|
extern void viewrtlport __P((rtlport_list *Port));
|
||||||
|
extern void viewrtlmap __P((rtlmap_list *Map));
|
||||||
|
extern void viewrtlgen __P((rtlgen_list *Generic));
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,685 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtnadd.c |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "vex.h"
|
||||||
|
# include "rtn.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "rtnadd.h"
|
||||||
|
# include "rtnerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfig_list *HEAD_RTLFIG = (rtlfig_list *)0;
|
||||||
|
|
||||||
|
char *RTL_DECLAR_TYPE[ RTL_MAX_DECLAR_TYPE ] =
|
||||||
|
{
|
||||||
|
"PORT",
|
||||||
|
"SIGNAL",
|
||||||
|
"CONSTANT",
|
||||||
|
"GENERIC"
|
||||||
|
};
|
||||||
|
|
||||||
|
char *RTL_KIND_TYPE[ RTL_MAX_KIND_TYPE ] =
|
||||||
|
{
|
||||||
|
"NONE",
|
||||||
|
"BUS",
|
||||||
|
"REGISTER"
|
||||||
|
};
|
||||||
|
|
||||||
|
char *RTL_DIR_TYPE[ RTL_MAX_DIR_TYPE ] =
|
||||||
|
{
|
||||||
|
"IN",
|
||||||
|
"OUT",
|
||||||
|
"INOUT"
|
||||||
|
};
|
||||||
|
|
||||||
|
char *RTL_BIVEX_TYPE[ RTL_MAX_BIVEX_TYPE ] =
|
||||||
|
{
|
||||||
|
"NONE",
|
||||||
|
"FALLING_EDGE",
|
||||||
|
"RISING_EDGE",
|
||||||
|
"ASYNC_RESET",
|
||||||
|
"ASYNC_SET",
|
||||||
|
"ASYNC_WEN",
|
||||||
|
"SYNC_RESET",
|
||||||
|
"SYNC_SET",
|
||||||
|
"SYNC_WEN",
|
||||||
|
"MULTIPLEXOR",
|
||||||
|
"CONDITIONAL"
|
||||||
|
};
|
||||||
|
|
||||||
|
char *RTL_ASG_TYPE[ RTL_MAX_ASG_TYPE ] =
|
||||||
|
{
|
||||||
|
"COMBINATORIAL",
|
||||||
|
"MULTIPLEXOR",
|
||||||
|
"CONDITIONAL",
|
||||||
|
"REGISTER",
|
||||||
|
"TRISTATE",
|
||||||
|
"PULL_UP",
|
||||||
|
"PULL_DOWN"
|
||||||
|
};
|
||||||
|
|
||||||
|
char *RTL_ASG_REGISTER_TYPE[ RTL_MAX_ASG_REGISTER_TYPE ] =
|
||||||
|
{
|
||||||
|
"NONE",
|
||||||
|
"SYNC",
|
||||||
|
"ASYNC",
|
||||||
|
"MIXED"
|
||||||
|
};
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Figure |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfig_list *addrtlfig( Name )
|
||||||
|
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
Figure = allocrtlfig();
|
||||||
|
|
||||||
|
Figure->NAME = Name;
|
||||||
|
Figure->HASH_DECLAR = createauthtable( 50 );
|
||||||
|
Figure->HASH_MODEL = createauthtable( 50 );
|
||||||
|
Figure->HASH_INSTANCE = createauthtable( 50 );
|
||||||
|
|
||||||
|
Figure->NEXT = HEAD_RTLFIG;
|
||||||
|
HEAD_RTLFIG = Figure;
|
||||||
|
|
||||||
|
return( Figure );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Declaration |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtldecl_list *addrtldecl( Figure, Atom, Type )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
vexexpr *Atom;
|
||||||
|
int Type;
|
||||||
|
{
|
||||||
|
rtldecl_list *Decl;
|
||||||
|
rtldecl_list **PrevDecl;
|
||||||
|
rtlsym *Sym;
|
||||||
|
char *Name;
|
||||||
|
int Width;
|
||||||
|
int Index;
|
||||||
|
int IndexStep;
|
||||||
|
int Scan;
|
||||||
|
|
||||||
|
Name = GetVexAtomValue( Atom );
|
||||||
|
Decl = searchrtldecl( Figure, Name );
|
||||||
|
|
||||||
|
if ( Decl != (rtldecl_list *)0 )
|
||||||
|
{
|
||||||
|
rtlerror( RTL_DECLAR_EXIST_ERROR, Name, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( Type < 0 ) ||
|
||||||
|
( Type >= RTL_MAX_DECLAR_TYPE ) )
|
||||||
|
{
|
||||||
|
rtlerror( RTL_UNKNOWN_DECLAR_TYPE, Type, Name );
|
||||||
|
}
|
||||||
|
|
||||||
|
Decl = allocrtldecl();
|
||||||
|
|
||||||
|
Width = Atom->WIDTH;
|
||||||
|
Sym = allocrtlsym( Width );
|
||||||
|
|
||||||
|
if ( ( ! IsVexNodeVarWidth( Atom ) ) &&
|
||||||
|
( IsVexAtomVector( Atom ) ) )
|
||||||
|
{
|
||||||
|
Index = Atom->LEFT;
|
||||||
|
IndexStep = IsVexAtomDown( Atom ) ? -1 : 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Index = -1;
|
||||||
|
IndexStep = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( Scan = 0; Scan < Width; Scan++ )
|
||||||
|
{
|
||||||
|
Sym[ Scan ].NAME = Name;
|
||||||
|
Sym[ Scan ].INDEX = Index;
|
||||||
|
Sym[ Scan ].DECL = Decl;
|
||||||
|
|
||||||
|
Index += IndexStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
PrevDecl = &Figure->DECLAR[ Type ];
|
||||||
|
|
||||||
|
Decl->VEX_ATOM = Atom;
|
||||||
|
Decl->DECL_SYM = Sym;
|
||||||
|
Decl->TYPE = Type;
|
||||||
|
|
||||||
|
Decl->NEXT = Figure->DECLAR[ Type ];
|
||||||
|
Figure->DECLAR[ Type ] = Decl;
|
||||||
|
|
||||||
|
addauthelem( Figure->HASH_DECLAR, Name, (long)Decl );
|
||||||
|
|
||||||
|
return( Decl );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlasg_list *addrtlasg( Figure, VexAtom, Type )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
vexexpr *VexAtom;
|
||||||
|
int Type;
|
||||||
|
{
|
||||||
|
rtlasg_list *Assign;
|
||||||
|
|
||||||
|
Assign = allocrtlasg();
|
||||||
|
|
||||||
|
Assign->VEX_ATOM = VexAtom;
|
||||||
|
Assign->TYPE = Type;
|
||||||
|
Assign->LAST_BIVEX = &Assign->BIVEX;
|
||||||
|
|
||||||
|
Assign->NEXT = Figure->ASSIGN;
|
||||||
|
Assign->PREV = &Figure->ASSIGN;
|
||||||
|
|
||||||
|
if ( Figure->ASSIGN != (rtlasg_list *)0 )
|
||||||
|
{
|
||||||
|
Figure->ASSIGN->PREV = &Assign->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
Figure->ASSIGN = Assign;
|
||||||
|
|
||||||
|
return( Assign );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Assign After |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlasg_list *addrtlasgafter( Figure, PrevAssign, VexAtom, Type )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlasg_list *PrevAssign;
|
||||||
|
vexexpr *VexAtom;
|
||||||
|
int Type;
|
||||||
|
{
|
||||||
|
rtlasg_list *NextAssign;
|
||||||
|
rtlasg_list *Assign;
|
||||||
|
|
||||||
|
Assign = allocrtlasg();
|
||||||
|
|
||||||
|
Assign->VEX_ATOM = VexAtom;
|
||||||
|
Assign->TYPE = Type;
|
||||||
|
Assign->LAST_BIVEX = &Assign->BIVEX;
|
||||||
|
|
||||||
|
if ( PrevAssign == (rtlasg_list *)0 )
|
||||||
|
{
|
||||||
|
NextAssign = Figure->ASSIGN;
|
||||||
|
Figure->ASSIGN = Assign;
|
||||||
|
Assign->PREV = &Figure->ASSIGN;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NextAssign = PrevAssign->NEXT;
|
||||||
|
PrevAssign->NEXT = Assign;
|
||||||
|
Assign->PREV = &PrevAssign->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assign->NEXT = NextAssign;
|
||||||
|
|
||||||
|
if ( NextAssign != (rtlasg_list *)0 )
|
||||||
|
{
|
||||||
|
NextAssign->PREV = &Assign->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return( Assign );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Assign Bi Vex |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlbivex_list *addrtlasgbivex( Figure, Assign, VexCond, VexData, Type )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlasg_list *Assign;
|
||||||
|
vexexpr *VexCond;
|
||||||
|
vexexpr *VexData;
|
||||||
|
int Type;
|
||||||
|
{
|
||||||
|
rtlbivex_list *BiVex;
|
||||||
|
|
||||||
|
BiVex = allocrtlbivex();
|
||||||
|
|
||||||
|
BiVex->VEX_COND = VexCond;
|
||||||
|
BiVex->VEX_DATA = VexData;
|
||||||
|
BiVex->TYPE = Type;
|
||||||
|
|
||||||
|
*Assign->LAST_BIVEX = BiVex;
|
||||||
|
Assign->LAST_BIVEX = &BiVex->NEXT;
|
||||||
|
|
||||||
|
return( BiVex );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Fsm State Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsmasg_list *addrtlfsmstateasg( Figure, Fsm, State, VexAtom, VexData )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
rtlfsmstate_list *State;
|
||||||
|
vexexpr *VexAtom;
|
||||||
|
vexexpr *VexData;
|
||||||
|
{
|
||||||
|
rtlfsmasg_list *Assign;
|
||||||
|
|
||||||
|
Assign = allocrtlfsmasg();
|
||||||
|
|
||||||
|
Assign->VEX_ATOM = VexAtom;
|
||||||
|
Assign->VEX_DATA = VexData;
|
||||||
|
|
||||||
|
Assign->NEXT = State->ASSIGN;
|
||||||
|
State->ASSIGN = Assign;
|
||||||
|
|
||||||
|
return( Assign );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Fsm Trans Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsmasg_list *addrtlfsmtransasg( Figure, Fsm, Trans, VexAtom, VexData )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
rtlfsmtrans_list *Trans;
|
||||||
|
vexexpr *VexAtom;
|
||||||
|
vexexpr *VexData;
|
||||||
|
{
|
||||||
|
rtlfsmasg_list *Assign;
|
||||||
|
|
||||||
|
Assign = allocrtlfsmasg();
|
||||||
|
|
||||||
|
Assign->VEX_ATOM = VexAtom;
|
||||||
|
Assign->VEX_DATA = VexData;
|
||||||
|
|
||||||
|
Assign->NEXT = Trans->ASSIGN;
|
||||||
|
Trans->ASSIGN = Assign;
|
||||||
|
|
||||||
|
return( Assign );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Fsm Trans |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsmtrans_list *addrtlfsmtrans( Figure, Fsm, StateFrom, StateTo, VexCond )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
rtlfsmstate_list *StateFrom;
|
||||||
|
rtlfsmstate_list *StateTo;
|
||||||
|
vexexpr *VexCond;
|
||||||
|
{
|
||||||
|
rtlfsmtrans_list *Trans;
|
||||||
|
|
||||||
|
Trans = allocrtlfsmtrans();
|
||||||
|
|
||||||
|
Trans->FROM = StateFrom;
|
||||||
|
Trans->TO = StateTo;
|
||||||
|
Trans->VEX_COND = VexCond;
|
||||||
|
|
||||||
|
StateFrom->FROM = addchain( StateFrom->FROM, (void *)Trans );
|
||||||
|
StateTo->TO = addchain( StateTo->TO , (void *)Trans );
|
||||||
|
|
||||||
|
Trans->NEXT = Fsm->TRANS;
|
||||||
|
Fsm->TRANS = Trans;
|
||||||
|
|
||||||
|
return( Trans );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Fsm State |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsmstate_list *addrtlfsmstate( Figure, Fsm, Name )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
rtlfsmstate_list *State;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
State = allocrtlfsmstate();
|
||||||
|
|
||||||
|
State->NAME = Name;
|
||||||
|
|
||||||
|
addauthelem( Fsm->HASH_STATE, Name, (long)State );
|
||||||
|
|
||||||
|
State->NEXT = Fsm->STATE;
|
||||||
|
Fsm->STATE = State;
|
||||||
|
|
||||||
|
return( State );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Fsm Bi Vex |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlbivex_list *addrtlfsmbivex( Figure, Fsm, VexCond, VexData, Type )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
vexexpr *VexCond;
|
||||||
|
vexexpr *VexData;
|
||||||
|
int Type;
|
||||||
|
{
|
||||||
|
rtlbivex_list *BiVex;
|
||||||
|
|
||||||
|
BiVex = allocrtlbivex();
|
||||||
|
|
||||||
|
BiVex->VEX_COND = VexCond;
|
||||||
|
BiVex->VEX_DATA = VexData;
|
||||||
|
BiVex->TYPE = Type;
|
||||||
|
|
||||||
|
*Fsm->LAST_BIVEX = BiVex;
|
||||||
|
Fsm->LAST_BIVEX = &BiVex->NEXT;
|
||||||
|
|
||||||
|
return( BiVex );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Fsm |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsm_list *addrtlfsm( Figure, Name )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
Fsm = allocrtlfsm();
|
||||||
|
|
||||||
|
Fsm->NAME = Name;
|
||||||
|
Fsm->HASH_STATE = createauthtable( 50 );
|
||||||
|
Fsm->LAST_BIVEX = &Fsm->BIVEX;
|
||||||
|
|
||||||
|
Fsm->NEXT = Figure->FSM;
|
||||||
|
Figure->FSM = Fsm;
|
||||||
|
|
||||||
|
return( Fsm );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Model |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlmod_list *addrtlmod( Figure, Name )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
rtlmod_list *Model;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
Model = searchrtlmod( Figure, Name );
|
||||||
|
|
||||||
|
if ( Model != (rtlmod_list *)0 )
|
||||||
|
{
|
||||||
|
rtlerror( RTL_MOD_EXIST_ERROR, Name, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Model = allocrtlmod();
|
||||||
|
|
||||||
|
Model->NAME = Name;
|
||||||
|
|
||||||
|
Model->NEXT = Figure->MODEL;
|
||||||
|
Figure->MODEL = Model;
|
||||||
|
|
||||||
|
addauthelem( Figure->HASH_MODEL, Name, (long)Model );
|
||||||
|
|
||||||
|
return( Model );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Model Port |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlport_list *addrtlmodport( Figure, Model, Atom, Base, Dir )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlmod_list *Model;
|
||||||
|
vexexpr *Atom;
|
||||||
|
unsigned char Base;
|
||||||
|
unsigned char Dir;
|
||||||
|
{
|
||||||
|
rtlport_list *Port;
|
||||||
|
|
||||||
|
Port = allocrtlport();
|
||||||
|
|
||||||
|
Port->VEX_ATOM = Atom;
|
||||||
|
Port->DIR = Dir;
|
||||||
|
Port->BASE = Base;
|
||||||
|
|
||||||
|
|
||||||
|
Port->NEXT = Model->PORT;
|
||||||
|
Model->PORT = Port;
|
||||||
|
|
||||||
|
return( Port );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Model Generic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlgen_list *addrtlmodgen( Figure, Model, Atom, Expr, Base )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlmod_list *Model;
|
||||||
|
vexexpr *Atom;
|
||||||
|
vexexpr *Expr;
|
||||||
|
unsigned char Base;
|
||||||
|
{
|
||||||
|
rtlgen_list *Generic;
|
||||||
|
|
||||||
|
Generic = allocrtlgen();
|
||||||
|
|
||||||
|
Generic->VEX_ATOM = Atom;
|
||||||
|
Generic->VEX_EXPR = Expr;
|
||||||
|
Generic->BASE = Base;
|
||||||
|
|
||||||
|
Generic->NEXT = Model->GENERIC;
|
||||||
|
Model->GENERIC = Generic;
|
||||||
|
|
||||||
|
return( Generic );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Instance |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlins_list *addrtlins( Figure, Name, Model )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
char *Name;
|
||||||
|
rtlmod_list *Model;
|
||||||
|
{
|
||||||
|
rtlins_list *Instance;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
Instance = searchrtlins( Figure, Name );
|
||||||
|
|
||||||
|
if ( Instance != (rtlins_list *)0 )
|
||||||
|
{
|
||||||
|
rtlerror( RTL_INS_EXIST_ERROR, Name, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Instance = allocrtlins();
|
||||||
|
|
||||||
|
Instance->NAME = Name;
|
||||||
|
Instance->MODEL = Model;
|
||||||
|
|
||||||
|
Instance->NEXT = Figure->INSTANCE;
|
||||||
|
Figure->INSTANCE = Instance;
|
||||||
|
|
||||||
|
addauthelem( Figure->HASH_INSTANCE, Name, (long)Instance );
|
||||||
|
|
||||||
|
return( Instance );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Instance Map |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlmap_list *addrtlinsmap( Figure, Instance, Formal, Actual )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlins_list *Instance;
|
||||||
|
vexexpr *Formal;
|
||||||
|
vexexpr *Actual;
|
||||||
|
{
|
||||||
|
rtlmap_list *Map;
|
||||||
|
|
||||||
|
Map = allocrtlmap();
|
||||||
|
|
||||||
|
Map->VEX_FORMAL = Formal;
|
||||||
|
Map->VEX_ACTUAL = Actual;
|
||||||
|
|
||||||
|
Map->NEXT = Instance->MAP;
|
||||||
|
Instance->MAP = Map;
|
||||||
|
|
||||||
|
return( Map );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Add Instance Generic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlgen_list *addrtlinsgen( Figure, Instance, Atom, Expr )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlins_list *Instance;
|
||||||
|
vexexpr *Atom;
|
||||||
|
vexexpr *Expr;
|
||||||
|
{
|
||||||
|
rtlgen_list *Generic;
|
||||||
|
|
||||||
|
Generic = allocrtlgen();
|
||||||
|
|
||||||
|
Generic->VEX_ATOM = Atom;
|
||||||
|
Generic->VEX_EXPR = Expr;
|
||||||
|
|
||||||
|
Generic->NEXT = Instance->GENERIC;
|
||||||
|
Instance->GENERIC = Generic;
|
||||||
|
|
||||||
|
return( Generic );
|
||||||
|
}
|
|
@ -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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtladd.h |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTL_ADD_H
|
||||||
|
# define RTL_ADD_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,227 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtnalloc.c |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Rtlhor : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "vex.h"
|
||||||
|
# include "rtn.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "rtnalloc.h"
|
||||||
|
# include "rtnerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Figure |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfig_list *allocrtlfig()
|
||||||
|
{
|
||||||
|
return( (rtlfig_list *)autallocblock( sizeof( rtlfig_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Declaration |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtldecl_list *allocrtldecl()
|
||||||
|
{
|
||||||
|
return( (rtldecl_list *)autallocheap( sizeof( rtldecl_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlasg_list *allocrtlasg()
|
||||||
|
{
|
||||||
|
return( (rtlasg_list *)autallocheap( sizeof( rtlasg_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Bi Vex |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlbivex_list *allocrtlbivex()
|
||||||
|
{
|
||||||
|
return( (rtlbivex_list *)autallocheap( sizeof( rtlbivex_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Fsm |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsm_list *allocrtlfsm()
|
||||||
|
{
|
||||||
|
return( (rtlfsm_list *)autallocblock( sizeof( rtlfsm_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Fsm Trans |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsmtrans_list *allocrtlfsmtrans()
|
||||||
|
{
|
||||||
|
return( (rtlfsmtrans_list *)autallocheap( sizeof( rtlfsmtrans_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Fsm State |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsmstate_list *allocrtlfsmstate()
|
||||||
|
{
|
||||||
|
return( (rtlfsmstate_list *)autallocheap( sizeof( rtlfsmstate_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Fsm Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsmasg_list *allocrtlfsmasg()
|
||||||
|
{
|
||||||
|
return( (rtlfsmasg_list *)autallocheap( sizeof( rtlfsmasg_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Symbol |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlsym *allocrtlsym( Width )
|
||||||
|
|
||||||
|
unsigned int Width;
|
||||||
|
{
|
||||||
|
return( (rtlsym *)autallocblock( sizeof( rtlsym ) * Width ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Model |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlmod_list *allocrtlmod()
|
||||||
|
{
|
||||||
|
return( (rtlmod_list *)autallocheap( sizeof( rtlmod_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Instance |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlins_list *allocrtlins()
|
||||||
|
{
|
||||||
|
return( (rtlins_list *)autallocheap( sizeof( rtlins_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Port |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlport_list *allocrtlport()
|
||||||
|
{
|
||||||
|
return( (rtlport_list *)autallocheap( sizeof( rtlport_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Map |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlmap_list *allocrtlmap()
|
||||||
|
{
|
||||||
|
return( (rtlmap_list *)autallocheap( sizeof( rtlmap_list ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Alloc Map |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlgen_list *allocrtlgen()
|
||||||
|
{
|
||||||
|
return( (rtlgen_list *)autallocheap( sizeof( rtlgen_list ) ) );
|
||||||
|
}
|
|
@ -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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtlalloc.h |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTL_ALLOC_H
|
||||||
|
# define RTL_ALLOC_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,365 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtndel.c |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "vex.h"
|
||||||
|
# include "rtn.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "rtndel.h"
|
||||||
|
# include "rtnerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Del All Port |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void loc_delallrtlport( ScanPort )
|
||||||
|
|
||||||
|
rtlport_list *ScanPort;
|
||||||
|
{
|
||||||
|
rtlport_list *Delete;
|
||||||
|
|
||||||
|
while ( ScanPort != (rtlport_list *)0 )
|
||||||
|
{
|
||||||
|
Delete = ScanPort;
|
||||||
|
ScanPort = ScanPort->NEXT;
|
||||||
|
|
||||||
|
freevexexpr( Delete->VEX_ATOM );
|
||||||
|
|
||||||
|
freertlport( Delete );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Del All Map |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void loc_delallrtlmap( ScanMap )
|
||||||
|
|
||||||
|
rtlmap_list *ScanMap;
|
||||||
|
{
|
||||||
|
rtlmap_list *Delete;
|
||||||
|
|
||||||
|
while ( ScanMap != (rtlmap_list *)0 )
|
||||||
|
{
|
||||||
|
Delete = ScanMap;
|
||||||
|
ScanMap = ScanMap->NEXT;
|
||||||
|
|
||||||
|
freevexexpr( Delete->VEX_FORMAL );
|
||||||
|
freevexexpr( Delete->VEX_ACTUAL );
|
||||||
|
|
||||||
|
freertlmap( Delete );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Del All Generic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void loc_delallrtlgen( ScanGeneric )
|
||||||
|
|
||||||
|
rtlgen_list *ScanGeneric;
|
||||||
|
{
|
||||||
|
rtlgen_list *Delete;
|
||||||
|
|
||||||
|
while ( ScanGeneric != (rtlgen_list *)0 )
|
||||||
|
{
|
||||||
|
Delete = ScanGeneric;
|
||||||
|
ScanGeneric = ScanGeneric->NEXT;
|
||||||
|
|
||||||
|
freevexexpr( Delete->VEX_ATOM );
|
||||||
|
freevexexpr( Delete->VEX_EXPR );
|
||||||
|
|
||||||
|
freertlgen( Delete );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Del Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void loc_delallbivex( ScanBiVex )
|
||||||
|
|
||||||
|
rtlbivex_list *ScanBiVex;
|
||||||
|
{
|
||||||
|
rtlbivex_list *Delete;
|
||||||
|
|
||||||
|
while ( ScanBiVex != (rtlbivex_list *)0 )
|
||||||
|
{
|
||||||
|
freevexexpr( ScanBiVex->VEX_COND );
|
||||||
|
freevexexpr( ScanBiVex->VEX_DATA );
|
||||||
|
|
||||||
|
Delete = ScanBiVex;
|
||||||
|
ScanBiVex = ScanBiVex->NEXT;
|
||||||
|
|
||||||
|
freertlbivex( Delete );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Del Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int delrtlasg( Figure, Assign )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlasg_list *Assign;
|
||||||
|
{
|
||||||
|
*Assign->PREV = Assign->NEXT;
|
||||||
|
|
||||||
|
if ( Assign->NEXT != (rtlasg_list *)0 )
|
||||||
|
{
|
||||||
|
Assign->NEXT->PREV = Assign->PREV;
|
||||||
|
}
|
||||||
|
|
||||||
|
freevexexpr( Assign->VEX_ATOM );
|
||||||
|
freevexexpr( Assign->VEX_DATA );
|
||||||
|
|
||||||
|
loc_delallbivex( Assign->BIVEX );
|
||||||
|
|
||||||
|
freertlasg( Assign );
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Del Figure |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int delrtlfig( Name )
|
||||||
|
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlfig_list **Previous;
|
||||||
|
rtldecl_list *ScanDecl;
|
||||||
|
rtlasg_list *ScanAsg;
|
||||||
|
rtlfsm_list *ScanFsm;
|
||||||
|
rtlfsmstate_list *ScanState;
|
||||||
|
rtlfsmtrans_list *ScanTrans;
|
||||||
|
rtlfsmasg_list *ScanFsmAsg;
|
||||||
|
rtlmod_list *ScanModel;
|
||||||
|
rtlins_list *ScanInstance;
|
||||||
|
void *Delete;
|
||||||
|
int Type;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
Previous = &HEAD_RTLFIG;
|
||||||
|
|
||||||
|
for ( Figure = HEAD_RTLFIG;
|
||||||
|
Figure != (rtlfig_list *)0;
|
||||||
|
Figure = Figure->NEXT )
|
||||||
|
{
|
||||||
|
if ( Figure->NAME == Name ) break;
|
||||||
|
|
||||||
|
Previous = &Figure->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Figure == (rtlfig_list *)0 ) return( 0 );
|
||||||
|
|
||||||
|
*Previous = Figure->NEXT;
|
||||||
|
|
||||||
|
for ( Type = 0; Type < RTL_MAX_DECLAR_TYPE; Type++ )
|
||||||
|
{
|
||||||
|
ScanDecl = Figure->DECLAR[ Type ];
|
||||||
|
|
||||||
|
while ( ScanDecl != (rtldecl_list *)0 )
|
||||||
|
{
|
||||||
|
freevexexpr( ScanDecl->VEX_ATOM );
|
||||||
|
freevexexpr( ScanDecl->VEX_INIT );
|
||||||
|
freertlsym( ScanDecl->DECL_SYM );
|
||||||
|
|
||||||
|
Delete = (void *)( ScanDecl );
|
||||||
|
ScanDecl = ScanDecl->NEXT;
|
||||||
|
|
||||||
|
freertldecl( Delete );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
destroyauthtable( Figure->HASH_DECLAR );
|
||||||
|
destroyauthtable( Figure->HASH_MODEL );
|
||||||
|
destroyauthtable( Figure->HASH_INSTANCE );
|
||||||
|
|
||||||
|
ScanModel = Figure->MODEL;
|
||||||
|
|
||||||
|
while ( ScanModel != (rtlmod_list *)0 )
|
||||||
|
{
|
||||||
|
loc_delallrtlport( ScanModel->PORT );
|
||||||
|
loc_delallrtlgen( ScanModel->GENERIC );
|
||||||
|
|
||||||
|
Delete = (void *)( ScanModel );
|
||||||
|
ScanModel = ScanModel->NEXT;
|
||||||
|
|
||||||
|
freertlmod( Delete );
|
||||||
|
}
|
||||||
|
|
||||||
|
ScanInstance = Figure->INSTANCE;
|
||||||
|
|
||||||
|
while ( ScanInstance != (rtlins_list *)0 )
|
||||||
|
{
|
||||||
|
loc_delallrtlmap( ScanInstance->MAP );
|
||||||
|
loc_delallrtlgen( ScanInstance->GENERIC );
|
||||||
|
|
||||||
|
Delete = (void *)( ScanInstance );
|
||||||
|
ScanInstance = ScanInstance->NEXT;
|
||||||
|
|
||||||
|
freertlins( Delete );
|
||||||
|
}
|
||||||
|
|
||||||
|
ScanAsg = Figure->ASSIGN;
|
||||||
|
|
||||||
|
while ( ScanAsg != (rtlasg_list *)0 )
|
||||||
|
{
|
||||||
|
freevexexpr( ScanAsg->VEX_ATOM );
|
||||||
|
freevexexpr( ScanAsg->VEX_DATA );
|
||||||
|
|
||||||
|
loc_delallbivex( ScanAsg->BIVEX );
|
||||||
|
|
||||||
|
Delete = (void *)( ScanAsg );
|
||||||
|
ScanAsg = ScanAsg->NEXT;
|
||||||
|
|
||||||
|
freertlasg( Delete );
|
||||||
|
}
|
||||||
|
|
||||||
|
ScanFsm = Figure->FSM;
|
||||||
|
|
||||||
|
while ( ScanFsm != (rtlfsm_list *)0 )
|
||||||
|
{
|
||||||
|
ScanState = ScanFsm->STATE;
|
||||||
|
|
||||||
|
while ( ScanState != (rtlfsmstate_list *)0 )
|
||||||
|
{
|
||||||
|
freechain( ScanState->FROM );
|
||||||
|
freechain( ScanState->TO );
|
||||||
|
|
||||||
|
ScanFsmAsg = ScanState->ASSIGN;
|
||||||
|
|
||||||
|
while ( ScanFsmAsg != (rtlfsmasg_list *)0 )
|
||||||
|
{
|
||||||
|
freevexexpr( ScanFsmAsg->VEX_ATOM );
|
||||||
|
freevexexpr( ScanFsmAsg->VEX_DATA );
|
||||||
|
|
||||||
|
Delete = (void *)ScanFsmAsg;
|
||||||
|
ScanFsmAsg = ScanFsmAsg->NEXT;
|
||||||
|
|
||||||
|
freertlfsmasg( Delete );
|
||||||
|
}
|
||||||
|
|
||||||
|
Delete = (void *)ScanState;
|
||||||
|
ScanState = ScanState->NEXT;
|
||||||
|
|
||||||
|
freertlfsmstate( Delete );
|
||||||
|
}
|
||||||
|
|
||||||
|
ScanTrans = ScanFsm->TRANS;
|
||||||
|
|
||||||
|
while ( ScanTrans != (rtlfsmtrans_list *)0 )
|
||||||
|
{
|
||||||
|
freevexexpr( ScanTrans->VEX_COND );
|
||||||
|
|
||||||
|
ScanFsmAsg = ScanTrans->ASSIGN;
|
||||||
|
|
||||||
|
while ( ScanFsmAsg != (rtlfsmasg_list *)0 )
|
||||||
|
{
|
||||||
|
freevexexpr( ScanFsmAsg->VEX_ATOM );
|
||||||
|
freevexexpr( ScanFsmAsg->VEX_DATA );
|
||||||
|
|
||||||
|
Delete = (void *)ScanFsmAsg;
|
||||||
|
ScanFsmAsg = ScanFsmAsg->NEXT;
|
||||||
|
|
||||||
|
freertlfsmasg( Delete );
|
||||||
|
}
|
||||||
|
|
||||||
|
Delete = (void *)ScanTrans;
|
||||||
|
ScanTrans = ScanTrans->NEXT;
|
||||||
|
|
||||||
|
freertlfsmtrans( Delete );
|
||||||
|
}
|
||||||
|
|
||||||
|
loc_delallbivex( ScanFsm->BIVEX );
|
||||||
|
|
||||||
|
destroyauthtable( ScanFsm->HASH_STATE );
|
||||||
|
|
||||||
|
Delete = (void *)( ScanFsm );
|
||||||
|
ScanFsm = ScanFsm->NEXT;
|
||||||
|
|
||||||
|
freertlfsm( Delete );
|
||||||
|
}
|
||||||
|
|
||||||
|
freertlfig( Figure );
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
|
@ -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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtldel.h |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTL_DEL_H
|
||||||
|
# define RTL_DEL_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,150 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtn |
|
||||||
|
| |
|
||||||
|
| File : Rtn Errors |
|
||||||
|
| |
|
||||||
|
| Authors : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <string.h>
|
||||||
|
# include <signal.h>
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "vex.h"
|
||||||
|
# include "rtn.h"
|
||||||
|
# include "rtnerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Error Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void rtl_error( Error, Text1, Text2, File, Line )
|
||||||
|
|
||||||
|
int Error;
|
||||||
|
char *Text1;
|
||||||
|
char *Text2;
|
||||||
|
char *File;
|
||||||
|
long Line;
|
||||||
|
{
|
||||||
|
char *Name;
|
||||||
|
|
||||||
|
Name = mbkstrdup( File );
|
||||||
|
Name[ strlen( File ) - 1 ] = '\0';
|
||||||
|
|
||||||
|
fprintf( stderr, "%s%ld ", Name, Line );
|
||||||
|
|
||||||
|
switch( Error )
|
||||||
|
{
|
||||||
|
case RTL_DECLAR_EXIST_ERROR :
|
||||||
|
fprintf( stderr, "symbol %s already declared\n", Text1 );
|
||||||
|
break;
|
||||||
|
case RTL_MOD_EXIST_ERROR :
|
||||||
|
fprintf( stderr, "model %s already declared\n", Text1 );
|
||||||
|
break;
|
||||||
|
case RTL_INS_EXIST_ERROR :
|
||||||
|
fprintf( stderr, "instance %s already declared\n", Text1 );
|
||||||
|
break;
|
||||||
|
case RTL_ILLEGAL_POSITION_ERROR :
|
||||||
|
fprintf( stderr, "illegal position for symbol %s %ld\n", Text1, (long)Text2 );
|
||||||
|
break;
|
||||||
|
case RTL_ILLEGAL_INDEX_ERROR :
|
||||||
|
fprintf( stderr, "illegal index for symbol %s %ld\n", Text1, (long)Text2 );
|
||||||
|
break;
|
||||||
|
case RTL_UNKNOWN_DECLAR_TYPE :
|
||||||
|
fprintf( stderr, "unknown declar type %ld for %s\n", (long)Text1, Text2 );
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
|
||||||
|
fprintf( stderr, "unknown internal error %d !\n", Error );
|
||||||
|
}
|
||||||
|
|
||||||
|
autexit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Warning Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void rtl_warning( Warning, Text1, Text2, File, Line )
|
||||||
|
|
||||||
|
int Warning;
|
||||||
|
char *Text1;
|
||||||
|
char *Text2;
|
||||||
|
char *File;
|
||||||
|
long Line;
|
||||||
|
{
|
||||||
|
char *Name;
|
||||||
|
|
||||||
|
Name = mbkstrdup( File );
|
||||||
|
Name[ strlen( File ) - 1 ] = '\0';
|
||||||
|
|
||||||
|
fprintf( stderr, "%s%ld ", Name, Line );
|
||||||
|
|
||||||
|
switch ( Warning )
|
||||||
|
{
|
||||||
|
default :
|
||||||
|
|
||||||
|
fprintf( stderr, "unknown internal warning %d !\n", Warning );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,92 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : Rtl Errors |
|
||||||
|
| |
|
||||||
|
| Rtlhors : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTL_ERROR_H
|
||||||
|
# define RTL_ERROR_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define RTL_DECLAR_EXIST_ERROR 0
|
||||||
|
# define RTL_MOD_EXIST_ERROR 1
|
||||||
|
# define RTL_INS_EXIST_ERROR 2
|
||||||
|
# define RTL_ILLEGAL_POSITION_ERROR 3
|
||||||
|
# define RTL_ILLEGAL_INDEX_ERROR 4
|
||||||
|
# define RTL_UNKNOWN_DECLAR_TYPE 5
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macros |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define rtlerror( E, V1, V2 ) \
|
||||||
|
(rtl_error( (int)(E), (char*)(long)(V1), (char*)(long)(V2), __FILE__, __LINE__ ))
|
||||||
|
# define rtlwarning( E, V1, V2 ) \
|
||||||
|
(rtl_warning( (int)(E), (char*)(long)(V1), (char*)(long)(V2), __FILE__, __LINE__ ))
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void rtl_error __P((int Error, char *Text1, char *Text2, char *File, long Line));
|
||||||
|
extern void rtl_warning __P((int Warning, char *Text1, char *Text2, char *File, long Line));
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,260 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtn |
|
||||||
|
| |
|
||||||
|
| File : rtnfree.c |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "vex.h"
|
||||||
|
# include "rtn.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <string.h>
|
||||||
|
# include "rtnfree.h"
|
||||||
|
# include "rtnalloc.h"
|
||||||
|
# include "rtnerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Figure |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlfig( Figure )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
{
|
||||||
|
autfreeblock( (char *)Figure );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlasg( Asg )
|
||||||
|
|
||||||
|
rtlasg_list *Asg;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)Asg, sizeof( rtlasg_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Register |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlbivex( BiVex )
|
||||||
|
|
||||||
|
rtlbivex_list *BiVex;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)BiVex, sizeof( rtlbivex_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Declaration |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertldecl( Decl )
|
||||||
|
|
||||||
|
rtldecl_list *Decl;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)Decl, sizeof( rtldecl_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Fsm Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlfsmasg( FsmAsg )
|
||||||
|
|
||||||
|
rtlfsmasg_list *FsmAsg;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)FsmAsg, sizeof( rtlfsmasg_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Fsm State |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlfsmstate( fsmstate )
|
||||||
|
|
||||||
|
rtlfsmstate_list *fsmstate;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)fsmstate, sizeof( rtlfsmstate_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Fsm Trans |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlfsmtrans( fsmtrans )
|
||||||
|
|
||||||
|
rtlfsmtrans_list *fsmtrans;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)fsmtrans, sizeof( rtlfsmtrans_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Fsm |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlfsm( Fsm )
|
||||||
|
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
{
|
||||||
|
autfreeblock( (char *)Fsm );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Symbol |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlsym( Sym )
|
||||||
|
|
||||||
|
rtlsym *Sym;
|
||||||
|
{
|
||||||
|
autfreeblock( (char *)Sym );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Model |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlmod( Model )
|
||||||
|
|
||||||
|
rtlmod_list *Model;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)Model, sizeof( rtlmod_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Instance |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlins( Instance )
|
||||||
|
|
||||||
|
rtlins_list *Instance;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)Instance, sizeof( rtlins_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Port |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlport( Port )
|
||||||
|
|
||||||
|
rtlport_list *Port;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)Port, sizeof( rtlport_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Map |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlmap( Map )
|
||||||
|
|
||||||
|
rtlmap_list *Map;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)Map, sizeof( rtlmap_list ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Free Generic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freertlgen( Generic )
|
||||||
|
|
||||||
|
rtlgen_list *Generic;
|
||||||
|
{
|
||||||
|
autfreeheap( (char *)Generic, sizeof( rtlgen_list ));
|
||||||
|
}
|
|
@ -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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtlfree.h |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTL_FREE_H
|
||||||
|
# define RTL_FREE_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,125 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtnget.c |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "vex.h"
|
||||||
|
# include "rtn.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "rtnget.h"
|
||||||
|
# include "rtnerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Get Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Get Rtl Symbol From Declaration |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlsym *getrtlsymdecl( Declar, Index )
|
||||||
|
|
||||||
|
rtldecl_list *Declar;
|
||||||
|
short Index;
|
||||||
|
{
|
||||||
|
vexexpr *Atom;
|
||||||
|
int Position;
|
||||||
|
|
||||||
|
Atom = Declar->VEX_ATOM;
|
||||||
|
Position = getvexvectorpos( Atom, Index );
|
||||||
|
|
||||||
|
if ( Position == -1 )
|
||||||
|
{
|
||||||
|
rtlerror( RTL_ILLEGAL_INDEX_ERROR, GetVexAtomValue( Atom ), Index );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( &Declar->DECL_SYM[ Position ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Get Rtl Symbol From Declaration |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlsym *getrtlsymdeclpos( Declar, Position )
|
||||||
|
|
||||||
|
rtldecl_list *Declar;
|
||||||
|
int Position;
|
||||||
|
{
|
||||||
|
vexexpr *Atom;
|
||||||
|
|
||||||
|
Atom = Declar->VEX_ATOM;
|
||||||
|
|
||||||
|
if ( ( Position >= Atom->WIDTH ) ||
|
||||||
|
( Position < 0 ) )
|
||||||
|
{
|
||||||
|
rtlerror( RTL_ILLEGAL_POSITION_ERROR, GetVexAtomValue( Atom ), Position );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( &Declar->DECL_SYM[ Position ] );
|
||||||
|
}
|
|
@ -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 : Rtn |
|
||||||
|
| |
|
||||||
|
| File : rtnget.h |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTL_GET_H
|
||||||
|
# define RTL_GET_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,288 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtn |
|
||||||
|
| |
|
||||||
|
| File : rtnsearch.c |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "vex.h"
|
||||||
|
# include "rtn.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "rtnsearch.h"
|
||||||
|
# include "rtnerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Search Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Search Figure |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfig_list *searchrtlfig( Name )
|
||||||
|
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
|
||||||
|
for ( Figure = HEAD_RTLFIG;
|
||||||
|
Figure != (rtlfig_list *)0;
|
||||||
|
Figure = Figure->NEXT )
|
||||||
|
{
|
||||||
|
if ( Figure->NAME == Name ) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return( Figure );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Search Fsm State |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlfsmstate_list *searchrtlfsmstate( Figure, Fsm, Name )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
Element = searchauthelem( Fsm->HASH_STATE, Name );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
return( (rtlfsmstate_list *)Element->VALUE );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (rtlfsmstate_list *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Search Declar |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtldecl_list *searchrtldecl( Figure, Name )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
Element = searchauthelem( Figure->HASH_DECLAR, Name );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
return( (rtldecl_list *)Element->VALUE );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (rtldecl_list *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Search Symbol |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlsym *searchrtlsym( Figure, Name, Index )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
char *Name;
|
||||||
|
short Index;
|
||||||
|
{
|
||||||
|
authtable *HashTable;
|
||||||
|
authelem *Element;
|
||||||
|
vexexpr *Atom;
|
||||||
|
rtldecl_list *Decl;
|
||||||
|
short Bound;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
HashTable = Figure->HASH_DECLAR;
|
||||||
|
Element = searchauthelem( HashTable, Name );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
Decl = (rtldecl_list *)( Element->VALUE );
|
||||||
|
Atom = Decl->VEX_ATOM;
|
||||||
|
Bound = Atom->WIDTH - 1;
|
||||||
|
|
||||||
|
if ( Index == -1 )
|
||||||
|
{
|
||||||
|
if ( Bound == 0 ) return( Decl->DECL_SYM );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( IsVexAtomDown( Atom ) )
|
||||||
|
{
|
||||||
|
if ( ( Index <= Atom->LEFT ) &&
|
||||||
|
( Index >= Atom->RIGHT ) )
|
||||||
|
{
|
||||||
|
Index -= Atom->RIGHT;
|
||||||
|
|
||||||
|
return( &Decl->DECL_SYM[ Bound - Index ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( ( Index >= Atom->LEFT ) &&
|
||||||
|
( Index <= Atom->RIGHT ) )
|
||||||
|
{
|
||||||
|
Index -= Atom->LEFT;
|
||||||
|
|
||||||
|
return( &Decl->DECL_SYM[ Index ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (rtlsym *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Search Model |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlmod_list *searchrtlmod( Figure, Name )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
Element = searchauthelem( Figure->HASH_MODEL, Name );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
return( (rtlmod_list *)( Element->VALUE ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (rtlmod_list *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Search Model Port |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlport_list *searchrtlmodport( Figure, Model, Name )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
rtlmod_list *Model;
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
rtlport_list *RtlPort;
|
||||||
|
char *Value;
|
||||||
|
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
|
||||||
|
for ( RtlPort = Model->PORT;
|
||||||
|
RtlPort != (rtlport_list *)0;
|
||||||
|
RtlPort = RtlPort->NEXT )
|
||||||
|
{
|
||||||
|
Value = getvexarrayname( RtlPort->VEX_ATOM );
|
||||||
|
|
||||||
|
if ( Value == Name ) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return( RtlPort );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl Search Instance |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
rtlins_list *searchrtlins( Figure, Name )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
|
||||||
|
Name = namealloc( Name );
|
||||||
|
Element = searchauthelem( Figure->HASH_INSTANCE, Name );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
return( (rtlins_list *)( Element->VALUE ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (rtlins_list *)0 );
|
||||||
|
}
|
||||||
|
|
|
@ -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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtlsearch.h |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTL_SEARCH_H
|
||||||
|
# define RTL_SEARCH_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,648 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Rtl |
|
||||||
|
| |
|
||||||
|
| File : rtnview.c |
|
||||||
|
| |
|
||||||
|
| Date : 28.08.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "vex.h"
|
||||||
|
# include "rtn.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "rtnview.h"
|
||||||
|
# include "rtnerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Symbol |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlsym( Symbol )
|
||||||
|
|
||||||
|
rtlsym *Symbol;
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n--> Symbol" );
|
||||||
|
fprintf( stdout, "\n\t\tNAME : %s", Symbol->NAME );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tDECL : " );
|
||||||
|
viewvexexprbound( Symbol->DECL->VEX_ATOM );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tINDEX : %d", (int)Symbol->INDEX );
|
||||||
|
fprintf( stdout, "\n\t\tINIT : '%c'", Symbol->INIT );
|
||||||
|
fprintf( stdout, "\n\t\tEFFEC : '%c'", Symbol->EFFEC );
|
||||||
|
fprintf( stdout, "\n\t\tDRIVE : '%c'", Symbol->DRIVE );
|
||||||
|
fprintf( stdout, "\n\t\tEVENT : %d" , Symbol->EVENT );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", Symbol->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)Symbol->USER );
|
||||||
|
fprintf( stdout, "\n<-- Symbol" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Declaration |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtldecl( Decl )
|
||||||
|
|
||||||
|
rtldecl_list *Decl;
|
||||||
|
{
|
||||||
|
rtlsym *DeclSym;
|
||||||
|
int Scan;
|
||||||
|
int Width;
|
||||||
|
|
||||||
|
fprintf( stdout, "\n--> Declaration" );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_ATOM : " );
|
||||||
|
viewvexexprbound( Decl->VEX_ATOM );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_INIT : " );
|
||||||
|
viewvexexprbound( Decl->VEX_INIT );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tDECL_SYM :\n" );
|
||||||
|
|
||||||
|
DeclSym = Decl->DECL_SYM;
|
||||||
|
Width = Decl->VEX_ATOM->WIDTH;
|
||||||
|
|
||||||
|
for ( Scan = 0; Scan < Width; Scan++ )
|
||||||
|
{
|
||||||
|
viewrtlsym( &DeclSym[ Scan ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Decl->DIR >= RTL_MAX_DIR_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tDIR : %d", (int)Decl->DIR );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tDIR : %s", RTL_DIR_TYPE[ Decl->DIR ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Decl->TYPE >= RTL_MAX_DECLAR_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tTYPE : %d", Decl->TYPE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tTYPE : %s", RTL_DECLAR_TYPE[ Decl->TYPE ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Decl->BASE >= VEX_MAX_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tBASE : %d", Decl->BASE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tBASE : %s", VEX_TYPE_NAME[ Decl->BASE ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Decl->KIND >= RTL_MAX_KIND_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tKIND : %d", Decl->KIND );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tKIND : %s", RTL_KIND_TYPE[ Decl->KIND ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", Decl->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)Decl->USER );
|
||||||
|
fprintf( stdout, "\n<-- Declaration" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View BiVex |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlbivex( BiVex )
|
||||||
|
|
||||||
|
rtlbivex_list *BiVex;
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n--> BiVex" );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_COND : " );
|
||||||
|
|
||||||
|
viewvexexprbound( BiVex->VEX_COND );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_DATA : \n" );
|
||||||
|
|
||||||
|
viewvexexprbound( BiVex->VEX_DATA );
|
||||||
|
|
||||||
|
if ( BiVex->TYPE >= RTL_MAX_BIVEX_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tTYPE : %d", BiVex->TYPE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tTYPE : %s", RTL_BIVEX_TYPE[ BiVex->TYPE ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", BiVex->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)BiVex->USER );
|
||||||
|
fprintf( stdout, "\n<-- BiVex" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlasg( Asg )
|
||||||
|
|
||||||
|
rtlasg_list *Asg;
|
||||||
|
{
|
||||||
|
rtlbivex_list *BiVex;
|
||||||
|
|
||||||
|
fprintf( stdout, "\n--> Assign" );
|
||||||
|
|
||||||
|
if ( Asg->TYPE >= RTL_MAX_ASG_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tTYPE : %d", Asg->TYPE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tTYPE : %s", RTL_ASG_TYPE[ Asg->TYPE ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Asg->REG_TYPE >= RTL_MAX_ASG_REGISTER_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tREG_TYPE : %d", Asg->REG_TYPE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tREG_TYPE : %s", RTL_ASG_REGISTER_TYPE[ Asg->REG_TYPE ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_ATOM : " );
|
||||||
|
|
||||||
|
viewvexexprbound( Asg->VEX_ATOM );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_DATA : \n" );
|
||||||
|
|
||||||
|
viewvexexprbound( Asg->VEX_DATA );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tBIVEX : \n" );
|
||||||
|
|
||||||
|
for ( BiVex = Asg->BIVEX;
|
||||||
|
BiVex != (rtlbivex_list *)0;
|
||||||
|
BiVex = BiVex->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlbivex( BiVex );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", Asg->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)Asg->USER );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n<-- Assign" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Fsm Assign |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlfsmasg( Asg )
|
||||||
|
|
||||||
|
rtlfsmasg_list *Asg;
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n--> Fsm Assign" );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_ATOM : " );
|
||||||
|
|
||||||
|
viewvexexprbound( Asg->VEX_ATOM );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_DATA : \n" );
|
||||||
|
|
||||||
|
viewvexexprbound( Asg->VEX_DATA );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", Asg->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)Asg->USER );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n<-- Fsm Assign" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Fsm State |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlfsmstate( State )
|
||||||
|
|
||||||
|
rtlfsmstate_list *State;
|
||||||
|
{
|
||||||
|
rtlfsmasg_list *FsmAsg;
|
||||||
|
|
||||||
|
fprintf( stdout, "\n--> State" );
|
||||||
|
fprintf( stdout, "\n\tNAME : %s", State->NAME );
|
||||||
|
|
||||||
|
for ( FsmAsg = State->ASSIGN;
|
||||||
|
FsmAsg != (rtlfsmasg_list *)0;
|
||||||
|
FsmAsg = FsmAsg->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlfsmasg( FsmAsg );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tFLAGS : %lx", State->FLAGS );
|
||||||
|
fprintf( stdout, "\n\tUSER : %lx", (long)State->USER );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Fsm Trans |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlfsmtrans( Trans )
|
||||||
|
|
||||||
|
rtlfsmtrans_list *Trans;
|
||||||
|
{
|
||||||
|
rtlfsmasg_list *FsmAsg;
|
||||||
|
|
||||||
|
fprintf( stdout, "\n--> Trans" );
|
||||||
|
|
||||||
|
if ( Trans->FROM != (rtlfsmstate_list *)0 )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\tFROM : %s", Trans->FROM->NAME );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Trans->TO != (rtlfsmstate_list *)0 )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\tTO : %s", Trans->TO->NAME );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_COND : " );
|
||||||
|
|
||||||
|
viewvexexprbound( Trans->VEX_COND );
|
||||||
|
|
||||||
|
for ( FsmAsg = Trans->ASSIGN;
|
||||||
|
FsmAsg != (rtlfsmasg_list *)0;
|
||||||
|
FsmAsg = FsmAsg->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlfsmasg( FsmAsg );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tFLAGS : %lx", Trans->FLAGS );
|
||||||
|
fprintf( stdout, "\n\tUSER : %lx", (long)Trans->USER );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Fsm |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlfsm( Fsm )
|
||||||
|
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
{
|
||||||
|
rtlfsmtrans_list *FsmTrans;
|
||||||
|
rtlfsmstate_list *FsmState;
|
||||||
|
|
||||||
|
fprintf( stdout, "\n--> Fsm" );
|
||||||
|
fprintf( stdout, "\n\tNAME : %s", Fsm->NAME );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tSTATE : " );
|
||||||
|
|
||||||
|
for ( FsmState = Fsm->STATE;
|
||||||
|
FsmState != (rtlfsmstate_list *)0;
|
||||||
|
FsmState = FsmState->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlfsmstate( FsmState );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tTRANS : " );
|
||||||
|
|
||||||
|
for ( FsmTrans = Fsm->TRANS;
|
||||||
|
FsmTrans != (rtlfsmtrans_list *)0;
|
||||||
|
FsmTrans = FsmTrans->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlfsmtrans( FsmTrans );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tFLAGS : %lx", Fsm->FLAGS );
|
||||||
|
fprintf( stdout, "\n\tUSER : %lx", (long)Fsm->USER );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n<-- Fsm" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Port |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlport( Port )
|
||||||
|
|
||||||
|
rtlport_list *Port;
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n--> Port" );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tVEX_ATOM : " );
|
||||||
|
viewvexexprbound( Port->VEX_ATOM );
|
||||||
|
|
||||||
|
if ( Port->DIR >= RTL_MAX_DIR_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tDIR : %d", (int)Port->DIR );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tDIR : %s", RTL_DIR_TYPE[ Port->DIR ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Port->BASE >= VEX_MAX_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tBASE : %d", Port->BASE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tBASE : %s", VEX_TYPE_NAME[ Port->BASE ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", Port->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)Port->USER );
|
||||||
|
fprintf( stdout, "\n<-- Port" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Map |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlmap( Map )
|
||||||
|
|
||||||
|
rtlmap_list *Map;
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n--> Map" );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFORMAL : " );
|
||||||
|
|
||||||
|
viewvexexprbound( Map->VEX_FORMAL );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tACTUAL : " );
|
||||||
|
|
||||||
|
viewvexexprbound( Map->VEX_ACTUAL );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", Map->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)Map->USER );
|
||||||
|
fprintf( stdout, "\n<-- Map" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Vpn View Generic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlgen( Generic )
|
||||||
|
|
||||||
|
rtlgen_list *Generic;
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n--> Generic" );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tATOM : " );
|
||||||
|
|
||||||
|
viewvexexprbound( Generic->VEX_ATOM );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tEXPR : " );
|
||||||
|
|
||||||
|
viewvexexprbound( Generic->VEX_EXPR );
|
||||||
|
|
||||||
|
if ( Generic->BASE >= VEX_MAX_TYPE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tBASE : %d", Generic->BASE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\t\tBASE : %s", VEX_TYPE_NAME[ Generic->BASE ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", Generic->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)Generic->USER );
|
||||||
|
fprintf( stdout, "\n<-- Generic" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Model |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlmod( Model )
|
||||||
|
|
||||||
|
rtlmod_list *Model;
|
||||||
|
{
|
||||||
|
rtlport_list *ScanPort;
|
||||||
|
rtlgen_list *ScanGeneric;
|
||||||
|
|
||||||
|
fprintf( stdout, "\n--> Model" );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tNAME : %s", Model->NAME );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tPORT :" );
|
||||||
|
|
||||||
|
for ( ScanPort = Model->PORT;
|
||||||
|
ScanPort != (rtlport_list *)0;
|
||||||
|
ScanPort = ScanPort->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlport( ScanPort );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tGENERIC:" );
|
||||||
|
|
||||||
|
for ( ScanGeneric = Model->GENERIC;
|
||||||
|
ScanGeneric != (rtlgen_list *)0;
|
||||||
|
ScanGeneric = ScanGeneric->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlgen( ScanGeneric );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", Model->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)Model->USER );
|
||||||
|
fprintf( stdout, "\n<-- Model" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Instance |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlins( Instance )
|
||||||
|
|
||||||
|
rtlins_list *Instance;
|
||||||
|
{
|
||||||
|
rtlmap_list *ScanMap;
|
||||||
|
rtlgen_list *ScanGeneric;
|
||||||
|
|
||||||
|
fprintf( stdout, "\n--> Instance" );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tNAME : %s", Instance->NAME );
|
||||||
|
fprintf( stdout, "\n\t\tMODEL : %s", Instance->MODEL->NAME );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tMAP :" );
|
||||||
|
|
||||||
|
for ( ScanMap = Instance->MAP;
|
||||||
|
ScanMap != (rtlmap_list *)0;
|
||||||
|
ScanMap = ScanMap->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlmap( ScanMap );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tGENERIC:" );
|
||||||
|
|
||||||
|
for ( ScanGeneric = Instance->GENERIC;
|
||||||
|
ScanGeneric != (rtlgen_list *)0;
|
||||||
|
ScanGeneric = ScanGeneric->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlgen( ScanGeneric );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\t\tFLAGS : %lx", Instance->FLAGS );
|
||||||
|
fprintf( stdout, "\n\t\tUSER : %lx", (long)Instance->USER );
|
||||||
|
fprintf( stdout, "\n<-- Model" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Rtl View Figure |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewrtlfig( Figure )
|
||||||
|
|
||||||
|
rtlfig_list *Figure;
|
||||||
|
{
|
||||||
|
rtlmod_list *Model;
|
||||||
|
rtlins_list *Instance;
|
||||||
|
rtldecl_list *Decl;
|
||||||
|
rtlasg_list *Assign;
|
||||||
|
rtlfsm_list *Fsm;
|
||||||
|
int Type;
|
||||||
|
|
||||||
|
fprintf( stdout, "\n--> Figure" );
|
||||||
|
fprintf( stdout, "\n\tNAME : %s", Figure->NAME );
|
||||||
|
|
||||||
|
for ( Type = 0; Type < RTL_MAX_DECLAR_TYPE; Type++ )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n\tDECLARATION %s : ", RTL_DECLAR_TYPE[ Type ] );
|
||||||
|
|
||||||
|
for ( Decl = Figure->DECLAR[ Type ];
|
||||||
|
Decl != (rtldecl_list *)0;
|
||||||
|
Decl = Decl->NEXT )
|
||||||
|
{
|
||||||
|
viewrtldecl( Decl );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tMODEL :" );
|
||||||
|
|
||||||
|
for ( Model = Figure->MODEL;
|
||||||
|
Model != (rtlmod_list *)0;
|
||||||
|
Model = Model->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlmod( Model );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tINSTANCE :" );
|
||||||
|
|
||||||
|
for ( Instance = Figure->INSTANCE;
|
||||||
|
Instance != (rtlins_list *)0;
|
||||||
|
Instance = Instance->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlins( Instance );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tASSIGN : " );
|
||||||
|
|
||||||
|
for ( Assign = Figure->ASSIGN;
|
||||||
|
Assign != (rtlasg_list *)0;
|
||||||
|
Assign = Assign->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlasg( Assign );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tFSM : " );
|
||||||
|
|
||||||
|
for ( Fsm = Figure->FSM;
|
||||||
|
Fsm != (rtlfsm_list *)0;
|
||||||
|
Fsm = Fsm->NEXT )
|
||||||
|
{
|
||||||
|
viewrtlfsm( Fsm );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "\n\tFLAGS : %lx", Figure->FLAGS );
|
||||||
|
fprintf( stdout, "\n\tUSER : %lx", (long)Figure->USER );
|
||||||
|
fprintf( stdout, "\n<-- Figure\n" );
|
||||||
|
}
|
|
@ -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 : Rtn |
|
||||||
|
| |
|
||||||
|
| File : rtnview.h |
|
||||||
|
| |
|
||||||
|
| Date : 04.07.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef RTL_VIEW_H
|
||||||
|
# define RTL_VIEW_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
Loading…
Reference in New Issue