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

# GENLIB\_PLACE\_SEG\_REF(3)

put a segment on a reference belonging an instance in the current figure

## NAME

GENLIB\_PLACE\_SEG\_REF - put a segment on a reference belonging an instance in the current figure

## SYNOPSYS

```
#include <genlib.h>
void GENLIB_PLACE_SEG_REF(insname, refname, layer, width, face)
char  ∗insname, ∗refname;
char layer, face;
long width;
```

## PARAMETERS

- *insname*

  Name of the instance in the which the reference is to be searched for

- *refname*

  Name of the reference to be used for the segment placement

- *layer*

  Physical layer of the segment

- *width*

  Width of the segment

- *face*

  Face of the figure on which the segment is to be placed

## DESCRIPTION

**PLACE\_SEG\_REF** places a segment regarding the position of the reference, *refname*, in the instance called *insname*. The segment coordinates are computed from the reference coordinates and the face given as argument.\
 Two behaviours are expected, regarding the reference coordinates:

- the reference is on the given face of the *abutment box*

  the segment is not added, since it would have zero as length

- the reference is anywhere else

  A segment is drawn between the reference and the *abutment box*,  and is given *layer* and *width* as attributs. One of its endpoint is given by the reference coordinates, the other one comes from the *face*. The *face* argument is meant in the placed instance, and can take any of the following values:

- **NORTH**

  the other endpoint has, for absissa, the x coordinate of the top of the *abutment box* of the cell, and for ordinate, the y coordinate of the reference.

- **SOUTH**

  the other endpoint has, for absissa, the x coordinate of the bottom of the *abutment box* of the cell, and for ordinate, the y coordinate of the reference.

- **EAST**

  the other endpoint has, for absissa, the x coordinate of the reference and for ordinate, the y coordinate of the right of the *abutment box* of the cell.

- **WEST**

  the other endpoint has, for absissa, the x coordinate of the reference and for ordinate, the y coordinate of the left of the *abutment box* of the cell.

## ERRORS

**"GENLIB\_PLACE\_SEG\_REF 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 reference inside it. you must call **DEF\_PHFIG** before any other layout action.

**"GENLIB\_PLACE\_SEG\_REF 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 reference inside it. you must call **DEF\_PHFIG** before any other layout action.

**"GENLIB\_PLACE\_SEG\_REF impossible : no abutment box"**

The current figure does not have an *abutment box. Use DEF\_AB(3)* *before this function.*

**"illegal GENLIB\_PLACE\_SEG\_REF : orientation is XX"**

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

**"illegal getphins : instance called** *insname* **does not exist"**

No instance called *insname* exists in the current figure

**"illegal getphref : references called** *refname* **does not exist"**

No reference called *refname* exists in the model of the instance *insname*.

## EXAMPLE

```
#include <genlib.h>
main()
{
	/∗ Create a figure to work on  ∗/
	GENLIB_DEF_PHFIG("cell");
	GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
	/∗ Put a reference ∗/
	GENLIB_PLACE_SEG_REF("r1", "a_0", ALU2, 2, NORTH);
	/∗ 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\_PHREF**(3)](/GENLIB_PHREF/3.md), [**GENLIB\_PHSEG**(3)](/GENLIB_PHSEG/3.md), [**GENLIB\_COPY\_UP\_REF**(3)](/GENLIB_COPY_UP_REF/3.md), [**GENLIB\_COPY\_UP\_ALL\_REF**(3)](/GENLIB_COPY_UP_ALL_REF/3.md), [**GENLIB\_PLACE\_SEG\_REF**(3)](/GENLIB_PLACE_SEG_REF/3.md), [**GENLIB\_PLACE\_SEG\_REF**(3)](/GENLIB_PLACE_SEG_REF/3.md), [**GENLIB\_PLACE\_SEG\_REF**(3)](/GENLIB_PLACE_SEG_REF/3.md).
