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

# GENLIB\_WIRE3(3)

place three physical segments in the current figure

## NAME

GENLIB\_WIRE3 - place three physical segments in the current figure

## SYNOPSYS

```
#include <genlib.h>
void GENLIB_WIRE3(layer, width, ins1, con1, index1, ins2, con2, index2, x1, y1, x2, y2)
char layer;
long width;
char ∗ins1, ∗con1, ∗ins2, ∗con2;
long x1, y1, x2, y2;
```

## PARAMETERS

- *layer*

  Layout layer of the segment

- *width*

  Width of the segment

- *ins1*

  Name of the instance in which the connector *con1* is to be looked for

- *con1*

  Name of a connector, or reference, used as first endpoint of the wire

- *ins2*

  Name of the instance in which the connector *con2* is to be looked for

- *con2*

  Name of a connector, or reference, used as last endpoint of the wire

- *x1, y1*

  Coordinates of the segment's first elbow endpoint in the current figure

- *x2, y2*

  Coordinates of the segment's second elbow endpoint in the current figure

## DESCRIPTION

**WIRE3** adds three segments made of the *layer* level in the current layout cell, the starting point beeing the connector, or reference, *con1* of the instance *ins1*, and the ending point beeing the connector, or reference, *con2* of the instance *ins1*. The first segment is drawn between the coordinates of *con1* in the current figure and *x1, y1*. The second one between *x1, y1* and *x2, y2*, and the last, but not the least, between *x2, y2* and the coordinates of *con2* in the current figure.

If the endpoints are connectors, the indexes *index1* and *index2* must respectivly refer to *con1* and *con2*. If they are references, then they are not taked care of. One shall notice that connectors and references of a given model should not share names if **WIRE3** is to be used.

The *layer* argument can take the following legal values :

- **NWELL**

  - **PWELL**

  - **NTIE**

  - **PTIE**

  - **NDIF**

  - **PDIF**

  - **NTRANS**

  - **PTRANS**

  - **POLY**

  - **ALU1**

  - **ALU2**

  - **ALU3**

  - **TPOLY**

  - **TALU1**

  - **TALU2**

  - **TALU3**

  ## ERRORS

**"GENLIB\_WIRE3 impossible : missing GENLIB\_DEF\_PHFIG"**

No figure has been yet specified by a call to **DEF\_PHFIG**. So it isn't possible to place an instance inside it. you must call **DEF\_PHFIG** before any other layout action.

**"illegal addphseg : x1, y1, x2, y2"**

A symbolic segment must be either vertical or horizontal, so either *x1 = x2*, or *y1 = y2*. Since **WIRE3** creates segments from relative coordinates, care must be taken to follow the previous rule.

**"GENLIB\_WIRE3 impossible : same name** *conX***, for connector and reference in** *insX***"**

The model of the instance *insX* has both a connector and a reference that matches the *conX* name. This is not legal since genlib doesn't know which one to choose as point.

**"illegal getphins : instance** *insX* **does not exist"**

The instance called *insX* does not currently belong to the figure.

## EXAMPLE

```
#include <genlib.h>
draw_wire(cellHeight)
long cellHeight;
{
	/* draw a wire made of 1, 2, or 3 segments, given from and to connectors
	   or reference, and the x and y coordinates of each elbow points */
	GENLIB_WIRE1(ALU1,1,"lastpg2","g2",1,"cabl31","sg",2);
	GENLIB_WIRE3(ALU1,1,"cabl31","sp",2, "celout2", "cin", 1,
			GENLIB_GET_CON_X("cabl31","sp",2),
			GENLIB_GET_CON_Y("cabl31","sp",2) + cellHeight / 2,
			GENLIB_GET_CON_X("celout2", "cin", 1),
			GENLIB_GET_CON_Y("cabl31","sp",2) + cellHeight / 2);
	GENLIB_WIRE1(POLY,1,"celout3","g",1,"celout2","co",0);
}
```

## SEE ALSO

[**genlib**(1)](/genlib/1.md), [**GENLIB\_DEF\_PHFIG**(3)](/GENLIB_DEF_PHFIG/3.md), [**GENLIB\_SAVE\_PHFIG**(3)](/GENLIB_SAVE_PHFIG/3.md), [**GENLIB\_COPY\_UP\_SEG**(3)](/GENLIB_COPY_UP_SEG/3.md), [**GENLIB\_PHSEG**(3)](/GENLIB_PHSEG/3.md), **GENLIB\_THRU\_H**(3), **GENLIB\_THRU\_CON\_H**(3), **GENLIB\_THRU\_V**(3), **GENLIB\_THRU\_CON\_V**(3), [**GENLIB\_WIRE1**(3)](/GENLIB_WIRE1/3.md), [**GENLIB\_WIRE2**(3)](/GENLIB_WIRE2/3.md).
