DELBDDNODE(3)

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

πŸ’… DELBDDNODE(3) β€” a lil' page from the BDD FUNCTIONS girlies

okay so bestie, welcome to delbddnode β€” it's a C function from the BDD FUNCTIONS family, and today we're gonna learn how to yeet an unused bdd node into the void πŸ—‘οΈβœ¨


🌸 ORIGIN 🌸

so this software belongs to the ALLIANCE CAD SYSTEM, which was developed by the ASIM team over at the LIP6 laboratory of UniversitΓ© Pierre et Marie Curie, in Paris, France πŸ‡«πŸ‡·πŸ₯– (yes, that Paris, the main character city)


✨ SYNOPSIS ✨

#include "bdd101.h"
void delbddnode( BddSystem, BddNode )
  bddsystem βˆ—BddSystem;
  bddnode   βˆ—BddNode;

πŸŽ€ PARAMETERS πŸŽ€

  • BddSystem β€” the bdd system, obvi. it's the whole vibe.
  • BddNode β€” the bdd node itself. the little guy we're deleting.

πŸ’– DESCRIPTION πŸ’–

okay so here's the tea β˜• β€” delbddnode tries to delete the bdd node BddNode and its children, but only if they don't have external references, all inside the bdd system BddSystem. key word: tries. it's giving "I'll do my best" energy.

if you hand it a null pointer, it just uses the default bdd system instead β€” no cap, that's the fallback. 🫢

⚠️ and now for the serious part, bestie: the use of this function is not recommended, because it takes time. 😭 like, it's slow. it's highkey not the move. instead, the better glow-up is to call the decbddrefext function, and then do a garbage collection with the garbagebddsystem function. periodt. that's the way. πŸ’…

πŸ¦‹ RETURN VALUE πŸ¦‹

delbddnode returns nothing. literally. void. it does the thing and leaves. no receipts, no notes. πŸ’€


🌈 EXAMPLE 🌈

here's the whole vibe in action, copy-paste blessed:

#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 );
   delbddnode( (bddsystem βˆ—)0, decbddrefext( BddNode ) );
   /* displays (not i0) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem βˆ—)0 );
   destroybddcircuit( (bddcircuit βˆ—)0 );

see that /* displays (not i0) */ comment? that's what you get, and it ate. πŸ”₯


πŸ‘‘ SEE ALSO πŸ‘‘

  • bdd(1) β€” go read it, bestie, iykyk πŸ“š

πŸ› BUG REPORT πŸ›

this tool is under development at the ASIM department of the LIP6 laboratory πŸ› οΈ β€” so yeah, it's a work in progress, be nice to it.

they need your feedback to improve documentation and tools! so if something's weird, say something. we love a feedback loop πŸ’Œβœ¨


🌸 that's the whole page, babe β€” brought to you by ASIM/LIP6, dated October 1, 1997 (yes she's an icon, she's been iconic since the 90s πŸ’œ). now go forth and don't use delbddnode unless you have to, mwah πŸ«ΆπŸ’…

πŸ“¦ where this page comes from