SATISFYBDDNODE(3)
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. π₯
- Web:
http://asim.lip6.fr/recherche/alliance/ - E-mail:
alliance-users@asim.lip6.fr
π§Ύ 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
- nixos 26.05: alliance 5.1.1-unstable-2025-02-24
- nixpkgs unstable: alliance 5.1.1-unstable-2025-02-24
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms