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

# GENLIB\_PHCON(3)

place a physical connector in the current figure at absolute coordinates

## NAME

GENLIB\_PHCON - place a physical connector in the current figure at absolute coordinates

## SYNOPSYS

```
#include <genlib.h>
void GENLIB_PHCON(layer, width, name, orient, x, y)
char layer;
long width;
char ∗name, orient;
long x, y;
```

## PARAMETERS

- *layer*

  Layout layer of the connector

- *width*

  Width of the connector

- *name*

  Name to be given to the connector

- *orient*

  Face of the cell on witch the connector belongs

- *x, y*

  Absolute coordinates of the connector

## DESCRIPTION

**PHCON** adds a connector in the current layout cell, at the specified coordinates, with the given attributs. 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**

  The name argument is not enough of an information to non ambigiously identify a connector. In order to be able to do so, an *index* is computed for each connector that has an already existing name, following a topological order. Each time a connector is created, the *index* is updated, regarding the name of the connector. Since someone writting a tiler needs to know exactly what connector to access, the indexation algorithm must be known by the user.

- Connectors with a unique name:

  Such connectors have the index **0**

- Connectors with a name apearing many times:

  The indexes are computed from left to right, and then from bottom to top, starting at **0**.  If two connectors are on the same location, with the same name, then the *layer* decides which one is has the greater number, from lower level, **NWELL** to upper level, **ALU3**.

The *orient* paramater may take the following values:

- **NORTH**

  for a connector placed on the top of the cell.

- **SOUTH**

  for a connector placed on the bottom of the cell.

- **EAST**

  for a connector placed on the right side of the cell.

- **WEST**

  for a connector placed on the left side of the cell.

- Remark:

  Connectors placed on corners of leaf cells are given the **EAST** orientation if on top/right or bottom/right corner, and **WEST** if top/left or bottom/left.

## ERRORS

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

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

**"illegal addphcon : orientation is XX in** *name***"**

The *orient* parameter does not have a legal value, but *XX*.

## EXAMPLE

```
#include <genlib.h>
main()
{
	/∗ Create a figure to work on  ∗/
	GENLIB_DEF_PHFIG("cell");
	.
	.
	.
	GENLIB_DEF_AB(0L, 0L, 0L, 0L);
	/∗ Put a connector ∗/
	GENLIB_PHCON(ALU1, 1, "cin", SOUTH, 12L, 0L);
	/∗ Save that on disk ∗/
	GENLIB_SAVE_PHFIG();
}
```

## 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\_ALL\_CON**(3)](/GENLIB_COPY_UP_ALL_CON/3.md), [**GENLIB\_COPY\_UP\_CON**(3)](/GENLIB_COPY_UP_CON/3.md), [**GENLIB\_COPY\_UP\_CON\_FACE**(3)](/GENLIB_COPY_UP_CON_FACE/3.md), **GENLIB\_THRU\_CON\_H**(3), **GENLIB\_THRU\_CON\_V**(3).
