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

# addloins(3)

create a logical instance

## NAME

addloins - create a logical instance

## SYNOPSYS

```
#include "mlo.h"
loins_list ∗addloins(ptfig, insname, ptmodel, sigchain)
lofig_list ∗ptfig;
char ∗insname;
lofig_list ∗ptmodel;
chain_list ∗sigchain;
```

## PARAMETERS

- *ptfig*

  Pointer to the figure in which the instance should be added

- *insname*

  Instance name

- *ptmodel*

  Pointer to the instance model

- *sigchain*

  Pointer to chain list of signal pointers

## DESCRIPTION

**addloins** creates a new instance, and adds it to the list of instances pointed to by *ptfig-\>LOINS*. The new instance is  added in front of the list, and becomes itself the list head.\
 The parameter *insname* fills the *INSNAME* field of the *loins* structure.\
 The *ptmodel* is used for two purposes. First, the *ptmodel-\>NAME* fills the *FIGNAME* field. Second, the connectors of the figure pointed to by *ptmodel* are duplicated in the *LOCON* field, but the signals linked to each connector are the one given in the *sigchain* argument. See [**chain**(3)](/chain/3.md) for details on **chain\_list**s.\
 The matching is done in order, it means that the first connector is linked to the first signal of the *sigchain*, and so on. Care must be taken when instanciating in order to warranty the validity of the netlist. For details on the structure, see [**loins**(3)](/loins/3.md).

## RETURN VALUE

**addloins** returns a pointer to the newly created instance.

## ERRORS

**"∗∗∗ mbk error ∗∗∗ addloins impossible : instance** *insname* **already**  **exist in figure** *ptfig-\>NAME***"**

The *insname* is the instance identifier. So it must be unique at a given hierarchy level.

**"∗∗∗ mbk error ∗∗∗ addloins impossible : instance model is the**  **figure** *figname* **itself"**

The model of the instance has the same name that the figure where the instantiation takes place. This check is only performed for a single hierarchy level, in terms of its instances.

**"∗∗∗ mbk error ∗∗∗ addloins impossible : connector number discrepancy** **between figure** *ptmodel-\>NAME* **and instance** *insname* **in figure** *ptfig-\>NAME***"**

The number of signals in the *sigchain* is not equal to the number of connectors of the model. The matching is not done correctly.

## EXAMPLE

```
#include "mlo.h"
void add_na2_y(pt, in1, in2, out) /∗ add an instance of na2_y ∗/
lofig_list ∗pt; /∗ pointer to the figure ∗/
long in1, in2, out; /∗ signals indexes ∗/
{
chain_list ∗signal = NULL;
	/∗ get the pointer when signal index is known ∗/
	signal = addchain(signal, (void ∗)givelosig(pt, in1));
	signal = addchain(signal, (void ∗)givelosig(pt, in2));
	signal = addchain(signal, (void ∗)givelosig(pt, out));
	/∗ get vdd and vss ∗/
	signal = addchain(signal, (void ∗)give_vdd(pt));
	signal = addchain(signal, (void ∗)give_vss(pt));
	/∗ reverse the list ∗/
	signal = reverse(signal);
	addloins(pt, "nand", getlofig("na2_y"), signal);
}
```

## SEE ALSO

**mbk**(1), [**lofig**(3)](/lofig/3.md), [**loins**(3)](/loins/3.md), [**chain**(3)](/chain/3.md), [**getloins**(3)](/getloins/3.md), [**delloins**(3)](/delloins/3.md).
