COMPOSEBDDNODE(3)

๐Ÿ“ฆ version 5.1.1-unstable-2025-02, in nixos 26.05, nixpkgs unstable

โœจ NAME โœจ

Ok bestie, this is the manual page for composebddnode(3) from BDD FUNCTIONS โ€” the one and only. The function composebddnode substitutes a variable by a bdd in another bdd. That's the whole vibe, no cap. ๐Ÿ’–

๐ŸŒธ 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

๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

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

๐ŸŽ€ PARAMETERS ๐ŸŽ€

  • BddSystem โ€” the bdd system. main character energy, obviously.
  • BddNode โ€” the bdd node.
  • Variable โ€” the variable to find. keep your eyes peeled.
  • BddSubst โ€” the bdd to substitute with.

๐Ÿ’œ DESCRIPTION ๐Ÿ’œ

So 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. Slay. โœจ

โญ RETURN VALUE โญ

composebddnode returns the resulting bdd node. That's it, that's the tea. ๐Ÿ’…

๐Ÿ”ฅ ERRORS ๐Ÿ”ฅ

"variable xxx out of range, error !" โ€” The Variable parameter must be less or equal to the BddSystem->NUMBER_VAR field. So yeah, keep it in range or the vibe check fails. ๐Ÿ˜ญ

๐ŸŒˆ EXAMPLE ๐ŸŒˆ

Ok this example is a whole little C moment โ€” copy it exactly, bestie:

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

And yes, the comment literally says /* displays (i1 and (i2 or i3)) */ โ€” iconic. periodt. ๐Ÿฆ‹

๐Ÿซถ SEE ALSO ๐Ÿซถ

bdd(1) โ€” go read it too, bestie. iykyk. ๐Ÿ’–

๐Ÿ’€ BUG REPORT ๐Ÿ’€

This tool is under development at the ASIM department of the LIP6 laboratory.

We need your feedback to improve documentation and tools. fr fr, they want your feedback. ๐Ÿซถ


Big slay sign-off: ASIM/LIP6 ยท October 1, 1997 ยท COMPOSEBDDNODE(3) ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from