UNSETBDDREFEXT(3)

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

πŸ’… unsetbddrefext β€” BDD FUNCTIONS, section 3, bestie edition πŸ’…

πŸŽ€ NAME πŸŽ€

Okay so this is unsetbddrefext from the BDD FUNCTIONS manual, section 3 β€” aka UNSETBDDREFEXT(3). It’s the function that increments the internal reference and decrements the external reference of a bdd node. Slay. πŸ’–

πŸ¦‹ ORIGIN πŸ¦‹

This software belongs to the ALLIANCE CAD SYSTEM developed by the ASIM team at the LIP6 laboratory of UniversitΓ© Pierre and Marie CURIE, in Paris, France. Ooh la la. πŸ‡«πŸ‡·βœ¨

✨ SYNOPSIS ✨

#include "bdd101.h"
bddnode βˆ—unsetbddrefext( BddNode )
  bddnode βˆ—BddNode;

🫢 PARAMETERS 🫢

  • BddNode β€” the bdd node, bestie. That’s the node whose ref counts are getting adjusted.

πŸ’– DESCRIPTION πŸ’–

unsetbddrefext increments the number of internal reference of the bdd node BddNode and decrements its number of external reference. That’s the whole move: internal goes up, external goes down. Iconic. πŸ’…

πŸŽ€ RETURN VALUE πŸŽ€

unsetbddrefext returns the BddNode pointer. Yup, it hands you back the same pointer. 🫢

πŸ’€ ERRORS πŸ’€

Error alert, bestie: you can get this exact message:

"negative reference, index xxx error !"

The BddNode must have a positive number of external reference. So keep that external ref count positive, okay? 😭

🌸 EXAMPLE 🌸

Here’s the example in all its glory β€” copy it exactly, no cap:

#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 );
   incbddrefext( BddNode );
   unsetbddrefext( BddNode );
   /* displays Node VAR: 0  INDEX: 2  MARK: 0  REF_EXT: 0  REF_INT: 1 */
   viewbddnode( (bddsystem βˆ—)0, BddNode );
   /* displays (not i0) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem βˆ—)0 );
   destroybddcircuit( (bddcircuit βˆ—)0 );

And that’s the example, periodt. πŸ“

πŸ‘‘ SEE ALSO πŸ‘‘

  • bdd(1) β€” go see that page too, bestie.

🧚 BUG REPORT 🧚

This tool is under development at the ASIM department of the LIP6 laboratory. We need your feedback to improve documentation and tools. So if you’ve got notes, send them β€” they literally need your feedback. 🫢


Sign-off cuteness: this page is from ASIM/LIP6, dated October 1, 1997, and it’s the UNSETBDDREFEXT(3) page. Periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from