- Bug fix: Segmentation fault when the input netlist has unconnected signals

Those unused nets are now removed from the input lofig after the flatten.
This commit is contained in:
Ludovic Jacomme 2004-05-23 09:50:43 +00:00
parent 478d1db69e
commit fad67c54e0
2 changed files with 53 additions and 15 deletions

View File

@ -1,8 +1,12 @@
/*
### -------------------------------------------------- ###
$Author: hcl $
$Date: 2002/06/27 09:09:01 $
$Author: ludo $
$Date: 2004/05/23 09:50:42 $
$Log: ocrRouter.c,v $
Revision 1.8 2004/05/23 09:50:42 ludo
- Bug fix: Segmentation fault when the input netlist has unconnected signals
Those unused nets are now removed from the input lofig after the flatten.
Revision 1.7 2002/06/27 09:09:01 hcl
Code d'erreur si tous les signaux ne sont pas routés.
@ -179,6 +183,43 @@ phfig_list *readPhFig(char *i_sPhFigName)
return l_pPhFig;
}
lofig_list *readLoFig(char *i_sLoFigName)
{
lofig_list *ScanLoFig;
losig_list *ScanLoSig;
losig_list *DelLoSig;
ptype_list *ScanPType;
chain_list *ScanChain;
ScanLoFig = getlofig(i_sLoFigName, 'A');
rflattenlofig( ScanLoFig, YES, YES);
display(LEVEL, DEBUG, "%s\n", "o Dual connectique ...");
// Création d'une vue duale de la connectique
lofigchain( ScanLoFig );
ScanLoSig = ScanLoFig->LOSIG;
while ( ScanLoSig != (losig_list *)0 )
{
ScanPType = getptype( ScanLoSig->USER, (long)LOFIGCHAIN);
DelLoSig = ScanLoSig;
ScanLoSig = ScanLoSig->NEXT;
if ( ScanPType != (ptype_list *)0 )
{
ScanChain = (chain_list *)ScanPType->DATA;
if ( ScanChain == (chain_list *)0 )
{
dellosig( ScanLoFig, DelLoSig->INDEX );
}
}
}
return( ScanLoFig );
}
ocrSignal *findSignal(ocrRoutingDataBase * i_pDataBase,
ocrNaturalInt i_uIndex)
{
@ -1259,14 +1300,11 @@ int main(int argc, char **argv)
// Lecture de la vue physique
l_pPhFig = readPhFig(l_sPhFigName);
// Lecture de la vue logique
l_pLoFig = getlofig(l_sLoFigName, 'A');
//FIXME::pas de reentrance
rflattenlofig(l_pLoFig, YES, YES);
display(LEVEL, VERBOSE, "%s\n", "o Read .vst ...");
// Lecture de la vue logique
l_pLoFig = readLoFig(l_sLoFigName );
//
l_pDataBase = initDataBase(l_pPhFig, l_pLoFig);
// un peu de ménage.

View File

@ -1,8 +1,12 @@
/*
### -------------------------------------------------- ###
$Author: hcl $
$Date: 2002/03/15 14:37:27 $
$Author: ludo $
$Date: 2004/05/23 09:50:43 $
$Log: ocrInitDataBase.c,v $
Revision 1.2 2004/05/23 09:50:43 ludo
- Bug fix: Segmentation fault when the input netlist has unconnected signals
Those unused nets are now removed from the input lofig after the flatten.
Revision 1.1 2002/03/15 14:37:27 hcl
Ca roule.
@ -43,7 +47,7 @@
#include "ocrInitDataBase.h"
static char *res_id =
"$Id: ocrInitDataBase.c,v 1.1 2002/03/15 14:37:27 hcl Exp $";
"$Id: ocrInitDataBase.c,v 1.2 2004/05/23 09:50:43 ludo Exp $";
extern ocrOption *g_pOption;
#define LEVEL (g_pOption->LEVEL)
@ -59,10 +63,6 @@ ocrRoutingDataBase *initDataBase(phfig_list * i_pPhFig,
// Création de la base de donnée
l_pDataBase = createDataBase(i_pPhFig);
// Création d'une vue duale de la connectique
lofigchain(i_pLoFig);
display(LEVEL, DEBUG, "%s\n", "o Dual connectique ...");
// paramtères physiques de la grille 5*5 viacost=2 Layer paires = HORZ
l_pDataBase->PARAM = setParameters(5, 5, 2, ocrHorizontal);