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

# lofigchain(3)

creates a netlist in terms of connectors on signals

## NAME

lofigchain - creates a netlist in terms of connectors on signals

## SYNOPSYS

```
#include "mlo.h"
void lofigchain(ptfig)
lofig_list ∗ptfig;
```

## PARAMETER

- *ptfig*

  Pointer to a lofig\_list

## DESCRIPTION

The **lofigchain** function creates the dual representation of natural mbk netlists. In mbk, netlists are described in terms of signal attached to connectors. With **lofigchain**, one can have the dual sight : connectors attached to signals. This can be very useful, depending on the application, but it's also memory consuming on big netlists, since two views of the same thing are present in memory at the same time.

The information resulting of a call to **lofigchain** is present in the *USER* field of all signals of the figure, accessible through *ptfig-\>LOSIG*. The *USER* field has a **ptype** typed *LOFIGCHAIN*, that points on a **chain\_list** whose *DATA* points on each **locon** beeing connected to the given signal.

## ERROR

**"∗∗∗ mbk error ∗∗∗ lofigchain impossible : figure** *ptfig-\>NAME* **is** **interface only"**

In order to be valid, the netlist resulting of a call to **lofigchain** must be done on a figure entirely loaded in ram. See **getlofig** for details.

## EXAMPLE

```
#include "mut.h"
#include "mlo.h"
void print_netlist(p)
lofig_list ∗p;
{
losig_list ∗s;
chain_list ∗c;
	lofigchain(p);
	for (s = p->LOSIG; s; s = s->NEXT){
		(void)fprintf(stdout, "signal : index = %ld name = %s\n",
				s->INDEX, getsigname(s));
		c = (chain_list ∗)(getptype(s->USER, (long)LOFIGCHAIN)->DATA);
		while (c) {
			fprintf(stdout, "conname : %s\n",
				(locon_list ∗)(c->DATA)->NAME);
			c = c->NEXT;
		}
	}
}
```

## SEE ALSO

**mbk**(1), [**lofig**(3)](/lofig/3.md), [**locon**(3)](/locon/3.md), [**losig**(3)](/losig/3.md), [**getlofig**(3)](/getlofig/3.md), [**loadlofig**(3)](/loadlofig/3.md).
