Merge branch 'nptran_hvio_fast-support' into verhaegen-devel
This commit is contained in:
commit
03c76c4d58
|
@ -12,4 +12,4 @@ libAbl_la_SOURCES = abldel.h ablflat.h abloptim.h ablunflat.h
|
||||||
ablctlsimp.h ablerror.h ablmap.h ablsubst.h \
|
ablctlsimp.h ablerror.h ablmap.h ablsubst.h \
|
||||||
abldel.c ablflat.c abloptim.c ablunflat.c
|
abldel.c ablflat.c abloptim.c ablunflat.c
|
||||||
libAbl_la_LDFLAGS = -version-info @ABL_DLL_VERSION@ -L../../aut/src
|
libAbl_la_LDFLAGS = -version-info @ABL_DLL_VERSION@ -L../../aut/src
|
||||||
libAbl_la_LIBADD = -lAut -lMut
|
libAbl_la_LIBADD = -L../../aut/src/.libs -lAut -L../../mbk/src/.libs -lMut
|
||||||
|
|
|
@ -24,5 +24,5 @@ libBdd_la_SOURCES = bdd.h bddenv.h bddimply.h bddsimp
|
||||||
bdddump.h bddhoper.h bddsatisfy.h \
|
bdddump.h bddhoper.h bddsatisfy.h \
|
||||||
bddenv.c bddimply.c bddsimpdc.c
|
bddenv.c bddimply.c bddsimpdc.c
|
||||||
|
|
||||||
libBdd_la_LDFLAGS = -version-info @BDD_DLL_VERSION@ -L../../abl/src -L../../mbk/src
|
libBdd_la_LDFLAGS = -version-info @BDD_DLL_VERSION@ -L../../abl/src -L../../mbk/src -L../../aut/src
|
||||||
libBdd_la_LIBADD = -lAbl -lAut
|
libBdd_la_LIBADD = -lAbl -lAut
|
||||||
|
|
|
@ -2,6 +2,7 @@ lib_LTLIBRARIES = libVrd.la
|
||||||
include_HEADERS = vrd.h
|
include_HEADERS = vrd.h
|
||||||
libVrd_la_SOURCES = drucompi_l.l drucompi_y.y \
|
libVrd_la_SOURCES = drucompi_l.l drucompi_y.y \
|
||||||
defdefin.c defdefin.h defexclu.c defexclu.h definclu.c definclu.h definter.c \
|
defdefin.c defdefin.h defexclu.c defexclu.h definclu.c definclu.h definter.c \
|
||||||
|
defminmax.h defminmax.c \
|
||||||
definter.h defresiz.c defresiz.h deftools.c deftools.h defunion.c defunion.h \
|
definter.h defresiz.c defresiz.h deftools.c deftools.h defunion.c defunion.h \
|
||||||
drucgral.c druchier.c druchier.h drucmin.c drucmin.h drucompi.c \
|
drucgral.c druchier.c druchier.h drucmin.c drucmin.h drucompi.c \
|
||||||
drucompi.h drucring.c drucring.h drucutil.c drucutil.h vmcaract.c vmcaract.h \
|
drucompi.h drucring.c drucring.h drucutil.c drucutil.h vmcaract.c vmcaract.h \
|
||||||
|
|
|
@ -126,6 +126,21 @@ DrucViewString ("\n");
|
||||||
\*/
|
\*/
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case DRUC_MESURE_LARGEUR_MIN:
|
||||||
|
case DRUC_MESURE_LARGEUR_MAX:
|
||||||
|
case DRUC_MESURE_LONGUEUR_MIN:
|
||||||
|
case DRUC_MESURE_LONGUEUR_MAX:
|
||||||
|
{
|
||||||
|
// printf("DRUC_OPERATION_%d\n", DrucInstructionCourante->OP_COMPOSE );
|
||||||
|
|
||||||
|
DrucDefineMinMax ( DrucFigureRds,
|
||||||
|
DrucRdsWindow,
|
||||||
|
DrucInstructionCourante
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
defualt:
|
||||||
|
DRUC_EXIT( DRUC_ERROR_UNDEFINED );
|
||||||
}/* switch */
|
}/* switch */
|
||||||
|
|
||||||
DrucComputeEquiLayer ( DrucFigureRds ,
|
DrucComputeEquiLayer ( DrucFigureRds ,
|
||||||
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : DRUC |
|
||||||
|
| |
|
||||||
|
| File : DEFMINMAX.C |
|
||||||
|
| |
|
||||||
|
| Authors : Naohiko Shimizu |
|
||||||
|
| |
|
||||||
|
| Date : 04/03/20 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include "mph.h"
|
||||||
|
#include "mut.h"
|
||||||
|
#include "rds.h"
|
||||||
|
#include "rwi.h"
|
||||||
|
#include "rut.h"
|
||||||
|
#include "rtl.h"
|
||||||
|
#include "rfm.h"
|
||||||
|
#include "rpr.h"
|
||||||
|
|
||||||
|
#include "drucutil.h"
|
||||||
|
#include "vmctools.h"
|
||||||
|
#include "deftools.h"
|
||||||
|
#include "defresiz.h"
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| DefMinMax Fonctions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| DrucDefineUnion |
|
||||||
|
| Definit un layer temporaire caracterise par l'union |
|
||||||
|
| des deux layers source |
|
||||||
|
| range le resultat dans le tableau des layers user defini par|
|
||||||
|
| l'instruction |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void DrucDefineMinMax ( DrucFigureRds,
|
||||||
|
DrucRdsWindow ,
|
||||||
|
DrucInstructionCourante
|
||||||
|
)
|
||||||
|
rdsfig_list *DrucFigureRds;
|
||||||
|
rdswindow *DrucRdsWindow;
|
||||||
|
DrucTypeStructInstruction *DrucInstructionCourante;
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
int TmpLayerDest;
|
||||||
|
int TmpLayerSource1;
|
||||||
|
register rdsrec_list *TmpRectangleSource;
|
||||||
|
register rdsrec_list *TmpRectangleDest;
|
||||||
|
long MesureMax, MesureMin;
|
||||||
|
long Value;
|
||||||
|
|
||||||
|
TmpLayerDest = DrucInstructionCourante->LAYER_DEST;
|
||||||
|
TmpLayerSource1 = DrucInstructionCourante->LAYER_1;
|
||||||
|
Value = DrucInstructionCourante->DEF_VALEUR;
|
||||||
|
/*\
|
||||||
|
* modifier tous les rectangles du layer source 1
|
||||||
|
\*/
|
||||||
|
|
||||||
|
for ( TmpRectangleSource = DrucFigureRds->LAYERTAB[ TmpLayerSource1 ];
|
||||||
|
TmpRectangleSource != (rdsrec_list *)NULL;
|
||||||
|
TmpRectangleSource = TmpRectangleSource->NEXT
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/*\
|
||||||
|
* modif des dimensions X
|
||||||
|
\*/
|
||||||
|
MesureMax = ( TmpRectangleSource->DX > TmpRectangleSource->DY ?
|
||||||
|
TmpRectangleSource->DX :
|
||||||
|
TmpRectangleSource->DY
|
||||||
|
);
|
||||||
|
MesureMin = ( TmpRectangleSource->DX < TmpRectangleSource->DY ?
|
||||||
|
TmpRectangleSource->DX :
|
||||||
|
TmpRectangleSource->DY
|
||||||
|
);
|
||||||
|
switch ( DrucInstructionCourante->OP_COMPOSE )
|
||||||
|
{
|
||||||
|
case DRUC_MESURE_LARGEUR_MIN:
|
||||||
|
if(! (MesureMin > Value)) continue;
|
||||||
|
break;
|
||||||
|
case DRUC_MESURE_LARGEUR_MAX:
|
||||||
|
if(! (MesureMin < Value)) continue;
|
||||||
|
break;
|
||||||
|
case DRUC_MESURE_LONGUEUR_MIN:
|
||||||
|
if(! (MesureMax > Value)) continue;
|
||||||
|
break;
|
||||||
|
case DRUC_MESURE_LONGUEUR_MAX:
|
||||||
|
if(! (MesureMax < Value)) continue;
|
||||||
|
break;
|
||||||
|
defualt:
|
||||||
|
DRUC_EXIT( DRUC_ERROR_UNDEFINED );
|
||||||
|
}
|
||||||
|
|
||||||
|
// printf("\n1:X,Y=%d,%d, DX,DY = %d,%dM:V=%d:%d, %s\n",TmpRectangleSource->X, TmpRectangleSource->Y,TmpRectangleSource->DX, TmpRectangleSource->DY, MesureMin, Value, TmpRectangleSource->NAME);
|
||||||
|
TmpRectangleDest = allocrdsrec ( sizeof ( DrucTypeStructPlusRect ));
|
||||||
|
TmpRectangleDest->NEXT = ( rdsrec_list *)NULL;
|
||||||
|
TmpRectangleDest->USER = (rdsrec_list *)NULL;
|
||||||
|
TmpRectangleDest->NAME = TmpRectangleSource->NAME;
|
||||||
|
TmpRectangleDest->X = TmpRectangleSource->X ;
|
||||||
|
TmpRectangleDest->Y = TmpRectangleSource->Y ;
|
||||||
|
TmpRectangleDest->DX = TmpRectangleSource->DX ;
|
||||||
|
TmpRectangleDest->DY = TmpRectangleSource->DY ;
|
||||||
|
|
||||||
|
SetRdsLayer ( TmpRectangleDest ,
|
||||||
|
TmpLayerDest
|
||||||
|
);
|
||||||
|
MACRO_NEXT_EQUI ( TmpRectangleDest ) = (rdsrec_list *)NULL;
|
||||||
|
DrucChaineCompose ( TmpRectangleDest ,
|
||||||
|
TmpRectangleSource,
|
||||||
|
TmpLayerSource1
|
||||||
|
);
|
||||||
|
addrdsrecwindow ( TmpRectangleDest ,
|
||||||
|
DrucRdsWindow
|
||||||
|
);
|
||||||
|
DrucAddRecFigure ( TmpRectangleDest ,
|
||||||
|
DrucFigureRds ,
|
||||||
|
TmpLayerDest
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : DRUC |
|
||||||
|
| |
|
||||||
|
| File : DEFMINMAX.H |
|
||||||
|
| |
|
||||||
|
| Authors : Naohiko Shimizu |
|
||||||
|
| |
|
||||||
|
| Date : 04/03/20 |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| DefMinMax Fonctions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| DrucDefineResize |
|
||||||
|
| Definit un layer temporaire caracterise par la modification |
|
||||||
|
| des dimensions des rectangles par valeur positive ou negative
|
||||||
|
| range le resultat dans le tableau des layers user defini par|
|
||||||
|
| l'instruction |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
extern void DrucDefineMinMax ();
|
|
@ -124,7 +124,6 @@ bloc : define { DrucLoadInstructionDefine () ;}
|
||||||
|
|
||||||
define : DRUC_DEFINE
|
define : DRUC_DEFINE
|
||||||
DRUC_NOM { DrucInitDefineLayerA ( DrucInputChaine ) ;}
|
DRUC_NOM { DrucInitDefineLayerA ( DrucInputChaine ) ;}
|
||||||
','
|
|
||||||
resiz
|
resiz
|
||||||
DRUC_DESTINATION
|
DRUC_DESTINATION
|
||||||
DRUC_NOM { DrucInitDefineLayerDest ( DrucInputChaine ) ;}
|
DRUC_NOM { DrucInitDefineLayerDest ( DrucInputChaine ) ;}
|
||||||
|
@ -133,8 +132,10 @@ define : DRUC_DEFINE
|
||||||
|
|
||||||
resiz : valresiz
|
resiz : valresiz
|
||||||
defmodif
|
defmodif
|
||||||
defoper
|
| mesure_rel
|
||||||
| DRUC_NOM { DrucInitDefineLayerB ( DrucInputChaine ) ;}
|
valresiz { DrucStructDefineOpCompose ( $1 ) ; }
|
||||||
|
| ','
|
||||||
|
DRUC_NOM { DrucInitDefineLayerB ( DrucInputChaine ) ;}
|
||||||
compose
|
compose
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -131,8 +131,12 @@ END
|
||||||
|
|
||||||
TABLE GRAAL_TRANSISTOR_NAME
|
TABLE GRAAL_TRANSISTOR_NAME
|
||||||
|
|
||||||
NTRANS Ntrans lawn_green Black
|
NTRANS Ntrans lawn_green Black
|
||||||
PTRANS Ptrans yellow Black
|
NTRANS_HVIO NtrHVIO lawn_green Dark_gray
|
||||||
|
NTRANS_FAST NtrFAST lawn_green light_gray
|
||||||
|
PTRANS Ptrans yellow Black
|
||||||
|
PTRANS_HVIO PtrHVIO yellow Dark_gray
|
||||||
|
PTRANS_FAST PtrFAST yellow light_gray
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -172,7 +176,11 @@ TABLE GRAAL_SEGMENT_VALUE
|
||||||
NTIE 2 2
|
NTIE 2 2
|
||||||
PTIE 2 2
|
PTIE 2 2
|
||||||
NTRANS 1 4
|
NTRANS 1 4
|
||||||
|
NTRANS_HVIO 2 4
|
||||||
|
NTRANS_FAST 3 4
|
||||||
PTRANS 1 4
|
PTRANS 1 4
|
||||||
|
PTRANS_HVIO 2 4
|
||||||
|
NTRANS_FAST 3 4
|
||||||
POLY 1 1
|
POLY 1 1
|
||||||
POLY2 1 1
|
POLY2 1 1
|
||||||
ALU1 1 1
|
ALU1 1 1
|
||||||
|
|
|
@ -381,8 +381,13 @@ void GraalEditModify()
|
||||||
|
|
||||||
if ( IsRdsSegment( Rectangle ) )
|
if ( IsRdsSegment( Rectangle ) )
|
||||||
{
|
{
|
||||||
if ( ( ((phseg_list *)Pointer)->LAYER != NTRANS ) &&
|
if ( ( ((phseg_list *)Pointer)->LAYER != NTRANS ) &&
|
||||||
( ((phseg_list *)Pointer)->LAYER != PTRANS ) )
|
( ((phseg_list *)Pointer)->LAYER != NTRANS_FAST ) &&
|
||||||
|
( ((phseg_list *)Pointer)->LAYER != NTRANS_HVIO ) &&
|
||||||
|
( ((phseg_list *)Pointer)->LAYER != PTRANS ) &&
|
||||||
|
( ((phseg_list *)Pointer)->LAYER != PTRANS_FAST ) &&
|
||||||
|
( ((phseg_list *)Pointer)->LAYER != PTRANS_HVIO )
|
||||||
|
)
|
||||||
{
|
{
|
||||||
GraalAcceptRectangle( Rectangle );
|
GraalAcceptRectangle( Rectangle );
|
||||||
GraalDisplayRectangle( Rectangle );
|
GraalDisplayRectangle( Rectangle );
|
||||||
|
|
|
@ -146,7 +146,7 @@
|
||||||
static char *CursorSizeKeyword;
|
static char *CursorSizeKeyword;
|
||||||
|
|
||||||
|
|
||||||
static keyword KeywordDefine[ GSB_MAX_KEYWORD ] =
|
static keyword GsbKeywordDefine[ GSB_MAX_KEYWORD ] =
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -199,12 +199,16 @@
|
||||||
{ "nosym", NOSYM },
|
{ "nosym", NOSYM },
|
||||||
{ "ntie", NTIE },
|
{ "ntie", NTIE },
|
||||||
{ "ntrans", NTRANS },
|
{ "ntrans", NTRANS },
|
||||||
|
{ "ntrans_fast", NTRANS_FAST },
|
||||||
|
{ "ntrans_hvio", NTRANS_HVIO },
|
||||||
{ "nwell", NWELL },
|
{ "nwell", NWELL },
|
||||||
{ "pdif", PDIF },
|
{ "pdif", PDIF },
|
||||||
{ "poly", POLY },
|
{ "poly", POLY },
|
||||||
{ "poly2", POLY2 },
|
{ "poly2", POLY2 },
|
||||||
{ "ptie", PTIE },
|
{ "ptie", PTIE },
|
||||||
{ "ptrans", PTRANS },
|
{ "ptrans", PTRANS },
|
||||||
|
{ "ptrans_fast", PTRANS_FAST },
|
||||||
|
{ "ptrans_hvio", PTRANS_HVIO },
|
||||||
{ "pwell", PWELL },
|
{ "pwell", PWELL },
|
||||||
{ "rds_abox", RDS_LAYER_ABOX },
|
{ "rds_abox", RDS_LAYER_ABOX },
|
||||||
{ "rds_activ", RDS_LAYER_ACTIV },
|
{ "rds_activ", RDS_LAYER_ACTIV },
|
||||||
|
@ -567,7 +571,7 @@ long GsbGetStringValue( String )
|
||||||
Entry.NAME = String;
|
Entry.NAME = String;
|
||||||
|
|
||||||
Keyword = (keyword *)bsearch( (char *)(&Entry),
|
Keyword = (keyword *)bsearch( (char *)(&Entry),
|
||||||
(char *)KeywordDefine,
|
(char *)GsbKeywordDefine,
|
||||||
GSB_MAX_KEYWORD, sizeof( keyword ),
|
GSB_MAX_KEYWORD, sizeof( keyword ),
|
||||||
GsbKeywordCompare );
|
GsbKeywordCompare );
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
# define GSB_PARSE
|
# define GSB_PARSE
|
||||||
|
|
||||||
# define GSB_MAX_BUFFER 255
|
# define GSB_MAX_BUFFER 255
|
||||||
# define GSB_MAX_KEYWORD 149
|
# define GSB_MAX_KEYWORD 153
|
||||||
|
|
||||||
# define GSB_SEPARATORS_STRING " \t\n"
|
# define GSB_SEPARATORS_STRING " \t\n"
|
||||||
# define GSB_COMMENT_CHAR '#'
|
# define GSB_COMMENT_CHAR '#'
|
||||||
|
|
|
@ -851,8 +851,18 @@ long LynxBuildLogicalTransistor( FigureRds, LogicalFigure )
|
||||||
( BulkLayer == RDS_LYNX_TRANSISTOR_EMPTY )) continue; /*4p*/
|
( BulkLayer == RDS_LYNX_TRANSISTOR_EMPTY )) continue; /*4p*/
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
if ( TransType == NTRANS ) TransType = TRANSN;
|
if ( TransType == NTRANS ) TransType = TRANSN;
|
||||||
else TransType = TRANSP;
|
else TransType = TRANSP;
|
||||||
|
#endif
|
||||||
|
switch ( TransType ) {
|
||||||
|
case NTRANS: TransType = TRANSN; break;
|
||||||
|
case NTRANS_FAST: TransType = TRANSN_FAST; break;
|
||||||
|
case NTRANS_HVIO: TransType = TRANSN_HVIO; break;
|
||||||
|
case PTRANS: TransType = TRANSP; break;
|
||||||
|
case PTRANS_FAST: TransType = TRANSP_FAST; break;
|
||||||
|
case PTRANS_HVIO: TransType = TRANSP_HVIO; break;
|
||||||
|
}
|
||||||
|
|
||||||
for ( Gate = FigureRds->LAYERTAB[ GateLayer ];
|
for ( Gate = FigureRds->LAYERTAB[ GateLayer ];
|
||||||
Gate != (rdsrec_list *)0;
|
Gate != (rdsrec_list *)0;
|
||||||
|
|
|
@ -111,10 +111,10 @@ static char *alc_decode[] = {
|
||||||
"NDIF",
|
"NDIF",
|
||||||
"PDIF",
|
"PDIF",
|
||||||
"NTRANS",
|
"NTRANS",
|
||||||
"PTRANS",
|
|
||||||
"NTRANS_FAST",
|
"NTRANS_FAST",
|
||||||
"PTRANS_FAST",
|
|
||||||
"NTRANS_HVIO",
|
"NTRANS_HVIO",
|
||||||
|
"PTRANS",
|
||||||
|
"PTRANS_FAST",
|
||||||
"PTRANS_HVIO",
|
"PTRANS_HVIO",
|
||||||
"POLY",
|
"POLY",
|
||||||
"POLY2",
|
"POLY2",
|
||||||
|
|
|
@ -347,7 +347,11 @@ static char *TabNameLayer[] =
|
||||||
"DIFN",
|
"DIFN",
|
||||||
"DIFP",
|
"DIFP",
|
||||||
"NTRANS",
|
"NTRANS",
|
||||||
|
"NTRANS_FAST",
|
||||||
|
"NTRANS_HVIO",
|
||||||
"PTRANS",
|
"PTRANS",
|
||||||
|
"PTRANS_FAST",
|
||||||
|
"PTRANS_HVIO",
|
||||||
"POLY",
|
"POLY",
|
||||||
"TPOLY",
|
"TPOLY",
|
||||||
"POLY2",
|
"POLY2",
|
||||||
|
@ -385,10 +389,10 @@ static char *TabNameLayer[] = {
|
||||||
"NDIF",
|
"NDIF",
|
||||||
"PDIF",
|
"PDIF",
|
||||||
"NTRANS",
|
"NTRANS",
|
||||||
"PTRANS",
|
|
||||||
"NTRANS_FAST",
|
"NTRANS_FAST",
|
||||||
"PTRANS_FAST",
|
|
||||||
"NTRANS_HVIO",
|
"NTRANS_HVIO",
|
||||||
|
"PTRANS",
|
||||||
|
"PTRANS_FAST",
|
||||||
"PTRANS_HVIO",
|
"PTRANS_HVIO",
|
||||||
"POLY",
|
"POLY",
|
||||||
"POLY2",
|
"POLY2",
|
||||||
|
|
|
@ -53,7 +53,11 @@ static int Ext[LAST_LAYER + 1] = {
|
||||||
/* NDIF */ 1,
|
/* NDIF */ 1,
|
||||||
/* PDIF */ 1,
|
/* PDIF */ 1,
|
||||||
/* NTRANS */ 0, /* meant for N transistor grid */
|
/* NTRANS */ 0, /* meant for N transistor grid */
|
||||||
|
/* NTRANS_FAST */ 0, /* meant for N transistor grid */
|
||||||
|
/* NTRANS_HVIO */ 0, /* meant for N transistor grid */
|
||||||
/* PTRANS */ 0, /* meant for P transistor grid */
|
/* PTRANS */ 0, /* meant for P transistor grid */
|
||||||
|
/* PTRANS_FAST */ 0, /* meant for P transistor grid */
|
||||||
|
/* PTRANS_HVIO */ 0, /* meant for P transistor grid */
|
||||||
/* POLY */ 1,
|
/* POLY */ 1,
|
||||||
/* ALU1 */ 1,
|
/* ALU1 */ 1,
|
||||||
/* ALU2 */ 2,
|
/* ALU2 */ 2,
|
||||||
|
@ -131,7 +135,11 @@ static char *mg_layer[] = {
|
||||||
/* NDIF */ "nn",
|
/* NDIF */ "nn",
|
||||||
/* PDIF */ "pp",
|
/* PDIF */ "pp",
|
||||||
/* NTRANS */ "NULL",
|
/* NTRANS */ "NULL",
|
||||||
|
/* NTRANS_FAST */ "NULL",
|
||||||
|
/* NTRANS_HVIO */ "NULL",
|
||||||
/* PTRANS */ "NULL",
|
/* PTRANS */ "NULL",
|
||||||
|
/* PTRANS_FAST */ "NULL",
|
||||||
|
/* PTRANS_HVIO */ "NULL",
|
||||||
/* POLY */ "ps",
|
/* POLY */ "ps",
|
||||||
/* ALU1 */ "m1",
|
/* ALU1 */ "m1",
|
||||||
/* ALU2 */ "m2",
|
/* ALU2 */ "m2",
|
||||||
|
@ -333,7 +341,11 @@ register long Xcenter, Ycenter;
|
||||||
if (Ptr->TYPE == LEFT || Ptr->TYPE == RIGHT) {
|
if (Ptr->TYPE == LEFT || Ptr->TYPE == RIGHT) {
|
||||||
switch (Ptr->LAYER) {
|
switch (Ptr->LAYER) {
|
||||||
case NTRANS :
|
case NTRANS :
|
||||||
|
case NTRANS_FAST :
|
||||||
|
case NTRANS_HVIO :
|
||||||
case PTRANS :
|
case PTRANS :
|
||||||
|
case PTRANS_FAST :
|
||||||
|
case PTRANS_HVIO :
|
||||||
Xbl = Ptr->X1;
|
Xbl = Ptr->X1;
|
||||||
Ybl = Ptr->Y1;
|
Ybl = Ptr->Y1;
|
||||||
Xtr = Ptr->X2;
|
Xtr = Ptr->X2;
|
||||||
|
@ -368,7 +380,11 @@ register long Xcenter, Ycenter;
|
||||||
} else {
|
} else {
|
||||||
switch (Ptr->LAYER) {
|
switch (Ptr->LAYER) {
|
||||||
case NTRANS :
|
case NTRANS :
|
||||||
|
case NTRANS_FAST :
|
||||||
|
case NTRANS_HVIO :
|
||||||
case PTRANS :
|
case PTRANS :
|
||||||
|
case PTRANS_FAST :
|
||||||
|
case PTRANS_HVIO :
|
||||||
Xbl = Ptr->X1;
|
Xbl = Ptr->X1;
|
||||||
Ybl = Ptr->Y1;
|
Ybl = Ptr->Y1;
|
||||||
Ytr = Ptr->Y2;
|
Ytr = Ptr->Y2;
|
||||||
|
|
|
@ -1037,10 +1037,10 @@ static const char *layername[LAST_LAYER + 2] = {
|
||||||
"NDIF",
|
"NDIF",
|
||||||
"PDIF",
|
"PDIF",
|
||||||
"NTRANS",
|
"NTRANS",
|
||||||
"PTRANS",
|
|
||||||
"NTRANS_FAST",
|
"NTRANS_FAST",
|
||||||
"PTRANS_FAST",
|
|
||||||
"NTRANS_HVIO",
|
"NTRANS_HVIO",
|
||||||
|
"PTRANS",
|
||||||
|
"PTRANS_FAST",
|
||||||
"PTRANS_HVIO",
|
"PTRANS_HVIO",
|
||||||
"POLY",
|
"POLY",
|
||||||
"POLY2",
|
"POLY2",
|
||||||
|
|
|
@ -52,7 +52,11 @@ static int Extension[MAXLAYER] = {
|
||||||
/* NDIF */ 1,
|
/* NDIF */ 1,
|
||||||
/* PDIF */ 1,
|
/* PDIF */ 1,
|
||||||
/* NTRANS */ 0, /* meant for N transistor grid */
|
/* NTRANS */ 0, /* meant for N transistor grid */
|
||||||
|
/* NTRANS_FAST */ 0, /* meant for N transistor grid */
|
||||||
|
/* NTRANS_HVIO */ 0, /* meant for N transistor grid */
|
||||||
/* PTRANS */ 0, /* meant for P transistor grid */
|
/* PTRANS */ 0, /* meant for P transistor grid */
|
||||||
|
/* PTRANS_FAST */ 0, /* meant for P transistor grid */
|
||||||
|
/* PTRANS_HVIO */ 0, /* meant for P transistor grid */
|
||||||
/* POLY */ 1,
|
/* POLY */ 1,
|
||||||
/* ALU1 */ 1,
|
/* ALU1 */ 1,
|
||||||
/* ALU2 */ 2,
|
/* ALU2 */ 2,
|
||||||
|
|
|
@ -51,11 +51,11 @@ extern "C" {
|
||||||
#define TRANSFAST (1 << 1)
|
#define TRANSFAST (1 << 1)
|
||||||
#define TRANSHVIO (1 << 3)
|
#define TRANSHVIO (1 << 3)
|
||||||
|
|
||||||
#define TRANSN_FAST (TRANSN & TRANSFAST)
|
#define TRANSN_FAST (TRANSN | TRANSFAST)
|
||||||
#define TRANSP_FAST (TRANSP & TRANSFAST)
|
#define TRANSP_FAST (TRANSP | TRANSFAST)
|
||||||
|
|
||||||
#define TRANSN_HVIO (TRANSN & TRANSHVIO)
|
#define TRANSN_HVIO (TRANSN | TRANSHVIO)
|
||||||
#define TRANSP_HVIO (TRANSP & TRANSHVIO)
|
#define TRANSP_HVIO (TRANSP | TRANSHVIO)
|
||||||
|
|
||||||
#define IsTransP(type) (type & 1)
|
#define IsTransP(type) (type & 1)
|
||||||
#define IsTransN(type) (!IsTransP(type))
|
#define IsTransN(type) (!IsTransP(type))
|
||||||
|
|
|
@ -110,10 +110,10 @@ enum {
|
||||||
NDIF,
|
NDIF,
|
||||||
PDIF,
|
PDIF,
|
||||||
NTRANS,
|
NTRANS,
|
||||||
PTRANS,
|
|
||||||
NTRANS_FAST,
|
NTRANS_FAST,
|
||||||
PTRANS_FAST,
|
|
||||||
NTRANS_HVIO,
|
NTRANS_HVIO,
|
||||||
|
PTRANS,
|
||||||
|
PTRANS_FAST,
|
||||||
PTRANS_HVIO,
|
PTRANS_HVIO,
|
||||||
POLY,
|
POLY,
|
||||||
POLY2,
|
POLY2,
|
||||||
|
|
|
@ -356,8 +356,16 @@ char *layername;
|
||||||
return PTIE;
|
return PTIE;
|
||||||
else if (!strcmp(layername, "ntrans"))
|
else if (!strcmp(layername, "ntrans"))
|
||||||
return NTRANS;
|
return NTRANS;
|
||||||
|
else if (!strcmp(layername, "ntrans_hvio"))
|
||||||
|
return NTRANS_HVIO;
|
||||||
|
else if (!strcmp(layername, "ntrans_fast"))
|
||||||
|
return NTRANS_FAST;
|
||||||
else if (!strcmp(layername, "ptrans"))
|
else if (!strcmp(layername, "ptrans"))
|
||||||
return PTRANS;
|
return PTRANS;
|
||||||
|
else if (!strcmp(layername, "ptrans_hvio"))
|
||||||
|
return PTRANS_HVIO;
|
||||||
|
else if (!strcmp(layername, "ptrans_fast"))
|
||||||
|
return PTRANS_FAST;
|
||||||
else if (!strcmp(layername, "nwell"))
|
else if (!strcmp(layername, "nwell"))
|
||||||
return NWELL;
|
return NWELL;
|
||||||
else if (!strcmp(layername, "pwell"))
|
else if (!strcmp(layername, "pwell"))
|
||||||
|
|
|
@ -220,6 +220,8 @@ extern long MBK_X_GRID, MBK_Y_GRID, MBK_Y_SLICE, MBK_WIDTH_VSS, MBK_WIDTH_VDD,
|
||||||
{ "notreat", S2R_NOTREAT },
|
{ "notreat", S2R_NOTREAT },
|
||||||
{ "ntie", NTIE },
|
{ "ntie", NTIE },
|
||||||
{ "ntrans", NTRANS },
|
{ "ntrans", NTRANS },
|
||||||
|
{ "ntrans_fast", NTRANS_FAST },
|
||||||
|
{ "ntrans_hvio", NTRANS_HVIO },
|
||||||
{ "null", S2R_NOTREAT },
|
{ "null", S2R_NOTREAT },
|
||||||
{ "nwell", NWELL },
|
{ "nwell", NWELL },
|
||||||
{ "pdif", PDIF },
|
{ "pdif", PDIF },
|
||||||
|
@ -227,6 +229,8 @@ extern long MBK_X_GRID, MBK_Y_GRID, MBK_Y_SLICE, MBK_WIDTH_VSS, MBK_WIDTH_VDD,
|
||||||
{ "poly2", POLY2 },
|
{ "poly2", POLY2 },
|
||||||
{ "ptie", PTIE },
|
{ "ptie", PTIE },
|
||||||
{ "ptrans", PTRANS },
|
{ "ptrans", PTRANS },
|
||||||
|
{ "ptrans_fast", PTRANS_FAST },
|
||||||
|
{ "ptrans_hvio", PTRANS_HVIO },
|
||||||
{ "pwell", PWELL },
|
{ "pwell", PWELL },
|
||||||
{ "rcw", RDS_TRANS_RCW },
|
{ "rcw", RDS_TRANS_RCW },
|
||||||
{ "rds_abox", RDS_LAYER_ABOX },
|
{ "rds_abox", RDS_LAYER_ABOX },
|
||||||
|
@ -380,10 +384,10 @@ extern long MBK_X_GRID, MBK_Y_GRID, MBK_Y_SLICE, MBK_WIDTH_VSS, MBK_WIDTH_VDD,
|
||||||
"NDIF ",
|
"NDIF ",
|
||||||
"PDIF ",
|
"PDIF ",
|
||||||
"NTRANS ",
|
"NTRANS ",
|
||||||
"PTRANS ",
|
|
||||||
"NTRANS_FAST",
|
"NTRANS_FAST",
|
||||||
"PTRANS_FAST",
|
|
||||||
"NTRANS_HVIO",
|
"NTRANS_HVIO",
|
||||||
|
"PTRANS ",
|
||||||
|
"PTRANS_FAST",
|
||||||
"PTRANS_HVIO",
|
"PTRANS_HVIO",
|
||||||
"POLY ",
|
"POLY ",
|
||||||
"POLY2 ",
|
"POLY2 ",
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
# define RPR_MAX_RDS_UNIT 100000L
|
# define RPR_MAX_RDS_UNIT 100000L
|
||||||
# define RPR_EPSILON ((double)0.001)
|
# define RPR_EPSILON ((double)0.001)
|
||||||
# define RPR_MAX_BUFFER 512
|
# define RPR_MAX_BUFFER 512
|
||||||
# define RPR_MAX_KEYWORD 151
|
# define RPR_MAX_KEYWORD 155
|
||||||
|
|
||||||
# define MBK_MAX_WIRESETTING 30
|
# define MBK_MAX_WIRESETTING 30
|
||||||
# define RPR_SEPARATORS_STRING " \t\n"
|
# define RPR_SEPARATORS_STRING " \t\n"
|
||||||
|
|
Loading…
Reference in New Issue