les fils de CALU doivent etre dupplique en ALU pour permettre l'absorbtion

des pastilles de vias lors de l'unification, mais ne pas perdre leur nom.
On genere donc deux rectangles (avec et sans nom) pour chaque CALU.
This commit is contained in:
Franck Wajsburt 2002-07-25 11:43:52 +00:00
parent a71059138a
commit cea2eaaa1f
1 changed files with 45 additions and 33 deletions

View File

@ -570,28 +570,32 @@ rdsfig_list *S2Rfigmbkrds (FigureMbk, All,SubConn)
chain_list *Pt;
/* dupplique tous les CALUx en ALUx dans le père pour permettre
l'unification des pastilles de metal de VIA et des ALU associés */
l'unification des pastilles de metal de VIA et des ALU associés
On le dupplique deux fois une fois avec nom, une fois sans */
{
phseg_list * phseg;
for (phseg = FigureMbk->PHSEG; phseg; phseg=phseg->NEXT)
{
phseg_list * dupseg = addphseg(FigureMbk,
phseg->LAYER, phseg->WIDTH,
phseg->X1, phseg->Y1,
phseg->X2, phseg->Y2, phseg->NAME);
char layer;
switch (phseg->LAYER)
{
case CALU1 : dupseg->LAYER = ALU1; break;
case CALU2 : dupseg->LAYER = ALU2; break;
case CALU3 : dupseg->LAYER = ALU3; break;
case CALU4 : dupseg->LAYER = ALU4; break;
case CALU5 : dupseg->LAYER = ALU5; break;
case CALU6 : dupseg->LAYER = ALU6; break;
case CALU7 : dupseg->LAYER = ALU7; break;
case CALU8 : dupseg->LAYER = ALU8; break;
case CALU9 : dupseg->LAYER = ALU9; break;
case CALU1 : layer = ALU1; break;
case CALU2 : layer = ALU2; break;
case CALU3 : layer = ALU3; break;
case CALU4 : layer = ALU4; break;
case CALU5 : layer = ALU5; break;
case CALU6 : layer = ALU6; break;
case CALU7 : layer = ALU7; break;
case CALU8 : layer = ALU8; break;
case CALU9 : layer = ALU9; break;
default : continue; /* passer au segment suivant */
}
dupseg->NAME = NULL;
addphseg(FigureMbk, layer, phseg->WIDTH,
phseg->X1, phseg->Y1,
phseg->X2, phseg->Y2, phseg->NAME);
addphseg(FigureMbk, layer, phseg->WIDTH,
phseg->X1, phseg->Y1,
phseg->X2, phseg->Y2, NULL);
}
}
if (All)
@ -615,7 +619,8 @@ rdsfig_list *S2Rfigmbkrds (FigureMbk, All,SubConn)
for (Pt = Pt->NEXT; Pt != NULL; Pt = Pt->NEXT)
{
if (SubConn == 0) /* puisqu'on ne veut pas de connecteurs
intermediaires, on remplace les CALU par les ALU associés FW 200205 */
intermediaires, on remplace les CALU par les ALU associés FW 200205
avec et sans nom */
{
phseg_list * phseg;
for (phseg = ((phfig_list *) Pt->DATA)->PHSEG; phseg; phseg=phseg->NEXT)
@ -631,33 +636,40 @@ rdsfig_list *S2Rfigmbkrds (FigureMbk, All,SubConn)
case CALU7 : phseg->LAYER = ALU7; break;
case CALU8 : phseg->LAYER = ALU8; break;
case CALU9 : phseg->LAYER = ALU9; break;
default : continue; /* passer au segment suivant */
}
addphseg(FigureMbk, phseg->LAYER, phseg->WIDTH,
phseg->X1, phseg->Y1,
phseg->X2, phseg->Y2, NULL);
}
}
else /* sinon on le duplique dans le metal associé pour qu'il absorbe
les vias inclus lors que la phase d'unification */
les vias inclus lors que la phase d'unification, avec et sans
nom */
{
phseg_list * phseg;
for (phseg = ((phfig_list *) Pt->DATA)->PHSEG; phseg; phseg=phseg->NEXT)
for (phseg = FigureMbk->PHSEG; phseg; phseg=phseg->NEXT)
{
phseg_list * dupseg = addphseg((phfig_list *) Pt->DATA,
phseg->LAYER, phseg->WIDTH,
phseg->X1, phseg->Y1,
phseg->X2, phseg->Y2,
phseg->NAME);
char layer;
switch (phseg->LAYER)
{
case CALU1 : dupseg->LAYER = ALU1; break;
case CALU2 : dupseg->LAYER = ALU2; break;
case CALU3 : dupseg->LAYER = ALU3; break;
case CALU4 : dupseg->LAYER = ALU4; break;
case CALU5 : dupseg->LAYER = ALU5; break;
case CALU6 : dupseg->LAYER = ALU6; break;
case CALU7 : dupseg->LAYER = ALU7; break;
case CALU8 : dupseg->LAYER = ALU8; break;
case CALU9 : dupseg->LAYER = ALU9; break;
case CALU1 : layer = ALU1; break;
case CALU2 : layer = ALU2; break;
case CALU3 : layer = ALU3; break;
case CALU4 : layer = ALU4; break;
case CALU5 : layer = ALU5; break;
case CALU6 : layer = ALU6; break;
case CALU7 : layer = ALU7; break;
case CALU8 : layer = ALU8; break;
case CALU9 : layer = ALU9; break;
default : continue; /* passer au segment suivant */
}
dupseg->NAME = NULL;
addphseg(FigureMbk, layer, phseg->WIDTH,
phseg->X1, phseg->Y1,
phseg->X2, phseg->Y2, phseg->NAME);
addphseg(FigureMbk, layer, phseg->WIDTH,
phseg->X1, phseg->Y1,
phseg->X2, phseg->Y2, NULL);
}
}
figmbkrds ((phfig_list *) Pt->DATA, 0, 0);