Adding clock detection to sea ... when MBK_CK is used, lef-def

files are generated with annotation ("use clock") ... on clock
signal.
Please don't tell JPC I've made this ....
This commit is contained in:
Christophe Alexandre 2003-04-04 16:23:32 +00:00
parent 692531ba41
commit 7f604e4b51
2 changed files with 27 additions and 5 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: DEF_drive.c,v 1.6 2003/04/02 15:02:49 jpc Exp $
* $Id: DEF_drive.c,v 1.7 2003/04/04 16:23:31 xtof Exp $
*
* /----------------------------------------------------------------\
* | |
@ -1144,6 +1144,8 @@ static void fprintPIN(apLocon, apPhcon, asState)
*/
fprintf(DEF_FILE, " + DIRECTION INPUT + USE GROUND");
} else if (isck(apLocon->NAME)) {
fprintf(DEF_FILE, " + DIRECTION INPUT + USE CLOCK");
} else
fprintf(DEF_FILE, " + DIRECTION %s",
DIRtoa(MBK2DEF_locondir(apLocon)));
@ -1535,7 +1537,7 @@ static void fprintNETS()
for(pLoSig = LV_lofig->LOSIG, loSigNB = 0L;
pLoSig != (losig_list*)NULL; pLoSig = pLoSig->NEXT) {
sSig = getsigname(pLoSig);
if (isvdd(sSig) || isvss(sSig)) continue;
if (isvdd(sSig) || isvss(sSig) || isck(sSig)) continue;
loSigNB += 1;
}
@ -1549,7 +1551,8 @@ static void fprintNETS()
sSig = getsigname(pLoSig);
if ( isvdd(sSig)
|| isvss(sSig)
|| !strcmp(sSig, "cki")) continue;
|| !strcmp(sSig, "cki")
|| isck(sSig)) continue;
fprintNET(pLoSig, C_USE_NONE);
}
@ -1579,7 +1582,8 @@ static void fprintSPECIALNETS()
sSig = getsigname(pLoSig);
if ( !isvdd(sSig)
&& !isvss(sSig)
&& strcmp(sSig, "cki")) continue;
&& strcmp(sSig, "cki")
&& !isck(sSig)) continue;
loSigNB += 1;
}
@ -1597,6 +1601,7 @@ static void fprintSPECIALNETS()
if ( isvdd(sSig) ) Use = C_USE_POWER;
if ( isvss(sSig) ) Use = C_USE_GROUND;
if (!strcmp(sSig, "cki")) Use = C_USE_CLOCK;
if ( isck(sSig) ) Use = C_USE_CLOCK;
if (Use == C_USE_NONE) continue;
fprintNET(pLoSig, Use);

View File

@ -1,5 +1,5 @@
/*
* $Id: LEF_drive_sxlib.c,v 1.2 2002/09/30 16:21:17 czo Exp $
* $Id: LEF_drive_sxlib.c,v 1.3 2003/04/04 16:23:32 xtof Exp $
*
* /----------------------------------------------------------------\
* | |
@ -617,6 +617,10 @@ static void phref2PINS()
/* Create a new pin named from "sIOName". */
m_AddPin(LV_pMACRO->lPIN, sIOName);
LV_pMACRO->lPIN->DIRECTION = MBK2DEF_locondir(pLoCon);
if (isck(sIOName))
{
LV_pMACRO->lPIN->USE = C_USE_GROUND;
}
m_AddPort(LV_pMACRO->lPIN->lPORT, C_PORTITEM_LAYER, ALU1);
pPIN = LV_pMACRO->lPIN;
@ -674,6 +678,10 @@ static void phseg2PINS()
/* Create a new pin named from "pPhSeg->NAME". */
m_AddPin(LV_pMACRO->lPIN, pPhSeg->NAME);
LV_pMACRO->lPIN->DIRECTION = MBK2DEF_locondir(pLoCon);
if (isck(pPhSeg->NAME))
{
LV_pMACRO->lPIN->USE = C_USE_CLOCK;
}
pPIN = LV_pMACRO->lPIN;
}
@ -728,12 +736,14 @@ static void sortPINS()
ePIN_t *pHeadOUTPUT, *pTailOUTPUT;
ePIN_t *pHeadINPUT , *pTailINPUT;
ePIN_t *pHeadPOWER , *pTailPOWER;
ePIN_t *pHeadCLOCK , *pTailCLOCK;
pHeadINOUT = pTailINOUT = (ePIN_t*)NULL;
pHeadOUTPUT = pTailOUTPUT = (ePIN_t*)NULL;
pHeadINPUT = pTailINPUT = (ePIN_t*)NULL;
pHeadPOWER = pTailPOWER = (ePIN_t*)NULL;
pHeadCLOCK = pTailCLOCK = (ePIN_t*)NULL;
for(pPIN = LV_pMACRO->lPIN; pPIN != (ePIN_t*)NULL;) {
pTmp = pPIN;
@ -744,6 +754,9 @@ static void sortPINS()
case C_USE_GROUND:
insertPIN(&pHeadPOWER, &pTailPOWER, pTmp);
continue;
case C_USE_CLOCK:
insertPIN(&pHeadCLOCK, &pTailCLOCK, pTmp);
continue;
} /* End of "USE" switch. */
switch(pTmp->DIRECTION) {
@ -784,6 +797,10 @@ static void sortPINS()
*ppHead = pHeadPOWER; ppHead = &(pTailPOWER->Next);
}
if (pHeadCLOCK != (ePIN_t*)NULL) {
*ppHead = pHeadCLOCK; ppHead = &(pTailCLOCK->Next);
}
*ppHead = (ePIN_t*)NULL;
}