---
name: "convertbddmuxabl"
section: "3"
platform: "linux"
package: "alliance"
version: "5.1.1-3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/convertbddmuxabl"
---

# convertbddmuxabl(3)

converts two bdd nodes to an abl multiplexor expression.

## NAME

convertbddmuxabl - converts two **bdd** nodes to an **abl** multiplexor expression.

## SYNOPSYS

```
#include "bdd101.h"
chain_list *convertbddmuxabl( BddSystem, NameArray, IndexArray, Equation, BddHigh, BddLow )
  bddsystem  ΒddSystem;
  char      (*NameArray;
  bddindex   ΙndexArray;
  chain_list Εquation;
  bddnode    ΒddHigh;
  bddnode    ΒddLow;
```

## PARAMETERS

- *BddSystem*

  The **bdd** system.

- *NameArray*

  The array of names.

- *IndexArray*

  The array of indexes.

- *Equation*

  The multiplexor command.

- *BddHigh*

  The first **bdd** node.

- *BddLow*

  The second **bdd** node.

## DESCRIPTION

**convertbddmuxabl** creates the following **abl** expression ( *BddHigh* AND *Equation* ) OR ( *BddLow* AND (NOT *Equation* ) ) in the **bdd** system *BddSystem*. If a null pointer is given, the default **bdd** system is used. The *NameArray*, and *IndexArray* parameters are used to translate the variable nodes into atomic expressions. The array *NameArray* is list of names. The array *IndexArray* does the correspondence between a **bdd** node  index and a slot in the *NameArray*. If the *IndexArray* parameter is a null pointer, then the name of the **bdd** index BDD\_INDEX\_MIN is assumed to be the first slot of the *NameArray*, and so on.\

## RETURN VALUE

**convertbddmuxabl** returns a pointer to the **abl** expression translated.

## EXAMPLE

```
#include "bdd101.h"
   bddsystem  ∗BddSystem;
   bddnode    ∗BddNode1;
   bddnode    ∗BddNode2;
   chain_list ∗Expr;
   char       ∗NameArray[ 2 ];
   BddSystem = createbddsystem( 100, 1000, 100, 50000 );
   BddNode1  = addbddvarlast( BddSystem );
   BddNode2  = addbddvarlast( BddSystem );
   NameArray[ 0 ] = namealloc( "i0" );
   NameArray[ 1 ] = namealloc( "i1" );
   Expr = convertbddmuxabl( BddSystem, NameArray, (bddindex ∗)0,
                            createablatom( "C" ),  BddNode1, BddNode2 );
   /* displays (i0 and C) or (i1 and (not C)) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem ∗)0 );
```

## SEE ALSO

[**bdd**(1)](/bdd/1.md), [**abl**(1)](/abl/1.md).
