RESTRICTBDDNODE(3)
π restrictbddnode(3) β the BDD FUNCTIONS era π
okay bestie, sit down, hydrate, because we're about to talk about restrictbddnode β she substitutes a variable by a zero or a one, in a bdd. that's the whole NAME energy. short. iconic. no notes. β¨
π ORIGIN π
so 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. yes, the Paris. π«π·
- Web :
http://asim.lip6.fr/recherche/alliance/ - E-mail :
alliance-users@asim.lip6.fr
like, go say hi, they want to hear from you fr fr π«Ά
β¨ SYNOPSIS β¨
#include "bdd101.h"
bddnode βrestrictbddnode( BddSystem, BddNode, Variable, BddSubst )
bddsystem βBddSystem;
bddnode βBddNode;
bddvar Variable;
bddnode βBddSubst;
π PARAMETERS π
BddSystemβ the bdd system. the whole vibe container.BddNodeβ the bdd node. the main character we're operating on.Variableβ the variable to find. we're hunting her down.BddSubstβ the bdd to substitute with. the swap-in.
π DESCRIPTION π
okay so here's the tea β β restrictbddnode substitutes all the occurency of the variable Variable in the bdd node BddNode by the bdd node BddSubst, in the bdd system BddSystem.
if a null pointer is given, the default bdd system is used. classic default behaviour, we love her.
β οΈ important bestie: theBddSubstmust be a the nodeBddSystem->ONEorBddSystem->ZERO. that's it. those are the only two options. no improvising. π
π₯ RETURN VALUE π₯
restrictbddnode returns the resulting bdd node. she ate and left no crumbs π
π ERRORS π
"variable xxx out of range, error !"β theVariableparameter must be less or equal to theBddSystem->NUMBER_VARfield. don't push her past her limits."index xxx out of range, error !"β theBddSubstparameter must have its index less thanBDD_INDEX_MIN.
πΈ EXAMPLE πΈ
here's a whole little scenario, run it and feel something:
#include "bdd101.h"
bddsystem βBddSystem;
bddcircuit βBddCircuit;
bddnode βBddVariable;
bddnode βBddNode;
bddnode βBddSubst;
chain_list βExpr;
bddvar Variable;
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 );
BddSubst = BddSystem->ONE;
BddVariable = searchbddcircuitin( (bddcircuit β)0, "i0" );
Variable = getbddvarbyindex( (bddsystem β)0, BddVariable->INDEX );
BddNode = restrictbddnode( (bddsystem β)0, BddNode, Variable, BddSubst );
Expr = convertbddcircuitabl( BddCircuit, BddNode );
/* displays '1' */
viewablexpr( Expr, ABL_VIEW_VHDL );
freeablexpr( Expr );
destroybddsystem( (bddsystem β)0 );
destroybddcircuit( (bddcircuit β)0 );
see that /* displays '1' */? yeah. that's the payoff. β¨
π¦ 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. like genuinely, please, they're asking nicely, send the feedback π₯Ί
ASIM/LIP6 Β· October 1, 1997 Β· RESTRICTBDDNODE(3)
and that's the whole page bestie, dated October 1, 1997, from ASIM/LIP6, manual section 3 β periodt π ππ¦
π¦ where this page comes from
- fedora 43: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 43: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 44: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 44: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms