composebddnode(3)

composebddnode3

Substitutes a variable by a bdd in another bdd.

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.

Overview

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.

Examples

#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 );

Releases

4 releases since Debian 7 (Wheezy); the text changed 1 time.

  1. 7–8
  2. 9–10

From alliance 5.1.1-3 in Debian 10 (Buster). Parsed by carta from the page's man source.