ADDBDDNODE(3)

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

πŸ’– ADDBDDNODE(3) β€” BDD FUNCTIONS πŸ’–

okay bestie, gather round, because we're about to talk about addbddnode from the BDD FUNCTIONS crew (that's section 3 of the manual, iykyk) πŸ¦‹


✨ NAME ✨

addbddnode β€” adds a new bdd node in the bdd system. periodt.


🌸 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. πŸ‡«πŸ‡· iconic academic behaviour, no cap.


πŸŽ€ SYNOPSIS πŸŽ€

#include "bdd101.h"
bddnode βˆ—addbddnode( BddSystem, Index, High, Low  )
  bddsystem βˆ—BddSystem;
  bddindex   Index;
  bddnode   βˆ—High;
  bddnode   βˆ—Low;

πŸ’… PARAMETERS πŸ’…

  • BddSystem β€” the bdd system. like, the whole vibe container.
  • Index β€” the bdd index.
  • High β€” the bdd high pointer.
  • Low β€” the bdd low pointer.

🫢 DESCRIPTION 🫢

so addbddnode adds a new node with the index Index, High as HIGH pointer, and Low as LOW pointer in the bdd system BddSystem. the way it's just doing exactly what it says on the tin, we love a transparent king πŸ‘‘

and here's the cute part: if the bdd node exist already, addbddnode return its pointer. it's not gonna make a whole duplicate, it's giving efficient πŸ’€βœ¨

also, if a null pointer is given, the default bdd system is used. so if you're feeling lazy and pass nothing, it's got you πŸ₯°


⭐ RETURN VALUE ⭐

addbddnode returns a pointer to the resulting bdd node, with its number of external reference incremented. yes bestie, the refcount goes up, that's the whole point πŸ™ˆ


πŸ’€ ERRORS πŸ’€

  • "index xxx out of range" β€” the Index parameter must be a valid index. no skipping the vibe check on this one fr fr.

🌈 EXAMPLE 🌈

#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 );
   BddNode = addbddcircuitin( (bddcircuit βˆ—)0, "i0", 0, BDD_IN_MODE_FIRST );
   BddNode = addbddnode( (bddsystem βˆ—)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
   Expr = convertbddcircuitabl( (bddcircuit βˆ—)0, BddNode );
   /* displays (not i0) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem βˆ—)0 );
   destroybddcircuit( (bddcircuit βˆ—)0 );

look at that swap of LOW and HIGH β€” main character energy honestly, it's giving "not i0" and the comment literally says so πŸŽ€


πŸ”₯ SEE ALSO πŸ”₯


😭 BUG REPORT 😭

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

We need your feedback to improve documentation and tools. bestie they are literally asking, please send the feedback, do it for the plot 🫢


and that's the whole page!! πŸ’– this was ASIM/LIP6, dated October 1, 1997 β€” yeah it's vintage but it ate and left no crumbs, slay πŸ‘‘βœ¨