This commit was generated by cvs2svn to track changes on a CVS vendor
branch.
This commit is contained in:
commit
4dca7e8728
|
@ -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/20 10:24:57 ludo Exp $
|
||||||
|
dnl
|
||||||
|
dnl
|
||||||
|
AC_INIT(src/btr.h)
|
||||||
|
AM_INIT_AUTOMAKE(btr, 1.3)
|
||||||
|
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,211 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Title : Structures and fonctions for BTR |
|
||||||
|
| |
|
||||||
|
| Date : 14.02.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BTR_102_H
|
||||||
|
# define BTR_102_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macros |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Type |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef long btrvarorder;
|
||||||
|
|
||||||
|
typedef struct btrvarfunc
|
||||||
|
{
|
||||||
|
bddnode *VAR;
|
||||||
|
bddnode *FUNC;
|
||||||
|
|
||||||
|
} btrvarfunc;
|
||||||
|
|
||||||
|
typedef struct btrtransfunc
|
||||||
|
{
|
||||||
|
btrvarfunc *VAR_FUNC;
|
||||||
|
btrvarorder *VAR_ORDER;
|
||||||
|
bddvar MAX_VAR;
|
||||||
|
bddvar NUMBER_VAR;
|
||||||
|
bddsystem *BDD_SYSTEM;
|
||||||
|
|
||||||
|
} btrtransfunc;
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Transition Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef struct btrvarrel
|
||||||
|
{
|
||||||
|
bddnode *VAR;
|
||||||
|
bddnode *PRIME;
|
||||||
|
bddnode *REL;
|
||||||
|
|
||||||
|
} btrvarrel;
|
||||||
|
|
||||||
|
typedef struct btrtransrel
|
||||||
|
{
|
||||||
|
btrvarrel *VAR_REL;
|
||||||
|
bddassoc *PRIME_ASSOC;
|
||||||
|
bddassoc *VAR_ASSOC;
|
||||||
|
bddvar MAX_VAR;
|
||||||
|
bddvar NUMBER_VAR;
|
||||||
|
bddsystem *BDD_SYSTEM;
|
||||||
|
|
||||||
|
} btrtransrel;
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Env Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void btrenv __P(());
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Allocation Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern btrtransfunc * allocbtrtransfunc __P(());
|
||||||
|
extern btrvarfunc * allocbtrvarfunc __P((long Number));
|
||||||
|
extern btrvarorder * allocbtrvarorder __P((long Number));
|
||||||
|
|
||||||
|
extern btrtransrel * allocbtrtransrel __P(());
|
||||||
|
extern btrvarrel * allocbtrvarrel __P((long Number));
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Free Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void freebtrtransfunc __P((btrtransfunc *TransFunc));
|
||||||
|
extern void freebtrvarfunc __P((btrvarfunc *VarFunc));
|
||||||
|
extern void freebtrvarorder __P((btrvarorder *VarOrder));
|
||||||
|
|
||||||
|
extern void freebtrtransrel __P((btrtransrel *TransRel));
|
||||||
|
extern void freebtrvarrel __P((btrvarrel *VarRel));
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Resize Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern btrvarfunc * resizebtrvarfunc __P((btrvarfunc *VarFunc, long OldNum, long NewNum));
|
||||||
|
extern btrvarorder * resizebtrvarorder __P((btrvarorder *VarOrder, long OldNum, long NewNum));
|
||||||
|
|
||||||
|
extern btrvarrel * resizebtrvarrel __P((btrvarrel *VarRel, long OldNum, long NewNum));
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Transition Function Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern btrtransfunc * createbtrtransfunc __P((bddsystem *BddSystem, bddvar MaxVar));
|
||||||
|
extern void resetbtrtransfunc __P((btrtransfunc *TransFunc));
|
||||||
|
extern void destroybtrtransfunc __P((btrtransfunc *TransFunc));
|
||||||
|
extern void viewbtrtransfunc __P((btrtransfunc *TransFunc, void (*FuncView)()));
|
||||||
|
extern void addbtrtransfunc __P((btrtransfunc *TransFunc, bddnode *VarNode, bddnode *FuncNode));
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Image and PreImage Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern bddnode * imagebtrtransfunc __P((btrtransfunc *TransFunc, bddnode *StateSet));
|
||||||
|
extern bddnode * preimagebtrtransfunc __P((btrtransfunc *TransFunc, bddnode *StateSet));
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Reorder Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void reorderbtrtransfunc __P((btrtransfunc *TransFunc));
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Transition Relation Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern btrtransrel * createbtrtransrel __P((bddsystem *BddSystem, bddvar MaxVar));
|
||||||
|
extern void resetbtrtransrel __P((btrtransrel *TransRel));
|
||||||
|
extern void destroybtrtransrel __P((btrtransrel *TransRel));
|
||||||
|
extern void viewbtrtransrel __P((btrtransrel *TransRel, void (*FuncView)()));
|
||||||
|
|
||||||
|
/*------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Image and PreImage Transition Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern bddnode * imagebtrtransrel __P((btrtransrel *TransRel, bddnode *StateSet));
|
||||||
|
bddnode *preimagebtrtransrel();
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,133 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : btralloc.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Btrhor : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "abl.h"
|
||||||
|
# include "bdd.h"
|
||||||
|
# include "btr.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "btralloc.h"
|
||||||
|
# include "btrerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Alloc Function Transition |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrtransfunc *allocbtrtransfunc()
|
||||||
|
{
|
||||||
|
return( (btrtransfunc *)autallocblock( sizeof( btrtransfunc ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Variable Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrvarfunc *allocbtrvarfunc( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
return( (btrvarfunc *)autallocblock( sizeof( btrvarfunc ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Alloc Function Transition |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrvarorder *allocbtrvarorder( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
return( (btrvarorder *)autallocblock( sizeof( btrvarorder ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Alloc Relation Transition |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrtransrel *allocbtrtransrel()
|
||||||
|
{
|
||||||
|
return( (btrtransrel *)autallocblock( sizeof( btrtransrel ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Variable Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrvarrel *allocbtrvarrel( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
return( (btrvarrel *)autallocblock( sizeof( btrvarrel ) * Number ) );
|
||||||
|
}
|
|
@ -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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : btralloc.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BTR_ALLOC_H
|
||||||
|
# define BTR_ALLOC_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,82 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : btrenv.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Btrhor : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "abl.h"
|
||||||
|
# include "bdd.h"
|
||||||
|
# include "btr.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "btrenv.h"
|
||||||
|
# include "btrerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Env |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void btrenv()
|
||||||
|
{
|
||||||
|
}
|
|
@ -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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : btrenv.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BTR_ENV_H
|
||||||
|
# define BTR_ENV_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,129 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : Btr Errors |
|
||||||
|
| |
|
||||||
|
| Authors : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <string.h>
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "abl.h"
|
||||||
|
# include "bdd.h"
|
||||||
|
# include "btr.h"
|
||||||
|
# include "btrerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void btr_error( Error, Value, File, Line )
|
||||||
|
|
||||||
|
char Error;
|
||||||
|
long Value;
|
||||||
|
char *File;
|
||||||
|
long Line;
|
||||||
|
{
|
||||||
|
char *Name;
|
||||||
|
|
||||||
|
Name = mbkstrdup( File );
|
||||||
|
Name[ strlen( File ) - 1 ] = '\0';
|
||||||
|
|
||||||
|
fprintf( stderr, "%s%ld ", Name, Line );
|
||||||
|
|
||||||
|
switch( Error )
|
||||||
|
{
|
||||||
|
default :
|
||||||
|
|
||||||
|
fprintf( stderr, "unknown internal %d", Error );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stderr, " error !\n" );
|
||||||
|
|
||||||
|
autexit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void btr_warning( Warning, Value1, Value2, File, Line )
|
||||||
|
|
||||||
|
char Warning;
|
||||||
|
long Value1;
|
||||||
|
long Value2;
|
||||||
|
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 %d", Warning );
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stderr, " warning !\n" );
|
||||||
|
}
|
|
@ -0,0 +1,96 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : Btr Errors |
|
||||||
|
| |
|
||||||
|
| Authors : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BTR_ERROR_H
|
||||||
|
# define BTR_ERROR_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define BTR_BAD_VAR_ERROR 0
|
||||||
|
# define BTR_NO_MORE_VAR_ERROR 1
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Error |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Warning |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macros |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define btrerror( E, V ) (btr_error( (E), (V), __FILE__, __LINE__ ))
|
||||||
|
# define btrwarning( W, V1, V2 ) (btr_warning( (W), (V1), (V2), __FILE__, __LINE__ ))
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void btr_error __P((char Error, long Value, char *File, long Line));
|
||||||
|
extern void btr_warning __P((char Warning, long Value1, long Value2, char *File, long Line));
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,138 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : btrfree.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Btrhor : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "abl.h"
|
||||||
|
# include "bdd.h"
|
||||||
|
# include "btr.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "btrfree.h"
|
||||||
|
# include "btrerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Free Function Transition |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freebtrtransfunc( TransFunc )
|
||||||
|
|
||||||
|
btrtransfunc *TransFunc;
|
||||||
|
{
|
||||||
|
autfreeblock( (char *)TransFunc );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Free Variable Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freebtrvarfunc( VarFunc )
|
||||||
|
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
{
|
||||||
|
autfreeblock( (char *)VarFunc );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Free Variable Order |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freebtrvarorder( VarOrder )
|
||||||
|
|
||||||
|
btrvarorder *VarOrder;
|
||||||
|
{
|
||||||
|
autfreeblock( (char *)VarOrder );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Free Relation Transition |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freebtrtransrel( TransRel )
|
||||||
|
|
||||||
|
btrtransrel *TransRel;
|
||||||
|
{
|
||||||
|
autfreeblock( (char *)TransRel );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Free Variable Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void freebtrvarrel( VarRel )
|
||||||
|
|
||||||
|
btrvarrel *VarRel;
|
||||||
|
{
|
||||||
|
autfreeblock( (char *)VarRel );
|
||||||
|
}
|
||||||
|
|
|
@ -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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : btrfree.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BTR_FREE_H
|
||||||
|
# define BTR_FREE_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,606 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : Btr Transition Function |
|
||||||
|
| |
|
||||||
|
| Authors : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <string.h>
|
||||||
|
# include <memory.h>
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "abl.h"
|
||||||
|
# include "bdd.h"
|
||||||
|
# include "btr.h"
|
||||||
|
# include "btrfunc.h"
|
||||||
|
# include "btrerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static btrvarfunc *BtrLocalVarFunc = (btrvarfunc *)0;
|
||||||
|
static btrvarorder *BtrLocalVarOrder = (btrvarorder *)0;
|
||||||
|
static long BtrLocalNumberVar = 0;
|
||||||
|
static long BtrLocalIndexVar = 0;
|
||||||
|
|
||||||
|
static long *BtrLocalCostArray = (long *)0;
|
||||||
|
static long BtrLocalCostLength = 0;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Btr PreImage Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *loc_preimagebtrtransfunc( StateSet )
|
||||||
|
|
||||||
|
bddnode *StateSet;
|
||||||
|
{
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
bddnode *BddSetIn;
|
||||||
|
bddnode *BddSetOut;
|
||||||
|
bddnode *BddResult;
|
||||||
|
bddnode *BddHigh;
|
||||||
|
bddnode *BddLow;
|
||||||
|
|
||||||
|
if ( StateSet->INDEX < BDD_INDEX_MIN )
|
||||||
|
{
|
||||||
|
return( StateSet );
|
||||||
|
}
|
||||||
|
|
||||||
|
VarFunc = &BtrLocalVarFunc[ BtrLocalVarOrder[ BtrLocalIndexVar ] ];
|
||||||
|
|
||||||
|
BddSetIn = decbddrefext( applybddnodenot( (bddsystem *)0, StateSet ) );
|
||||||
|
BddSetIn = applybddnode( (bddsystem *)0, ABL_OR , VarFunc->VAR , BddSetIn );
|
||||||
|
BddSetOut = applybddnode( (bddsystem *)0, ABL_NAND, VarFunc->VAR , StateSet );
|
||||||
|
|
||||||
|
BtrLocalIndexVar++;
|
||||||
|
|
||||||
|
if ( BtrLocalIndexVar >= BtrLocalNumberVar )
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
** StateSet => Rn, Fn
|
||||||
|
*/
|
||||||
|
if ( BddSetIn->INDEX == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
BddResult = incbddrefext( VarFunc->FUNC );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
/*
|
||||||
|
** StateSet => ! Rn, ! Fn
|
||||||
|
*/
|
||||||
|
if ( BddSetOut->INDEX == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
BddResult = applybddnodenot( (bddsystem *)0, VarFunc->FUNC );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BddResult = BddLocalSystem->ONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
** StateSet => Ri, Fi . Img( StateSet )
|
||||||
|
*/
|
||||||
|
if ( BddSetIn->INDEX == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
BddResult = decbddrefext( loc_preimagebtrtransfunc( StateSet ) );
|
||||||
|
BddResult = applybddnode( (bddsystem *)0, ABL_AND, VarFunc->FUNC, BddResult );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
/*
|
||||||
|
** StateSet => ! Ri, ! Fi . Img( StateSet )
|
||||||
|
*/
|
||||||
|
if ( BddSetOut->INDEX == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
BddLow = loc_preimagebtrtransfunc( StateSet );
|
||||||
|
BddHigh = applybddnodenot( (bddsystem *)0, VarFunc->FUNC );
|
||||||
|
|
||||||
|
BddResult = applybddnode( (bddsystem *)0, ABL_AND,
|
||||||
|
decbddrefext( BddHigh ),
|
||||||
|
decbddrefext( BddLow ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
** Fi . Img( StateSet . Ri ) + ! Fi . Img( StateSet . ! Ri )
|
||||||
|
*/
|
||||||
|
BddSetOut = applybddnodenot( (bddsystem *)0, decbddrefext( BddSetOut ) );
|
||||||
|
BddSetIn = applybddnodenot( (bddsystem *)0, decbddrefext( BddSetIn ) );
|
||||||
|
|
||||||
|
BddHigh = applybddnodenot( (bddsystem *)0, VarFunc->FUNC );
|
||||||
|
BddLow = loc_preimagebtrtransfunc( BddSetIn );
|
||||||
|
BddLow = applybddnode( (bddsystem *)0, ABL_AND,
|
||||||
|
decbddrefext( BddHigh ),
|
||||||
|
decbddrefext( BddLow ) );
|
||||||
|
|
||||||
|
BddHigh = decbddrefext( loc_preimagebtrtransfunc( BddSetOut ) );
|
||||||
|
BddHigh = applybddnode( (bddsystem *)0, ABL_AND, VarFunc->FUNC, BddHigh );
|
||||||
|
|
||||||
|
BddResult = applybddnode( (bddsystem *)0, ABL_OR,
|
||||||
|
decbddrefext( BddHigh ),
|
||||||
|
decbddrefext( BddLow ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BtrLocalIndexVar--;
|
||||||
|
|
||||||
|
decbddrefext( BddSetIn );
|
||||||
|
decbddrefext( BddSetOut );
|
||||||
|
|
||||||
|
return( BddResult );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr PreImage Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *preimagebtrtransfunc( TransFunc, StateSet )
|
||||||
|
|
||||||
|
btrtransfunc *TransFunc;
|
||||||
|
bddnode *StateSet;
|
||||||
|
{
|
||||||
|
bddnode *BddResult;
|
||||||
|
|
||||||
|
setbddlocalsystem( TransFunc->BDD_SYSTEM );
|
||||||
|
|
||||||
|
BtrLocalVarFunc = TransFunc->VAR_FUNC;
|
||||||
|
BtrLocalVarOrder = TransFunc->VAR_ORDER;
|
||||||
|
BtrLocalNumberVar = TransFunc->NUMBER_VAR;
|
||||||
|
BtrLocalIndexVar = 0;
|
||||||
|
|
||||||
|
if ( BtrLocalNumberVar == 0 )
|
||||||
|
{
|
||||||
|
btrerror( BTR_BAD_VAR_ERROR, BtrLocalNumberVar );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddResult = loc_preimagebtrtransfunc( StateSet );
|
||||||
|
|
||||||
|
return( BddResult );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Btr Image Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *loc_imagebtrtransfunc( StateSet )
|
||||||
|
|
||||||
|
bddnode *StateSet;
|
||||||
|
{
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
bddnode *BddSetIn;
|
||||||
|
bddnode *BddSetOut;
|
||||||
|
bddnode *BddResult;
|
||||||
|
bddnode *BddHigh;
|
||||||
|
bddnode *BddLow;
|
||||||
|
|
||||||
|
if ( StateSet->INDEX == BDD_INDEX_ZERO )
|
||||||
|
{
|
||||||
|
return( StateSet );
|
||||||
|
}
|
||||||
|
|
||||||
|
VarFunc = &BtrLocalVarFunc[ BtrLocalVarOrder[ BtrLocalIndexVar ] ];
|
||||||
|
|
||||||
|
BddSetIn = decbddrefext( applybddnodenot( (bddsystem *)0, StateSet ) );
|
||||||
|
BddSetIn = applybddnode( (bddsystem *)0, ABL_OR , VarFunc->FUNC, BddSetIn );
|
||||||
|
BddSetOut = applybddnode( (bddsystem *)0, ABL_NAND, VarFunc->FUNC, StateSet );
|
||||||
|
|
||||||
|
BtrLocalIndexVar++;
|
||||||
|
|
||||||
|
if ( BtrLocalIndexVar >= BtrLocalNumberVar )
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
** StateSet => Fn, Rn
|
||||||
|
*/
|
||||||
|
if ( BddSetIn->INDEX == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
BddResult = incbddrefext( VarFunc->VAR );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
/*
|
||||||
|
** StateSet => ! Fn, ! Rn
|
||||||
|
*/
|
||||||
|
if ( BddSetOut->INDEX == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
BddResult = applybddnodenot( (bddsystem *)0, VarFunc->VAR );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BddResult = BddLocalSystem->ONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
** StateSet => Fi, Ri . Img( StateSet )
|
||||||
|
*/
|
||||||
|
if ( BddSetIn->INDEX == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
BddResult = decbddrefext( loc_imagebtrtransfunc( StateSet ) );
|
||||||
|
BddResult = applybddnode( (bddsystem *)0, ABL_AND, VarFunc->VAR, BddResult );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
/*
|
||||||
|
** StateSet => ! Fi, ! Ri . Img( StateSet )
|
||||||
|
*/
|
||||||
|
if ( BddSetOut->INDEX == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
BddLow = loc_imagebtrtransfunc( StateSet );
|
||||||
|
BddHigh = applybddnodenot( (bddsystem *)0, VarFunc->VAR );
|
||||||
|
|
||||||
|
BddResult = applybddnode( (bddsystem *)0, ABL_AND,
|
||||||
|
decbddrefext( BddHigh ),
|
||||||
|
decbddrefext( BddLow ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
** Ri . Img( StateSet . Fi ) + ! Ri . Img( StateSet . ! Fi )
|
||||||
|
*/
|
||||||
|
BddSetOut = applybddnodenot( (bddsystem *)0, decbddrefext( BddSetOut ) );
|
||||||
|
BddSetIn = applybddnodenot( (bddsystem *)0, decbddrefext( BddSetIn ) );
|
||||||
|
|
||||||
|
BddHigh = applybddnodenot( (bddsystem *)0, VarFunc->VAR );
|
||||||
|
BddLow = loc_imagebtrtransfunc( BddSetIn );
|
||||||
|
BddLow = applybddnode( (bddsystem *)0, ABL_AND,
|
||||||
|
decbddrefext( BddHigh ),
|
||||||
|
decbddrefext( BddLow ) );
|
||||||
|
|
||||||
|
BddHigh = decbddrefext( loc_imagebtrtransfunc( BddSetOut ) );
|
||||||
|
BddHigh = applybddnode( (bddsystem *)0, ABL_AND, VarFunc->VAR, BddHigh );
|
||||||
|
|
||||||
|
BddResult = applybddnode( (bddsystem *)0, ABL_OR,
|
||||||
|
decbddrefext( BddHigh ),
|
||||||
|
decbddrefext( BddLow ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BtrLocalIndexVar--;
|
||||||
|
|
||||||
|
decbddrefext( BddSetIn );
|
||||||
|
decbddrefext( BddSetOut );
|
||||||
|
|
||||||
|
return( BddResult );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Image Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *imagebtrtransfunc( TransFunc, StateSet )
|
||||||
|
|
||||||
|
btrtransfunc *TransFunc;
|
||||||
|
bddnode *StateSet;
|
||||||
|
{
|
||||||
|
bddnode *BddResult;
|
||||||
|
|
||||||
|
setbddlocalsystem( TransFunc->BDD_SYSTEM );
|
||||||
|
|
||||||
|
BtrLocalVarFunc = TransFunc->VAR_FUNC;
|
||||||
|
BtrLocalVarOrder = TransFunc->VAR_ORDER;
|
||||||
|
BtrLocalNumberVar = TransFunc->NUMBER_VAR;
|
||||||
|
BtrLocalIndexVar = 0;
|
||||||
|
|
||||||
|
if ( BtrLocalNumberVar == 0 )
|
||||||
|
{
|
||||||
|
btrerror( BTR_BAD_VAR_ERROR, BtrLocalNumberVar );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddResult = loc_imagebtrtransfunc( StateSet );
|
||||||
|
|
||||||
|
return( BddResult );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Creates Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrtransfunc *createbtrtransfunc( BddSystem, MaxVar )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddvar MaxVar;
|
||||||
|
{
|
||||||
|
btrtransfunc *TransFunc;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( MaxVar >= BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
btrerror( BTR_BAD_VAR_ERROR, MaxVar );
|
||||||
|
}
|
||||||
|
|
||||||
|
TransFunc = allocbtrtransfunc();
|
||||||
|
|
||||||
|
TransFunc->BDD_SYSTEM = BddLocalSystem;
|
||||||
|
|
||||||
|
TransFunc->MAX_VAR = MaxVar;
|
||||||
|
TransFunc->VAR_FUNC = allocbtrvarfunc( MaxVar );
|
||||||
|
TransFunc->VAR_ORDER = allocbtrvarorder( MaxVar );
|
||||||
|
|
||||||
|
return( TransFunc );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Add Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void addbtrtransfunc( TransFunc, VarNode, FuncNode )
|
||||||
|
|
||||||
|
btrtransfunc *TransFunc;
|
||||||
|
bddnode *VarNode;
|
||||||
|
bddnode *FuncNode;
|
||||||
|
{
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
btrvarorder *VarOrder;
|
||||||
|
long MaxVar;
|
||||||
|
long NumberVar;
|
||||||
|
|
||||||
|
NumberVar = TransFunc->NUMBER_VAR;
|
||||||
|
MaxVar = TransFunc->MAX_VAR;
|
||||||
|
|
||||||
|
if ( NumberVar >= BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
btrerror( BTR_NO_MORE_VAR_ERROR, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( NumberVar == MaxVar )
|
||||||
|
{
|
||||||
|
MaxVar = MaxVar * BTR_VAR_STRETCH_FACTOR;
|
||||||
|
|
||||||
|
if ( MaxVar >= BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
MaxVar = BDD_MAX_VAR - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
VarFunc = resizebtrvarfunc( TransFunc->VAR_FUNC,
|
||||||
|
TransFunc->MAX_VAR, MaxVar );
|
||||||
|
|
||||||
|
VarOrder = resizebtrvarorder( TransFunc->VAR_ORDER,
|
||||||
|
TransFunc->MAX_VAR, MaxVar );
|
||||||
|
|
||||||
|
TransFunc->VAR_FUNC = VarFunc;
|
||||||
|
TransFunc->VAR_ORDER = VarOrder;
|
||||||
|
TransFunc->MAX_VAR = MaxVar;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
VarFunc = TransFunc->VAR_FUNC;
|
||||||
|
VarOrder = TransFunc->VAR_ORDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
VarFunc [ NumberVar ].FUNC = incbddrefext( FuncNode );
|
||||||
|
VarFunc [ NumberVar ].VAR = VarNode;
|
||||||
|
VarOrder[ NumberVar ] = NumberVar;
|
||||||
|
|
||||||
|
TransFunc->NUMBER_VAR++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Reset Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void resetbtrtransfunc( TransFunc )
|
||||||
|
|
||||||
|
btrtransfunc *TransFunc;
|
||||||
|
{
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
btrvarorder *VarOrder;
|
||||||
|
long Variable;
|
||||||
|
long NumberVar;
|
||||||
|
|
||||||
|
NumberVar = TransFunc->NUMBER_VAR;
|
||||||
|
VarFunc = TransFunc->VAR_FUNC;
|
||||||
|
VarOrder = TransFunc->VAR_ORDER;
|
||||||
|
|
||||||
|
for ( Variable = 0; Variable < NumberVar; Variable++ )
|
||||||
|
{
|
||||||
|
decbddrefext( VarFunc[ Variable ].FUNC );
|
||||||
|
}
|
||||||
|
|
||||||
|
memset( (void *)VarFunc, 0,
|
||||||
|
(size_t)NumberVar * sizeof( btrvarfunc ) );
|
||||||
|
|
||||||
|
memset( (void *)VarOrder, 0,
|
||||||
|
(size_t)NumberVar * sizeof( btrvarorder ) );
|
||||||
|
|
||||||
|
TransFunc->NUMBER_VAR = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Destroys Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void destroybtrtransfunc( TransFunc )
|
||||||
|
|
||||||
|
btrtransfunc *TransFunc;
|
||||||
|
{
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
long Variable;
|
||||||
|
long NumberVar;
|
||||||
|
|
||||||
|
NumberVar = TransFunc->NUMBER_VAR;
|
||||||
|
VarFunc = TransFunc->VAR_FUNC;
|
||||||
|
|
||||||
|
for ( Variable = 0; Variable < NumberVar; Variable++ )
|
||||||
|
{
|
||||||
|
decbddrefext( VarFunc[ Variable ].FUNC );
|
||||||
|
}
|
||||||
|
|
||||||
|
freebtrvarfunc( TransFunc->VAR_FUNC );
|
||||||
|
freebtrvarorder( TransFunc->VAR_ORDER );
|
||||||
|
freebtrtransfunc( TransFunc );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr View Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewbtrtransfunc( TransFunc, FuncView )
|
||||||
|
|
||||||
|
btrtransfunc *TransFunc;
|
||||||
|
void (*FuncView)();
|
||||||
|
{
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
long Variable;
|
||||||
|
long NumberVar;
|
||||||
|
|
||||||
|
fprintf( stdout, "--> BtrTransFunc\n" );
|
||||||
|
|
||||||
|
fprintf( stdout, " MAX_VAR : %ld\n", (long)TransFunc->MAX_VAR );
|
||||||
|
fprintf( stdout, " NUMBER_VAR : %ld\n", (long)TransFunc->NUMBER_VAR );
|
||||||
|
|
||||||
|
NumberVar = TransFunc->NUMBER_VAR;
|
||||||
|
VarFunc = TransFunc->VAR_FUNC;
|
||||||
|
|
||||||
|
for ( Variable = 0; Variable < NumberVar; Variable++ )
|
||||||
|
{
|
||||||
|
fprintf( stdout, " VAR_FUNC[ %ld ] : ", Variable );
|
||||||
|
|
||||||
|
if ( FuncView )
|
||||||
|
{
|
||||||
|
(*FuncView)( &VarFunc[ Variable ] );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "<-- BtrTransFunc\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Local Reorder Compare |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static long loc_ordercompare( ValueArray, Index1, Index2 )
|
||||||
|
|
||||||
|
long *ValueArray;
|
||||||
|
long Index1;
|
||||||
|
long Index2;
|
||||||
|
{
|
||||||
|
return( ValueArray[ Index1 ] - ValueArray[ Index2 ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Reorder Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void reorderbtrtransfunc( TransFunc )
|
||||||
|
|
||||||
|
btrtransfunc *TransFunc;
|
||||||
|
{
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
btrvarorder *VarOrder;
|
||||||
|
long NumberVar;
|
||||||
|
long Variable;
|
||||||
|
bddnode *BddNode;
|
||||||
|
|
||||||
|
NumberVar = TransFunc->NUMBER_VAR;
|
||||||
|
VarFunc = TransFunc->VAR_FUNC;
|
||||||
|
VarOrder = TransFunc->VAR_ORDER;
|
||||||
|
|
||||||
|
setbddlocalsystem( TransFunc->BDD_SYSTEM );
|
||||||
|
|
||||||
|
if ( BtrLocalCostArray == (long *)0 )
|
||||||
|
{
|
||||||
|
BtrLocalCostArray = (long *)autallocblock( sizeof(long) * NumberVar );
|
||||||
|
BtrLocalCostLength = NumberVar;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( BtrLocalCostLength < NumberVar )
|
||||||
|
{
|
||||||
|
BtrLocalCostArray =
|
||||||
|
|
||||||
|
(long *)autresizeblock( (char *)BtrLocalCostArray,
|
||||||
|
sizeof( long ) * BtrLocalCostLength,
|
||||||
|
sizeof( long ) * NumberVar );
|
||||||
|
|
||||||
|
BtrLocalCostLength = NumberVar;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( Variable = 0; Variable < NumberVar; Variable++ )
|
||||||
|
{
|
||||||
|
BddNode = VarFunc[ Variable ].FUNC;
|
||||||
|
BtrLocalCostArray[ Variable ] = getbddnodesize( (bddsystem *)0, BddNode );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sortautarray( BtrLocalCostArray, VarOrder, NumberVar, loc_ordercompare );
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : Btr Transition Function |
|
||||||
|
| |
|
||||||
|
| Authors : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BTR_FUNC_H
|
||||||
|
# define BTR_FUNC_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define BTR_VAR_STRETCH_FACTOR 2
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Error |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Warning |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macros |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,123 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : btrresize.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Btrhor : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "abl.h"
|
||||||
|
# include "bdd.h"
|
||||||
|
# include "btr.h"
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "btrresize.h"
|
||||||
|
# include "btrerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Resize Variable Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrvarfunc *resizebtrvarfunc( VarFunc, OldNum, NewNum )
|
||||||
|
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
long OldNum;
|
||||||
|
long NewNum;
|
||||||
|
{
|
||||||
|
return( (btrvarfunc *)autresizeblock( (char *)VarFunc,
|
||||||
|
sizeof( btrvarfunc ) * OldNum,
|
||||||
|
sizeof( btrvarfunc ) * NewNum ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Resize Variable Order |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrvarorder *resizebtrvarorder( VarOrder, OldNum, NewNum )
|
||||||
|
|
||||||
|
btrvarorder *VarOrder;
|
||||||
|
long OldNum;
|
||||||
|
long NewNum;
|
||||||
|
{
|
||||||
|
return( (btrvarorder *)autresizeblock( (char *)VarOrder,
|
||||||
|
sizeof( btrvarorder ) * OldNum,
|
||||||
|
sizeof( btrvarorder ) * NewNum ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Resize Variable Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrvarrel *resizebtrvarrel( VarRel, OldNum, NewNum )
|
||||||
|
|
||||||
|
btrvarrel *VarRel;
|
||||||
|
long OldNum;
|
||||||
|
long NewNum;
|
||||||
|
{
|
||||||
|
return( (btrvarrel *)autresizeblock( (char *)VarRel,
|
||||||
|
sizeof( btrvarrel ) * OldNum,
|
||||||
|
sizeof( btrvarrel ) * NewNum ) );
|
||||||
|
}
|
|
@ -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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : btrresize.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BTR_RESIZE_H
|
||||||
|
# define BTR_RESIZE_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,319 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : Btr Transition Relation |
|
||||||
|
| |
|
||||||
|
| Authors : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <memory.h>
|
||||||
|
# include <string.h>
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "abl.h"
|
||||||
|
# include "bdd.h"
|
||||||
|
# include "btr.h"
|
||||||
|
# include "btrtrans.h"
|
||||||
|
# include "btrerror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Image Transition Function |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *imagebtrtransrel( TransRel, StateSet )
|
||||||
|
|
||||||
|
btrtransrel *TransRel;
|
||||||
|
bddnode *StateSet;
|
||||||
|
{
|
||||||
|
bddnode *BddImage;
|
||||||
|
btrvarrel *VarRel;
|
||||||
|
long NumberVar;
|
||||||
|
long Variable;
|
||||||
|
|
||||||
|
setbddlocalsystem( TransRel->BDD_SYSTEM );
|
||||||
|
|
||||||
|
NumberVar = TransRel->NUMBER_VAR;
|
||||||
|
|
||||||
|
if ( NumberVar == 0 )
|
||||||
|
{
|
||||||
|
btrerror( BTR_BAD_VAR_ERROR, NumberVar );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddImage = BddLocalSystem->ONE;
|
||||||
|
|
||||||
|
for ( Variable = 0; Variable < NumberVar; Variable++ )
|
||||||
|
{
|
||||||
|
VarRel = &TransRel->VAR_REL[ Variable ];
|
||||||
|
BddImage = applybddnode( (bddsystem *)0, ABL_AND,
|
||||||
|
decbddrefext( BddImage ), VarRel->REL );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddImage = relprodbddnodeassoc( (bddsystem *)0,
|
||||||
|
decbddrefext( BddImage ), StateSet,
|
||||||
|
TransRel->VAR_ASSOC );
|
||||||
|
|
||||||
|
BddImage = substbddnodeassoc( (bddsystem *)0,
|
||||||
|
decbddrefext( BddImage ),
|
||||||
|
TransRel->PRIME_ASSOC );
|
||||||
|
return( BddImage );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Create Transition Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
btrtransrel *createbtrtransrel( BddSystem, MaxVar )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddvar MaxVar;
|
||||||
|
{
|
||||||
|
btrtransrel *TransRel;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( MaxVar >= BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
btrerror( BTR_BAD_VAR_ERROR, MaxVar );
|
||||||
|
}
|
||||||
|
|
||||||
|
TransRel = allocbtrtransrel();
|
||||||
|
|
||||||
|
TransRel->BDD_SYSTEM = BddLocalSystem;
|
||||||
|
|
||||||
|
TransRel->MAX_VAR = MaxVar;
|
||||||
|
TransRel->VAR_REL = allocbtrvarrel( MaxVar );
|
||||||
|
|
||||||
|
TransRel->PRIME_ASSOC = addbddassoc( (bddsystem *)0 );
|
||||||
|
TransRel->VAR_ASSOC = addbddassoc( (bddsystem *)0 );
|
||||||
|
|
||||||
|
return( TransRel );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Add Transition Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void addbtrtransrel( TransRel, VarNode, PrimeNode, FuncNode )
|
||||||
|
|
||||||
|
btrtransrel *TransRel;
|
||||||
|
bddnode *VarNode;
|
||||||
|
bddnode *PrimeNode;
|
||||||
|
bddnode *FuncNode;
|
||||||
|
{
|
||||||
|
btrvarrel *VarRel;
|
||||||
|
bddnode *RelNode;
|
||||||
|
bddvar VarPrime;
|
||||||
|
bddvar Variable;
|
||||||
|
long MaxVar;
|
||||||
|
long NumberVar;
|
||||||
|
|
||||||
|
setbddlocalsystem( TransRel->BDD_SYSTEM );
|
||||||
|
|
||||||
|
NumberVar = TransRel->NUMBER_VAR;
|
||||||
|
MaxVar = TransRel->MAX_VAR;
|
||||||
|
|
||||||
|
if ( NumberVar >= BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
btrerror( BTR_NO_MORE_VAR_ERROR, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( NumberVar == MaxVar )
|
||||||
|
{
|
||||||
|
MaxVar = MaxVar * BTR_VAR_STRETCH_FACTOR;
|
||||||
|
|
||||||
|
if ( MaxVar >= BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
MaxVar = BDD_MAX_VAR - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
VarRel = resizebtrvarrel( TransRel->VAR_REL,
|
||||||
|
TransRel->MAX_VAR, MaxVar );
|
||||||
|
|
||||||
|
TransRel->VAR_REL = VarRel;
|
||||||
|
TransRel->MAX_VAR = MaxVar;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
VarRel = TransRel->VAR_REL;
|
||||||
|
}
|
||||||
|
|
||||||
|
VarPrime = BddLocalSystem->INDEX_TO_VAR[ PrimeNode->INDEX ];
|
||||||
|
Variable = BddLocalSystem->INDEX_TO_VAR[ VarNode->INDEX ];
|
||||||
|
|
||||||
|
addbddnodeassoc( (bddsystem *)0, TransRel->PRIME_ASSOC, VarPrime, VarNode );
|
||||||
|
addbddnodeassoc( (bddsystem *)0, TransRel->VAR_ASSOC , Variable, PrimeNode );
|
||||||
|
|
||||||
|
RelNode = applybddnode( (bddsystem *)0, ABL_NXOR, FuncNode, PrimeNode );
|
||||||
|
|
||||||
|
VarRel[ NumberVar ].REL = RelNode;
|
||||||
|
VarRel[ NumberVar ].VAR = VarNode;
|
||||||
|
VarRel[ NumberVar ].PRIME = PrimeNode;
|
||||||
|
|
||||||
|
TransRel->NUMBER_VAR++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Reset Transition Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void resetbtrtransrel( TransRel )
|
||||||
|
|
||||||
|
btrtransrel *TransRel;
|
||||||
|
{
|
||||||
|
btrvarrel *VarRel;
|
||||||
|
long Variable;
|
||||||
|
long NumberVar;
|
||||||
|
|
||||||
|
setbddlocalsystem( TransRel->BDD_SYSTEM );
|
||||||
|
|
||||||
|
NumberVar = TransRel->NUMBER_VAR;
|
||||||
|
VarRel = TransRel->VAR_REL;
|
||||||
|
|
||||||
|
for ( Variable = 0; Variable < NumberVar; Variable++ )
|
||||||
|
{
|
||||||
|
decbddrefext( VarRel[ Variable ].REL );
|
||||||
|
}
|
||||||
|
|
||||||
|
memset( (void *)VarRel, 0,
|
||||||
|
(size_t)NumberVar * sizeof( btrvarrel ) );
|
||||||
|
|
||||||
|
TransRel->NUMBER_VAR = 0;
|
||||||
|
|
||||||
|
resetbddassoc( (bddsystem *)0, TransRel->PRIME_ASSOC );
|
||||||
|
resetbddassoc( (bddsystem *)0, TransRel->VAR_ASSOC );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Destroy Transition Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void destroybtrtransrel( TransRel )
|
||||||
|
|
||||||
|
btrtransrel *TransRel;
|
||||||
|
{
|
||||||
|
btrvarrel *VarRel;
|
||||||
|
long Variable;
|
||||||
|
long NumberVar;
|
||||||
|
|
||||||
|
setbddlocalsystem( TransRel->BDD_SYSTEM );
|
||||||
|
|
||||||
|
NumberVar = TransRel->NUMBER_VAR;
|
||||||
|
VarRel = TransRel->VAR_REL;
|
||||||
|
|
||||||
|
for ( Variable = 0; Variable < NumberVar; Variable++ )
|
||||||
|
{
|
||||||
|
decbddrefext( VarRel[ Variable ].REL );
|
||||||
|
}
|
||||||
|
|
||||||
|
freebtrvarrel( TransRel->VAR_REL );
|
||||||
|
freebtrtransrel( TransRel );
|
||||||
|
|
||||||
|
delbddassoc( (bddsystem *)0, TransRel->PRIME_ASSOC );
|
||||||
|
delbddassoc( (bddsystem *)0, TransRel->VAR_ASSOC );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr View Transition Relation |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewbtrtransrel( TransRel, FuncView )
|
||||||
|
|
||||||
|
btrtransrel *TransRel;
|
||||||
|
void (*FuncView)();
|
||||||
|
{
|
||||||
|
btrvarrel *VarRel;
|
||||||
|
long Variable;
|
||||||
|
long NumberVar;
|
||||||
|
|
||||||
|
fprintf( stdout, "--> BtrTransRel\n" );
|
||||||
|
|
||||||
|
fprintf( stdout, " MAX_VAR : %ld\n", (long)TransRel->MAX_VAR );
|
||||||
|
fprintf( stdout, " NUMBER_VAR : %ld\n", (long)TransRel->NUMBER_VAR );
|
||||||
|
|
||||||
|
NumberVar = TransRel->NUMBER_VAR;
|
||||||
|
VarRel = TransRel->VAR_REL;
|
||||||
|
|
||||||
|
for ( Variable = 0; Variable < NumberVar; Variable++ )
|
||||||
|
{
|
||||||
|
fprintf( stdout, " VAR_REL[ %ld ] : ", Variable );
|
||||||
|
|
||||||
|
if ( FuncView )
|
||||||
|
{
|
||||||
|
(*FuncView)( &VarRel[ Variable ] );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "<-- BtrTransRel\n" );
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : Btr Transition Function |
|
||||||
|
| |
|
||||||
|
| Authors : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BTR_TRANS_H
|
||||||
|
# define BTR_TRANS_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# define BTR_VAR_STRETCH_FACTOR 2
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Error |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Warning |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macros |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,10 @@
|
||||||
|
for I in *[ch]
|
||||||
|
do
|
||||||
|
sed -e 's/\<AUT_H\>/\"aut.h\"/g' \
|
||||||
|
-e 's/\<MUT_H\>/\"mut.h\"/g' \
|
||||||
|
-e 's/\<ABL_H\>/\"abl.h\"/g' \
|
||||||
|
-e 's/\<BTR_H\>/\"btr.h\"/g' \
|
||||||
|
-e 's/\<BDD_H\>/\"bdd.h\"/g' $I > 1
|
||||||
|
mv 1 $I
|
||||||
|
done
|
||||||
|
|
|
@ -0,0 +1,508 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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 : Btr |
|
||||||
|
| |
|
||||||
|
| File : main.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <string.h>
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "abl.h"
|
||||||
|
# include "log.h"
|
||||||
|
# include "beh.h"
|
||||||
|
# include "bvl.h"
|
||||||
|
# include "bhl.h"
|
||||||
|
# include "btr.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static char *BtrStateArray = (char *)0;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Btr Usage |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void BtrUsage()
|
||||||
|
{
|
||||||
|
fprintf( stderr, "Usage: btrtest [-tfip] filename\n" );
|
||||||
|
|
||||||
|
exit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| BtrViewBddState |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void BtrViewBddState( BddNode )
|
||||||
|
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
bddindex BddIndex;
|
||||||
|
|
||||||
|
if ( BddNode->INDEX < BDD_INDEX_MIN )
|
||||||
|
{
|
||||||
|
if ( BddNode->INDEX == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "%s\n", BtrStateArray );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BddIndex = BddNode->INDEX - BDD_INDEX_MIN;
|
||||||
|
|
||||||
|
BtrStateArray[ BddIndex ] = '1';
|
||||||
|
BtrViewBddState( BddNode->HIGH );
|
||||||
|
|
||||||
|
BtrStateArray[ BddIndex ] = '0';
|
||||||
|
BtrViewBddState( BddNode->LOW );
|
||||||
|
|
||||||
|
BtrStateArray[ BddIndex ] = '*';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| BtrViewBddNode |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void BtrViewBddNode( BddNode )
|
||||||
|
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
chain_list *Expr;
|
||||||
|
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit *)0, BddNode );
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
delablexpr( Expr );
|
||||||
|
|
||||||
|
fprintf( stdout, "\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| BtrViewFunc |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void BtrViewFunc( VarFunc )
|
||||||
|
|
||||||
|
btrvarfunc *VarFunc;
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\nVAR : " );
|
||||||
|
BtrViewBddNode( VarFunc->VAR );
|
||||||
|
fprintf( stdout, "FUNC: " );
|
||||||
|
BtrViewBddNode( VarFunc->FUNC );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| BtrViewRel |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void BtrViewRel( VarRel )
|
||||||
|
|
||||||
|
btrvarrel *VarRel;
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\nVAR : " );
|
||||||
|
BtrViewBddNode( VarRel->VAR );
|
||||||
|
fprintf( stdout, "PRIME: " );
|
||||||
|
BtrViewBddNode( VarRel->PRIME );
|
||||||
|
fprintf( stdout, "REL: " );
|
||||||
|
BtrViewBddNode( VarRel->REL );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| PreImage |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void BtrPreImageFunc( BtrTransFunc, BddInitial, BddAssoc )
|
||||||
|
|
||||||
|
btrtransfunc *BtrTransFunc;
|
||||||
|
bddnode *BddInitial;
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
{
|
||||||
|
bddnode *BddCurrent;
|
||||||
|
bddnode *BddReached;
|
||||||
|
bddnode *BddNew;
|
||||||
|
bddnode *BddPreImage;
|
||||||
|
|
||||||
|
BddCurrent = BddInitial;
|
||||||
|
|
||||||
|
fprintf( stdout, "Initial:\n" );
|
||||||
|
/*\
|
||||||
|
BtrViewBddState( BddCurrent );
|
||||||
|
\*/
|
||||||
|
|
||||||
|
BddReached = incbddrefext( BddCurrent );
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
BddPreImage = (bddnode *)preimagebtrtransfunc( BtrTransFunc, BddCurrent );
|
||||||
|
decbddrefext( BddCurrent );
|
||||||
|
|
||||||
|
BddCurrent = missbddnodeassocon( (bddsystem *)0, BddPreImage, BddAssoc );
|
||||||
|
decbddrefext( BddPreImage );
|
||||||
|
|
||||||
|
fprintf( stdout, "PreImage:\n" );
|
||||||
|
/*\
|
||||||
|
BtrViewBddState( BddCurrent );
|
||||||
|
\*/
|
||||||
|
BddNew = applybddnodenot( (bddsystem *)0, BddReached );
|
||||||
|
BddNew = applybddnode( (bddsystem *)0, ABL_AND, BddCurrent, decbddrefext( BddNew ) );
|
||||||
|
|
||||||
|
BddReached = applybddnode( (bddsystem *)0, ABL_OR,
|
||||||
|
decbddrefext( BddReached ),
|
||||||
|
decbddrefext( BddCurrent ) );
|
||||||
|
|
||||||
|
BddCurrent = BddNew;
|
||||||
|
}
|
||||||
|
while ( BddNew != BddLocalSystem->ZERO );
|
||||||
|
|
||||||
|
decbddrefext( BddReached );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Image |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void BtrImageFunc( BtrTransFunc, BddInitial )
|
||||||
|
|
||||||
|
btrtransfunc *BtrTransFunc;
|
||||||
|
bddnode *BddInitial;
|
||||||
|
{
|
||||||
|
bddnode *BddCurrent;
|
||||||
|
bddnode *BddReached;
|
||||||
|
bddnode *BddNew;
|
||||||
|
bddnode *BddImage;
|
||||||
|
|
||||||
|
BddCurrent = BddInitial;
|
||||||
|
|
||||||
|
fprintf( stdout, "Initial:\n" );
|
||||||
|
BtrViewBddState( BddCurrent );
|
||||||
|
|
||||||
|
BddReached = incbddrefext( BddCurrent );
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
BddImage = (bddnode *)imagebtrtransfunc( BtrTransFunc, BddCurrent );
|
||||||
|
|
||||||
|
decbddrefext( BddCurrent );
|
||||||
|
BddCurrent = BddImage;
|
||||||
|
|
||||||
|
fprintf( stdout, "Image:\n" );
|
||||||
|
BtrViewBddState( BddImage );
|
||||||
|
|
||||||
|
BddNew = applybddnodenot( (bddsystem *)0, BddReached );
|
||||||
|
BddNew = applybddnode( (bddsystem *)0, ABL_AND, BddCurrent, decbddrefext( BddNew ) );
|
||||||
|
|
||||||
|
BddReached = applybddnode( (bddsystem *)0, ABL_OR,
|
||||||
|
decbddrefext( BddReached ),
|
||||||
|
decbddrefext( BddCurrent ) );
|
||||||
|
|
||||||
|
BddCurrent = BddNew;
|
||||||
|
}
|
||||||
|
while ( BddNew != BddLocalSystem->ZERO );
|
||||||
|
|
||||||
|
decbddrefext( BddReached );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Image |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void BtrImageRel( BtrTransRel, BddInitial, BddAssoc )
|
||||||
|
|
||||||
|
btrtransrel *BtrTransRel;
|
||||||
|
bddnode *BddInitial;
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
{
|
||||||
|
bddnode *BddCurrent;
|
||||||
|
bddnode *BddReached;
|
||||||
|
bddnode *BddNew;
|
||||||
|
bddnode *BddImage;
|
||||||
|
|
||||||
|
BddCurrent = BddInitial;
|
||||||
|
|
||||||
|
fprintf( stdout, "Initial:\n" );
|
||||||
|
BtrViewBddState( BddCurrent );
|
||||||
|
|
||||||
|
BddReached = incbddrefext( BddCurrent );
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
BddImage = (bddnode *)imagebtrtransrel( BtrTransRel, BddCurrent );
|
||||||
|
BddImage = missbddnodeassocon( (bddsystem *)0,
|
||||||
|
decbddrefext( BddImage ), BddAssoc );
|
||||||
|
|
||||||
|
decbddrefext( BddCurrent );
|
||||||
|
BddCurrent = BddImage;
|
||||||
|
|
||||||
|
fprintf( stdout, "Image:\n" );
|
||||||
|
BtrViewBddState( BddImage );
|
||||||
|
|
||||||
|
BddNew = applybddnodenot( (bddsystem *)0, BddReached );
|
||||||
|
BddNew = applybddnode( (bddsystem *)0, ABL_AND, BddCurrent, decbddrefext( BddNew ) );
|
||||||
|
|
||||||
|
BddReached = applybddnode( (bddsystem *)0, ABL_OR,
|
||||||
|
decbddrefext( BddReached ),
|
||||||
|
decbddrefext( BddCurrent ) );
|
||||||
|
|
||||||
|
BddCurrent = BddNew;
|
||||||
|
}
|
||||||
|
while ( BddNew != BddLocalSystem->ZERO );
|
||||||
|
|
||||||
|
decbddrefext( BddReached );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int main( argc, argv )
|
||||||
|
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
befig_list *BehFigure;
|
||||||
|
bereg_list *BehReg;
|
||||||
|
binode_list *BiNode;
|
||||||
|
bddnode *BddNode;
|
||||||
|
bddnode *BddPrime;
|
||||||
|
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
|
||||||
|
bddnode *BddInitial;
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
|
||||||
|
long BtrNumReg;
|
||||||
|
|
||||||
|
btrtransfunc *BtrTransFunc;
|
||||||
|
btrtransrel *BtrTransRel;
|
||||||
|
char Buffer[ 512 ];
|
||||||
|
|
||||||
|
char *InputFileName;
|
||||||
|
int FlagImage;
|
||||||
|
int FlagFunc;
|
||||||
|
int FlagDebug;
|
||||||
|
|
||||||
|
int Number;
|
||||||
|
int Index;
|
||||||
|
char Option;
|
||||||
|
|
||||||
|
mbkenv();
|
||||||
|
|
||||||
|
InputFileName = (char *)0;
|
||||||
|
FlagImage = 1;
|
||||||
|
FlagFunc = 1;
|
||||||
|
FlagDebug = 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 'f' : FlagFunc = 1;
|
||||||
|
break;
|
||||||
|
case 't' : FlagFunc = 0;
|
||||||
|
break;
|
||||||
|
case 'i' : FlagImage = 1;
|
||||||
|
break;
|
||||||
|
case 'p' : FlagImage = 0;
|
||||||
|
break;
|
||||||
|
case 'd' : FlagDebug = 1;
|
||||||
|
break;
|
||||||
|
default : BtrUsage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
InputFileName = argv[ Number ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( argc < 2 ) ||
|
||||||
|
( InputFileName == (char *)0 ) )
|
||||||
|
{
|
||||||
|
BtrUsage();
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "vhdlloadbefig %s\n", InputFileName );
|
||||||
|
BehFigure = vhdlloadbefig( (befig_list *)0, InputFileName, 3 );
|
||||||
|
fprintf( stdout, "file %s loaded\n", InputFileName );
|
||||||
|
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 500000 );
|
||||||
|
reorderbddsystemdynamic( BddSystem, reorderbddsystemsimple, 30000, 100 );
|
||||||
|
|
||||||
|
BehFigure->BEDLY = (beaux_list *)0;
|
||||||
|
|
||||||
|
fprintf( stdout, "beh_makbdd\n" );
|
||||||
|
beh_makbdd( BehFigure, 0, 0 );
|
||||||
|
|
||||||
|
if ( FlagFunc )
|
||||||
|
{
|
||||||
|
BtrTransFunc = createbtrtransfunc( (bddsystem *)0, 100 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BtrTransRel = createbtrtransrel( (bddsystem *)0, 100 );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddAssoc = addbddassoc( (bddsystem *)0 );
|
||||||
|
|
||||||
|
BehReg = BehFigure->BEREG;
|
||||||
|
|
||||||
|
while ( BehReg != (bereg_list *)0 )
|
||||||
|
{
|
||||||
|
BiNode = BehReg->BINODE;
|
||||||
|
|
||||||
|
BddNode = searchbddcircuitin( (bddcircuit *)0, BehReg->NAME );
|
||||||
|
|
||||||
|
if ( FlagFunc )
|
||||||
|
{
|
||||||
|
addbtrtransfunc( BtrTransFunc, BddNode, BiNode->VALNODE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf( Buffer, "'%s", BehReg->NAME );
|
||||||
|
BddPrime = addbddcircuitin( (bddcircuit *)0, Buffer,
|
||||||
|
BddNode->INDEX, BDD_IN_MODE_AFTER );
|
||||||
|
|
||||||
|
addbtrtransrel( BtrTransRel, BddNode, BddPrime, BiNode->VALNODE );
|
||||||
|
}
|
||||||
|
|
||||||
|
addbddnodeassoc( (bddsystem *)0, BddAssoc,
|
||||||
|
getbddvarbyindex( (bddsystem *)0, BddNode->INDEX ),
|
||||||
|
BddLocalSystem->ONE );
|
||||||
|
|
||||||
|
BehReg = BehReg->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
BtrStateArray = autallocblock( BddLocalCircuit->NUMBER_NAME_IN + 1 );
|
||||||
|
memset( BtrStateArray, '*', BddLocalCircuit->NUMBER_NAME_IN );
|
||||||
|
|
||||||
|
fprintf( stdout, "Node: %ld\n", BddSystem->NUMBER_NODE );
|
||||||
|
|
||||||
|
testbddcircuit( (bddcircuit *)0 );
|
||||||
|
|
||||||
|
BddInitial = searchbddcircuitout( (bddcircuit *)0, "initial" );
|
||||||
|
|
||||||
|
if ( BddInitial == (bddnode *)0 )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "Missing output 'initial'\n" );
|
||||||
|
EXIT( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( FlagFunc )
|
||||||
|
{
|
||||||
|
if ( FlagDebug )
|
||||||
|
{
|
||||||
|
viewbtrtransfunc( BtrTransFunc, BtrViewFunc );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( FlagImage ) BtrImageFunc ( BtrTransFunc, BddInitial );
|
||||||
|
else BtrPreImageFunc( BtrTransFunc, BddInitial, BddAssoc );
|
||||||
|
|
||||||
|
destroybtrtransfunc( BtrTransFunc );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( FlagDebug )
|
||||||
|
{
|
||||||
|
viewbtrtransrel( BtrTransRel, BtrViewRel );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( FlagImage ) BtrImageRel( BtrTransRel, BddInitial, BddAssoc );
|
||||||
|
|
||||||
|
destroybtrtransrel( BtrTransRel );
|
||||||
|
}
|
||||||
|
|
||||||
|
delbddassoc( (bddsystem *)0, BddAssoc );
|
||||||
|
|
||||||
|
testbddcircuit( (bddcircuit *)0 );
|
||||||
|
|
||||||
|
destroybddcircuit( BehFigure->CIRCUI );
|
||||||
|
destroybddsystem( BddSystem );
|
||||||
|
|
||||||
|
beh_frebefig( BehFigure );
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
Loading…
Reference in New Issue