ADDBDDCIRCUITABL(3)

πŸ“¦ version 5.1.1, in fedora 43, fedora 44

✨ ADDBDDCIRCUITABL ✨

okay bestie, we're in the addbddcircuitabl page of the manual β€” section 3, the BDD FUNCTIONS era πŸ’…. yes this is the one that takes an abl expression and turns it into a bdd node. iconic behaviour honestly.


🌸 ORIGIN 🌸

so this software belongs to the ALLIANCE CAD SYSTEM, which was built by the ASIM team at the LIP6 laboratory of UniversitΓ© Pierre et Marie CURIE, in Paris, France πŸ‡«πŸ‡·πŸ«Ά. very chic, very academic, very much the main character energy of 90s EDA.


πŸ¦‹ SYNOPSIS πŸ¦‹

#include "bdd101.h"
bddnode βˆ—addbddcircuitabl( BddCircuit, Expr )
  bddcircuit βˆ—BddCircuit;
  chain_list βˆ—Expr;

πŸŽ€ PARAMETERS πŸŽ€

  • BddCircuit β€” the bdd circuit, bestie. literally the whole circuit vibe.
  • Expr β€” the expression we're converting. the lil glow-up subject.

πŸ’– DESCRIPTION πŸ’–

addbddcircuitabl converts the abl expression Expr into a bdd node. that's the whole job, and it ate πŸ”₯.

BddCircuit is what gets used to translate the atomic expressions into variable nodes. and if you hand it a null pointer? no worries, it just uses the default bdd circuit. slay, defaults.

now here's the lil plot twist πŸ‘€ β€” if an atomic expression doesn't appear in the BddCircuit input names hash table or the output names hash table, then addbddcircuitabl goes and adds a new input by calling the function addbddcircuitin with the BDD_IN_MODE_LAST mode. it just does it. unbothered. periodt.


⭐ RETURN VALUE ⭐

addbddcircuitabl returns a pointer to the bdd node it translated. that's your gift back 🎁


πŸ’€ ERRORS πŸ’€

  • "bad operator xxx error !" β€” yeah so the Expr parameter must be a well defined abl expression. if it's not… this is what you get. no cap, don't test it.

🌈 EXAMPLE 🌈

here's the whole thing in action, literally copy-paste-able:

#include "bdd101.h"
   bddsystem  βˆ—BddSystem;
   bddcircuit βˆ—BddCircuit;
   bddnode    βˆ—BddNode;
   chain_list βˆ—Expr;
   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 = convertbddcircuitabl( BddCircuit, BddNode );
   /* displays (i0 and i1) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem βˆ—)0 );
   destroybddcircuit( (bddcircuit βˆ—)0 );
note the /* displays (i0 and i1) */ comment up there β€” that's what it shows you. cute, right? πŸ“

🧚 SEE ALSO 🧚

iykyk, go read those next πŸ’œ


🫢 BUG REPORT 🫢

so this tool is still under development at the ASIM department of the LIP6 laboratory. they need your feedback to improve the documentation and the tools β€” so like, pls speak up, your input is valid and wanted πŸ™ˆβœ¨


and that's a wrap bestie!! this page is from the ASIM/LIP6 girlies, dated October 1, 1997 β€” yes, an actual vintage icon πŸ‘‘πŸ¦‹. go build something gorgeous with your bdd nodes. mwah πŸ’