Ok bis
This commit is contained in:
parent
ce3b048f56
commit
09e43f94b9
|
@ -0,0 +1,11 @@
|
||||||
|
lib_LIBRARIES = libAbv.a
|
||||||
|
libAbv_a_SOURCES = bvl_bcomp.y bvl_bcomp.l \
|
||||||
|
abv.h bvl_bspec.c bvl_drive.c bvl_parse.h bvl_util.h \
|
||||||
|
bvl_bedef.h bvl_bspec.h bvl_drive.h bvl_utdef.h bvl_utype.h \
|
||||||
|
bvl_blex.h bvl_byacc.h bvl_parse.c bvl_util.c
|
||||||
|
CLEANFILES = bvl_bcompyac.c bvl_bcompyac.h bvl_bcomplex.c
|
||||||
|
|
||||||
|
bvl_bcompyac.c bvl_bcompyac.h : $(srcdir)/bvl_bcomp.y
|
||||||
|
$(YACC) -d $(YFLAGS) $(srcdir)/bvl_bcomp.y && sed -e "s/yy/bvl_y_/g" -e "s/YY/BVL_Y_/g" y.tab.c > bvl_bcompyac.c && sed -e "s/yy/bvl_y_/g" -e "s/YY/BVL_Y_/g" y.tab.h > bvl_bcompyac.h
|
||||||
|
bvl_bcomplex.c : $(srcdir)/bvl_bcomp.l bvl_bcompyac.h
|
||||||
|
$(LEX) -t $(srcdir)/bvl_bcomp.l | sed -e "s/yy/bvl_y_/g" -e "s/YY/BVL_Y_/g" > bvl_bcomplex.c
|
|
@ -0,0 +1,51 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : abv201.h */
|
||||||
|
/* date : Feb 10 1995 */
|
||||||
|
/* version : v201 */
|
||||||
|
/* contents : defines and structure definitions used in BVL library */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
#ifndef ABV_BVLDEF
|
||||||
|
#define ABV_BVLDEF
|
||||||
|
|
||||||
|
#define ABV_TRACE_MASK 0x00000001 /* print messages when parsing */
|
||||||
|
#define ABV_KEEP_AUX_MASK 0x00000002 /* keep internal signals */
|
||||||
|
#define ABV_SYNTH_MASK 0x00000004 /* special mode for synthesis */
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* functions */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
extern struct befig *vhdlloadbefig ();
|
||||||
|
extern void vhdlsavebefig ();
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,383 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
%{
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "mut.h"
|
||||||
|
#include "abl.h"
|
||||||
|
#include "abe.h"
|
||||||
|
|
||||||
|
typedef struct bvl_expr
|
||||||
|
{
|
||||||
|
char *IDENT; /* identifier or constant name */
|
||||||
|
struct chain *LIST_ABL; /* pointer on bvl_abllst list */
|
||||||
|
short WIDTH; /* width of bit vector */
|
||||||
|
}
|
||||||
|
bvl_ablstr;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char *NAME; /* identifier name */
|
||||||
|
short LEFT; /* vector's left index */
|
||||||
|
short RIGHT; /* vector's right index */
|
||||||
|
char FLAG;
|
||||||
|
}
|
||||||
|
bvl_name;
|
||||||
|
|
||||||
|
struct g_type
|
||||||
|
{
|
||||||
|
int VALU;
|
||||||
|
char FLAG;
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "bvl_bcompyac.h"
|
||||||
|
#include "bvl_blex.h"
|
||||||
|
|
||||||
|
%}
|
||||||
|
|
||||||
|
upper_case_letter [A-Z]
|
||||||
|
digit [0-9]
|
||||||
|
special_character [\#\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\_\|]
|
||||||
|
space_character [ \t]
|
||||||
|
format_effector [\t\v\r\l\f]
|
||||||
|
end_of_line \n
|
||||||
|
lower_case_letter [a-z]
|
||||||
|
other_special_character [\!\$\@\?\[\\\]\^\`\{\}\~]
|
||||||
|
|
||||||
|
graphic_character ({basic_graphic_character}|{lower_case_letter}|{other_special_character})
|
||||||
|
basic_graphic_character ({upper_case_letter}|{digit}|{special_character}|{space_character})
|
||||||
|
letter ({upper_case_letter}|{lower_case_letter})
|
||||||
|
letter_or_digit ({letter}|{digit})
|
||||||
|
decimal_literal {integer}(\.{integer})?({exponent})?
|
||||||
|
integer {digit}(_?{digit})*
|
||||||
|
exponent ([eE][-+]?{integer})
|
||||||
|
base {integer}
|
||||||
|
based_integer {extended_digit}(_?{extended_digit})*
|
||||||
|
extended_digit ({digit}|[a-fA-F])
|
||||||
|
base_specifier (B|b|O|o|X|x)
|
||||||
|
|
||||||
|
%%
|
||||||
|
\n {
|
||||||
|
/*printf ("Newline\n");*/
|
||||||
|
BVL_LINNUM++;
|
||||||
|
}
|
||||||
|
[ \t] {
|
||||||
|
/*printf ("space\n");*/
|
||||||
|
}
|
||||||
|
\& {
|
||||||
|
/*printf ("Ampersand\n");*/
|
||||||
|
return(Ampersand);
|
||||||
|
}
|
||||||
|
\' {
|
||||||
|
/*printf ("Apostrophe\n");*/
|
||||||
|
return(Apostrophe);
|
||||||
|
}
|
||||||
|
\( {
|
||||||
|
/*printf ("LeftParen\n");*/
|
||||||
|
return(LeftParen);
|
||||||
|
}
|
||||||
|
\) {
|
||||||
|
/*printf ("RightParen\n");*/
|
||||||
|
return(RightParen);
|
||||||
|
}
|
||||||
|
"**" {
|
||||||
|
/*printf ("DoubleStar\n");*/
|
||||||
|
return(DoubleStar);
|
||||||
|
}
|
||||||
|
\* {
|
||||||
|
/*printf ("Star\n");*/
|
||||||
|
return(Star);
|
||||||
|
}
|
||||||
|
\+ {
|
||||||
|
/*printf ("Plus\n");*/
|
||||||
|
return(Plus);
|
||||||
|
}
|
||||||
|
\, {
|
||||||
|
/*printf ("Comma\n");*/
|
||||||
|
return(Comma);
|
||||||
|
}
|
||||||
|
\- {
|
||||||
|
/*printf ("Minus\n");*/
|
||||||
|
return(Minus);
|
||||||
|
}
|
||||||
|
":=" {
|
||||||
|
/*printf ("VarAsgn\n");*/
|
||||||
|
return(VarAsgn);
|
||||||
|
}
|
||||||
|
\: {
|
||||||
|
/*printf ("Colon\n");*/
|
||||||
|
return(Colon);
|
||||||
|
}
|
||||||
|
\; {
|
||||||
|
/*printf ("Semicolon\n");*/
|
||||||
|
return(Semicolon);
|
||||||
|
}
|
||||||
|
"<=" {
|
||||||
|
/*printf ("_LESym\n");*/
|
||||||
|
return(_LESym);
|
||||||
|
}
|
||||||
|
">=" {
|
||||||
|
/*printf ("_GESym\n");*/
|
||||||
|
return(_GESym);
|
||||||
|
}
|
||||||
|
\< {
|
||||||
|
/*printf ("_LTSym\n");*/
|
||||||
|
return(_LTSym);
|
||||||
|
}
|
||||||
|
\> {
|
||||||
|
/*printf ("_GTSym\n");*/
|
||||||
|
return(_GTSym);
|
||||||
|
}
|
||||||
|
= {
|
||||||
|
/*printf ("_EQSym\n");*/
|
||||||
|
return(_EQSym);
|
||||||
|
}
|
||||||
|
\/= {
|
||||||
|
/*printf ("_NESym\n");*/
|
||||||
|
return(_NESym);
|
||||||
|
}
|
||||||
|
"=>" {
|
||||||
|
/*printf ("Arrow\n");*/
|
||||||
|
return(Arrow);
|
||||||
|
}
|
||||||
|
"<>" {
|
||||||
|
/*printf ("Box\n");*/
|
||||||
|
return(Box);
|
||||||
|
}
|
||||||
|
\| {
|
||||||
|
/*printf ("Bar\n");*/
|
||||||
|
return(Bar);
|
||||||
|
}
|
||||||
|
! {
|
||||||
|
/*printf ("Bar\n");*/
|
||||||
|
return(Bar);
|
||||||
|
}
|
||||||
|
\. {
|
||||||
|
/*printf ("Dot\n");*/
|
||||||
|
return(Dot);
|
||||||
|
}
|
||||||
|
\/ {
|
||||||
|
/*printf ("Slash\n");*/
|
||||||
|
return(Slash);
|
||||||
|
}
|
||||||
|
|
||||||
|
{letter}(_?{letter_or_digit})* {
|
||||||
|
int itoken;
|
||||||
|
|
||||||
|
itoken = search (yytext);
|
||||||
|
if (itoken == EMPTYHT)
|
||||||
|
{
|
||||||
|
yylval.text = namealloc (yytext);
|
||||||
|
/*printf ("Identifier : %s\n", yytext);*/
|
||||||
|
return (Identifier);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*printf ("Key word : %s\n", yytext);*/
|
||||||
|
return (itoken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
({decimal_literal})|({base}#{based_integer}(\.{based_integer})?#({exponent})?)|({base}:{based_integer}(\.{based_integer})?:({exponent})?) {
|
||||||
|
yylval.text = mbkalloc ((unsigned int)strlen(yytext)+1);
|
||||||
|
strcpy (yylval.text, yytext);
|
||||||
|
return (AbstractLit);
|
||||||
|
}
|
||||||
|
'({graphic_character}|\"|\%)' {
|
||||||
|
yylval.text = namealloc (yytext);
|
||||||
|
return (CharacterLit);
|
||||||
|
}
|
||||||
|
(\"({graphic_character}|(\"\")|\%)*\")|(\%({graphic_character}|(\%\%)|\")*\%) {
|
||||||
|
yylval.text = namealloc (yytext);
|
||||||
|
return (StringLit);
|
||||||
|
}
|
||||||
|
{base_specifier}((\"{extended_digit}(_?{extended_digit})*\")|(\%{extended_digit}(_?{extended_digit})*\%)) {
|
||||||
|
yylval.text = namealloc (yytext);
|
||||||
|
return (BitStringLit);
|
||||||
|
}
|
||||||
|
|
||||||
|
\-\-{space_character}*[pP][rR][aA][gG][mM][aA].*$ {
|
||||||
|
yylval.text = namealloc(yytext); return( PRAGMA );
|
||||||
|
}
|
||||||
|
|
||||||
|
\-\-.*$
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
. {
|
||||||
|
return (*yytext);
|
||||||
|
}
|
||||||
|
%%
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : yywrap */
|
||||||
|
/* description : return 1 */
|
||||||
|
/* called func. : none */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
int yywrap ()
|
||||||
|
{
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : search */
|
||||||
|
/* description : check that an identifier is a reserved word or not */
|
||||||
|
/* called func. : addht, addhtitem, gethtitem, namealloc */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
static int search (key)
|
||||||
|
|
||||||
|
char *key;
|
||||||
|
|
||||||
|
{
|
||||||
|
static ht *pt_hash = NULL;
|
||||||
|
|
||||||
|
if (pt_hash == NULL)
|
||||||
|
{
|
||||||
|
pt_hash = addht (107);
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("abs") , ABS );
|
||||||
|
addhtitem (pt_hash, namealloc("access") , ACCESS );
|
||||||
|
addhtitem (pt_hash, namealloc("after") , AFTER );
|
||||||
|
addhtitem (pt_hash, namealloc("alias") , ALIAS );
|
||||||
|
addhtitem (pt_hash, namealloc("all") , ALL );
|
||||||
|
addhtitem (pt_hash, namealloc("and") , _AND );
|
||||||
|
addhtitem (pt_hash, namealloc("architecture") , ARCHITECTURE );
|
||||||
|
addhtitem (pt_hash, namealloc("array") , ARRAY );
|
||||||
|
addhtitem (pt_hash, namealloc("assert") , ASSERT );
|
||||||
|
addhtitem (pt_hash, namealloc("attribute") , ATTRIBUTE );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("begin") , _BEGIN );
|
||||||
|
addhtitem (pt_hash, namealloc("bit") , BIT );
|
||||||
|
addhtitem (pt_hash, namealloc("bit_vector") , BIT_VECTOR );
|
||||||
|
addhtitem (pt_hash, namealloc("block") , _BLOCK );
|
||||||
|
addhtitem (pt_hash, namealloc("body") , BODY );
|
||||||
|
addhtitem (pt_hash, namealloc("buffer") , BUFFER );
|
||||||
|
addhtitem (pt_hash, namealloc("bus") , BUS );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("case") , CASE );
|
||||||
|
addhtitem (pt_hash, namealloc("component") , COMPONENT );
|
||||||
|
addhtitem (pt_hash, namealloc("configuration"), CONFIGURATION);
|
||||||
|
addhtitem (pt_hash, namealloc("constant") , CONSTANT );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("disconnect") , DISCONNECT );
|
||||||
|
addhtitem (pt_hash, namealloc("downto") , DOWNTO );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("else") , ELSE );
|
||||||
|
addhtitem (pt_hash, namealloc("elsif") , ELSIF );
|
||||||
|
addhtitem (pt_hash, namealloc("end") , _END );
|
||||||
|
addhtitem (pt_hash, namealloc("entity") , ENTITY );
|
||||||
|
addhtitem (pt_hash, namealloc("error") , ERROR );
|
||||||
|
addhtitem (pt_hash, namealloc("exit") , _EXIT );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("file") , _FILE );
|
||||||
|
addhtitem (pt_hash, namealloc("for") , FOR );
|
||||||
|
addhtitem (pt_hash, namealloc("function") , FUNCTION );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("generate") , GENERATE );
|
||||||
|
addhtitem (pt_hash, namealloc("generic") , GENERIC );
|
||||||
|
addhtitem (pt_hash, namealloc("guarded") , GUARDED );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("if") , IF );
|
||||||
|
addhtitem (pt_hash, namealloc("in") , _IN );
|
||||||
|
addhtitem (pt_hash, namealloc("inout") , _INOUT );
|
||||||
|
addhtitem (pt_hash, namealloc("is") , IS );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("label") , _LABEL );
|
||||||
|
addhtitem (pt_hash, namealloc("library") , LIBRARY );
|
||||||
|
addhtitem (pt_hash, namealloc("linkage") , _LINKAGE );
|
||||||
|
addhtitem (pt_hash, namealloc("loop") , LOOP );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("map") , MAP );
|
||||||
|
addhtitem (pt_hash, namealloc("mod") , MOD );
|
||||||
|
addhtitem (pt_hash, namealloc("ms") , _MS );
|
||||||
|
addhtitem (pt_hash, namealloc("mux_bit") , MUX_BIT );
|
||||||
|
addhtitem (pt_hash, namealloc("mux_vector") , MUX_VECTOR );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("nand") , _NAND );
|
||||||
|
addhtitem (pt_hash, namealloc("natural") , NATURAL );
|
||||||
|
addhtitem (pt_hash, namealloc("new") , NEW );
|
||||||
|
addhtitem (pt_hash, namealloc("next") , _NEXT );
|
||||||
|
addhtitem (pt_hash, namealloc("nor") , _NOR );
|
||||||
|
addhtitem (pt_hash, namealloc("not") , _NOT );
|
||||||
|
addhtitem (pt_hash, namealloc("ns") , _NS );
|
||||||
|
addhtitem (pt_hash, namealloc("null") , _NULL );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("of") , OF );
|
||||||
|
addhtitem (pt_hash, namealloc("on") , ON );
|
||||||
|
addhtitem (pt_hash, namealloc("open") , OPEN );
|
||||||
|
addhtitem (pt_hash, namealloc("or") , _OR );
|
||||||
|
addhtitem (pt_hash, namealloc("others") , OTHERS );
|
||||||
|
addhtitem (pt_hash, namealloc("out") , _OUT );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("package") , PACKAGE );
|
||||||
|
addhtitem (pt_hash, namealloc("port") , PORT );
|
||||||
|
addhtitem (pt_hash, namealloc("procedure") , PROCEDURE );
|
||||||
|
addhtitem (pt_hash, namealloc("process") , PROCESS );
|
||||||
|
addhtitem (pt_hash, namealloc("ps") , _PS );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("range") , RANGE );
|
||||||
|
addhtitem (pt_hash, namealloc("record") , RECORD );
|
||||||
|
addhtitem (pt_hash, namealloc("reg_bit") , REG_BIT );
|
||||||
|
addhtitem (pt_hash, namealloc("reg_vector") , REG_VECTOR );
|
||||||
|
addhtitem (pt_hash, namealloc("register") , REGISTER );
|
||||||
|
addhtitem (pt_hash, namealloc("rem") , REM );
|
||||||
|
addhtitem (pt_hash, namealloc("report") , REPORT );
|
||||||
|
addhtitem (pt_hash, namealloc("return") , RETURN );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("select") , SELECT );
|
||||||
|
addhtitem (pt_hash, namealloc("severity") , SEVERITY );
|
||||||
|
addhtitem (pt_hash, namealloc("signal") , SIGNAL );
|
||||||
|
addhtitem (pt_hash, namealloc("stable") , _STABLE );
|
||||||
|
addhtitem (pt_hash, namealloc("subtype") , SUBTYPE );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("then") , THEN );
|
||||||
|
addhtitem (pt_hash, namealloc("to") , TO );
|
||||||
|
addhtitem (pt_hash, namealloc("transport") , TRANSPORT );
|
||||||
|
addhtitem (pt_hash, namealloc("type") , _TYPE );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("units") , UNITS );
|
||||||
|
addhtitem (pt_hash, namealloc("until") , UNTIL );
|
||||||
|
addhtitem (pt_hash, namealloc("us") , _US );
|
||||||
|
addhtitem (pt_hash, namealloc("use") , USE );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("variable") , VARIABLE );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("wait") , WAIT );
|
||||||
|
addhtitem (pt_hash, namealloc("warning") , WARNING );
|
||||||
|
addhtitem (pt_hash, namealloc("when") , WHEN );
|
||||||
|
addhtitem (pt_hash, namealloc("while") , WHILE );
|
||||||
|
addhtitem (pt_hash, namealloc("with") , WITH );
|
||||||
|
addhtitem (pt_hash, namealloc("wor_bit") , WOR_BIT );
|
||||||
|
addhtitem (pt_hash, namealloc("wor_vector") , WOR_VECTOR );
|
||||||
|
|
||||||
|
addhtitem (pt_hash, namealloc("xor") , _XOR );
|
||||||
|
}
|
||||||
|
|
||||||
|
return (gethtitem (pt_hash, namealloc(key)));
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_bedef.h */
|
||||||
|
/* date : Jan 18 1993 */
|
||||||
|
/* version : v106 */
|
||||||
|
/* author : P.BAZARGAN, L.A.TABUSSE, VUONG H.N. */
|
||||||
|
/* content : declaration of define used by yacc */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
#define BVL_ICNDFN 1 /* input port */
|
||||||
|
#define BVL_OCNDFN 2 /* output port */
|
||||||
|
#define BVL_BCNDFN 3 /* inout port */
|
||||||
|
#define BVL_CSTDFN 4 /* constant */
|
||||||
|
|
||||||
|
#define BVL_BITDFN 8 /* bit type */
|
||||||
|
#define BVL_MUXDFN 16 /* mux_bit type */
|
||||||
|
#define BVL_WORDFN 24 /* wor_bit type */
|
||||||
|
#define BVL_RBIDFN 32 /* reg_bit type */
|
||||||
|
#define BVL_BTVDFN 40 /* bit_vector type */
|
||||||
|
#define BVL_MXVDFN 48 /* mux_vector type */
|
||||||
|
#define BVL_WRVDFN 56 /* wor_vector type */
|
||||||
|
#define BVL_RGVDFN 64 /* reg_vector type */
|
||||||
|
#define BVL_NATDFN 88 /* natural type */
|
||||||
|
#define BVL_NTVDFN 96 /* nat_vector type */
|
||||||
|
|
||||||
|
#define BVL_NORDFN 128 /* non guarded signal */
|
||||||
|
#define BVL_BUSDFN 256 /* guarded signal (bus) */
|
||||||
|
#define BVL_REGDFN 384 /* guarded signal (register)*/
|
||||||
|
|
||||||
|
#define BVL_MODDFN 0 /* field # 0 of dictionnary */
|
||||||
|
#define BVL_SIGDFN 1 /* field # 1 of dictionnary */
|
||||||
|
#define BVL_STBDFN 3 /* field # 3 of dictionnary */
|
||||||
|
#define BVL_LBLDFN 4 /* field # 4 of dictionnary */
|
||||||
|
#define BVL_WMXDFN 5 /* field # 5 of dictionnary */
|
||||||
|
#define BVL_WMNDFN 6 /* field # 6 of dictionnary */
|
||||||
|
#define BVL_PNTDFN 7 /* field # 7 of dictionnary */
|
||||||
|
|
||||||
|
#define BVL_UPTDFN 1 /* direction is up */
|
||||||
|
#define BVL_DWTDFN 0 /* direction is down */
|
||||||
|
|
||||||
|
/* ###---------------------------------------------------------------### */
|
||||||
|
|
||||||
|
#define NE 9
|
||||||
|
#define EQ 10
|
||||||
|
#define NOPI 11
|
||||||
|
#define NOPS 12
|
||||||
|
#define ANDM 13
|
||||||
|
#define CONC 14
|
||||||
|
#define CONVRT 15
|
||||||
|
|
||||||
|
#define BVL_UNGDFN 0
|
||||||
|
#define BVL_GRDDFN 1
|
||||||
|
|
||||||
|
/* ###---------------------------------------------------------------### */
|
||||||
|
|
||||||
|
/* #define BVL_INTDFN 0 */ /* int_val field of dtc_recrd */
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_blex.h */
|
||||||
|
/* date : Oct 4 1992 */
|
||||||
|
/* version : v108 */
|
||||||
|
/* author : TABUSSE L.A. */
|
||||||
|
/* content : declaration of functions and global variables used by */
|
||||||
|
/* lex */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
extern int BVL_LINNUM; /* file's line number */
|
||||||
|
static int search ();
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,46 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_bspec.h */
|
||||||
|
/* date : Jun 15 1992 */
|
||||||
|
/* author : TABUSSE L.A. */
|
||||||
|
/* content : declaration of functions and global variables used by */
|
||||||
|
/* bvl_bspec.c */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
extern bvl_ablstr BVL_EMPSTR;
|
||||||
|
|
||||||
|
struct begen *bvl_addgen ();
|
||||||
|
struct chain *bvl_cpyabllst ();
|
||||||
|
bvl_ablstr bvl_cpyablstr ();
|
||||||
|
bvl_ablstr bvl_crtabl ();
|
||||||
|
void bvl_select ();
|
||||||
|
extern void bvl_error();
|
||||||
|
extern int bvl_tobin();
|
|
@ -0,0 +1,90 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_byacc.h */
|
||||||
|
/* date : Oct 4 1993 */
|
||||||
|
/* version : v108 */
|
||||||
|
/* author : Pirouz BAZARGAN SABET */
|
||||||
|
/* content : declaration of external functions and global variables*/
|
||||||
|
/* used by yacc */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
typedef struct bvl_expr
|
||||||
|
{
|
||||||
|
char *IDENT; /* identifier or constant name */
|
||||||
|
struct chain *LIST_ABL; /* pointer on bvl_abllst list */
|
||||||
|
short WIDTH; /* width of bit vector */
|
||||||
|
}
|
||||||
|
bvl_ablstr;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char *NAME; /* identifier name */
|
||||||
|
short LEFT; /* vector's left index */
|
||||||
|
short RIGHT; /* vector's right index */
|
||||||
|
char FLAG; /* scalar ('S') or array 'A' */
|
||||||
|
}
|
||||||
|
bvl_name;
|
||||||
|
|
||||||
|
struct g_type
|
||||||
|
{
|
||||||
|
int VALU;
|
||||||
|
char FLAG;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct bddnode *BVL_BDDPNT; /* BDD pointer */
|
||||||
|
char *BVL_MODNAM; /* curnennt model name */
|
||||||
|
bvl_ablstr BVL_SLCEXP; /* structure filled with the */
|
||||||
|
bvl_ablstr BVL_EMPSTR; /* empty structure used with NOT*/
|
||||||
|
|
||||||
|
extern int BVL_AUXMOD; /* simplify internal sig (= 1) */
|
||||||
|
|
||||||
|
static char *BVL_LBLNAM = NULL; /* label */
|
||||||
|
static struct chain *BVL_NM1LST = NULL; /* 1-st name liste */
|
||||||
|
static struct chain *BVL_GRDLST = NULL; /* list of guard's ABL */
|
||||||
|
static struct chain *BVL_CNDLST = NULL; /* list of conditions (ABL) */
|
||||||
|
static struct chain *BVL_VALLST = NULL; /* list of waveforms (ABL) */
|
||||||
|
static struct befig *BVL_BEFPNT = NULL; /* current BEFIG pointer */
|
||||||
|
|
||||||
|
static struct beden **dic = NULL; /* dictionary */
|
||||||
|
|
||||||
|
struct chain *BVL_INTLST = NULL;
|
||||||
|
struct begen *BVL_GENPNT = NULL;
|
||||||
|
|
||||||
|
extern char BVL_ERRFLG; /* set to 1 in case of error */
|
||||||
|
extern struct befig *BVL_HEDFIG; /* head of befigs */
|
||||||
|
|
||||||
|
extern struct begen *bvl_addgen();
|
||||||
|
|
||||||
|
extern bvl_ablstr bvl_crtabl();
|
||||||
|
extern bvl_ablstr bvl_cpyablstr();
|
||||||
|
extern void bvl_select();
|
||||||
|
extern void bvl_error();
|
||||||
|
extern void *addstr ();
|
|
@ -0,0 +1,553 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_drive.c */
|
||||||
|
/* date : May 31 1994 */
|
||||||
|
/* version : v109 */
|
||||||
|
/* author : VUONG H.N. */
|
||||||
|
/* description : This file contains VHDL drivers : */
|
||||||
|
/* vhdlsavebefig() */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include "mut.h"
|
||||||
|
#include "aut.h"
|
||||||
|
#include "abl.h"
|
||||||
|
#include "abe.h"
|
||||||
|
#include "abv.h"
|
||||||
|
#include "bvl_utype.h"
|
||||||
|
#include "bvl_utdef.h"
|
||||||
|
#include "bvl_drive.h"
|
||||||
|
#include "bvl_util.h"
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : vhdlsavebefig */
|
||||||
|
/* description : print out a text file containing a data-flow VHDL */
|
||||||
|
/* description */
|
||||||
|
/* called func. : vhdlablname, mbkalloc, beh_message, beh_error , */
|
||||||
|
/* beh_toolbug , getptype, reverse , bvl_abl2str */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
void vhdlsavebefig (pthedbefig, trace_mode)
|
||||||
|
|
||||||
|
struct befig *pthedbefig;
|
||||||
|
int trace_mode;
|
||||||
|
|
||||||
|
{
|
||||||
|
char *suffix;
|
||||||
|
char *str;
|
||||||
|
char *mode;
|
||||||
|
char *type_mark;
|
||||||
|
int nrlabel = 0;
|
||||||
|
FILE *fd;
|
||||||
|
time_t clock;
|
||||||
|
int left,right;
|
||||||
|
char *name;
|
||||||
|
char *bus;
|
||||||
|
|
||||||
|
struct begen *ptgeneric = NULL; /* current ptype pnt (generic) */
|
||||||
|
struct bereg *ptbereg = NULL; /* current BEREG pointer */
|
||||||
|
struct bemsg *ptbemsg = NULL; /* current BEMSG pointer */
|
||||||
|
struct beout *ptbeout = NULL; /* current BEOUT pointer */
|
||||||
|
struct bebus *ptbebus = NULL; /* current BEBUS pointer */
|
||||||
|
struct beaux *ptbeaux = NULL; /* current BEAUX pointer */
|
||||||
|
struct bebux *ptbebux = NULL; /* current BEBUX pointer */
|
||||||
|
struct bepor *ptbepor = NULL; /* correctly ordered port list */
|
||||||
|
struct biabl *ptbiabl = NULL; /* current BIABL pointer */
|
||||||
|
|
||||||
|
if (pthedbefig == NULL)
|
||||||
|
beh_toolbug (10,"bvl_decomp",NULL,0);
|
||||||
|
|
||||||
|
if ((str = mbkgetenv ("VH_BEHSFX")) != NULL)
|
||||||
|
suffix = strtok (str, ":");
|
||||||
|
else
|
||||||
|
suffix = "vbe";
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Opening result file */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
if ((fd = mbkfopen (pthedbefig->NAME, suffix, WRITE_TEXT)) == NULL)
|
||||||
|
{
|
||||||
|
beh_error (107, NULL);
|
||||||
|
autexit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (trace_mode & ABV_TRACE_MASK)
|
||||||
|
beh_message (13, pthedbefig->NAME);
|
||||||
|
|
||||||
|
time (&clock);
|
||||||
|
(void) fprintf (fd,"-- VHDL data flow description generated from `%s`\n",
|
||||||
|
pthedbefig->NAME);
|
||||||
|
(void) fprintf (fd, "--\t\tdate : %s\n\n", ctime(&clock));
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Entity declaration */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
(void) fprintf (fd,"-- Entity Declaration\n\n");
|
||||||
|
(void) fprintf (fd,"ENTITY %s IS\n",vhdlablname(pthedbefig->NAME));
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Generic declaration */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
if ((ptgeneric = pthedbefig->BEGEN) != NULL)
|
||||||
|
{
|
||||||
|
ptgeneric = (struct begen *) reverse ((chain_list *)ptgeneric);
|
||||||
|
|
||||||
|
(void) fprintf (fd," GENERIC (\n");
|
||||||
|
while (ptgeneric != NULL)
|
||||||
|
{
|
||||||
|
(void)fprintf (fd," CONSTANT %s : NATURAL := %ld",
|
||||||
|
vhdlablname(ptgeneric->NAME),*((long *)ptgeneric->VALUE));
|
||||||
|
if (ptgeneric->NEXT != NULL)
|
||||||
|
(void)fprintf(fd,";\t-- %s\n",(char *)ptgeneric->NAME);
|
||||||
|
else
|
||||||
|
(void)fprintf(fd,"\t-- %s\n",(char *)ptgeneric->NAME);
|
||||||
|
|
||||||
|
ptgeneric = ptgeneric->NEXT;
|
||||||
|
}
|
||||||
|
(void) fprintf (fd," );\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Port declaration */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
ptbepor = pthedbefig->BEPOR;
|
||||||
|
if (ptbepor != NULL)
|
||||||
|
{
|
||||||
|
(void) fprintf (fd," PORT (\n");
|
||||||
|
pthedbefig->BEPOR = (struct bepor *)reverse ((chain_list *)pthedbefig->BEPOR);
|
||||||
|
|
||||||
|
ptbepor = pthedbefig->BEPOR;
|
||||||
|
while (ptbepor != NULL)
|
||||||
|
{
|
||||||
|
switch (ptbepor->DIRECTION)
|
||||||
|
{
|
||||||
|
case 'I':
|
||||||
|
mode = namealloc("IN");
|
||||||
|
break;
|
||||||
|
case 'O':
|
||||||
|
case 'Z':
|
||||||
|
mode = namealloc("OUT");
|
||||||
|
break;
|
||||||
|
case 'B':
|
||||||
|
case 'T':
|
||||||
|
mode = namealloc("INOUT");
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
beh_error (69, ptbepor->NAME);
|
||||||
|
}
|
||||||
|
ptbepor = (bepor_list *) bvl_vectnam (ptbepor,&left,&right,&name,0);
|
||||||
|
|
||||||
|
if(left != -1)
|
||||||
|
{
|
||||||
|
switch (ptbepor->TYPE)
|
||||||
|
{
|
||||||
|
case 'B':
|
||||||
|
type_mark = namealloc("BIT_VECTOR");
|
||||||
|
bus = "";
|
||||||
|
break;
|
||||||
|
case 'W':
|
||||||
|
type_mark = namealloc("WOR_VECTOR");
|
||||||
|
bus = namealloc("BUS");
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
type_mark = namealloc("MUX_VECTOR");
|
||||||
|
bus = namealloc("BUS");
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
beh_error (68, ptbepor->NAME);
|
||||||
|
}
|
||||||
|
(void)fprintf(fd," %s : %s %s(%d %s %d) %s",vhdlablname(name), mode,
|
||||||
|
type_mark, left, (left>=right)?"DOWNTO":"TO",right,bus);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (ptbepor->TYPE)
|
||||||
|
{
|
||||||
|
case 'B':
|
||||||
|
type_mark = "BIT"; break;
|
||||||
|
case 'W':
|
||||||
|
type_mark = "WOR_BIT BUS"; break;
|
||||||
|
case 'M':
|
||||||
|
type_mark = "MUX_BIT BUS"; break;
|
||||||
|
default :
|
||||||
|
beh_error (68, ptbepor->NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
(void) fprintf (fd," %s : %s %s",vhdlablname(name),
|
||||||
|
mode,type_mark);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ptbepor->NEXT != NULL)
|
||||||
|
(void) fprintf (fd,";\t-- %s\n",name);
|
||||||
|
else
|
||||||
|
(void) fprintf (fd,"\t-- %s\n );\n",name);
|
||||||
|
|
||||||
|
ptbepor = ptbepor->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
pthedbefig->BEPOR = (struct bepor *)reverse ((chain_list *)pthedbefig->BEPOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
(void) fprintf (fd,"END %s;\n\n\n",vhdlablname(pthedbefig->NAME));
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Architecture declaration */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
(void) fprintf (fd,"-- Architecture Declaration\n\n");
|
||||||
|
(void) fprintf (fd,"ARCHITECTURE behaviour_data_flow OF %s IS\n",
|
||||||
|
vhdlablname(pthedbefig->NAME));
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Treatment of the BEREG list */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
pthedbefig->BEREG = (struct bereg *)reverse((chain_list *)pthedbefig->BEREG);
|
||||||
|
ptbereg = pthedbefig->BEREG;
|
||||||
|
while (ptbereg != NULL)
|
||||||
|
{
|
||||||
|
ptbereg = (bereg_list *)bvl_vectnam(ptbereg,&left,&right,&name,2);
|
||||||
|
if(left != -1)
|
||||||
|
{
|
||||||
|
(void)fprintf(fd," SIGNAL %s : REG_VECTOR(%d %s %d) REGISTER;\t-- %s\n",
|
||||||
|
vhdlablname(name),left,(left>=right)?"DOWNTO":"TO",
|
||||||
|
right,name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void) fprintf (fd," SIGNAL %s : REG_BIT REGISTER;\t-- %s\n",
|
||||||
|
vhdlablname(name),name);
|
||||||
|
}
|
||||||
|
ptbereg = ptbereg->NEXT;
|
||||||
|
}
|
||||||
|
pthedbefig->BEREG = (struct bereg *)reverse((chain_list *)pthedbefig->BEREG);
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Treatment of the BEBUX list */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
pthedbefig->BEBUX = (struct bebux *)reverse((chain_list *)pthedbefig->BEBUX);
|
||||||
|
ptbebux = pthedbefig->BEBUX;
|
||||||
|
while (ptbebux != NULL)
|
||||||
|
{
|
||||||
|
ptbebux = (bebux_list *)bvl_vectnam(ptbebux,&left,&right,&name,1);
|
||||||
|
if(left != -1)
|
||||||
|
{
|
||||||
|
switch (ptbebux->TYPE)
|
||||||
|
{
|
||||||
|
case 'W':
|
||||||
|
type_mark = namealloc("WOR_VECTOR");
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
type_mark = namealloc("MUX_VECTOR");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
(void)fprintf(fd," SIGNAL %s : %s(%d %s %d) BUS;\t-- %s\n",
|
||||||
|
vhdlablname(name),type_mark,left,(left>=right)?"DOWNTO":"TO",
|
||||||
|
right,name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (ptbebux->TYPE)
|
||||||
|
{
|
||||||
|
case 'W':
|
||||||
|
type_mark = namealloc("WOR_BIT");
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
type_mark = namealloc("MUX_BIT");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
(void) fprintf (fd," SIGNAL %s : %s BUS;\t\t-- %s\n",vhdlablname(name),
|
||||||
|
type_mark,name);
|
||||||
|
}
|
||||||
|
ptbebux = ptbebux->NEXT;
|
||||||
|
}
|
||||||
|
pthedbefig->BEBUX = (struct bebux *)reverse((chain_list *)pthedbefig->BEBUX);
|
||||||
|
|
||||||
|
pthedbefig->BEAUX = (struct beaux *)reverse((chain_list *)pthedbefig->BEAUX);
|
||||||
|
ptbeaux = pthedbefig->BEAUX;
|
||||||
|
while (ptbeaux != NULL)
|
||||||
|
{
|
||||||
|
ptbeaux = (beaux_list *)bvl_vectnam(ptbeaux,&left,&right,&name,3);
|
||||||
|
if(left != -1)
|
||||||
|
{
|
||||||
|
(void)fprintf(fd," SIGNAL %s : BIT_VECTOR(%d %s %d);\t-- %s\n",
|
||||||
|
vhdlablname(name),left,(left>=right)?"DOWNTO":"TO",
|
||||||
|
right,name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void) fprintf (fd," SIGNAL %s : BIT;\t\t-- %s\n",
|
||||||
|
vhdlablname(name),name);
|
||||||
|
}
|
||||||
|
ptbeaux = ptbeaux->NEXT;
|
||||||
|
}
|
||||||
|
pthedbefig->BEAUX = (struct beaux *)reverse((chain_list *)pthedbefig->BEAUX);
|
||||||
|
|
||||||
|
(void) fprintf (fd,"\nBEGIN\n");
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Print out a concurrent assert statement for each BEMSG */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
ptbemsg = pthedbefig->BEMSG;
|
||||||
|
while (ptbemsg != NULL)
|
||||||
|
{
|
||||||
|
if (ptbemsg->LABEL != NULL)
|
||||||
|
(void)fprintf(fd," %s :", ptbemsg->LABEL);
|
||||||
|
|
||||||
|
(void) fprintf (fd," ASSERT (" );
|
||||||
|
bvl_printablfile(fd, ptbemsg->ABL );
|
||||||
|
(void) fprintf (fd," = '1')\n" );
|
||||||
|
|
||||||
|
/*\
|
||||||
|
buffer = bvl_abl2str (ptbemsg->ABL,buffer,&buff_size);
|
||||||
|
(void) fprintf (fd," ASSERT (%s = '1')\n", bvl_printabl(buffer));
|
||||||
|
buffer[0] = '\0';
|
||||||
|
\*/
|
||||||
|
|
||||||
|
if (ptbemsg->MESSAGE != NULL)
|
||||||
|
(void) fprintf (fd," REPORT %s\n",ptbemsg->MESSAGE);
|
||||||
|
|
||||||
|
if (ptbemsg->LEVEL == 'W')
|
||||||
|
(void) fprintf (fd," SEVERITY WARNING;");
|
||||||
|
else
|
||||||
|
(void) fprintf (fd," SEVERITY ERROR;");
|
||||||
|
|
||||||
|
(void) fprintf (fd,"\n\n");
|
||||||
|
ptbemsg = ptbemsg->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Print out a concurrent signal assignment for each BEAUX */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
ptbeaux = pthedbefig->BEAUX;
|
||||||
|
while (ptbeaux != NULL)
|
||||||
|
{
|
||||||
|
if (ptbeaux->ABL != NULL)
|
||||||
|
{
|
||||||
|
(void) fprintf (fd," %s <= ",bvl_vectorize(ptbeaux->NAME));
|
||||||
|
bvl_printablfile( fd, ptbeaux->ABL);
|
||||||
|
(void) fprintf (fd,";\n");
|
||||||
|
|
||||||
|
/*\
|
||||||
|
buffer = bvl_abl2str (ptbeaux->ABL,buffer,&buff_size);
|
||||||
|
(void) fprintf (fd," %s <= %s;\n",bvl_vectorize(ptbeaux->NAME),bvl_printabl(buffer));
|
||||||
|
buffer[0] = '\0';
|
||||||
|
\*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
beh_error (40, ptbeaux->NAME);
|
||||||
|
ptbeaux = ptbeaux->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Print out a block statement with one guarded concurrent */
|
||||||
|
/* signal assignment for each BIABL of each BEREG */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
ptbereg = pthedbefig->BEREG;
|
||||||
|
while (ptbereg != NULL)
|
||||||
|
{
|
||||||
|
ptbiabl = ptbereg->BIABL;
|
||||||
|
while (ptbiabl != NULL)
|
||||||
|
{
|
||||||
|
(void) fprintf (fd," label%d : BLOCK ",nrlabel);
|
||||||
|
if (ptbiabl->CNDABL != NULL)
|
||||||
|
{
|
||||||
|
(void) fprintf (fd,"(" );
|
||||||
|
bvl_printablfile( fd, ptbiabl->CNDABL );
|
||||||
|
(void) fprintf (fd," = '1')\n" );
|
||||||
|
|
||||||
|
/*\
|
||||||
|
buffer = bvl_abl2str (ptbiabl->CNDABL,buffer,&buff_size);
|
||||||
|
(void) fprintf (fd,"(%s = '1')\n",bvl_printabl(buffer));
|
||||||
|
buffer[0] = '\0';
|
||||||
|
\*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
beh_toolbug (19,"bvl_decomp",ptbereg->NAME,0);
|
||||||
|
|
||||||
|
(void) fprintf (fd," BEGIN\n %s <= GUARDED ",bvl_vectorize(ptbereg->NAME));
|
||||||
|
if (ptbiabl->VALABL != NULL)
|
||||||
|
{
|
||||||
|
bvl_printablfile( fd, ptbiabl->VALABL );
|
||||||
|
(void)fprintf (fd,";\n" );
|
||||||
|
/*\
|
||||||
|
buffer = bvl_abl2str (ptbiabl->VALABL,buffer,&buff_size);
|
||||||
|
(void) fprintf (fd,"%s;\n",bvl_printabl(buffer));
|
||||||
|
buffer[0] = '\0';
|
||||||
|
\*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
beh_toolbug (20,"bvl_decomp",ptbereg->NAME,0);
|
||||||
|
|
||||||
|
(void) fprintf ( fd," END BLOCK label%d;\n",nrlabel);
|
||||||
|
ptbiabl = ptbiabl->NEXT;
|
||||||
|
nrlabel++;
|
||||||
|
}
|
||||||
|
|
||||||
|
ptbereg = ptbereg->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Print out a block statement with one guarded concurrent */
|
||||||
|
/* signal assignment for each BIABL of each BEBUX */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
ptbebux = pthedbefig->BEBUX;
|
||||||
|
while (ptbebux != NULL)
|
||||||
|
{
|
||||||
|
ptbiabl = ptbebux->BIABL;
|
||||||
|
while (ptbiabl != NULL)
|
||||||
|
{
|
||||||
|
(void) fprintf (fd," label%d : BLOCK (",nrlabel);
|
||||||
|
if (ptbiabl->CNDABL != NULL)
|
||||||
|
{
|
||||||
|
bvl_printablfile( fd, ptbiabl->CNDABL );
|
||||||
|
(void) fprintf (fd," = '1')\n" );
|
||||||
|
|
||||||
|
/*\
|
||||||
|
buffer = bvl_abl2str (ptbiabl->CNDABL,buffer,&buff_size);
|
||||||
|
(void) fprintf (fd,"%s = '1')\n",bvl_printabl(buffer));
|
||||||
|
buffer[0] = '\0';
|
||||||
|
\*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
beh_toolbug (19,"bvl_decomp",ptbebux->NAME,0);
|
||||||
|
|
||||||
|
(void) fprintf (fd," BEGIN\n %s <= GUARDED ",
|
||||||
|
bvl_vectorize(ptbebux->NAME));
|
||||||
|
if (ptbiabl->VALABL != NULL)
|
||||||
|
{
|
||||||
|
bvl_printablfile( fd, ptbiabl->VALABL );
|
||||||
|
(void) fprintf (fd,";\n" );
|
||||||
|
/*\
|
||||||
|
buffer = bvl_abl2str (ptbiabl->VALABL,buffer,&buff_size);
|
||||||
|
(void) fprintf (fd,"%s;\n",bvl_printabl(buffer));
|
||||||
|
buffer[0] = '\0';
|
||||||
|
\*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
beh_toolbug (20,"bvl_decomp",ptbebux->NAME,0);
|
||||||
|
|
||||||
|
(void) fprintf (fd," END BLOCK label%d;\n",nrlabel);
|
||||||
|
ptbiabl = ptbiabl->NEXT;
|
||||||
|
nrlabel++;
|
||||||
|
}
|
||||||
|
|
||||||
|
ptbebux = ptbebux->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Print out a block statement with one guarded concurrent */
|
||||||
|
/* signal assignment for each BIABL of each BEBUS */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
ptbebus = pthedbefig->BEBUS;
|
||||||
|
while (ptbebus != NULL)
|
||||||
|
{
|
||||||
|
ptbiabl = ptbebus->BIABL;
|
||||||
|
while (ptbiabl != NULL)
|
||||||
|
{
|
||||||
|
(void) fprintf (fd,"\tlabel%d : BLOCK (",nrlabel);
|
||||||
|
if (ptbiabl->CNDABL != NULL)
|
||||||
|
{
|
||||||
|
bvl_printablfile ( fd, ptbiabl->CNDABL );
|
||||||
|
(void) fprintf (fd," = '1')\n" );
|
||||||
|
/*\
|
||||||
|
buffer = bvl_abl2str (ptbiabl->CNDABL,buffer,&buff_size);
|
||||||
|
(void) fprintf (fd,"%s = '1')\n",bvl_printabl(buffer));
|
||||||
|
buffer[0] = '\0';
|
||||||
|
\*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
beh_toolbug (19,"bvl_decomp",ptbebus->NAME,0);
|
||||||
|
|
||||||
|
(void) fprintf (fd,"\tBEGIN\n\t%s <= GUARDED ",bvl_vectorize(ptbebus->NAME));
|
||||||
|
if (ptbiabl->VALABL != NULL)
|
||||||
|
{
|
||||||
|
bvl_printablfile( fd, ptbiabl->VALABL );
|
||||||
|
(void) fprintf (fd,";\n" );
|
||||||
|
|
||||||
|
/*\
|
||||||
|
buffer = bvl_abl2str (ptbiabl->VALABL,buffer,&buff_size);
|
||||||
|
(void) fprintf (fd,"%s;\n",bvl_printabl(buffer));
|
||||||
|
buffer[0] = '\0';
|
||||||
|
\*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
beh_toolbug (20,"bvl_decomp",ptbebus->NAME,0);
|
||||||
|
|
||||||
|
(void) fprintf (fd,"\tEND BLOCK label%d;\n",nrlabel);
|
||||||
|
ptbiabl = ptbiabl->NEXT;
|
||||||
|
nrlabel++;
|
||||||
|
}
|
||||||
|
|
||||||
|
ptbebus = ptbebus->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Print out a concurrent signal assignment for each BEOUT */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
ptbeout = pthedbefig->BEOUT;
|
||||||
|
while (ptbeout != NULL)
|
||||||
|
{
|
||||||
|
if (ptbeout->ABL != NULL)
|
||||||
|
{
|
||||||
|
(void) fprintf (fd,"\n%s <= ",bvl_vectorize(ptbeout->NAME) );
|
||||||
|
bvl_printablfile( fd, ptbeout->ABL );
|
||||||
|
(void) fprintf (fd,";\n" );
|
||||||
|
/*\
|
||||||
|
buffer = bvl_abl2str(ptbeout->ABL,buffer,&buff_size);
|
||||||
|
(void) fprintf (fd,"\n%s <= %s;\n",bvl_vectorize(ptbeout->NAME), bvl_printabl(buffer));
|
||||||
|
buffer[0] = '\0';
|
||||||
|
\*/
|
||||||
|
}
|
||||||
|
else
|
||||||
|
beh_error (40, ptbeout->NAME);
|
||||||
|
|
||||||
|
ptbeout = ptbeout->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
(void) fprintf (fd,"END;\n");
|
||||||
|
(void) fclose (fd);
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_drive.h */
|
||||||
|
/* date : may 31 1994 */
|
||||||
|
/* version : v109 */
|
||||||
|
/* author : VUONG H.N. */
|
||||||
|
/* content : declaration of functions and global variables used by */
|
||||||
|
/* the behavioural decompiler */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
|
||||||
|
extern char *bvl_vhdlname();
|
||||||
|
extern char *bvl_abl2str();
|
||||||
|
extern char *bvl_printabl();
|
||||||
|
extern void bvl_message();
|
||||||
|
extern char *bvl_vectorize ();
|
||||||
|
extern void *bvl_vectnam ();
|
|
@ -0,0 +1,156 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_parse.c */
|
||||||
|
/* date : jun 15 1994 */
|
||||||
|
/* version : v109 */
|
||||||
|
/* author : L.A TABUSSE & H.N. VUONG & P. BAZARGAN-SABET */
|
||||||
|
/* description : Parser VHDL --> BEH */
|
||||||
|
/* called Func. : mbkalloc */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "mut.h"
|
||||||
|
#include "aut.h"
|
||||||
|
#include "abl.h"
|
||||||
|
#include "bdd.h"
|
||||||
|
#include "abe.h"
|
||||||
|
#include "abv.h"
|
||||||
|
#include "bvl_utype.h"
|
||||||
|
#include "bvl_utdef.h"
|
||||||
|
#include "bvl_parse.h"
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* Function : vhdlloadbefig */
|
||||||
|
/* Content : Parse a .vbe file to produce a befig */
|
||||||
|
/* Return : a pointer on a befig */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
bddcircuit *BvlBddCircuit = (bddcircuit *)0;
|
||||||
|
bddsystem *BvlBddSystem = (bddsystem *)0;
|
||||||
|
|
||||||
|
struct befig *vhdlloadbefig (pt_befig, figname, trace_mode)
|
||||||
|
|
||||||
|
struct befig *pt_befig;
|
||||||
|
char *figname;
|
||||||
|
int trace_mode;
|
||||||
|
|
||||||
|
{
|
||||||
|
char *tok;
|
||||||
|
char *str;
|
||||||
|
struct chain *behsfx_lst = NULL;
|
||||||
|
struct chain *suffix = NULL;
|
||||||
|
static unsigned int call_nbr = 0;
|
||||||
|
bddsystem *SaveBddSystem;
|
||||||
|
bddcircuit *SaveBddCircuit;
|
||||||
|
|
||||||
|
SaveBddSystem = BddLocalSystem;
|
||||||
|
SaveBddCircuit = BddLocalCircuit;
|
||||||
|
|
||||||
|
if ( BvlBddSystem == (bddsystem *)0 )
|
||||||
|
{
|
||||||
|
BvlBddSystem = createbddsystem( 50, 1000, 200, 50000000 );
|
||||||
|
BvlBddCircuit = createbddcircuit( "-select-", 200, 0, BvlBddSystem );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddLocalSystem = BvlBddSystem;
|
||||||
|
BddLocalCircuit = BvlBddCircuit;
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Create list of suffix for behavioural files from the */
|
||||||
|
/* environment variable VH_BEHSFX */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
if ((str = mbkgetenv ("VH_BEHSFX")) != NULL)
|
||||||
|
{
|
||||||
|
tok = strtok (str, ":");
|
||||||
|
while (tok != NULL)
|
||||||
|
{
|
||||||
|
behsfx_lst = addchain (behsfx_lst, tok);
|
||||||
|
tok = strtok (NULL, ":");
|
||||||
|
}
|
||||||
|
behsfx_lst = (struct chain *) reverse (behsfx_lst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
behsfx_lst = addchain (NULL, "vbe");
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Searching the root file */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
suffix = behsfx_lst;
|
||||||
|
while (suffix != NULL)
|
||||||
|
{
|
||||||
|
if ((bvl_y_in = mbkfopen (figname, suffix->DATA, READ_TEXT)) != NULL)
|
||||||
|
{
|
||||||
|
sprintf (BVL_CURFIL, "%s.%s", figname, (char *)suffix->DATA);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
suffix = suffix->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bvl_y_in == NULL)
|
||||||
|
{
|
||||||
|
beh_error (100, figname);
|
||||||
|
autexit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* Running the behavioural compiler on the current file */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
if ((trace_mode & ABV_TRACE_MASK) != 0)
|
||||||
|
beh_message (3, BVL_CURFIL);
|
||||||
|
|
||||||
|
if ((trace_mode & ABV_KEEP_AUX_MASK) == 0)
|
||||||
|
BVL_AUXMOD = 0;
|
||||||
|
else
|
||||||
|
BVL_AUXMOD = 1;
|
||||||
|
|
||||||
|
BVL_LINNUM = 1;
|
||||||
|
|
||||||
|
if (call_nbr != 0)
|
||||||
|
bvl_y_restart (bvl_y_in);
|
||||||
|
call_nbr++;
|
||||||
|
|
||||||
|
bvl_y_parse ();
|
||||||
|
fclose (bvl_y_in);
|
||||||
|
bvl_y_in = NULL;
|
||||||
|
|
||||||
|
/*\
|
||||||
|
resetbddcircuit( BvlBddCircuit );
|
||||||
|
resetbddsystem( BvlBddSystem );
|
||||||
|
\*/
|
||||||
|
|
||||||
|
BddLocalSystem = SaveBddSystem;
|
||||||
|
BddLocalCircuit = SaveBddCircuit;
|
||||||
|
|
||||||
|
return (BVL_HEDFIG);
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_parse.h */
|
||||||
|
/* date : May 31 1994 */
|
||||||
|
/* version : v109 */
|
||||||
|
/* author : L.A. TABUSSE & H.G. VUONG & P. BAZARGAN-SABET */
|
||||||
|
/* description : */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
char BVL_ERRFLG = 0; /* if = 1 no structure is made */
|
||||||
|
int BVL_LINNUM = 1; /* file's line number */
|
||||||
|
int BVL_AUXMOD; /* simplify internal sig (= 1) */
|
||||||
|
char BVL_CURFIL[200]; /* current file's name */
|
||||||
|
befig_list *BVL_HEDFIG = NULL;
|
||||||
|
|
||||||
|
extern FILE *bvl_y_in;
|
||||||
|
extern int bvl_y_parse();
|
||||||
|
extern void bvl_y_restart();
|
||||||
|
|
||||||
|
extern char *getenv();
|
|
@ -0,0 +1,64 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_utdef.h */
|
||||||
|
/* date : Jun 18 1992 */
|
||||||
|
/* version : v103 */
|
||||||
|
/* author : L.A.TABUSSE */
|
||||||
|
/* content : declaration of external functions and global variables*/
|
||||||
|
/* used by yacc */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
#define BVL_ICNDFN 1 /* input port */
|
||||||
|
#define BVL_OCNDFN 2 /* output port */
|
||||||
|
#define BVL_BCNDFN 3 /* inout port */
|
||||||
|
|
||||||
|
#define BVL_BITDFN 8 /* bit type */
|
||||||
|
#define BVL_MUXDFN 16 /* mux_bit type */
|
||||||
|
#define BVL_WORDFN 24 /* wor_bit type */
|
||||||
|
#define BVL_RBIDFN 32 /* reg_bit type */
|
||||||
|
|
||||||
|
#define BVL_NORDFN 128 /* non guarded signal */
|
||||||
|
#define BVL_BUSDFN 256 /* guarded signal (bus) */
|
||||||
|
#define BVL_REGDFN 384 /* guarded signal (register)*/
|
||||||
|
|
||||||
|
#define BVL_NAMDFN 0
|
||||||
|
#define BVL_NEWDFN 1
|
||||||
|
|
||||||
|
#define BVL_MODDFN 0 /* mod_val field of dct_recrd */
|
||||||
|
#define BVL_SIGDFN 1 /* sig_val field of dct_recrd */
|
||||||
|
#define BVL_CCNDFN 2 /* ccn_val field of dct_recrd */
|
||||||
|
#define BVL_RNGDFN 3 /* rng_val field of dct_recrd */
|
||||||
|
#define BVL_LBLDFN 4 /* lbl_val field of dct_recrd */
|
||||||
|
#define BVL_WMXDFN 5 /* wmx_val field of dct_recrd */
|
||||||
|
#define BVL_WMNDFN 6 /* wmn_val field of dct_recrd */
|
||||||
|
#define BVL_PNTDFN 7 /* pnt_val field of dct_recrd */
|
||||||
|
|
||||||
|
#define BVL_MXRDFN 30
|
|
@ -0,0 +1,706 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_util.c */
|
||||||
|
/* date : Jan 18 1993 */
|
||||||
|
/* version : v106 */
|
||||||
|
/* author : Pirouz BAZARGAN SABET */
|
||||||
|
/* description : This file contains some utility functions : */
|
||||||
|
/* bvl_error , bvl_y_error */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
#include "mut.h"
|
||||||
|
#include "aut.h"
|
||||||
|
#include "abl.h"
|
||||||
|
#include "abe.h"
|
||||||
|
#include "bvl_utype.h"
|
||||||
|
#include "bvl_util.h"
|
||||||
|
#include "bvl_utdef.h"
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : bvl_error */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
void bvl_error (code, str1)
|
||||||
|
|
||||||
|
int code;
|
||||||
|
char *str1;
|
||||||
|
|
||||||
|
{
|
||||||
|
BVL_ERRFLG++;
|
||||||
|
(void)fprintf (stderr,"`%s` Error %d line %d :",BVL_CURFIL,code,BVL_LINNUM);
|
||||||
|
|
||||||
|
switch (code)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
(void) fprintf (stderr,"`%s` is incompatible with the entity name\n",str1);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
(void) fprintf (stderr,"bad entity declaration\n");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
(void) fprintf (stderr,"bad port clause declaration\n");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
(void) fprintf (stderr,"port `%s` already declared\n",str1);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
(void) fprintf (stderr,"illegal port declaration (mode, type, kind)\n");
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
(void) fprintf (stderr,"bad port declaration\n");
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
(void) fprintf (stderr,"`%s` is incompatible with the architecture name\n",str1);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
(void) fprintf (stderr,"bad architecture declaration\n");
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
(void) fprintf (stderr,"illegal declaration\n");
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
(void) fprintf (stderr,"signal `%s` already declared\n",str1);
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
(void) fprintf (stderr,"illegal signal declaration (type, kind)\n");
|
||||||
|
break;
|
||||||
|
case 17:
|
||||||
|
(void) fprintf (stderr,"`%s` unknown port or signal\n",str1);
|
||||||
|
break;
|
||||||
|
case 18:
|
||||||
|
(void) fprintf (stderr,"illegal concurrent statement\n");
|
||||||
|
break;
|
||||||
|
case 19:
|
||||||
|
(void) fprintf (stderr,"label `%s` already used\n",str1);
|
||||||
|
break;
|
||||||
|
case 20:
|
||||||
|
(void) fprintf (stderr,"`%s` is incompatible with the block's label\n",str1);
|
||||||
|
break;
|
||||||
|
case 21:
|
||||||
|
(void) fprintf (stderr,"input port `%s` cannot be assigned\n",str1);
|
||||||
|
break;
|
||||||
|
case 22:
|
||||||
|
(void) fprintf (stderr,"unguarded signal `%s` assigned by guarded assignment\n",str1);
|
||||||
|
break;
|
||||||
|
case 23:
|
||||||
|
(void) fprintf (stderr,"guarded signal `%s` assigned by unguarded assignment\n",str1);
|
||||||
|
break;
|
||||||
|
case 25:
|
||||||
|
(void) fprintf (stderr,"some choices missing in the selected signal assignment\n");
|
||||||
|
break;
|
||||||
|
case 26:
|
||||||
|
(void) fprintf (stderr,"output port `%s` cannot be read\n",str1);
|
||||||
|
break;
|
||||||
|
case 28:
|
||||||
|
(void) fprintf (stderr,"duplicate choice in selected signal assignment\n");
|
||||||
|
break;
|
||||||
|
case 30:
|
||||||
|
(void) fprintf (stderr,"illegal use of OTHERS in selected signal assignment\n");
|
||||||
|
break;
|
||||||
|
case 32:
|
||||||
|
(void) fprintf (stderr,"null array not supported\n");
|
||||||
|
break;
|
||||||
|
case 33:
|
||||||
|
(void) fprintf (stderr,"incompatible constraint and type\n");
|
||||||
|
break;
|
||||||
|
case 35:
|
||||||
|
(void) fprintf (stderr,"illegal assignment of `%s` (widths mismatch)\n",str1);
|
||||||
|
break;
|
||||||
|
case 36:
|
||||||
|
(void) fprintf (stderr,"signal `%s` used out of declared range\n",str1);
|
||||||
|
break;
|
||||||
|
case 38:
|
||||||
|
(void) fprintf (stderr,"width or/and type mismatch\n");
|
||||||
|
break;
|
||||||
|
case 39:
|
||||||
|
(void) fprintf (stderr,"signal `%s` assigned more than once\n",str1);
|
||||||
|
break;
|
||||||
|
case 40:
|
||||||
|
(void) fprintf (stderr,"signal `%s` never assigned\n",str1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 68:
|
||||||
|
(void) fprintf (stderr,"BEPOR type is unknown\n");
|
||||||
|
break;
|
||||||
|
case 73:
|
||||||
|
(void) fprintf (stderr,"`%s` is not a bit string litteral\n",str1);
|
||||||
|
break;
|
||||||
|
case 74:
|
||||||
|
(void) fprintf (stderr,"bad generic declaration\n");
|
||||||
|
break;
|
||||||
|
case 75:
|
||||||
|
(void) fprintf (stderr,"bad generic element\n");
|
||||||
|
break;
|
||||||
|
case 76:
|
||||||
|
(void) fprintf (stderr,"`%s`: when expression must be a constant\n",str1);
|
||||||
|
break;
|
||||||
|
case 77:
|
||||||
|
(void) fprintf (stderr,"illegal generic declaration (type, kind)\n");
|
||||||
|
break;
|
||||||
|
case 78:
|
||||||
|
(void) fprintf (stderr,"illegal constant declaration (type, kind)\n");
|
||||||
|
break;
|
||||||
|
case 79:
|
||||||
|
(void) fprintf (stderr,"illegal use of attribute STABLE on `%s`\n",str1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
(void) fprintf (stderr,"syntax error\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BVL_ERRFLG > BVL_MXRDFN)
|
||||||
|
{
|
||||||
|
(void) fprintf (stderr,"Too many errors. Cannot continue further more\n");
|
||||||
|
(void) fprintf (stderr,"\n Have a nice day...\n");
|
||||||
|
autexit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : bvl_y_error */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
void bvl_y_error (str)
|
||||||
|
|
||||||
|
char *str;
|
||||||
|
{
|
||||||
|
BVL_ERRFLG++;
|
||||||
|
(void)fprintf (stderr,"`%s` Error line %d : %s\n",BVL_CURFIL,BVL_LINNUM,str);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : vhdlablname */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
/*\
|
||||||
|
char *vhdlablname (name)
|
||||||
|
|
||||||
|
char *name;
|
||||||
|
|
||||||
|
{
|
||||||
|
char *new_name;
|
||||||
|
char *prv_name;
|
||||||
|
char *tmp_name;
|
||||||
|
char buffer[200];
|
||||||
|
int i,j,flag,number;
|
||||||
|
static struct beden **namtab=NULL;
|
||||||
|
static char *keywrd [] = {
|
||||||
|
"abs" , "access" ,
|
||||||
|
"after" , "alias" ,
|
||||||
|
"all" , "and" ,
|
||||||
|
"architecture", "array" ,
|
||||||
|
"assert" , "attribute" ,
|
||||||
|
"begin" , "bit" ,
|
||||||
|
"bit_vector" , "block" ,
|
||||||
|
"body" , "buffer" ,
|
||||||
|
"bus" , "case" ,
|
||||||
|
"component" , "configuration",
|
||||||
|
"constant" , "disconnect" ,
|
||||||
|
"downto" , "else" ,
|
||||||
|
"elsif" , "end" ,
|
||||||
|
"entity" , "error" ,
|
||||||
|
"exit" , "file" ,
|
||||||
|
"for" , "function" ,
|
||||||
|
"generate" , "generic" ,
|
||||||
|
"guarded" , "if" ,
|
||||||
|
"in" , "inout" ,
|
||||||
|
"is" , "label" ,
|
||||||
|
"library" , "linkage" ,
|
||||||
|
"loop" , "map" ,
|
||||||
|
"mod" , "mux_bit" ,
|
||||||
|
"mux_vector" , "nand" ,
|
||||||
|
"natural" , "new" ,
|
||||||
|
"next" , "nor" ,
|
||||||
|
"not" , "null" ,
|
||||||
|
"of" , "on" ,
|
||||||
|
"open" , "or" ,
|
||||||
|
"others" , "out" ,
|
||||||
|
"package" , "port" ,
|
||||||
|
"procedure" , "process" ,
|
||||||
|
"range" , "record" ,
|
||||||
|
"reg_bit" , "reg_vector" ,
|
||||||
|
"register" , "rem" ,
|
||||||
|
"report" , "return" ,
|
||||||
|
"select" , "severity" ,
|
||||||
|
"signal" , "stable" ,
|
||||||
|
"subtype" , "then" ,
|
||||||
|
"to" , "transport" ,
|
||||||
|
"type" , "units" ,
|
||||||
|
"until" , "use" ,
|
||||||
|
"variable" , "wait" ,
|
||||||
|
"warning" , "when" ,
|
||||||
|
"while" , "with" ,
|
||||||
|
"wor_bit" , "wor_vector" ,
|
||||||
|
"xor"
|
||||||
|
};
|
||||||
|
|
||||||
|
if (namtab == NULL)
|
||||||
|
{
|
||||||
|
namtab = beh_initab ();
|
||||||
|
for (i=0 ; i<93 ; i++)
|
||||||
|
beh_addtab (namtab, namealloc (keywrd [i]), NULL, BVL_NEWDFN , 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp_name = namealloc (name);
|
||||||
|
new_name = (char *) beh_chktab (namtab,tmp_name,NULL,BVL_PNTDFN);
|
||||||
|
|
||||||
|
if (beh_chktab (namtab,tmp_name,NULL,BVL_NAMDFN) == 0)
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
j = 0;
|
||||||
|
number = 0;
|
||||||
|
flag = 1;
|
||||||
|
while (tmp_name[i] != '\0')
|
||||||
|
{
|
||||||
|
buffer[j] = tmp_name[i];
|
||||||
|
if ( ((tmp_name[i] >= 'a') && (tmp_name[i] <= 'z')) ||
|
||||||
|
((tmp_name[i] >= 'A') && (tmp_name[i] <= 'Z')) ||
|
||||||
|
((tmp_name[i] >= '0') && (tmp_name[i] <= '9') && (i != 0)))
|
||||||
|
flag = 0;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (flag == 1)
|
||||||
|
buffer[j++] = 'v';
|
||||||
|
buffer[j] = '_';
|
||||||
|
flag = 1;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
if (buffer[j-1] == '_')
|
||||||
|
buffer[j++] = '0';
|
||||||
|
buffer[j] = '\0';
|
||||||
|
new_name = namealloc (buffer);
|
||||||
|
|
||||||
|
prv_name = new_name;
|
||||||
|
while (beh_chktab (namtab,new_name,NULL,BVL_NEWDFN) != 0)
|
||||||
|
{
|
||||||
|
new_name = prv_name;
|
||||||
|
sprintf (buffer,"%s_%d",new_name,number++);
|
||||||
|
prv_name = new_name;
|
||||||
|
new_name = namealloc (buffer);
|
||||||
|
}
|
||||||
|
beh_addtab (namtab,new_name,NULL,BVL_NEWDFN,1);
|
||||||
|
beh_addtab (namtab,tmp_name,NULL,BVL_PNTDFN,(long)new_name);
|
||||||
|
beh_addtab (namtab,tmp_name,NULL,BVL_NAMDFN,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (new_name);
|
||||||
|
}
|
||||||
|
\*/
|
||||||
|
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : bvl_vectorize */
|
||||||
|
/* description : put parenthesis on element of bussed signals */
|
||||||
|
/* called func. : mbkalloc */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
char *bvl_vectorize(name)
|
||||||
|
|
||||||
|
char *name;
|
||||||
|
{
|
||||||
|
char *new_name ;
|
||||||
|
char tmp1 [256];
|
||||||
|
int i = 0;
|
||||||
|
static struct beden **tab = NULL;
|
||||||
|
|
||||||
|
if (tab == NULL)
|
||||||
|
tab = beh_initab ();
|
||||||
|
|
||||||
|
if ((new_name = (char *) beh_chktab (tab, name, NULL, BVL_PNTDFN)) == NULL)
|
||||||
|
{
|
||||||
|
strcpy (tmp1, name);
|
||||||
|
|
||||||
|
while ((name [i] != '\0') && (name [i] != ' ' ) && (name [i] != '\''))
|
||||||
|
i ++;
|
||||||
|
|
||||||
|
tmp1 [i] = '\0';
|
||||||
|
new_name = vhdlablname (tmp1);
|
||||||
|
|
||||||
|
if (name [i] != '\0')
|
||||||
|
{
|
||||||
|
if (name [i] == ' ')
|
||||||
|
sprintf (tmp1, "%s (%s)", new_name, &name[i+1]);
|
||||||
|
else
|
||||||
|
sprintf (tmp1, "%s'%s" , new_name, &name[i+1]);
|
||||||
|
new_name = namealloc (tmp1);
|
||||||
|
}
|
||||||
|
beh_addtab (tab, name, NULL, BVL_PNTDFN, new_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (new_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : bvl_vectnam */
|
||||||
|
/* analyze a list of signal and return the bounds of the vectorised */
|
||||||
|
/* signals, if they occure. */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
void *bvl_vectnam(pt_list,left,right,name,type)
|
||||||
|
|
||||||
|
void *pt_list;
|
||||||
|
int *left, *right;
|
||||||
|
char **name;
|
||||||
|
char type; /* If type = 0 bepor_list, type = 1 bebux_list */
|
||||||
|
/* If type = 2 bereg_list, type = 3 beaux_list */
|
||||||
|
|
||||||
|
{
|
||||||
|
char *blank_space;
|
||||||
|
char *sig_name;
|
||||||
|
char name_tmp[200];
|
||||||
|
char number[200];
|
||||||
|
bepor_list *ptpor;
|
||||||
|
bebux_list *ptbux;
|
||||||
|
beaux_list *ptaux;
|
||||||
|
bereg_list *ptreg;
|
||||||
|
char END = 0;
|
||||||
|
|
||||||
|
/* Case bepor_list */
|
||||||
|
if(type==0)
|
||||||
|
{
|
||||||
|
ptpor = (bepor_list *)pt_list;
|
||||||
|
*left = *right = -1;
|
||||||
|
sig_name = ptpor->NAME;
|
||||||
|
*name = (char*)mbkalloc(strlen(sig_name) + 1);
|
||||||
|
strcpy(*name,sig_name);
|
||||||
|
blank_space = strchr(*name,' ');
|
||||||
|
if (blank_space != NULL)
|
||||||
|
{
|
||||||
|
strcpy(number,blank_space);
|
||||||
|
*left = atoi(number);
|
||||||
|
*right = *left;
|
||||||
|
*blank_space = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
while(!END)
|
||||||
|
{
|
||||||
|
if(ptpor->NEXT != NULL)
|
||||||
|
{
|
||||||
|
strcpy(name_tmp,(ptpor->NEXT)->NAME);
|
||||||
|
blank_space = strchr(name_tmp,' ');
|
||||||
|
if(blank_space!=NULL)
|
||||||
|
{
|
||||||
|
strcpy(number,blank_space);
|
||||||
|
*blank_space = '\0';
|
||||||
|
if(!strcmp(*name,name_tmp))
|
||||||
|
{
|
||||||
|
*right = atoi(number);
|
||||||
|
ptpor = ptpor->NEXT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
return(ptpor);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*case bebux_list */
|
||||||
|
if(type==1)
|
||||||
|
{
|
||||||
|
ptbux = (bebux_list *)pt_list;
|
||||||
|
/* Extract the name and number of an element */
|
||||||
|
*left = *right = -1;
|
||||||
|
sig_name = ptbux->NAME;
|
||||||
|
*name = (char *)mbkalloc(strlen(sig_name) + 1);
|
||||||
|
strcpy(*name,sig_name);
|
||||||
|
blank_space = strchr(*name,' ');
|
||||||
|
if (blank_space != NULL)
|
||||||
|
{
|
||||||
|
strcpy(number,blank_space);
|
||||||
|
*right = atoi(number);
|
||||||
|
*left = *right;
|
||||||
|
*blank_space = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
while(END != 1)
|
||||||
|
{
|
||||||
|
if(ptbux->NEXT != NULL)
|
||||||
|
{
|
||||||
|
strcpy(name_tmp,ptbux->NEXT->NAME);
|
||||||
|
blank_space = strchr(name_tmp,' ');
|
||||||
|
if(blank_space!=NULL)
|
||||||
|
{
|
||||||
|
strcpy(number,blank_space);
|
||||||
|
*blank_space = '\0';
|
||||||
|
if(!strcmp(*name,name_tmp))
|
||||||
|
{
|
||||||
|
*right = atoi(number);
|
||||||
|
ptbux = ptbux->NEXT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
return(ptbux);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*case bereg_list */
|
||||||
|
if(type==2)
|
||||||
|
{
|
||||||
|
ptreg = (bereg_list *)pt_list;
|
||||||
|
/* Extract the name and number of an element */
|
||||||
|
*left = *right = -1;
|
||||||
|
sig_name = ptreg->NAME;
|
||||||
|
*name = (char *)mbkalloc(strlen(sig_name) + 1);
|
||||||
|
strcpy(*name,sig_name);
|
||||||
|
blank_space = strchr(*name,' ');
|
||||||
|
if (blank_space != NULL)
|
||||||
|
{
|
||||||
|
strcpy(number,blank_space);
|
||||||
|
*right = atoi(number);
|
||||||
|
*left = *right;
|
||||||
|
*blank_space = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
while(END != 1)
|
||||||
|
{
|
||||||
|
if(ptreg->NEXT != NULL)
|
||||||
|
{
|
||||||
|
strcpy(name_tmp,ptreg->NEXT->NAME);
|
||||||
|
blank_space = strchr(name_tmp,' ');
|
||||||
|
if(blank_space!=NULL)
|
||||||
|
{
|
||||||
|
strcpy(number,blank_space);
|
||||||
|
*blank_space = '\0';
|
||||||
|
if(!strcmp(*name,name_tmp))
|
||||||
|
{
|
||||||
|
*right = atoi(number);
|
||||||
|
ptreg = ptreg->NEXT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
return(ptreg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*case beaux_list */
|
||||||
|
if(type==3)
|
||||||
|
{
|
||||||
|
ptaux = (beaux_list *)pt_list;
|
||||||
|
/* Extract the name and number of an element */
|
||||||
|
*left = *right = -1;
|
||||||
|
sig_name = ptaux->NAME;
|
||||||
|
*name = (char *)mbkalloc(strlen(sig_name) + 1);
|
||||||
|
strcpy(*name,sig_name);
|
||||||
|
blank_space = strchr(*name,' ');
|
||||||
|
if (blank_space != NULL)
|
||||||
|
{
|
||||||
|
strcpy(number,blank_space);
|
||||||
|
*right = atoi(number);
|
||||||
|
*left = *right;
|
||||||
|
*blank_space = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
while(END != 1)
|
||||||
|
{
|
||||||
|
if(ptaux->NEXT != NULL)
|
||||||
|
{
|
||||||
|
strcpy(name_tmp,ptaux->NEXT->NAME);
|
||||||
|
blank_space = strchr(name_tmp,' ');
|
||||||
|
if(blank_space!=NULL)
|
||||||
|
{
|
||||||
|
strcpy(number,blank_space);
|
||||||
|
*blank_space = '\0';
|
||||||
|
if(!strcmp(*name,name_tmp))
|
||||||
|
{
|
||||||
|
*right = atoi(number);
|
||||||
|
ptaux = ptaux->NEXT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
END = 1;
|
||||||
|
}
|
||||||
|
return(ptaux);
|
||||||
|
}
|
||||||
|
return( (void *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : bvl_printabl */
|
||||||
|
/* content : put a \n for a better presentation of an abl */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/*\
|
||||||
|
char *bvl_printabl(chaine)
|
||||||
|
char *chaine;
|
||||||
|
{
|
||||||
|
char *chaine_tmp = NULL;
|
||||||
|
char *blanc = NULL;
|
||||||
|
|
||||||
|
chaine_tmp = chaine;
|
||||||
|
while(strlen(chaine_tmp)>60)
|
||||||
|
{
|
||||||
|
chaine_tmp = &chaine_tmp[60];
|
||||||
|
blanc = strchr(chaine_tmp,' ');
|
||||||
|
if(blanc != NULL)
|
||||||
|
{
|
||||||
|
*blanc = '\n';
|
||||||
|
chaine_tmp = blanc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(chaine);
|
||||||
|
}
|
||||||
|
\*/
|
||||||
|
|
||||||
|
void bvl_printablfile( AblFile, Expr )
|
||||||
|
|
||||||
|
FILE *AblFile;
|
||||||
|
chain_list *Expr;
|
||||||
|
{
|
||||||
|
viewablexprfile( AblFile, Expr, ABL_VIEW_VHDL );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* function : bvl_abl2str */
|
||||||
|
/* description : return a string corresponding to an expression */
|
||||||
|
/* called func. : */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
char *bvl_abl2str (expr, chaine, size_pnt)
|
||||||
|
|
||||||
|
struct chain *expr; /* expression */
|
||||||
|
char *chaine; /* target string */
|
||||||
|
int *size_pnt; /* size of available space */
|
||||||
|
|
||||||
|
{
|
||||||
|
int operator;
|
||||||
|
char *oper ;
|
||||||
|
struct chain *operand ;
|
||||||
|
static char *str_z = NULL;
|
||||||
|
static char *str_o = NULL;
|
||||||
|
static char *str_d = NULL;
|
||||||
|
|
||||||
|
if (str_z == NULL)
|
||||||
|
{
|
||||||
|
str_z = namealloc ("'0'");
|
||||||
|
str_o = namealloc ("'1'");
|
||||||
|
str_d = namealloc ("'d'");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* if there is not enough space left allocate a bigger block */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
if (*size_pnt < (strlen (chaine) + 50))
|
||||||
|
{
|
||||||
|
*size_pnt = *size_pnt + 256;
|
||||||
|
chaine = (char *) realloc (chaine, *size_pnt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* if the expression is a terminal (atom) add its name to */
|
||||||
|
/* the previous string */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
if (expr->NEXT == NULL)
|
||||||
|
{
|
||||||
|
if ((expr->DATA == (void *) str_z) ||
|
||||||
|
(expr->DATA == (void *) str_o) ||
|
||||||
|
(expr->DATA == (void *) str_d) )
|
||||||
|
strcat (chaine, expr->DATA);
|
||||||
|
else
|
||||||
|
strcat (chaine, bvl_vectorize (expr->DATA));
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
/* if the expression is not a terminal : */
|
||||||
|
/* - for unary operators (not, stable) add */
|
||||||
|
/* "operator ( operand )" to the previous string */
|
||||||
|
/* */
|
||||||
|
/* - for binary operators (and, or, nor, xor, ...) add */
|
||||||
|
/* "(operand operator operand operator operand ...)" */
|
||||||
|
/* ###------------------------------------------------------### */
|
||||||
|
|
||||||
|
operator = (int) ((struct chain *) expr->DATA)->DATA;
|
||||||
|
operand = (struct chain *)expr->NEXT->DATA;
|
||||||
|
|
||||||
|
if (operator == ABL_STABLE)
|
||||||
|
{
|
||||||
|
strcat (chaine, bvl_vectorize (operand->DATA));
|
||||||
|
strcat (chaine, "'STABLE");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (operator == ABL_NOT)
|
||||||
|
{
|
||||||
|
strcat (chaine, "not (");
|
||||||
|
chaine = bvl_abl2str (operand, chaine, size_pnt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oper = getablopername (operator);
|
||||||
|
strcat (chaine,"(");
|
||||||
|
while ( (expr = expr->NEXT) != NULL )
|
||||||
|
{
|
||||||
|
chaine = bvl_abl2str (expr->DATA, chaine, size_pnt);
|
||||||
|
if (expr->NEXT)
|
||||||
|
{
|
||||||
|
strcat (chaine, " ");
|
||||||
|
strcat (chaine, oper);
|
||||||
|
strcat (chaine, " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
strcat (chaine, ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (chaine);
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_util.h */
|
||||||
|
/* date : Jun 15 1992 */
|
||||||
|
/* version : v102 */
|
||||||
|
/* author : Pirouz BAZARGAN SABET */
|
||||||
|
/* description : This file contains declaration of global and external */
|
||||||
|
/* variables and, functions used in `bvl_util.c` */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
extern int BVL_LINNUM; /* file's line number */
|
||||||
|
extern char BVL_ERRFLG; /* Error flag */
|
||||||
|
extern char BVL_CURFIL[]; /* current file name */
|
||||||
|
|
||||||
|
extern void bvl_printablfile();
|
||||||
|
extern void *bvl_vectnam();
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
/* */
|
||||||
|
/* file : bvl_utype.h */
|
||||||
|
/* date : Jun 15 1992 */
|
||||||
|
/* version : v102 */
|
||||||
|
/* author : P.BAZARGAN L.A.TABUSSE VUONG H.N. */
|
||||||
|
/* content : declaration of external functions and global variables*/
|
||||||
|
/* used by yacc */
|
||||||
|
/* */
|
||||||
|
/* ###--------------------------------------------------------------### */
|
||||||
|
|
||||||
|
struct dct_entry
|
||||||
|
{
|
||||||
|
struct dct_entry *next;
|
||||||
|
struct dct_recrd *data;
|
||||||
|
char *key;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct dct_recrd
|
||||||
|
{
|
||||||
|
struct dct_recrd *next;
|
||||||
|
char *key;
|
||||||
|
short fd0_val;
|
||||||
|
short fd1_val;
|
||||||
|
short fd2_val;
|
||||||
|
short fd3_val;
|
||||||
|
short fd4_val;
|
||||||
|
short fd5_val;
|
||||||
|
short fd6_val;
|
||||||
|
int pnt_val;
|
||||||
|
};
|
|
@ -0,0 +1,109 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| 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. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <malloc.h>
|
||||||
|
|
||||||
|
# include "mut.h"
|
||||||
|
# include "aut.h"
|
||||||
|
# include "abl.h"
|
||||||
|
# include "abe.h"
|
||||||
|
# include "abv.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Usage |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void BvlUsage()
|
||||||
|
{
|
||||||
|
fprintf( stderr, "\t\tabvtest [Options] Input_name\n\n" );
|
||||||
|
fprintf( stdout, "\t\tOptions : -V Sets Verbose mode on\n" );
|
||||||
|
fprintf( stdout, "\n" );
|
||||||
|
|
||||||
|
exit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int main( argc, argv )
|
||||||
|
|
||||||
|
int argc;
|
||||||
|
char **argv;
|
||||||
|
{
|
||||||
|
befig_list *Figure;
|
||||||
|
char *InputFileName;
|
||||||
|
int Number;
|
||||||
|
int Index;
|
||||||
|
char Option;
|
||||||
|
long Value;
|
||||||
|
|
||||||
|
int FlagVerbose = 0;
|
||||||
|
|
||||||
|
mbkenv();
|
||||||
|
autenv();
|
||||||
|
ablenv();
|
||||||
|
|
||||||
|
InputFileName = (char *)0;
|
||||||
|
|
||||||
|
if ( argc < 2 ) BvlUsage();
|
||||||
|
|
||||||
|
InputFileName = (char *)0;
|
||||||
|
|
||||||
|
for ( Number = 1; Number < argc; Number++ )
|
||||||
|
{
|
||||||
|
if ( argv[ Number ][ 0 ] == '-' )
|
||||||
|
{
|
||||||
|
for ( Index = 1; argv[ Number ][ Index ] != '\0'; Index++ )
|
||||||
|
{
|
||||||
|
Option = argv[ Number ][ Index ];
|
||||||
|
|
||||||
|
switch ( Option )
|
||||||
|
{
|
||||||
|
case 'V' : FlagVerbose = 1;
|
||||||
|
break;
|
||||||
|
default : BvlUsage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( InputFileName == (char *)0 ) InputFileName = argv[ Number ];
|
||||||
|
else
|
||||||
|
BvlUsage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( InputFileName == (char *)0 ) BvlUsage();
|
||||||
|
|
||||||
|
Figure = vhdlloadbefig( NULL, InputFileName, 0);
|
||||||
|
|
||||||
|
beh_frebefig( Figure );
|
||||||
|
}
|
Loading…
Reference in New Issue