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

# phfig(3)

mbk physical figure

## NAME

phfig - mbk physical figure

## DESCRIPTION

The **phfig** is used to describe a hierarchical level of a *symbolic layout* and may contain any of the legal physical objects needed for a layout but a **phfig**. All coordinates are *symbolic* and therefor put on a virtual grid in booth x and y directions.

The declarations needed to work on **phfig** are available in the header file *"/labo/include/mph402.h"*, where '*402*' is the actual mbk version.

The following C structure supports the description of the layout view :

```
typedef struct phfig {
	struct phfig	∗NEXT;
	struct chain	∗MODELCHAIN;
	struct phseg	∗PHSEG;
	struct phvia	∗PHVIA;
	struct phref	∗PHREF;
	struct phins	∗PHINS;
	struct phcon	∗PHCON;
	char	∗NAME;
	char	MODE;
	long	XAB1, YAB1, XAB2, YAB2;
	struct ptype	∗USER;
} phfig_list;
```

- *NEXT*

  Pointer to the next **phfig** present in ram.

- *NAME*

  Name of the figure. It identifies a figure (or *model*), so it should be unique in order to warranty consistency of cells libraries. In order to ensure this consistency, the *NAME* field must be filled with the disk file name while parsing, and must be used as file name for driving.

- *PHINS*

  Pointer to the head of the list of instances being used for the model  description. See [**phins**(3)](/phins/3.md) for details.

- *PHCON*

  Pointer to the head of the list of connectors (terminals) of the model. See [**phcon**(3)](/phcon/3.md) for details.

- *PHSEG*

  Pointer to the head of the list of segments (wires) of the model. See [**phseg**(3)](/phseg/3.md) for details.

- *PHVIA*

  Pointer to the head of the list of contacs and vias of the model. See [**phvia**(3)](/phvia/3.md) for details.

- *PHREF*

  Pointer to the head of the list of references of the model. See [**phref**(3)](/phref/3.md) for details.

- *XAB1, YAB1, XAB2, YAB2*

  Coordinates of the bottom left corner of the *abutment box* of the figure. The *abutment box* of a model represents the external visibility of a figure and is what reference is made to when instanciating the model. One should well distinguish the *abutment box* from the *bounding box*, which is the smallest rectangle that includes all cell descriptors. The size and position of the *abutment box* is a designer concern, and cannot be computed.

- *MODE*

  Caracter indicating the status of the figure in memory. This field can take two values :

  - **´A´**

    all the cell is loaded in ram.

  - **´P´**

    only information concerning the model interface is present, that means connectors and the *abutment box*. All other lists are empty.

- *MODELCHAIN*

  Pointer to a chain list, see [**chain**(3)](/chain/3.md) for details, of names. These are the names of the models that are at least instanciated once in the figure.

- *USER*

  Pointer to a ptype list, see [**ptype**(3)](/ptype/3.md) for details,  that is a general purpose pointer used to share informations on the model.

- Remark :

  mbk's physical view of a cell is releted to it's logical view by means  of connector names, that must be identical.

## SEE ALSO

**mbk**(1), [**addphfig**(3)](/addphfig/3.md), [**getphfig**(3)](/getphfig/3.md), [**delphfig**(3)](/delphfig/3.md), **[loadphfig(3)](/loadphfig/3.md),** [**savephfig**(3)](/savephfig/3.md), [**phins**(3)](/phins/3.md), [**phvia**(3)](/phvia/3.md), [**phcon**(3)](/phcon/3.md), [**phseg**(3)](/phseg/3.md), [**phref**(3)](/phref/3.md), [**ptype**(3)](/ptype/3.md), [**lofig**(3)](/lofig/3.md).
