SymX bug.
This commit is contained in:
parent
e09776f58d
commit
a85275586d
|
@ -1,8 +1,11 @@
|
||||||
/*
|
/*
|
||||||
### -------------------------------------------------- ###
|
### -------------------------------------------------- ###
|
||||||
$Author: hcl $
|
$Author: hcl $
|
||||||
$Date: 2002/03/15 14:37:19 $
|
$Date: 2002/03/20 13:25:50 $
|
||||||
$Log: findNPointsPath.c,v $
|
$Log: findNPointsPath.c,v $
|
||||||
|
Revision 1.2 2002/03/20 13:25:50 hcl
|
||||||
|
SymX bug.
|
||||||
|
|
||||||
Revision 1.1 2002/03/15 14:37:19 hcl
|
Revision 1.1 2002/03/15 14:37:19 hcl
|
||||||
Ca roule.
|
Ca roule.
|
||||||
|
|
||||||
|
@ -83,7 +86,7 @@
|
||||||
#include "ocrAstar.h"
|
#include "ocrAstar.h"
|
||||||
|
|
||||||
static char *res_id =
|
static char *res_id =
|
||||||
"$Id: findNPointsPath.c,v 1.1 2002/03/15 14:37:19 hcl Exp $";
|
"$Id: findNPointsPath.c,v 1.2 2002/03/20 13:25:50 hcl Exp $";
|
||||||
|
|
||||||
#define MAX_HT 500
|
#define MAX_HT 500
|
||||||
|
|
||||||
|
@ -513,6 +516,7 @@ makeExtEquipotentielle(ocrRoutingParameters * i_pParam,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// awfull hack... XXX
|
// awfull hack... XXX
|
||||||
|
return;
|
||||||
if (i_pCon->VIR_CON_LIST) {
|
if (i_pCon->VIR_CON_LIST) {
|
||||||
//i_pCon->CON = i_pCon->VIR_CON_LIST;
|
//i_pCon->CON = i_pCon->VIR_CON_LIST;
|
||||||
//i_pCon->VIR_CON_LIST->Z = 2;
|
//i_pCon->VIR_CON_LIST->Z = 2;
|
||||||
|
@ -754,6 +758,7 @@ findPathNPoints(ocrRoutingParameters * i_pParam,
|
||||||
ocrSignal * i_pSignal, ocrWindow * i_pWindow)
|
ocrSignal * i_pSignal, ocrWindow * i_pWindow)
|
||||||
{
|
{
|
||||||
ocrConnector *l_pCon;
|
ocrConnector *l_pCon;
|
||||||
|
ocrConnector *con1, *con2;
|
||||||
ocrConnector l_NewCon;
|
ocrConnector l_NewCon;
|
||||||
ocrNaturalShort l_bOk;
|
ocrNaturalShort l_bOk;
|
||||||
ocrNaturalInt l_uLength;
|
ocrNaturalInt l_uLength;
|
||||||
|
@ -763,11 +768,34 @@ findPathNPoints(ocrRoutingParameters * i_pParam,
|
||||||
|
|
||||||
l_pCon = i_pSignal->CON_LIST;
|
l_pCon = i_pSignal->CON_LIST;
|
||||||
|
|
||||||
|
do {
|
||||||
|
con1 = l_pCon;
|
||||||
|
l_pCon = l_pCon->NEXT;
|
||||||
|
if (!l_pCon) {
|
||||||
|
i_pSignal->NICHT_ZU_ROUTIEREN = 1;
|
||||||
|
i_pSignal->ROUTED = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
} while ((con1->INTEXT == EXTERNAL) && (con1->VIR_CON_LIST == NULL));
|
||||||
|
|
||||||
|
do {
|
||||||
|
con2 = l_pCon;
|
||||||
|
if (!con2) {
|
||||||
|
i_pSignal->NICHT_ZU_ROUTIEREN = 1;
|
||||||
|
i_pSignal->ROUTED = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
l_pCon = l_pCon->NEXT;
|
||||||
|
} while ((con2->INTEXT == EXTERNAL) && (con2->VIR_CON_LIST == NULL));
|
||||||
|
|
||||||
|
#if 0
|
||||||
// Création des connecteurs externes
|
// Création des connecteurs externes
|
||||||
|
if (i_pSignal->CON_LIST == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (i_pSignal->CON_LIST->INTEXT == EXTERNAL)
|
if (i_pSignal->CON_LIST->INTEXT == EXTERNAL)
|
||||||
makeExtEquipotentielle(i_pParam, i_pGrid, i_pWindow, l_pCon);
|
makeExtEquipotentielle(i_pParam, i_pGrid, i_pWindow, l_pCon);
|
||||||
|
|
||||||
|
|
||||||
if (i_pSignal->CON_LIST->NEXT == NULL) {
|
if (i_pSignal->CON_LIST->NEXT == NULL) {
|
||||||
display(LEVEL, ERROR, "Sig %s has only one connector\n", i_pSignal->NAME);
|
display(LEVEL, ERROR, "Sig %s has only one connector\n", i_pSignal->NAME);
|
||||||
//return OCRNATURALINT_MAX;
|
//return OCRNATURALINT_MAX;
|
||||||
|
@ -776,6 +804,8 @@ findPathNPoints(ocrRoutingParameters * i_pParam,
|
||||||
|
|
||||||
if (i_pSignal->CON_LIST->NEXT->INTEXT == EXTERNAL)
|
if (i_pSignal->CON_LIST->NEXT->INTEXT == EXTERNAL)
|
||||||
makeExtEquipotentielle(i_pParam, i_pGrid, i_pWindow, l_pCon->NEXT);
|
makeExtEquipotentielle(i_pParam, i_pGrid, i_pWindow, l_pCon->NEXT);
|
||||||
|
#endif
|
||||||
|
|
||||||
do {
|
do {
|
||||||
#if 0
|
#if 0
|
||||||
if (i_pSignal->INDEX == 1) {
|
if (i_pSignal->INDEX == 1) {
|
||||||
|
@ -784,7 +814,7 @@ findPathNPoints(ocrRoutingParameters * i_pParam,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Choix des 2 premiers connecteurs
|
// Choix des 2 premiers connecteurs
|
||||||
l_bOk = chooseInternalConnector(i_pGrid, l_pCon, l_pCon->NEXT, 0);
|
l_bOk = chooseInternalConnector(i_pGrid, con1, con2, 0);
|
||||||
|
|
||||||
if (l_bOk != OCR_OK) {
|
if (l_bOk != OCR_OK) {
|
||||||
display(LEVEL, DEBUG, "%s\n%s%ld\n",
|
display(LEVEL, DEBUG, "%s\n%s%ld\n",
|
||||||
|
@ -792,6 +822,7 @@ findPathNPoints(ocrRoutingParameters * i_pParam,
|
||||||
return OCRNATURALINT_MAX;
|
return OCRNATURALINT_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
display(LEVEL, DEBUG, "(%ld,%ld,%d) -> (%ld,%ld,%d)\n",
|
display(LEVEL, DEBUG, "(%ld,%ld,%d) -> (%ld,%ld,%d)\n",
|
||||||
l_pCon->CON->X * 5/* 1 * SCALE_X*/,
|
l_pCon->CON->X * 5/* 1 * SCALE_X*/,
|
||||||
l_pCon->CON->Y * 5/* 1 * SCALE_X*/,
|
l_pCon->CON->Y * 5/* 1 * SCALE_X*/,
|
||||||
|
@ -799,20 +830,23 @@ findPathNPoints(ocrRoutingParameters * i_pParam,
|
||||||
l_pCon->NEXT->CON->X * 5/* 1 * SCALE_X*/,
|
l_pCon->NEXT->CON->X * 5/* 1 * SCALE_X*/,
|
||||||
l_pCon->NEXT->CON->Y * 5/* 1 * SCALE_X*/,
|
l_pCon->NEXT->CON->Y * 5/* 1 * SCALE_X*/,
|
||||||
l_pCon->NEXT->CON->Z);
|
l_pCon->NEXT->CON->Z);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* routage bipoint */
|
/* routage bipoint */
|
||||||
l_uLength = biroute (i_pParam, i_pGrid, l_pCon, l_pCon->NEXT, i_pSignal, AS_K_SEG);
|
l_uLength = biroute (i_pParam, i_pGrid, con1, con2, i_pSignal, AS_K_SEG);
|
||||||
|
|
||||||
// l_uLength = FINDPATH (i_pParam, i_pGrid,
|
#if 0
|
||||||
// l_pCon->CON->X,
|
l_uLength = FINDPATH (i_pParam, i_pGrid,
|
||||||
// l_pCon->CON->Y,
|
l_pCon->CON->X,
|
||||||
// l_pCon->CON->Z,
|
l_pCon->CON->Y,
|
||||||
// l_pCon->NEXT->CON->X,
|
l_pCon->CON->Z,
|
||||||
// l_pCon->NEXT->CON->Y,
|
l_pCon->NEXT->CON->X,
|
||||||
// l_pCon->NEXT->CON->Z,
|
l_pCon->NEXT->CON->Y,
|
||||||
// i_pSignal->INDEX, i_pSignal);
|
l_pCon->NEXT->CON->Z,
|
||||||
// if ( ((l_pCon->CON->Z) > 0) || ((l_pCon->NEXT->CON->Z) > 0) )
|
i_pSignal->INDEX, i_pSignal);
|
||||||
// printf ("routed Z1=%d, Z2=%d for %s\n", l_pCon->CON->Z, l_pCon->NEXT->CON->Z, i_pSignal->NAME);
|
if ( ((l_pCon->CON->Z) > 0) || ((l_pCon->NEXT->CON->Z) > 0) )
|
||||||
|
printf ("routed Z1=%d, Z2=%d for %s\n", l_pCon->CON->Z, l_pCon->NEXT->CON->Z, i_pSignal->NAME);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
while (l_uLength == OCRNATURALINT_MAX);
|
while (l_uLength == OCRNATURALINT_MAX);
|
||||||
|
@ -820,25 +854,25 @@ findPathNPoints(ocrRoutingParameters * i_pParam,
|
||||||
l_uLengthTotal += l_uLength;
|
l_uLengthTotal += l_uLength;
|
||||||
|
|
||||||
// ajout de 2 VIAs
|
// ajout de 2 VIAs
|
||||||
if (l_pCon->INTEXT == INTERNAL) {
|
if (con1->INTEXT == INTERNAL) {
|
||||||
if (l_pCon->CON->Z == 0) {
|
if (con1->CON->Z == 0) {
|
||||||
l_pVia = createVirtualConnector(l_pCon->CON->X,
|
l_pVia = createVirtualConnector(con1->CON->X,
|
||||||
l_pCon->CON->Y,
|
con1->CON->Y,
|
||||||
l_pCon->CON->Z, 0, 0);
|
con1->CON->Z, 0, 0);
|
||||||
addVirtualConnector(&l_pViaList, l_pVia);
|
addVirtualConnector(&l_pViaList, l_pVia);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (l_pCon->NEXT->INTEXT == INTERNAL) {
|
if (con2->INTEXT == INTERNAL) {
|
||||||
if (l_pCon->NEXT->CON->Z == 0) {
|
if (con2->CON->Z == 0) {
|
||||||
l_pVia = createVirtualConnector(l_pCon->NEXT->CON->X,
|
l_pVia = createVirtualConnector(con2->CON->X,
|
||||||
l_pCon->NEXT->CON->Y,
|
con2->CON->Y,
|
||||||
l_pCon->NEXT->CON->Z, 0, 0);
|
con2->CON->Z, 0, 0);
|
||||||
addVirtualConnector(&l_pViaList, l_pVia);
|
addVirtualConnector(&l_pViaList, l_pVia);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
l_pCon = l_pCon->NEXT;
|
l_pCon = con2;
|
||||||
/*goto findNPointsPath_fin;*/ // XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
|
/*goto findNPointsPath_fin;*/ // XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
|
||||||
|
|
||||||
while (l_pCon->NEXT != NULL) {
|
while (l_pCon->NEXT != NULL) {
|
||||||
|
@ -854,11 +888,13 @@ findPathNPoints(ocrRoutingParameters * i_pParam,
|
||||||
l_NewCon.CON = NULL;
|
l_NewCon.CON = NULL;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
#if 0
|
||||||
// Création des connecteurs virtuels externes
|
// Création des connecteurs virtuels externes
|
||||||
// si le connecteur est EXTERNE
|
// si le connecteur est EXTERNE
|
||||||
if (l_pCon->NEXT->INTEXT == EXTERNAL)
|
if (l_pCon->NEXT->INTEXT == EXTERNAL)
|
||||||
makeExtEquipotentielle(i_pParam, i_pGrid, i_pWindow,
|
makeExtEquipotentielle(i_pParam, i_pGrid, i_pWindow,
|
||||||
l_pCon->NEXT);
|
l_pCon->NEXT);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Recherche d'un point de contact
|
// Recherche d'un point de contact
|
||||||
l_bOk = 0;
|
l_bOk = 0;
|
||||||
|
|
|
@ -4,8 +4,11 @@
|
||||||
/*
|
/*
|
||||||
### -------------------------------------------------- ###
|
### -------------------------------------------------- ###
|
||||||
$Author: hcl $
|
$Author: hcl $
|
||||||
$Date: 2002/03/15 14:37:19 $
|
$Date: 2002/03/20 13:25:50 $
|
||||||
$Log: ocrAstar.c,v $
|
$Log: ocrAstar.c,v $
|
||||||
|
Revision 1.2 2002/03/20 13:25:50 hcl
|
||||||
|
SymX bug.
|
||||||
|
|
||||||
Revision 1.1 2002/03/15 14:37:19 hcl
|
Revision 1.1 2002/03/15 14:37:19 hcl
|
||||||
Ca roule.
|
Ca roule.
|
||||||
|
|
||||||
|
@ -110,7 +113,7 @@ ocrNaturalInt eval (ocrWSegment *segment_source, ocrWSegment *segment_dest) {
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
|
|
||||||
return (dx + dy) + dz * param->VIA_COST;
|
return (dx + dy) + dz /* param->VIA_COST*/;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Distance between segment and nearest segment of an equi */
|
/* Distance between segment and nearest segment of an equi */
|
||||||
|
@ -155,10 +158,10 @@ ocrNaturalInt kost (ocrWSegment *segment_source, ocrWSegment *segment_dest) {
|
||||||
;
|
;
|
||||||
res += (
|
res += (
|
||||||
(segment_dest->LAYER > segment_source->LAYER) ?
|
(segment_dest->LAYER > segment_source->LAYER) ?
|
||||||
1000 + segment_dest->LAYER - segment_source->LAYER :
|
100 + segment_dest->LAYER - segment_source->LAYER :
|
||||||
segment_source->LAYER - segment_dest->LAYER
|
segment_source->LAYER - segment_dest->LAYER
|
||||||
)
|
)
|
||||||
* param->VIA_COST
|
/* param->VIA_COST*/
|
||||||
;
|
;
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
@ -178,8 +181,8 @@ ocrNaturalInt kost (ocrWSegment *segment_source, ocrWSegment *segment_dest) {
|
||||||
(zs - segment_source->LAYER) :
|
(zs - segment_source->LAYER) :
|
||||||
(segment_source->LAYER - zs)
|
(segment_source->LAYER - zs)
|
||||||
)
|
)
|
||||||
*
|
/*
|
||||||
param->VIA_COST
|
param->VIA_COST*/
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -624,7 +627,7 @@ ocrNaturalInt make_segments (ocrWSegment *segment_dest,
|
||||||
ocrWSegment *seg, *nseg, *root, *aux;
|
ocrWSegment *seg, *nseg, *root, *aux;
|
||||||
ocrNaturalInt xp, yp, xn, yn;
|
ocrNaturalInt xp, yp, xn, yn;
|
||||||
ocrNaturalInt p1, p2, pp1, pp2;
|
ocrNaturalInt p1, p2, pp1, pp2;
|
||||||
ocrNaturalInt pi;
|
/*ocrNaturalInt pi;*/
|
||||||
ocrNaturalInt distance = 0;
|
ocrNaturalInt distance = 0;
|
||||||
ocrNaturalInt nb_segs = 0;
|
ocrNaturalInt nb_segs = 0;
|
||||||
|
|
||||||
|
@ -674,7 +677,7 @@ ocrNaturalInt make_segments (ocrWSegment *segment_dest,
|
||||||
xn = getWSegXCoord (param, root, xp);
|
xn = getWSegXCoord (param, root, xp);
|
||||||
yn = getWSegYCoord (param, root, yp);
|
yn = getWSegYCoord (param, root, yp);
|
||||||
display (LEVEL, DEBUG, "p (%ld, %ld, %ld) -> (%ld, %ld, %ld) : d=%ld, c=%ld, h=%ld, hc=%ld\n", xp, yp, seg->LAYER, xn, yn, seg->LAYER, distance, seg->COST, seg->H, seg->HCOST);
|
display (LEVEL, DEBUG, "p (%ld, %ld, %ld) -> (%ld, %ld, %ld) : d=%ld, c=%ld, h=%ld, hc=%ld\n", xp, yp, seg->LAYER, xn, yn, seg->LAYER, distance, seg->COST, seg->H, seg->HCOST);
|
||||||
((getWSegDirection(param, seg) == ocrHorizontal) ? (pi = param->PITCH_H, p1 = xp, p2 = xn) : (pi = param->PITCH_V, p1 = yp, p2 = yn) );
|
((getWSegDirection(param, seg) == ocrHorizontal) ? (p1 = xp, p2 = xn) : (p1 = yp, p2 = yn) );
|
||||||
( (p1 < p2) ? (pp1 = p1, pp2 = p2) : (pp1 = p2, pp2 = p1) );
|
( (p1 < p2) ? (pp1 = p1, pp2 = p2) : (pp1 = p2, pp2 = p1) );
|
||||||
nseg = splitWSegment (param, grid, seg,
|
nseg = splitWSegment (param, grid, seg,
|
||||||
pp1, pp2,
|
pp1, pp2,
|
||||||
|
@ -682,7 +685,7 @@ ocrNaturalInt make_segments (ocrWSegment *segment_dest,
|
||||||
);
|
);
|
||||||
nseg->NEXT = aux;
|
nseg->NEXT = aux;
|
||||||
aux = nseg;
|
aux = nseg;
|
||||||
distance += pi * (pp2 - pp1);
|
distance += (pp2 - pp1);
|
||||||
nb_segs ++;
|
nb_segs ++;
|
||||||
xp = xn;
|
xp = xn;
|
||||||
yp = yn;
|
yp = yn;
|
||||||
|
@ -694,7 +697,7 @@ ocrNaturalInt make_segments (ocrWSegment *segment_dest,
|
||||||
xn = xs;
|
xn = xs;
|
||||||
yn = ys;
|
yn = ys;
|
||||||
/*root = seg->ROOT;*/
|
/*root = seg->ROOT;*/
|
||||||
((getWSegDirection(param, seg) == ocrHorizontal) ? (pi = param->PITCH_H, p1 = xp, p2 = xn) : (pi = param->PITCH_V, p1 = yp, p2 = yn) );
|
((getWSegDirection(param, seg) == ocrHorizontal) ? (p1 = xp, p2 = xn) : (p1 = yp, p2 = yn) );
|
||||||
( (p1 < p2) ? (pp1 = p1, pp2 = p2) : (pp1 = p2, pp2 = p1) );
|
( (p1 < p2) ? (pp1 = p1, pp2 = p2) : (pp1 = p2, pp2 = p1) );
|
||||||
nseg = splitWSegment (param, grid, seg,
|
nseg = splitWSegment (param, grid, seg,
|
||||||
pp1, pp2,
|
pp1, pp2,
|
||||||
|
@ -703,7 +706,7 @@ ocrNaturalInt make_segments (ocrWSegment *segment_dest,
|
||||||
nseg->NEXT = aux;
|
nseg->NEXT = aux;
|
||||||
i_pSignal->SEGMENT = nseg;
|
i_pSignal->SEGMENT = nseg;
|
||||||
|
|
||||||
distance += pi * (pp2 - pp1);
|
distance += (pp2 - pp1);
|
||||||
nb_segs ++;
|
nb_segs ++;
|
||||||
display (LEVEL, DEBUG, "p (%ld, %ld, %ld) -> (%ld, %ld, %ld) : %ld\n", xp, yp, seg->LAYER, xn, yn, zs, distance);
|
display (LEVEL, DEBUG, "p (%ld, %ld, %ld) -> (%ld, %ld, %ld) : %ld\n", xp, yp, seg->LAYER, xn, yn, zs, distance);
|
||||||
display (LEVEL, DEBUG, "c source (%ld, %ld, %ld)\n", xs, ys, zs);
|
display (LEVEL, DEBUG, "c source (%ld, %ld, %ld)\n", xs, ys, zs);
|
||||||
|
@ -715,7 +718,7 @@ ocrNaturalInt make_segments (ocrWSegment *segment_dest,
|
||||||
|
|
||||||
display (LEVEL, DEBUG, "i path length : %ld\n", distance);
|
display (LEVEL, DEBUG, "i path length : %ld\n", distance);
|
||||||
|
|
||||||
return distance;
|
return distance * 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
/*
|
/*
|
||||||
### -------------------------------------------------- ###
|
### -------------------------------------------------- ###
|
||||||
$Author: hcl $
|
$Author: hcl $
|
||||||
$Date: 2002/03/15 14:37:19 $
|
$Date: 2002/03/20 13:25:50 $
|
||||||
$Log: ocrGlobalRouting.c,v $
|
$Log: ocrGlobalRouting.c,v $
|
||||||
|
Revision 1.2 2002/03/20 13:25:50 hcl
|
||||||
|
SymX bug.
|
||||||
|
|
||||||
Revision 1.1 2002/03/15 14:37:19 hcl
|
Revision 1.1 2002/03/15 14:37:19 hcl
|
||||||
Ca roule.
|
Ca roule.
|
||||||
|
|
||||||
|
@ -255,10 +258,12 @@ void makeLocalSignals(ocrRoutingDataBase * i_pDataBase)
|
||||||
makeSubSignal(i_pDataBase, l_pSignal, l_pCon->WIN);
|
makeSubSignal(i_pDataBase, l_pSignal, l_pCon->WIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
addConnector(i_pDataBase->FSIGNAL[l_pCon->WIN], l_pCon);
|
//addConnector(i_pDataBase->FSIGNAL[l_pCon->WIN], l_pCon);
|
||||||
l_pCon = l_pConNext;
|
l_pCon = l_pConNext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
// Ajout des connecteurs Faciaux
|
// Ajout des connecteurs Faciaux
|
||||||
for (l_pSegment = l_pSignal->SEGMENT;
|
for (l_pSegment = l_pSignal->SEGMENT;
|
||||||
l_pSegment; l_pSegment = l_pSegment->NEXT) {
|
l_pSegment; l_pSegment = l_pSegment->NEXT) {
|
||||||
|
@ -353,6 +358,7 @@ void makeLocalSignals(ocrRoutingDataBase * i_pDataBase)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -417,8 +423,9 @@ ocrNaturalInt globalRouting(ocrRoutingDataBase * i_pDataBase)
|
||||||
display(LEVEL, VERBOSE, "o Global routing ...\n");
|
display(LEVEL, VERBOSE, "o Global routing ...\n");
|
||||||
//return;
|
//return;
|
||||||
|
|
||||||
makeGlobalSignals(i_pDataBase);
|
//makeGlobalSignals(i_pDataBase);
|
||||||
#if 1
|
#if 1
|
||||||
|
#if 0
|
||||||
initWeightedTree(i_pDataBase);
|
initWeightedTree(i_pDataBase);
|
||||||
//dumpDensityTable();
|
//dumpDensityTable();
|
||||||
|
|
||||||
|
@ -431,6 +438,7 @@ ocrNaturalInt globalRouting(ocrRoutingDataBase * i_pDataBase)
|
||||||
|
|
||||||
//dumpDensityTable();
|
//dumpDensityTable();
|
||||||
freeWeightedTree();
|
freeWeightedTree();
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
routingGlobalSignals(i_pDataBase);
|
routingGlobalSignals(i_pDataBase);
|
||||||
// dumpDataBase (i_pDataBase, stdout);
|
// dumpDataBase (i_pDataBase, stdout);
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
/*
|
/*
|
||||||
### -------------------------------------------------- ###
|
### -------------------------------------------------- ###
|
||||||
$Author: hcl $
|
$Author: hcl $
|
||||||
$Date: 2002/03/15 14:37:20 $
|
$Date: 2002/03/20 13:25:50 $
|
||||||
$Log: ocrRouter.c,v $
|
$Log: ocrRouter.c,v $
|
||||||
|
Revision 1.2 2002/03/20 13:25:50 hcl
|
||||||
|
SymX bug.
|
||||||
|
|
||||||
Revision 1.1 2002/03/15 14:37:20 hcl
|
Revision 1.1 2002/03/15 14:37:20 hcl
|
||||||
Ca roule.
|
Ca roule.
|
||||||
|
|
||||||
|
@ -1156,9 +1159,12 @@ routingWindow(ocrRoutingDataBase * i_pDataBase, phfig_list * i_pPhFig)
|
||||||
display(LEVEL, INFO, "o Failures = %ld\n", i_pDataBase->NB_UNROUTED);
|
display(LEVEL, INFO, "o Failures = %ld\n", i_pDataBase->NB_UNROUTED);
|
||||||
|
|
||||||
{
|
{
|
||||||
|
ocrNaturalInt chk;
|
||||||
display (LEVEL, INFO, "o Unrouted signals :\n");
|
display (LEVEL, INFO, "o Unrouted signals :\n");
|
||||||
|
chk = 0;
|
||||||
for (i = 0; i < i_pDataBase->NB_SIGNAL - 1; i++)
|
for (i = 0; i < i_pDataBase->NB_SIGNAL - 1; i++)
|
||||||
if (i_pDataBase->SIGNAL[i]->ROUTED != 1) {
|
if (i_pDataBase->SIGNAL[i]->ROUTED != 1) {
|
||||||
|
chk = 1;
|
||||||
if (i_pDataBase->SIGNAL[i]->INTEXT == INTERNAL) {
|
if (i_pDataBase->SIGNAL[i]->INTEXT == INTERNAL) {
|
||||||
display(LEVEL, INFO,
|
display(LEVEL, INFO,
|
||||||
" %s\n",
|
" %s\n",
|
||||||
|
@ -1168,6 +1174,8 @@ routingWindow(ocrRoutingDataBase * i_pDataBase, phfig_list * i_pPhFig)
|
||||||
" %s\n",
|
" %s\n",
|
||||||
i_pDataBase->SIGNAL[i]->NAME);
|
i_pDataBase->SIGNAL[i]->NAME);
|
||||||
}
|
}
|
||||||
|
if (!chk)
|
||||||
|
display (LEVEL, INFO, " none\n");
|
||||||
}
|
}
|
||||||
return wire_len;
|
return wire_len;
|
||||||
}
|
}
|
||||||
|
@ -1415,7 +1423,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
// dumpDataBase (l_pDataBase,stdout);
|
// dumpDataBase (l_pDataBase,stdout);
|
||||||
routingWindow(l_pDataBase, l_pPhFig);
|
routingWindow(l_pDataBase, l_pPhFig);
|
||||||
linkWindow(l_pDataBase, i);
|
//linkWindow(l_pDataBase, i);
|
||||||
|
|
||||||
deleteWindowArray(l_pDataBase, i);
|
deleteWindowArray(l_pDataBase, i);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
/*
|
/*
|
||||||
### -------------------------------------------------- ###
|
### -------------------------------------------------- ###
|
||||||
$Author: hcl $
|
$Author: hcl $
|
||||||
$Date: 2002/03/15 14:37:23 $
|
$Date: 2002/03/20 13:25:56 $
|
||||||
$Log: ocrWRoutingUtil.c,v $
|
$Log: ocrWRoutingUtil.c,v $
|
||||||
|
Revision 1.2 2002/03/20 13:25:56 hcl
|
||||||
|
SymX bug.
|
||||||
|
|
||||||
Revision 1.1 2002/03/15 14:37:23 hcl
|
Revision 1.1 2002/03/15 14:37:23 hcl
|
||||||
Ca roule.
|
Ca roule.
|
||||||
|
|
||||||
|
@ -217,9 +220,10 @@ void add_phseg_to_grid(ocrRoutingDataBase * i_pDataBase,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
|
ocrNaturalInt x1 = 0, y1 = 0, x2 = 0, y2 = 0;
|
||||||
int layer, mode;
|
double fx1, fx2, fy1, fy2;
|
||||||
int i;
|
ocrNaturalInt layer, mode;
|
||||||
|
ocrNaturalInt i;
|
||||||
ocrWSegment *seg;
|
ocrWSegment *seg;
|
||||||
|
|
||||||
switch (i_pPhSeg->LAYER) {
|
switch (i_pPhSeg->LAYER) {
|
||||||
|
@ -361,18 +365,19 @@ void add_phseg_to_grid(ocrRoutingDataBase * i_pDataBase,
|
||||||
#ifdef OCR_DEBUG
|
#ifdef OCR_DEBUG
|
||||||
printf("SYM_X\n");
|
printf("SYM_X\n");
|
||||||
#endif
|
#endif
|
||||||
x1 = (i_pPhIns->XINS - i_pPhModel->XAB1) + i_pPhModel->XAB2 - i_pPhSeg->X1;
|
x1 = (i_pPhIns->XINS) + i_pPhModel->XAB2 - i_pPhSeg->X1;
|
||||||
y1 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhSeg->Y1;
|
y1 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhSeg->Y1;
|
||||||
x2 = (i_pPhIns->XINS - i_pPhModel->XAB1) + i_pPhModel->XAB2 - i_pPhSeg->X2;
|
x2 = (i_pPhIns->XINS) + i_pPhModel->XAB2 - i_pPhSeg->X2;
|
||||||
y2 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhSeg->Y2;
|
y2 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhSeg->Y2;
|
||||||
break;
|
break;
|
||||||
case SYMXY:
|
case SYMXY:
|
||||||
#ifdef OCR_DEBUG
|
#ifdef OCR_DEBUG
|
||||||
printf("SYMXY\n");
|
printf("SYMXY\n");
|
||||||
|
printf ("XINS = %ld; XAB1 = %ld; XAB2 = %ld; X1 = %ld --> x1 = %ld\n", i_pPhIns->XINS, i_pPhModel->XAB1, i_pPhModel->XAB2, i_pPhSeg->X1, x1);
|
||||||
#endif
|
#endif
|
||||||
x1 = (i_pPhIns->XINS - i_pPhModel->XAB1) + i_pPhModel->XAB2 - i_pPhSeg->X1;
|
x1 = i_pPhIns->XINS + i_pPhModel->XAB2 - i_pPhSeg->X1;
|
||||||
y1 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhModel->YAB2 - i_pPhSeg->Y1;
|
y1 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhModel->YAB2 - i_pPhSeg->Y1;
|
||||||
x2 = (i_pPhIns->XINS - i_pPhModel->XAB1) + i_pPhModel->XAB2 - i_pPhSeg->X2;
|
x2 = i_pPhIns->XINS + i_pPhModel->XAB2 - i_pPhSeg->X2;
|
||||||
y2 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhModel->YAB2 - i_pPhSeg->Y2;
|
y2 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhModel->YAB2 - i_pPhSeg->Y2;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -386,24 +391,18 @@ void add_phseg_to_grid(ocrRoutingDataBase * i_pDataBase,
|
||||||
#endif
|
#endif
|
||||||
switch (i_pPhSeg->TYPE) {
|
switch (i_pPhSeg->TYPE) {
|
||||||
case LEFT:
|
case LEFT:
|
||||||
//y1 = y1 - (i_pPhSeg->WIDTH / 2);
|
|
||||||
//y2 = y2 + (i_pPhSeg->WIDTH / 2);
|
|
||||||
//tmp = x1;
|
|
||||||
//x1 = x2 ; x2 = tmp;
|
|
||||||
break;
|
|
||||||
case RIGHT:
|
case RIGHT:
|
||||||
//y1 = y1 - (i_pPhSeg->WIDTH / 2);
|
fy1 = y1 - (i_pPhSeg->WIDTH / 2.0);
|
||||||
//y2 = y1 + (i_pPhSeg->WIDTH / 2);
|
fy2 = y2 + (i_pPhSeg->WIDTH / 2.0);
|
||||||
|
fx1 = x1;
|
||||||
|
fx2 = x2;
|
||||||
break;
|
break;
|
||||||
case DOWN:
|
case DOWN:
|
||||||
x1 = x1 - (i_pPhSeg->WIDTH / 2);
|
|
||||||
x2 = x2 + (i_pPhSeg->WIDTH / 2);
|
|
||||||
break;
|
|
||||||
case UP:
|
case UP:
|
||||||
//tmp = y1;
|
fx1 = x1 - (i_pPhSeg->WIDTH / 2.0);
|
||||||
//y1 = y2 ; y2 = tmp;
|
fx2 = x2 + (i_pPhSeg->WIDTH / 2.0);
|
||||||
x1 = x1 - (i_pPhSeg->WIDTH / 2);
|
fy1 = y1;
|
||||||
x2 = x2 + (i_pPhSeg->WIDTH / 2);
|
fy2 = y2;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -415,13 +414,20 @@ void add_phseg_to_grid(ocrRoutingDataBase * i_pDataBase,
|
||||||
printf("2/ x1=%d; y1=%d; x2=%d; y2=%d\n", x1, y1, x2, y2);
|
printf("2/ x1=%d; y1=%d; x2=%d; y2=%d\n", x1, y1, x2, y2);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
x1 = x1 / (5 * SCALE_X);
|
fx1 = 0.5 + fx1 / (5.0 * SCALE_X);
|
||||||
x2 = x2 / (5 * SCALE_X);
|
fx2 = 0.5 + fx2 / (5.0 * SCALE_X);
|
||||||
y1 = y1 / (5 * SCALE_X);
|
fy1 = 0.5 + fy1 / (5.0 * SCALE_X);
|
||||||
y2 = y2 / (5 * SCALE_X);
|
fy2 = 0.5 + fy2 / (5.0 * SCALE_X);
|
||||||
|
|
||||||
|
x1 = fx1;
|
||||||
|
x2 = fx2;
|
||||||
|
y1 = fy1;
|
||||||
|
y2 = fy2;
|
||||||
|
|
||||||
|
|
||||||
// controler par rapport a la fenetre
|
// controler par rapport a la fenetre
|
||||||
#ifdef OCR_DEBUG
|
#ifdef OCR_DEBUG
|
||||||
|
printf("3/ X1=%ld; Y1=%ld; X2=%ld; Y2=%ld\n", x1, y1, x2, y2);
|
||||||
printf("WIN x1=%d; y1=%d; x2=%d; y2=%d\n", i_pWindow->XMIN,
|
printf("WIN x1=%d; y1=%d; x2=%d; y2=%d\n", i_pWindow->XMIN,
|
||||||
i_pWindow->YMIN, i_pWindow->XMAX, i_pWindow->YMAX);
|
i_pWindow->YMIN, i_pWindow->XMAX, i_pWindow->YMAX);
|
||||||
#endif
|
#endif
|
||||||
|
@ -458,8 +464,8 @@ void add_phseg_to_grid(ocrRoutingDataBase * i_pDataBase,
|
||||||
&& (i_pDataBase->PARAM->EVEN_LAYERS_DIRECTION == ocrHorizontal))
|
&& (i_pDataBase->PARAM->EVEN_LAYERS_DIRECTION == ocrHorizontal))
|
||||||
||
|
||
|
||||||
((!(layer % 2)
|
((!(layer % 2)
|
||||||
&& (i_pDataBase->PARAM->EVEN_LAYERS_DIRECTION ==
|
&& (i_pDataBase->PARAM->EVEN_LAYERS_DIRECTION == ocrVertical)))))
|
||||||
ocrVertical))))) {
|
{
|
||||||
// Layer Horizontal
|
// Layer Horizontal
|
||||||
for (i = y1; i <= y2; i++) {
|
for (i = y1; i <= y2; i++) {
|
||||||
#ifdef OCR_DEBUG
|
#ifdef OCR_DEBUG
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
/*
|
/*
|
||||||
### -------------------------------------------------- ###
|
### -------------------------------------------------- ###
|
||||||
$Author: hcl $
|
$Author: hcl $
|
||||||
$Date: 2002/03/15 14:37:26 $
|
$Date: 2002/03/20 13:25:57 $
|
||||||
$Log: ocrConnectorUtil.c,v $
|
$Log: ocrConnectorUtil.c,v $
|
||||||
|
Revision 1.2 2002/03/20 13:25:57 hcl
|
||||||
|
SymX bug.
|
||||||
|
|
||||||
Revision 1.1 2002/03/15 14:37:26 hcl
|
Revision 1.1 2002/03/15 14:37:26 hcl
|
||||||
Ca roule.
|
Ca roule.
|
||||||
|
|
||||||
|
@ -678,18 +681,18 @@ ocrNaturalInt add_calu_cv(ocrConnector * i_pCon, phfig_list * i_pPhModel,
|
||||||
#ifdef OCR_DEBUG
|
#ifdef OCR_DEBUG
|
||||||
printf("SYM_X\n");
|
printf("SYM_X\n");
|
||||||
#endif
|
#endif
|
||||||
x1 = (i_pPhIns->XINS - i_pPhModel->XAB1) + i_pPhModel->XAB2 - i_pPhSeg->X1;
|
x1 = (i_pPhIns->XINS) + i_pPhModel->XAB2 - i_pPhSeg->X1;
|
||||||
y1 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhSeg->Y1;
|
y1 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhSeg->Y1;
|
||||||
x2 = (i_pPhIns->XINS - i_pPhModel->XAB1) + i_pPhModel->XAB2 - i_pPhSeg->X2;
|
x2 = (i_pPhIns->XINS) + i_pPhModel->XAB2 - i_pPhSeg->X2;
|
||||||
y2 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhSeg->Y2;
|
y2 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhSeg->Y2;
|
||||||
break;
|
break;
|
||||||
case SYMXY:
|
case SYMXY:
|
||||||
#ifdef OCR_DEBUG
|
#ifdef OCR_DEBUG
|
||||||
printf("SYMXY\n");
|
printf("SYMXY\n");
|
||||||
#endif
|
#endif
|
||||||
x1 = (i_pPhIns->XINS - i_pPhModel->XAB1) + i_pPhModel->XAB2 - i_pPhSeg->X1;
|
x1 = (i_pPhIns->XINS) + i_pPhModel->XAB2 - i_pPhSeg->X1;
|
||||||
y1 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhModel->YAB2 - i_pPhSeg->Y1;
|
y1 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhModel->YAB2 - i_pPhSeg->Y1;
|
||||||
x2 = (i_pPhIns->XINS - i_pPhModel->XAB1) + i_pPhModel->XAB2 - i_pPhSeg->X2;
|
x2 = (i_pPhIns->XINS) + i_pPhModel->XAB2 - i_pPhSeg->X2;
|
||||||
y2 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhModel->YAB2 - i_pPhSeg->Y2;
|
y2 = (i_pPhIns->YINS - i_pPhModel->YAB1) + i_pPhModel->YAB2 - i_pPhSeg->Y2;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
/*
|
/*
|
||||||
### -------------------------------------------------- ###
|
### -------------------------------------------------- ###
|
||||||
$Author: hcl $
|
$Author: hcl $
|
||||||
$Date: 2002/03/15 14:37:27 $
|
$Date: 2002/03/20 13:25:57 $
|
||||||
$Log: ocrWindow.c,v $
|
$Log: ocrWindow.c,v $
|
||||||
|
Revision 1.2 2002/03/20 13:25:57 hcl
|
||||||
|
SymX bug.
|
||||||
|
|
||||||
Revision 1.1 2002/03/15 14:37:27 hcl
|
Revision 1.1 2002/03/15 14:37:27 hcl
|
||||||
Ca roule.
|
Ca roule.
|
||||||
|
|
||||||
|
@ -45,7 +48,7 @@
|
||||||
#include "ocrConnectorUtil.h"
|
#include "ocrConnectorUtil.h"
|
||||||
|
|
||||||
static char *res_id =
|
static char *res_id =
|
||||||
"$Id: ocrWindow.c,v 1.1 2002/03/15 14:37:27 hcl Exp $";
|
"$Id: ocrWindow.c,v 1.2 2002/03/20 13:25:57 hcl Exp $";
|
||||||
|
|
||||||
extern ocrOption *g_pOption;
|
extern ocrOption *g_pOption;
|
||||||
|
|
||||||
|
@ -53,7 +56,6 @@ extern ocrOption *g_pOption;
|
||||||
|
|
||||||
#define MAX_HT 500
|
#define MAX_HT 500
|
||||||
#define PITCH 5
|
#define PITCH 5
|
||||||
#define SCALE_X 100
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* création d'une nouvelle fenetre
|
* création d'une nouvelle fenetre
|
||||||
|
@ -95,10 +97,12 @@ ocrNaturalInt
|
||||||
isVCInWindow(ocrVirtualConnector * i_pVirCon, ocrWindow * i_pWindow)
|
isVCInWindow(ocrVirtualConnector * i_pVirCon, ocrWindow * i_pWindow)
|
||||||
{
|
{
|
||||||
if ((i_pVirCon->X >= i_pWindow->XMIN) &&
|
if ((i_pVirCon->X >= i_pWindow->XMIN) &&
|
||||||
(i_pVirCon->X < i_pWindow->XMAX) &&
|
(i_pVirCon->X <= i_pWindow->XMAX) &&
|
||||||
(i_pVirCon->Y >= i_pWindow->YMIN)
|
(i_pVirCon->Y >= i_pWindow->YMIN)
|
||||||
&& (i_pVirCon->Y < i_pWindow->YMAX))
|
&& (i_pVirCon->Y <= i_pWindow->YMAX))
|
||||||
return 1;
|
return 1;
|
||||||
|
display (LEVEL, INFO, "oulala : x:%ld?>%ld, y:%ld?>%ld, z:%ld\n", i_pVirCon->X, i_pWindow->XMAX, i_pVirCon->Y, i_pWindow->YMAX, i_pVirCon->Z);
|
||||||
|
abort();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -566,6 +570,7 @@ void initWindow(ocrRoutingDataBase * i_pDataBase)
|
||||||
(ocrWindow **) mbkalloc((i_pDataBase->NB_F + 1) *
|
(ocrWindow **) mbkalloc((i_pDataBase->NB_F + 1) *
|
||||||
sizeof(ocrWindow *));
|
sizeof(ocrWindow *));
|
||||||
|
|
||||||
|
|
||||||
// création des fenetres
|
// création des fenetres
|
||||||
for (i = 0; i <= i_pDataBase->NB_F; i++)
|
for (i = 0; i <= i_pDataBase->NB_F; i++)
|
||||||
i_pDataBase->WINDOWS[i] = newWindow(i);
|
i_pDataBase->WINDOWS[i] = newWindow(i);
|
||||||
|
@ -574,7 +579,7 @@ void initWindow(ocrRoutingDataBase * i_pDataBase)
|
||||||
// l_uRange = nb de rangées
|
// l_uRange = nb de rangées
|
||||||
// l_uFace = nb de fenetres par faces
|
// l_uFace = nb de fenetres par faces
|
||||||
l_uFace = sqrt(i_pDataBase->NB_F);
|
l_uFace = sqrt(i_pDataBase->NB_F);
|
||||||
l_uRange = (i_pDataBase->YAB2 - i_pDataBase->YAB1) / 500 / 10;
|
l_uRange = (i_pDataBase->YAB2 - i_pDataBase->YAB1) / (10 * SCALE_X * PITCH);
|
||||||
display(LEVEL, VERBOSE, "o Layout has %ld rows\n", l_uRange);
|
display(LEVEL, VERBOSE, "o Layout has %ld rows\n", l_uRange);
|
||||||
|
|
||||||
for (y = 1; y <= l_uFace; y++) {
|
for (y = 1; y <= l_uFace; y++) {
|
||||||
|
@ -582,10 +587,10 @@ void initWindow(ocrRoutingDataBase * i_pDataBase)
|
||||||
i = (y - 1) * l_uFace + x;
|
i = (y - 1) * l_uFace + x;
|
||||||
i_pDataBase->WINDOWS[i]->XMIN =
|
i_pDataBase->WINDOWS[i]->XMIN =
|
||||||
(x - 1) * (i_pDataBase->XAB2 -
|
(x - 1) * (i_pDataBase->XAB2 -
|
||||||
i_pDataBase->XAB1) / 500.0 / (l_uFace);
|
i_pDataBase->XAB1) / 50.0 / (l_uFace);
|
||||||
i_pDataBase->WINDOWS[i]->XMAX =
|
i_pDataBase->WINDOWS[i]->XMAX =
|
||||||
x * (i_pDataBase->XAB2 -
|
x * (i_pDataBase->XAB2 -
|
||||||
i_pDataBase->XAB1) / 500.0 / (l_uFace) - 0;
|
i_pDataBase->XAB1) / 50.0 / (l_uFace) - 0;
|
||||||
|
|
||||||
i_pDataBase->WINDOWS[i]->YMIN =
|
i_pDataBase->WINDOWS[i]->YMIN =
|
||||||
10 * (int) ((y - 1) *
|
10 * (int) ((y - 1) *
|
||||||
|
@ -595,6 +600,19 @@ void initWindow(ocrRoutingDataBase * i_pDataBase)
|
||||||
0;
|
0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
i_pDataBase->WINDOWS[0] = newWindow(0);
|
||||||
|
i_pDataBase->WINDOWS[1] = newWindow(1);
|
||||||
|
i_pDataBase->WINDOWS[0]->XMIN = 0;
|
||||||
|
i_pDataBase->WINDOWS[0]->YMIN = 0;
|
||||||
|
i_pDataBase->WINDOWS[0]->XMAX = (i_pDataBase->XAB2 - i_pDataBase->XAB1) / (PITCH * SCALE_X);
|
||||||
|
i_pDataBase->WINDOWS[0]->YMAX = (i_pDataBase->YAB2 - i_pDataBase->YAB1) / (PITCH * SCALE_X);
|
||||||
|
i_pDataBase->WINDOWS[1]->XMIN = 0;
|
||||||
|
i_pDataBase->WINDOWS[1]->YMIN = 0;
|
||||||
|
i_pDataBase->WINDOWS[1]->XMAX = (i_pDataBase->XAB2 - i_pDataBase->XAB1) / (PITCH * SCALE_X);
|
||||||
|
i_pDataBase->WINDOWS[1]->YMAX = (i_pDataBase->YAB2 - i_pDataBase->YAB1) / (PITCH * SCALE_X);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue