ADDBDDCIRCUITABL(3)

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

πŸ’… NAME πŸ’…

okay so bestie, <rainbow>addbddcircuitabl</rainbow> β€” it converts an abl expression to a bdd node. that's literally it. that's the whole job. ✨

this one lives in section 3 of the manual (the <purple>BDD FUNCTIONS</purple> corner of the world, iykyk), so like… yeah. library call. πŸŽ€


🌸 ORIGIN 🌸

fr fr this software belongs to the <hotpink>ALLIANCE CAD SYSTEM</hotpink>, developed by the ASIM team at LIP6 laboratory of UniversitΓ© Pierre et Marie CURIE, in Paris, France. iconic, honestly. πŸ‘‘

like, they're on the web AND they have email. main character energy. πŸ’Œ


✨ SYNOPSIS ✨

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

that's the whole vibe right there 🫢


πŸ¦‹ PARAMETERS πŸ¦‹

  • BddCircuit β€” the bdd circuit. yes. that one. the circuit. 🧚
  • Expr β€” the expression to convert. the one we're translating. no cap.

πŸ’– DESCRIPTION πŸ’–

okay so <pink>addbddcircuitabl</pink> converts the abl expression Expr to a bdd node. simple. slay.

the BddCircuit is what's used to translate the atomic expressions into variable nodes β€” it's giving translator energy. 🌈

if a null pointer is given for it, then the default bdd circuit is used. convenient! πŸ’…

and here's the lil plot twist πŸ‘€ β€” if an atomic expression doesn't appear in the BddCircuit input names hash table or output names hash table, then addbddcircuitabl adds a new input by calling the function addbddcircuitin with the BDD_IN_MODE_LAST mode. it just… makes room for it. assertive. we love to see it. πŸ”₯


⭐ RETURN VALUE ⭐

addbddcircuitabl returns a pointer to the bdd node translated. that's your output, bestie. take it. 🎁


πŸ’€ ERRORS πŸ’€

  • "bad operator xxx error !" β€” this means the Expr parameter must be a well defined abl expression. so like… if you get this, check your expression. it's not well defined. it's giving undefined behaviour vibes and not in a cute way πŸ™ˆ

πŸ‘‘ EXAMPLE πŸ‘‘

here's the full little demo, copied exactly because obviously:

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

and yes, that /* displays (i0 and i1) */ comment is doing the lord's work. it really does display (i0 and i1). ate. πŸ“


🧚 SEE ALSO 🧚

go read those 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. like genuinely β€” send the feedback. they're asking. be the main character who files the report. πŸ’Œ


ngl the sweetest part: this whole page is brought to you by <purple>ASIM/LIP6</purple>, dated <pink>October 1, 1997</pink> β€” yes, 1997, she's vintage and she still slays. periodt. πŸ’…βœ¨
πŸ“¦ where this page comes from