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

# DPGEN\_NAND2MASK(3)

Programmable Mask Macro-Generator

## NAME

DPGEN\_NAND2MASK - Programmable Mask Macro-Generator

## SYNOPSIS

**#include  \<genlib.h\>**

**void GENLIB\_MACRO (DPGEN\_NAND2MASK, char \****modelname***, long** *flags***, long** *N***, char \****constVal***);**

## DESCRIPTION

Generate a *N* bits conditionnal NAND mask named *modelname*.

How it works :

- •

  if the cmd signal is set to '0', the mask is NOT applied, so the whole operator behave like an inverter.

- •

  if the cmd signal is set to '1', the mask IS applied, the output is the **complemented** result of the input value **ANDed** with the mask (suplied by *constVal*).

The constant *constVal* is given to the macro-generator call, therefore the value cannot be changed afterward : it's hard wired in the operator.

A common error is to give a real C constant for the *constVal* argument. Be aware that it is a character string.

### TERMINAL NAMES

- 1\.

  cmd : mask control (1 bit).

- 2\.

  i0 : input (*N* bits).

- 3\.

  q : output (*N* bits).

- 4\.

  vdd : power.

- 5\.

  vss : ground.

### BEHAVIOR

```
nq <= WITH cmd SELECT not(i0)                 WHEN '0',
                      not(i0 and X"0000FFFF") WHEN '1';
```

## EXAMPLE

```
GENLIB_MACRO(DPGEN_NAND2MASK, "model_nand2mask_0000FFFF_32"
                            , F_BEHAV|F_PLACE
                            , 32
                            , "0x0000FFFF" /* A string! */
                            );
GENLIB_LOINS( "model_nand2mask_0000FFFF_32"
            , "instance1_nand2mask_32"
            , "cmd"
            , "i0[31:0]"
            ,  "q[31:0]"
            , "vdd", "vss", NULL
            );
```

## SEE ALSO

[**GENLIB\_MACRO**(3)](/GENLIB_MACRO/3.md), [**genlib**(1)](/genlib/1.md)
