From e2b8259142ee8b11b3a20726f18c300477c0e45a Mon Sep 17 00:00:00 2001 From: Francois Donnet Date: Fri, 7 Jun 2002 12:58:01 +0000 Subject: [PATCH] D D oublie des signaux dans lelot --- alliance/src/boog/src/bog_lib_format.c | 91 ++++++++++++++++++++------ 1 file changed, 72 insertions(+), 19 deletions(-) diff --git a/alliance/src/boog/src/bog_lib_format.c b/alliance/src/boog/src/bog_lib_format.c index b200416e..c74b21e2 100644 --- a/alliance/src/boog/src/bog_lib_format.c +++ b/alliance/src/boog/src/bog_lib_format.c @@ -66,26 +66,72 @@ static int is_input_used(char* input, chain_list* abl) /******************************************************************************/ /* seek if all inputs are used in abl */ /******************************************************************************/ -static int used_inputs(befig_list* befig, chain_list* abl, biabl_list* biabl) +static int used_inputs(befig_list* befig) { bepor_list* bepor; - biabl_list* biabl_aux; + bereg_list *bereg; + beaux_list *beaux; + bebus_list *bebus; + bebux_list *bebux; + beout_list *beout; + biabl_list *biabl; + /*all inputs should be used*/ for (bepor=befig->BEPOR; bepor; bepor=bepor->NEXT) { /*only input*/ if (bepor->DIRECTION!=IN && bepor->DIRECTION!=INOUT && bepor->DIRECTION!=TRANSCV) continue; if (!isvdd(bepor->NAME) && !isvss(bepor->NAME)) { - if (!is_input_used(bepor->NAME,abl)) { - for (biabl_aux=biabl; biabl_aux; biabl_aux=biabl_aux->NEXT) { - if (is_input_used(bepor->NAME,biabl_aux->VALABL) - || is_input_used(bepor->NAME,biabl_aux->CNDABL)) break; - } - if (biabl_aux) continue; - fprintf(stderr,"BEH: %s input unused\n",bepor->NAME); - return 0; + + for ( beout = befig->BEOUT; beout; beout = beout->NEXT ) + { + if ( is_input_used(bepor->NAME, beout->ABL) ) break; } + if ( beout ) continue; + + for ( beaux = befig->BEAUX; beaux; beaux = beaux->NEXT ) + { + if ( is_input_used(bepor->NAME, beaux->ABL) ) break; + } + if ( beaux ) continue; + + for ( bebux = befig->BEBUX; bebux; bebux = bebux->NEXT ) + { + for ( biabl = bebux->BIABL; biabl; biabl = biabl->NEXT ) + { + if ( is_input_used(bepor->NAME, biabl->CNDABL) ) break; + if ( is_input_used(bepor->NAME, biabl->VALABL) ) break; + } + if ( biabl ) break; + } + if ( bebux ) continue; + + for ( bereg = befig->BEREG; bereg; bereg = bereg->NEXT ) + { + for ( biabl = bereg->BIABL; biabl; biabl = biabl->NEXT ) + { + if ( is_input_used(bepor->NAME, biabl->CNDABL) ) break; + if ( is_input_used(bepor->NAME, biabl->VALABL) ) break; + } + if ( biabl ) break; + } + if ( bereg ) continue; + + for ( bebus = befig->BEBUS; bebus; bebus = bebus->NEXT ) + { + for ( biabl = bebus->BIABL; biabl; biabl = biabl->NEXT ) + { + if ( is_input_used(bepor->NAME, biabl->CNDABL) ) break; + if ( is_input_used(bepor->NAME, biabl->VALABL) ) break; + } + if ( biabl ) break; + } + if ( bebus ) continue; + + fprintf(stderr,"BEH: %s input unused\n",bepor->NAME); + return 0; + } } @@ -119,13 +165,27 @@ static void format_subst_befig( befig_list *befig, beaux_list *BeauxSubst ) bereg_list *bereg; beaux_list *beaux; bebus_list *bebus; + bebux_list *bebux; + beout_list *beout; biabl_list *biabl; + for ( beout = befig->BEOUT; beout; beout = beout->NEXT ) + { + beout->ABL = format_subst_abl( beout->ABL, BeauxSubst ); + } for ( beaux = befig->BEAUX; beaux; beaux = beaux->NEXT ) { if ( beaux == BeauxSubst ) continue; beaux->ABL = format_subst_abl( beaux->ABL, BeauxSubst ); } + for ( bebux = befig->BEBUX; bebux; bebux = bebux->NEXT ) + { + for ( biabl = bebux->BIABL; biabl; biabl = biabl->NEXT ) + { + biabl->CNDABL = format_subst_abl( biabl->CNDABL, BeauxSubst ); + biabl->VALABL = format_subst_abl( biabl->VALABL, BeauxSubst ); + } + } for ( bereg = befig->BEREG; bereg; bereg = bereg->NEXT ) { for ( biabl = bereg->BIABL; biabl; biabl = biabl->NEXT ) @@ -181,9 +241,6 @@ extern int format_cell(befig_list* befig) biabl->VALABL=simpablexpr(createablnotexpr(biabl->VALABL)); } } - - return used_inputs(befig,NULL, - befig->BEREG->BIABL); } if (befig->BEBUS) { @@ -191,8 +248,6 @@ extern int format_cell(befig_list* befig) if (befig->BEBUS->NEXT || befig->BEREG || befig->BEBUX) return 0; /*one ouput: bebus*/ if (befig->BEOUT) return 0; - return used_inputs(befig,NULL, - befig->BEBUS->BIABL); } if (befig->BEBUX) { @@ -223,17 +278,15 @@ extern int format_cell(befig_list* befig) beh_frebeout(befig->BEOUT); befig->BEBUX=NULL; befig->BEOUT=NULL; - - return used_inputs(befig,NULL, - befig->BEBUS->BIABL); } if (befig->BEOUT) { /*one ouput: beout*/ if (befig->BEOUT->NEXT || befig->BEBUS) return 0; - return used_inputs(befig,befig->BEOUT->ABL,NULL); } + return used_inputs(befig); + /*illegal befig*/ return 0; }