INTERSECTBDDNODE(3)

πŸ“¦ version 5.1.1-unstable-2025-02, in nixos 26.05, nixpkgs unstable

✨ INTERSECTBDDNODE(3) β€” BDD FUNCTIONS ✨

okay so bestie, we're diving into intersectbddnode from the BDD FUNCTIONS manual page (section 3, for the record πŸ“–) β€” it's a little function with a big question: do these two nodes overlap at all? let's get into it πŸ’…


🌸 ORIGIN 🌸

this software belongs to the ALLIANCE CAD SYSTEM, developed by the ASIM team at the LIP6 laboratory of UniversitΓ© Pierre et Marie CURIE, in Paris, France πŸ—ΌπŸ₯– (yes, that Paris, the iconique one)

like, the whole lineage, the receipts, the provenance β€” we love a documented origin story 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

#include "bdd101.h"
bddnode *intersectbddnode( BddSystem, BddNode1, BddNode2 )
  bddsystem *BddSystem;
  bddnode   *BddNode1;
  bddnode   *BddNode2;

πŸŽ€ PARAMETERS πŸŽ€

  • BddSystem β€” the bdd system. your whole bdd universe, basically 🌌
  • BddNode1 β€” the first bdd node πŸ‘―
  • BddNode2 β€” the second bdd node πŸ‘―β€β™€οΈ

πŸ’– DESCRIPTION πŸ’–

so intersectbddnode tests if the intersection of BddNode1 and BddNode2 exists, inside the bdd system BddSystem ✨ it's giving vibe check for node overlap, fr fr.

and listen β€” if a null pointer is given, the default bdd system is used. no cap, it just falls back automatically πŸ“


πŸ”₯ RETURN VALUE πŸ”₯

intersectbddnode returns the bdd node zero if there is no intersection (πŸ’€ they do NOT overlap), and a computed bdd node otherwise (πŸ‘‘ they DO, main character energy).


🌈 EXAMPLE 🌈

#include "bdd101.h"
   bddsystem  *BddSystem;
   bddcircuit *BddCircuit;
   bddnode    *BddNode1;
   bddnode    *BddNode2;
   bddnode    *BddImply;
   chain_list *Expr;
   BddSystem  = createbddsystem( 100, 1000, 100, 50000 );
   BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
   Expr = createablbinexpr( ABL_AND,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode1 = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   Expr = createablbinexpr( ABL_OR,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode1 = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   BddImply = intersectbddnode( (bddsystem *)0, BddNode1, BddNode2 );
   Expr = convertbddcircuitabl( BddCircuit, BddNode );
   /* displays (i0 and i1)) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem *)0 );
   destroybddcircuit( (bddcircuit *)0 );

bestie this example is a whole journey β€” building a system, building a circuit called hello_world (iconique name, no notes), making expressions with ABL_AND and ABL_OR, and then hitting intersectbddnode with a null system so it grabs the default πŸ’« and yes, the comment literally says /* displays (i0 and i1)) */ β€” we keep it exactly as it is, typos and all, that's the original's moment πŸŽ€


πŸ’œ SEE ALSO πŸ’œ

  • bdd(1) β€” go read it, 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 β€” like genuinely, send the feedback, they're asking nicely, don't leave them on read πŸ™ˆπŸ’Œ


and that's the whole page, bestie! 🧚 ASIM/LIP6 Β· October 1, 1997 Β· INTERSECTBDDNODE(3) β€” vintage manpage, still slaying πŸ’…β­

πŸ“¦ where this page comes from