Scroll to navigation

COMPOSEBDDNODE(3) BDD FUNCTIONS COMPOSEBDDNODE(3)

NAME

composebddnode - substitutes a variable by a bdd in another bdd.

ORIGIN

This software belongs to the ALLIANCE CAD SYSTEM developed by the ASIM team at LIP6 laboratory of Université Pierre et Marie CURIE, in Paris, France.

Web : http://asim.lip6.fr/recherche/alliance/
E-mail : alliance-users@asim.lip6.fr

SYNOPSYS

#include "bdd101.h"
bddnode ∗composebddnode( BddSystem, BddNode, Variable, BddSubst )
  bddsystem ∗BddSystem;
  bddnode   ∗BddNode;
  bddvar     Variable;
  bddnode   ∗BddSubst;

PARAMETERS

BddSystem
The bdd system.
BddNode
The bdd node.
Variable
The variable to find.
BddSubst
The bdd to substitute with.

DESCRIPTION

composebddnode substitutes all the occurency of the variable Variable in the bdd node BddNode by the bdd node BddSubst, in the bdd system BddSystem. If a null pointer is given, the default bdd system is used.

RETURN VALUE

composebddnode returns the resulting bdd node.

ERRORS

"variable xxx out of range, error !"
The Variable parameter must be less or equal to the BddSystem->NUMBER_VAR field.

EXAMPLE

#include "bdd101.h"
   bddsystem  ∗BddSystem;
   bddcircuit ∗BddCircuit;
   bddnode    ∗BddVariable;
   bddnode    ∗BddNode;
   bddnode    ∗BddSubst;
   chain_list ∗Expr;
   bddvar         Variable;
   BddSystem  = createbddsystem( 100, 1000, 100, 50000 );
   BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
   Expr = createablbinexpr( ABL_AND,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   Expr = createablbinexpr( ABL_OR,
                            createablatom( "i2" ),
                            createablatom( "i3" ) );
   BddSubst = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   BddVariable = searchbddcircuitin( (bddcircuit ∗)0, "i0" );
   Variable = getbddvarbyindex( (bddsystem ∗)0, BddVariable->INDEX );
   BddNode = composebddnode( (bddsystem ∗)0, BddNode, Variable, BddSubst );
   Expr = convertbddcircuitabl( BddCircuit, BddNode );
   /* displays (i1 and (i2 or i3)) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem ∗)0 );
   destroybddcircuit( (bddcircuit ∗)0 );

SEE ALSO

bdd(1)

BUG REPORT

This tool is under development at the ASIM department of the LIP6 laboratory.
We need your feedback to improve documentation and tools.

October 1, 1997 ASIM/LIP6