This commit was generated by cvs2svn to track changes on a CVS vendor
branch.
This commit is contained in:
commit
1a87d2d8fe
|
@ -0,0 +1 @@
|
|||
SUBDIRS = src
|
|
@ -0,0 +1,52 @@
|
|||
dnl
|
||||
dnl This file is part of the Alliance CAD System
|
||||
dnl Copyright (C) Laboratoire LIP6 - Département ASIM
|
||||
dnl Universite Pierre et Marie Curie
|
||||
dnl
|
||||
dnl Home page : http://www-asim.lip6.fr/alliance/
|
||||
dnl E-mail support : mailto:alliance-support@asim.lip6.fr
|
||||
dnl
|
||||
dnl This library is free software; you can redistribute it and/or modify it
|
||||
dnl under the terms of the GNU Library General Public License as published
|
||||
dnl by the Free Software Foundation; either version 2 of the License, or (at
|
||||
dnl your option) any later version.
|
||||
dnl
|
||||
dnl Alliance VLSI CAD System is distributed in the hope that it will be
|
||||
dnl useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
dnl Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU General Public License along
|
||||
dnl with the GNU C Library; see the file COPYING. If not, write to the Free
|
||||
dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
dnl
|
||||
dnl Purpose : Auto stuffing Alliance
|
||||
dnl Almost ten years since I wrote this stuff, I just can't
|
||||
dnl believe it
|
||||
dnl Date : 01/02/2002
|
||||
dnl Author : Frederic Petrot <Frederic.Petrot@lip6.fr>
|
||||
dnl $Id: configure.in,v 1.1 2002/03/13 10:18:47 fred Exp $
|
||||
dnl
|
||||
dnl
|
||||
AC_INIT(src/alc_driv_p.c)
|
||||
AM_INIT_AUTOMAKE(mbkal, 6.0)
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_CC
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(strings.h unistd.h)
|
||||
AC_C_CONST
|
||||
AC_PROG_RANLIB
|
||||
|
||||
changequote(,)dnl
|
||||
INCLUDES=-I${ALLIANCE_TOP}/include
|
||||
LDFLAGS=-L${ALLIANCE_TOP}/lib
|
||||
changequote([,])dnl
|
||||
|
||||
AC_SUBST(INCLUDES)
|
||||
AC_SUBST(LDFLAGS)
|
||||
|
||||
|
||||
AC_OUTPUT([
|
||||
Makefile
|
||||
src/Makefile
|
||||
])
|
|
@ -0,0 +1,2 @@
|
|||
lib_LIBRARIES = libMap.a
|
||||
libMap_a_SOURCES = alc_driv_p.c alc_pars_p.c map.h
|
|
@ -0,0 +1,362 @@
|
|||
/*
|
||||
* This file is part of the Alliance CAD System
|
||||
* Copyright (C) Laboratoire LIP6 - Département ASIM
|
||||
* Universite Pierre et Marie Curie
|
||||
*
|
||||
* Home page : http://www-asim.lip6.fr/alliance/
|
||||
* E-mail support : mailto:alliance-support@asim.lip6.fr
|
||||
*
|
||||
* This library 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.
|
||||
*/
|
||||
|
||||
/************************************************************************
|
||||
* Alliance VLSI CAD system *
|
||||
* *
|
||||
* fichier : alc_driv_p.c *
|
||||
* author(s) : V. POUILLET on : 09/07/92 *
|
||||
* modified by : L. MAURIN\R. PREVOT on : 12/07/93 *
|
||||
* modified by : F. PETROT on : 04/08/93 *
|
||||
* version : 4.00 *
|
||||
* $Log: alc_driv_p.c,v $
|
||||
* Revision 1.1 2002/03/13 10:18:47 fred
|
||||
* Initial revision
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
#include <time.h>
|
||||
#include <mut.h>
|
||||
#include <mph.h>
|
||||
|
||||
#ident "@(#)Driver alliance physic v4.00 04/08/92"
|
||||
|
||||
#define EOPEN -4
|
||||
#define ECLOSE -5
|
||||
#define ELAYER -7
|
||||
#define EOPGEO -8
|
||||
#define ETYPEVIA -14
|
||||
#define EFILENAME -17
|
||||
#define EREF -23
|
||||
#define MAXLBUFFER 64
|
||||
|
||||
|
||||
#define mc_isthrough(layer) \
|
||||
( ((layer)==TPOLY) \
|
||||
||((layer)==TALU1) \
|
||||
||((layer)==TALU2) \
|
||||
||((layer)==TALU3) \
|
||||
||((layer)==TALU4) \
|
||||
||((layer)==TALU5) \
|
||||
||((layer)==TALU6) \
|
||||
||((layer)==TALU7) \
|
||||
||((layer)==TALU8) \
|
||||
||((layer)==TALU9) )
|
||||
|
||||
static void alc_printwar(warn_code)
|
||||
long warn_code;
|
||||
{
|
||||
fprintf( stderr, "\n*** mbk warning *** alcavephfig : ");
|
||||
switch( warn_code ) {
|
||||
case ELAYER :
|
||||
fprintf( stderr, "layer out of range for alc\n"); break;
|
||||
case EOPGEO :
|
||||
fprintf( stderr, "unknown transformation"); break;
|
||||
case EOPEN :
|
||||
fprintf( stderr, "can\'t open tempory file"); break;
|
||||
case ETYPEVIA :
|
||||
fprintf( stderr, "unknown via"); break;
|
||||
default : fprintf( stderr, "unknown warning");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void get_date(date)
|
||||
char *date;
|
||||
{
|
||||
time_t tim;
|
||||
struct tm *rest;
|
||||
|
||||
(void)time(&tim);
|
||||
rest=localtime(&tim);
|
||||
(void)sprintf(date, "%2d/%2d/%2d", rest->tm_mday,
|
||||
rest->tm_mon+1, rest->tm_year+1900);
|
||||
}
|
||||
|
||||
char * alc_decodelayer(layer)
|
||||
char layer;
|
||||
{
|
||||
static char *alc_decode[] = {
|
||||
"NWELL",
|
||||
"PWELL",
|
||||
"NTIE",
|
||||
"PTIE",
|
||||
"NDIF",
|
||||
"PDIF",
|
||||
"NTRANS",
|
||||
"PTRANS",
|
||||
"NTRANS_FAST",
|
||||
"PTRANS_FAST",
|
||||
"NTRANS_HVIO",
|
||||
"PTRANS_HVIO",
|
||||
"POLY",
|
||||
"POLY2",
|
||||
"ALU1",
|
||||
"ALU2",
|
||||
"ALU3",
|
||||
"ALU4",
|
||||
"ALU5",
|
||||
"ALU6",
|
||||
"ALU7",
|
||||
"ALU8",
|
||||
"ALU9",
|
||||
"TPOLY",
|
||||
"TPOLY2",
|
||||
"TALU1",
|
||||
"TALU2",
|
||||
"TALU3",
|
||||
"TALU4",
|
||||
"TALU5",
|
||||
"TALU6",
|
||||
"TALU7",
|
||||
"TALU8",
|
||||
"TALU9",
|
||||
"CALU1",
|
||||
"CALU2",
|
||||
"CALU3",
|
||||
"CALU4",
|
||||
"CALU5",
|
||||
"CALU6",
|
||||
"CALU7",
|
||||
"CALU8",
|
||||
"CALU9"
|
||||
};
|
||||
|
||||
if (layer < 0 || layer > LAST_LAYER)
|
||||
{
|
||||
alc_printwar(ELAYER);
|
||||
return "NULL";
|
||||
}
|
||||
return alc_decode[(int)layer];
|
||||
}
|
||||
|
||||
|
||||
/****************************** alc_decodevia() *******************************/
|
||||
char * alc_decodevia(type)
|
||||
int type;
|
||||
{
|
||||
static char *alc_decode[] = {
|
||||
"CONT_POLY",
|
||||
"CONT_DIF_N",
|
||||
"CONT_DIF_P",
|
||||
"CONT_BODY_N",
|
||||
"CONT_BODY_P",
|
||||
"CONT_VIA",
|
||||
"CONT_VIA2",
|
||||
"CONT_VIA3",
|
||||
"CONT_VIA4",
|
||||
"CONT_VIA5",
|
||||
"CONT_VIA6",
|
||||
"CONT_VIA7",
|
||||
"CONT_VIA8",
|
||||
"CONT_POLY2",
|
||||
"C_X_N",
|
||||
"C_X_P",
|
||||
"CONT_TURN1",
|
||||
"CONT_TURN2",
|
||||
"CONT_TURN3",
|
||||
"CONT_TURN4",
|
||||
"CONT_TURN5",
|
||||
"CONT_TURN6",
|
||||
"CONT_TURN7",
|
||||
"CONT_TURN8",
|
||||
"CONT_TURN9"
|
||||
};
|
||||
|
||||
if (type < 0 || type > LAST_CONTACT) {
|
||||
alc_printwar(ETYPEVIA);
|
||||
EXIT(1);
|
||||
}
|
||||
return alc_decode[type];
|
||||
}
|
||||
|
||||
|
||||
char *alc_decoderef(figname)
|
||||
char *figname;
|
||||
{
|
||||
#define MAXREF 2
|
||||
static char *alc_decode[MAXREF] = {
|
||||
"ref_ref",
|
||||
"ref_con",
|
||||
};
|
||||
static char *alc_return[MAXREF] = {
|
||||
"REF_REF",
|
||||
"REF_CON",
|
||||
};
|
||||
int i;
|
||||
|
||||
for(i = 0; i < MAXREF; i++)
|
||||
if (strcmp(figname, alc_decode[i]) == 0)
|
||||
return alc_return[i];
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
char *alc_decodetransf(transf)
|
||||
char transf;
|
||||
{
|
||||
static char *alc_decode[8] = { "NOSYM", "ROT_P", "SYMXY",
|
||||
"ROT_M", "SYM_X", "SY_RM", "SYM_Y", "SY_RP" };
|
||||
|
||||
if (transf < 0 || transf > 7) {
|
||||
alc_printwar(EOPGEO);
|
||||
return "NOSYM";
|
||||
}
|
||||
|
||||
return alc_decode[(int)transf];
|
||||
}
|
||||
|
||||
static void alc_printerr2(err_code, word)
|
||||
long err_code;
|
||||
char *word;
|
||||
{
|
||||
fprintf( stderr, "\n*** mbk error *** alcsavephfig : ");
|
||||
switch( err_code )
|
||||
{ case EFILENAME :
|
||||
fprintf( stderr, "bad file name : %s .\n", word); break;
|
||||
case EOPEN :
|
||||
fprintf( stderr, "can\'t open file : %s .\n", word); break;
|
||||
case EREF :
|
||||
fprintf( stderr, " inconsistant reference :%s.\n", word); break;
|
||||
case ECLOSE :
|
||||
fprintf( stderr, "can\'t close file : %s.\n", word); break;
|
||||
default : fprintf( stderr, "unknown error");
|
||||
}
|
||||
EXIT(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/******************************** alcsavephfig() ******************************/
|
||||
/******************************************************************************/
|
||||
|
||||
void alcsavephfig(pfig)
|
||||
phfig_list *pfig;
|
||||
{
|
||||
phcon_list *pcon;
|
||||
phseg_list *pseg;
|
||||
phref_list *pref;
|
||||
phins_list *pins;
|
||||
phvia_list *pvia;
|
||||
FILE *f;
|
||||
char nomp[MAXLBUFFER];
|
||||
|
||||
if(!(f = mbkfopen(pfig->NAME, OUT_PH, WRITE_TEXT)))
|
||||
alc_printerr2(EOPEN, filepath(pfig->NAME, OUT_PH));
|
||||
|
||||
if (TRACE_MODE == 'Y')
|
||||
(void) fprintf(stderr, "\n---mbk--- writing the file : %s\n",
|
||||
filepath(pfig->NAME, OUT_PH));
|
||||
|
||||
get_date(nomp);
|
||||
(void)fprintf(f, "V ALLIANCE : 6\n");
|
||||
(void)fprintf(f, "H %s,P,%s,%ld\n", pfig->NAME, nomp,SCALE_X);
|
||||
|
||||
(void)fprintf(f, "A %ld,%ld,%ld,%ld\n", pfig->XAB1, pfig->YAB1, pfig->XAB2, pfig->YAB2);
|
||||
|
||||
for(pcon = pfig->PHCON; pcon; pcon = pcon->NEXT) {
|
||||
(void)fprintf(f, "C %ld,%ld,%ld,%s,%ld,",
|
||||
pcon->XCON, pcon->YCON,
|
||||
pcon->WIDTH, pcon->NAME, pcon->INDEX);
|
||||
switch(pcon->ORIENT) {
|
||||
case NORTH :
|
||||
(void)fprintf(f, "NORTH");
|
||||
break;
|
||||
case SOUTH :
|
||||
(void)fprintf(f, "SOUTH");
|
||||
break;
|
||||
case EAST :
|
||||
(void)fprintf(f, "EAST");
|
||||
break;
|
||||
case WEST :
|
||||
(void)fprintf(f, "WEST");
|
||||
break;
|
||||
}
|
||||
(void)fprintf(f, ",%s\n", alc_decodelayer(pcon->LAYER));
|
||||
}
|
||||
|
||||
for(pref = pfig->PHREF; pref; pref = pref->NEXT) {
|
||||
if (!alc_decoderef(pref->FIGNAME))
|
||||
alc_printerr2(EREF, pref->FIGNAME);
|
||||
(void)fprintf(f, "R %ld,%ld,%s,%s\n",
|
||||
pref->XREF, pref->YREF,
|
||||
pref->FIGNAME, pref->NAME);
|
||||
}
|
||||
|
||||
for(pseg = pfig->PHSEG; pseg; pseg = pseg->NEXT) {
|
||||
(void)fprintf(f, "S %ld,%ld,%ld,%ld,%ld,%s,",
|
||||
pseg->X1, pseg->Y1,
|
||||
pseg->X2, pseg->Y2,
|
||||
pseg->WIDTH,
|
||||
pseg->NAME == NULL ? "*" : pseg->NAME);
|
||||
switch(pseg->TYPE) {
|
||||
case LEFT :
|
||||
(void)fprintf(f, "LEFT");
|
||||
break;
|
||||
case UP :
|
||||
(void)fprintf(f, "UP");
|
||||
break;
|
||||
case RIGHT :
|
||||
(void)fprintf(f, "RIGHT");
|
||||
break;
|
||||
case DOWN :
|
||||
(void)fprintf(f, "DOWN");
|
||||
break;
|
||||
default :
|
||||
(void)fprintf(f, "UNKNOWN");
|
||||
}
|
||||
(void)fprintf(f, ",%s\n", alc_decodelayer(pseg->LAYER));
|
||||
}
|
||||
|
||||
for(pins = pfig->PHINS; pins; pins = pins->NEXT)
|
||||
(void)fprintf(f, "I %ld,%ld,%s,%s,%s\n",
|
||||
pins->XINS, pins->YINS,
|
||||
pins->FIGNAME, pins->INSNAME,
|
||||
alc_decodetransf(pins->TRANSF));
|
||||
|
||||
for(pvia = pfig->PHVIA; pvia; pvia = pvia->NEXT)
|
||||
{
|
||||
/* MODIF Ludo 2/4/00 */
|
||||
if ((pvia->DX == 0) &&
|
||||
(pvia->DY == 0))
|
||||
{
|
||||
(void)fprintf(f, "V %ld,%ld,%s,%s\n",
|
||||
pvia->XVIA, pvia->YVIA, alc_decodevia(pvia->TYPE),
|
||||
pvia->NAME == NULL ? "*" : pvia->NAME );
|
||||
}
|
||||
else
|
||||
{
|
||||
(void)fprintf(f, "B %ld,%ld,%ld,%ld,%s,%s\n",
|
||||
pvia->XVIA, pvia->YVIA, pvia->DX, pvia->DY,
|
||||
alc_decodevia(pvia->TYPE),
|
||||
pvia->NAME == NULL ? "*" : pvia->NAME );
|
||||
}
|
||||
}
|
||||
|
||||
(void)fputs("EOF\n", f);
|
||||
|
||||
if (fclose(f) != 0)
|
||||
alc_printerr2(ECLOSE, filepath(pfig->NAME, OUT_PH));
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* This file is part of the Alliance CAD System
|
||||
* Copyright (C) Laboratoire LIP6 - Département ASIM
|
||||
* Universite Pierre et Marie Curie
|
||||
*
|
||||
* Home page : http://www-asim.lip6.fr/alliance/
|
||||
* E-mail support : mailto:alliance-support@asim.lip6.fr
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Library General Public License as published
|
||||
* by the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* Alliance VLSI CAD System is distributed in the hope that it will be
|
||||
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with the GNU C Library; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _MAP_H_
|
||||
#define _MAP_H_
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue