APPLYBDDNODELIST(3)

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

πŸ’… APPLYBDDNODELIST ✨ β€” the applybddnodelist(3) page, bestie edition

okay so you're in the BDD FUNCTIONS corner of the manual and you found applybddnodelist(3). slay. let's get into it 🫢


🌸 NAME 🌸

applybddnodelist β€” applies an opertor to a bdd nodes list.

(yes bestie, "opertor". we keep the typo, it's canon now, it's part of the lore πŸ’€)


πŸ›οΈ ORIGIN πŸ›οΈ

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

like, actual French academic royalty, no cap πŸ‘‘


πŸŽ€ SYNOPSIS πŸŽ€

#include "bdd101.h"
bddnode βˆ—applybddnodelist( BddSystem, Oper, BddList )
  bddsystem  βˆ—BddSystem;
  long        Oper;
  chain_list βˆ—BddList;

πŸ¦‹ PARAMETERS πŸ¦‹

  • BddSystem β€” the bdd system. the whole vibe lives here ✨
  • Oper β€” the operator. the thing doing the doing πŸ’…
  • BddList β€” the bdd nodes list. the guest list πŸ“‹

πŸ’– DESCRIPTION πŸ’–

applybddnodelist applies the boolean operator Oper to the bdd nodes list BddList in the bdd system BddSystem.

the way that it just... does the boolean operation on the whole list?? iconic.

and listen β€” if a null pointer is given, the default bdd system is used. so you can be lazy and it still works, we love a flexible queen πŸ™ˆ


πŸ‘‘ RETURN VALUE πŸ‘‘

applybddnodelist returns a pointer to the resulting bdd node, with its number of external reference incremented. ⭐

so like, it hands you the node and bumps the refcount. you didn't even have to ask. that's service.


πŸ’€ ERRORS πŸ’€

  • "bad operator xxx error !" β€” the Oper parameter must be a valid binary operator. if it's not, we're not doing this today bestie 😭
  • "bad list !" β€” the BddList parameter must be a valid list. give it a real list or give it nothing fr fr

🌈 EXAMPLE 🌈

#include "bdd101.h"
   bddsystem  βˆ—BddSystem;
   bddcircuit βˆ—BddCircuit;
   bddnode    βˆ—BddNode;
   chain_list βˆ—BddList;
   chain_list βˆ—Expr;
   BddSystem  = createbddsystem( 100, 1000, 100, 50000 );
   BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
   BddList    = (chain_list βˆ—)0;
   BddList = addbddnodelist( (bddsystem βˆ—)0, BddList,
                             addbddcircuitin( (bddcircuit βˆ—)0,
                                              "i0", 0, BDD_IN_MODE_FIRST ) );
   BddList = addbddnodelist( (bddsystem βˆ—)0, BddList,
                              addbddcircuitin( (bddcircuit βˆ—)0,
                                               "i1", 0, BDD_IN_MODE_FIRST );
   BddList = addbddnodelist( (bddsystem βˆ—)0, BddList,
                             addbddcircuitin( (bddcircuit βˆ—)0,
                                              "i2", 0, BDD_IN_MODE_FIRST );
   BddNode = applybddnodelist( (bddsystem βˆ—)0, ABL_AND, BddList );
   Expr = convertbddcircuitabl( (bddcircuit βˆ—)0, BddNode );
   /* displays (i0 and i1 and i2) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem βˆ—)0 );
   destroybddcircuit( (bddcircuit βˆ—)0 );

so you make a system, make a circuit named "hello_world" (adorable), stack up "i0", "i1" and "i2" as inputs, hit it with ABL_AND, convert to ABL, and viewablexpr displays (i0 and i1 and i2). main character behavior. then you free and destroy everything because we're responsible and we clean up after ourselves periodt 🧹✨


🫢 SEE ALSO 🫢

go read it, iykyk πŸ’œ


πŸ› 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 like, tell them what's broken. they literally asked. constructive criticism is self care bestie πŸ’Œ


ASIM/LIP6 Β· October 1, 1997 β€” that's the source, the version and the date, and that's a wrap πŸŽ€ thanks for reading the applybddnodelist(3) page with me, ily, go increment a reference counter responsibly πŸ’–βœ¨πŸ¦‹