SATISFYBDDNODE(3)

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

okay bestie, welcome to SATISFYBDDNODE(3) πŸ’– β€” yep, that's the satisfybddnode page, hanging out in the BDD FUNCTIONS manual, section 3. It's giving C library fairy godmother energy, and we're gonna get you through it. ✨

✨ NAME ✨

satisfybddnode β€” finds a satisfying path for a bdd node. That's the whole name section, short and iconic. πŸ’…

🌍 ORIGIN 🌍

okay so the lore: 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. Oui oui, Paris. πŸ₯

🧾 SYNOPSIS 🧾

Here's the signature, bestie β€” copied exactly, βˆ— and all:

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

πŸŽ€ PARAMETERS πŸŽ€

  • BddSystem β€” the bdd system. Like, the whole bdd world this node lives in. 🌍
  • BddNode β€” the bdd node. The one we're trying to satisfy. πŸ’…

πŸ’… DESCRIPTION πŸ’…

okay so satisfybddnode finds a simple path through the bdd BddNode that reaches the constant bdd node one, in the bdd system BddSystem. If you give it a null pointer, it uses the default bdd system. No cap, that's the default behavior. ✨

πŸ”₯ RETURN VALUE πŸ”₯

satisfybddnode returns a bdd node that satisfies BddNode. That's it β€” the return value is literally a bdd node that satisfies the node you passed in. Slay. πŸ’…

😭 ERRORS 😭

If BddNode is the bdd node zero, you get this error message:

"index xxx out of range, error !"

So the BddNode parameter must be different from the bdd node zero. Like, do not pass zero, bestie. That's the rule. 🚫

🌸 EXAMPLE 🌸

Here's the example from the page, exact and ready to vibe:

#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_OR,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   BddNode = satisfybddnode( (bddsystem βˆ—)0, BddNode );
   Expr = convertbddcircuitabl( BddCircuit, BddNode );
   /* displays  i0 */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem βˆ—)0 );
   destroybddcircuit( (bddcircuit βˆ—)0 );

Notice the comment says it displays i0; that's the flex. πŸ’–

πŸ‘‘ 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 β€” yes, that's literally the ask. So like, if you find a bug or a docs typo, tell them. πŸ’Œ

peace out and happy path-finding, bestie πŸ’– β€” this page is from ASIM/LIP6, dated October 1, 1997. πŸŽ€

πŸ“¦ where this page comes from