changement de version

changement cocernant la prise en compte de masque TALU.
growstk fait l'hypothèse suivante concernant les rectangle TALU
- il vient du fils alors il signifie la presence d'1 fil d'ALU
- il vient du pere alors il signifie l'interdiction de passage pour les
  niveaux superieurs
-> growstk se permet de mettre des petits fils d'ALU sur les transparences
  du pere
This commit is contained in:
Franck Wajsburt 2002-05-22 09:31:58 +00:00
parent 48414a5131
commit e79a194fb1
1 changed files with 48 additions and 6 deletions

View File

@ -1,7 +1,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
//#include <getopt.h>
#include "hash.h" #include "hash.h"
#include "mph.h" #include "mph.h"
#include "mpu.h" #include "mpu.h"
@ -137,11 +136,17 @@ int main (int ac, char *av[])
/* read files and buids mbk & rds structures */ /* read files and buids mbk & rds structures */
PhFig = getphfig (InFile, 'A'); PhFig = getphfig (InFile, 'A');
PhFig -> NAME = namealloc (OutFile); PhFig -> NAME = namealloc (OutFile);
RdsFig = addrdsfig (InFile, 0);
for (PhSeg = PhFig->PHSEG; PhSeg; PhSeg = PhSeg->NEXT) for (PhSeg = PhFig->PHSEG; PhSeg; PhSeg = PhSeg->NEXT)
segmbkrds (RdsFig, PhSeg, 0); switch (PhSeg->LAYER)
for (PhVia = PhFig->PHVIA; PhVia; PhVia = PhVia->NEXT) {
viambkrds (RdsFig, PhVia, 0); case TALU2 : PhSeg->LAYER = ALU7; break;
case TALU3 : PhSeg->LAYER = ALU8; break;
case TALU4 : PhSeg->LAYER = ALU9; break;
case TALU5 : PhSeg->LAYER = TALU7; break;
case TALU6 : PhSeg->LAYER = TALU8; break;
};
RdsFig = figmbkrds (PhFig, 0, 0);
RecNorth = allocrdsrec(0); RecNorth = allocrdsrec(0);
RecSouth = allocrdsrec(0); RecSouth = allocrdsrec(0);
@ -405,6 +410,16 @@ int main (int ac, char *av[])
for (ScanRec=NewRec; ScanRec; ScanRec = ScanRec->NEXT) for (ScanRec=NewRec; ScanRec; ScanRec = ScanRec->NEXT)
{ {
char MbkLayer = rds2mbklayer(GetRdsLayer(ScanRec)); char MbkLayer = rds2mbklayer(GetRdsLayer(ScanRec));
char MbkLayer_bis;
switch (MbkLayer)
{
case ALU2 : MbkLayer_bis = TALU2; break;
case ALU3 : MbkLayer_bis = TALU3; break;
case ALU4 : MbkLayer_bis = TALU4; break;
case ALU5 : MbkLayer_bis = TALU5; break;
case ALU6 : MbkLayer_bis = TALU6; break;
};
if (MbkLayer==0) if (MbkLayer==0)
{ {
@ -422,14 +437,24 @@ int main (int ac, char *av[])
} }
if (ScanRec->DX < ScanRec->DY) if (ScanRec->DX < ScanRec->DY)
addphseg (PhFig, MbkLayer, {
addphseg (PhFig, MbkLayer,
(SCALE_X * ScanRec->DX) / RDS_UNIT, (SCALE_X * ScanRec->DX) / RDS_UNIT,
(SCALE_X * (ScanRec->X + ScanRec->DX / 2)) / RDS_UNIT , (SCALE_X * (ScanRec->X + ScanRec->DX / 2)) / RDS_UNIT ,
(SCALE_X * (ScanRec->Y + RDS_LAMBDA)) / RDS_UNIT , (SCALE_X * (ScanRec->Y + RDS_LAMBDA)) / RDS_UNIT ,
(SCALE_X * (ScanRec->X + ScanRec->DX / 2)) / RDS_UNIT , (SCALE_X * (ScanRec->X + ScanRec->DX / 2)) / RDS_UNIT ,
(SCALE_X * (ScanRec->Y + ScanRec->DY - RDS_LAMBDA)) / RDS_UNIT , (SCALE_X * (ScanRec->Y + ScanRec->DY - RDS_LAMBDA)) / RDS_UNIT ,
NULL); NULL);
addphseg (PhFig, MbkLayer_bis,
(SCALE_X * ScanRec->DX) / RDS_UNIT,
(SCALE_X * (ScanRec->X + ScanRec->DX / 2)) / RDS_UNIT ,
(SCALE_X * (ScanRec->Y + RDS_LAMBDA)) / RDS_UNIT ,
(SCALE_X * (ScanRec->X + ScanRec->DX / 2)) / RDS_UNIT ,
(SCALE_X * (ScanRec->Y + ScanRec->DY - RDS_LAMBDA)) / RDS_UNIT ,
NULL);
}
else else
{
addphseg (PhFig, MbkLayer, addphseg (PhFig, MbkLayer,
(SCALE_X * ScanRec->DY) / RDS_UNIT, (SCALE_X * ScanRec->DY) / RDS_UNIT,
(SCALE_X * (ScanRec->X + RDS_LAMBDA)) / RDS_UNIT , (SCALE_X * (ScanRec->X + RDS_LAMBDA)) / RDS_UNIT ,
@ -437,7 +462,24 @@ int main (int ac, char *av[])
(SCALE_X * (ScanRec->X + ScanRec->DX - RDS_LAMBDA)) / RDS_UNIT , (SCALE_X * (ScanRec->X + ScanRec->DX - RDS_LAMBDA)) / RDS_UNIT ,
(SCALE_X * (ScanRec->Y + ScanRec->DY / 2)) / RDS_UNIT , (SCALE_X * (ScanRec->Y + ScanRec->DY / 2)) / RDS_UNIT ,
NULL); NULL);
addphseg (PhFig, MbkLayer_bis,
(SCALE_X * ScanRec->DY) / RDS_UNIT,
(SCALE_X * (ScanRec->X + RDS_LAMBDA)) / RDS_UNIT ,
(SCALE_X * (ScanRec->Y + ScanRec->DY / 2)) / RDS_UNIT ,
(SCALE_X * (ScanRec->X + ScanRec->DX - RDS_LAMBDA)) / RDS_UNIT ,
(SCALE_X * (ScanRec->Y + ScanRec->DY / 2)) / RDS_UNIT ,
NULL);
}
} }
for (PhSeg = PhFig->PHSEG; PhSeg; PhSeg = PhSeg->NEXT)
switch (PhSeg->LAYER)
{
case ALU7 : PhSeg->LAYER = TALU2; break;
case ALU8 : PhSeg->LAYER = TALU3; break;
case ALU9 : PhSeg->LAYER = TALU4; break;
case TALU7 : PhSeg->LAYER = TALU5; break;
case TALU8 : PhSeg->LAYER = TALU6; break;
};
savephfig (PhFig); savephfig (PhFig);
return 0; return 0;
} }