Provided by: alliance_5.1.1-1.1build1_amd64 bug


       convertbddmuxabl - converts two bdd nodes to an abl multiplexor expression.


       #include "bdd101.h"
       chain_list *convertbddmuxabl( BddSystem, NameArray, IndexArray, Equation, BddHigh, BddLow )
         bddsystem  ΒddSystem;
         char      (*NameArray;
         bddindex   ΙndexArray;
         chain_list Εquation;
         bddnode    ΒddHigh;
         bddnode    ΒddLow;


       BddSystem           The bdd system.

       NameArray           The array of names.

       IndexArray          The array of indexes.

       Equation            The multiplexor command.

       BddHigh             The first bdd node.

       BddLow              The second bdd node.


       convertbddmuxabl creates the following abl expression ( BddHigh AND Equation ) OR ( BddLow
       AND (NOT Equation ) ) in the bdd system BddSystem.   If  a  null  pointer  is  given,  the
       default  bdd  system  is  used.   The  NameArray,  and  IndexArray  parameters are used to
       translate the variable nodes into atomic expressions.  The  array  NameArray  is  list  of
       names.   The  array IndexArray does the correspondence between a bdd node index and a slot
       in the NameArray. If the IndexArray parameter is a null pointer, then the name of the  bdd
       index BDD_INDEX_MIN is assumed to be the first slot of the NameArray, and so on.


       convertbddmuxabl returns a pointer to the abl expression translated.


       #include "bdd101.h"
          bddsystem  ∗BddSystem;
          bddnode    ∗BddNode1;
          bddnode    ∗BddNode2;
          chain_list ∗Expr;
          char       ∗NameArray[ 2 ];
          BddSystem = createbddsystem( 100, 1000, 100, 50000 );
          BddNode1  = addbddvarlast( BddSystem );
          BddNode2  = addbddvarlast( BddSystem );
          NameArray[ 0 ] = namealloc( "i0" );
          NameArray[ 1 ] = namealloc( "i1" );
          Expr = convertbddmuxabl( BddSystem, NameArray, (bddindex ∗)0,
                                   createablatom( "C" ),  BddNode1, BddNode2 );
          /* displays (i0 and C) or (i1 and (not C)) */
          viewablexpr( Expr, ABL_VIEW_VHDL );
          freeablexpr( Expr );
          destroybddsystem( (bddsystem ∗)0 );


       bdd(1), abl(1).