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

# ap(5)

Alliance physical format

## NAME

ap - Alliance physical format

## BNF DESCRIPTION

file ::=\
    version\
    header\
    connectors\
    segments\
    instances\
    transistors\
    patterns\
    end\_of\_file

version ::= 'V ALLIANCE 2.2 SETUP : ' version\_number

header ::= 'H ' name ',' file\_type ',' abindex ',' nb\_desc\
            ',' date ',' index\_beg ',' link\_mode ','\
            bounding\_box ',' \[ abutment\_box \]\
    /\* name         : name of the figure                   \*/\
    /\* file\_type    : type of the file                     \*/\
    /\* abindex      : index of the abutment box            \*/\
    /\* nb\_desc      : number of descriptors                \*/\
    /\* date         : saving file date                     \*/\
    /\* index\_beg    : index of the begining of the linkage \*/\
    /\* link\_mode    : indication on the linkage            \*/\
    /\*                (update or not)                      \*/\
    /\* bounding\_box : coordinates and size of the          \*/\
    /\*                bounding box                         \*/\
    /\* abutment\_box : coordinates and size, if defined,    \*/\
    /\*                of the abutment box                  \*/

connectors ::= { connector }

connector ::= 'C ' index ',' x ',' y ',' w ',' orientation\
               ',' layer ',' name ',' connector\_type ','\
               nextindex ',' endnet\
    /\* x, y, w  : coordinates and size of the connector    \*/\
    /\* orientation    : north, south, east, or west        \*/\
    /\* layer          : layer of the connector             \*/\
    /\* name           : name of the connector              \*/\
    /\* connector\_type : input or output or ...             \*/\
    /\* nextindex      : next index in the linkage          \*/\
    /\* endnet         : end in the linkage of the net      \*/

segments ::= { segment }

segment ::= 'S ' index ',' x ',' y ',' d ',' w ',' direction\
             ',' layer ',' name ',' nextindex ',' endnet\
    /\* x, y, d, w    : coordinates and size of the segment \*/\
    /\* direction     : horizontaly or verticaly            \*/\
    /\* layer         : layer of the segment                \*/\
    /\* name          : name of the segment                 \*/\
    /\* nextindex     : next index in the linkage           \*/\
    /\* endnet        : end in the linkage of the net       \*/

instances ::= { instance \[ connectors \] }\
    /\* In case of updated linkage, an instance is followed \*/\
    /\* by his connectors                                   \*/

instance ::= 'I ' index ',' x ',' y ',' instance\_name ','\
              model\_name ',' geoop ',' nextindex ',' endnet\
    /\* x, y           : coordinates of the instance        \*/\
    /\* instance\_name  : local name of the instance         \*/\
    /\* model\_name     : name of the model                  \*/\
    /\* geoop          : geometric operation                \*/\
    /\* nextindex      : next index in the linkage          \*/\
    /\* endnet         : end in the linkage of the net      \*/

transistors ::= { transistor }

transistor ::= 'T ' index ',' x ',' y ',' instance\_name ','\
                trans\_name ',' geoop ',' nextindex ',' endnet\
    /\* x, y           : coordinates of the transistor      \*/\
    /\* instance\_name  : name of the instance               \*/\
    /\* trans\_name     : generic name of the transistor     \*/\
    /\* geoop          : geometric operation                \*/\
    /\* nextindex      : next index in the linkage          \*/\
    /\* endnet         : end in the linkage of the net      \*/

patterns ::= { pattern }

pattern ::= 'M ' index ',' x ',' y ',' instance\_name ','\
             pattern\_name ',' int\_index ',' nextindex ','\
             endnet\
    /\* x, y          : coordinates of the pattern          \*/\
    /\* instance\_name : name of the instance of the pattern \*/\
    /\* pattern\_name  : name of the pattern                 \*/\
    /\* int\_index     : internal index of the pattern       \*/\
    /\* nextindex     : next index in the linkage           \*/\
    /\* endnet        : end in the linkage of the net       \*/

end\_of\_file ::= 'EOF'

version\_number ::= number

file\_type ::= 'P'

abindex ::= index

nb\_desc ::= number

date ::= day '/' month '/' year

index\_beg ::= index

index ::= number

link\_mode ::= 'A JOUR' \| 'PAS A JOUR'\
    /\* updated, not updated \*/

bounding\_box ::= x ',' y ',' dx ',' dy

abutment\_box ::= x ',' y ',' dx ',' dy

x ::= number

y ::= number

d ::= number\
    /\* lenght \*/

w ::= number\
    /\* width \*/

dx ::= number

dy ::= number

direction ::= 'H' \| 'V'\
    /\* horizontaly or verticaly \*/

orientation ::= 'NORD' \| 'SUD' \| 'EST' \| 'OUEST'\
    /\* North, south, east, west \*/

layer ::= 'POLY' \| 'ALU1' \| 'ALU2' \| 'DIFN' \| 'DIFP' \|\
           'T\_ALU1' \| 'T\_ALU2' \| 'CAISSON\_N' \| 'CAISSON\_P'\
    /\* poly       : polysilicium                           \*/\
    /\* alu1       : first metal                            \*/\
    /\* alu2       : second metal                           \*/\
    /\* difn       : N diffusion                            \*/\
    /\* difp       : P diffusion                            \*/\
    /\* t\_alu1     : first metal through route              \*/\
    /\* t\_alu2     : second metal through route             \*/\
    /\* caisson\_n  : N bulk                                 \*/\
    /\* caisson\_p  : P bulk                                 \*/

connector\_type ::= 'IN' \| 'OUT' \| 'INOUT'

nextindex ::= index

endnet ::= 'NON' \| 'FIN'\
    /\* non        : not the end of the net                 \*/\
    /\* fin        : end of the net                         \*/

model\_name ::= name

instance\_name ::= name

geoop ::= 'NOSYM' \| 'ROT\_P' \| 'ROT\_M' \| 'SYM\_X' \| 'SYM\_Y' \|\
           'SYMXY' \| 'SY\_RP' \| 'SY\_RM'\
    /\* nosym  : no operation                               \*/\
    /\* rot\_p  : rotates 90 degrees counter clockwise       \*/\
    /\* rot\_m  : rotates 90 degrees clockwise               \*/\
    /\* sym\_y  : y becomes -y                               \*/\
    /\* sym\_x  : x becomes -x                               \*/\
    /\* symxy  : x becomes -x and y becomes -y              \*/\
    /\* sy\_rp  : y becomes -y then rotates 90 degrees       \*/\
    /\*          counter clockwise                          \*/\
    /\* sy\_rm  : y becomes -y then rotates 90 degrees       \*/\
    /\*          clockwise                                  \*/

trans\_name ::= 'T' transistor\_type '\_' d '\_' w

pattern\_name ::= 'CONT\_POLY' \| 'CONT\_DIF\_N' \| 'CONT\_DIF\_P' \|\
                  'CONT\_VIA' \| 'C\_X\_N' \| 'C\_X\_P' \| 'REF\_CON'\
                  \| 'REF\_REF'\
    /\* cont\_poly  : poly alu1 contact                      \*/\
    /\* cont\_dif\_n : alu1 difn contact                      \*/\
    /\* cont\_dif\_p : alu1 difp contact                      \*/\
    /\* cont\_via   : alu2 alu1 contact                      \*/\
    /\* c\_x\_n      : L shaped N transistor corner filling   \*/\
    /\* c\_x\_p      : L shaped P transistor corner filling   \*/\
    /\* ref\_con    : kind of reference, for multi-acces     \*/\
    /\*              connectors                             \*/\
    /\* ref\_ref    : kind of reference, for all other uses  \*/

int\_index ::= index

transistor\_type ::= 'P' \| 'N'

number ::= { '0' \| '1'\| '2' \| '3' \| '4' \| '5' \|\
              '6' \| '7'\| '8' \| '9' }

name ::= word

## EXAMPLES

### Example 1

This example is the physical design of a nand with two input. See example 1 in the description of alc logical format for more details.

```
V ALLIANCE 2.2 SETUP : 2
H na2_y,P,10,66,25/10/91,-1,PAS A JOUR,0,0,28,53,5,3,18,42
C 0,20,45,2,NORD,ALU2,i0,INOUT,-1,FIN
C 1,14,45,2,NORD,ALU2,f,INOUT,-1,FIN
C 2,8,45,2,NORD,ALU2,i1,INOUT,-1,FIN
C 3,20,3,2,SUD,ALU2,i0,INOUT,-1,FIN
C 4,14,3,2,SUD,ALU2,f,INOUT,-1,FIN
C 5,8,3,2,SUD,ALU2,i1,INOUT,-1,FIN
C 6,23,43,8,EST,ALU1,vdd,INOUT,-1,FIN
C 7,5,43,8,OUEST,ALU1,vdd,INOUT,-1,FIN
C 8,5,5,8,OUEST,ALU1,vss,INOUT,-1,FIN
C 9,23,5,8,EST,ALU1,vss,INOUT,-1,FIN
S 11,5,5,18,8,H,ALU1,vss,-1,FIN
S 12,8,2,12,2,H,DIFP,*,-1,FIN
S 13,8,27,11,3,V,DIFP,*,-1,FIN
S 14,20,27,11,3,V,DIFP,*,-1,FIN
S 15,20,22,6,2,V,ALU1,*,-1,FIN
S 16,19,22,1,2,H,ALU1,*,-1,FIN
S 17,5,43,18,8,H,ALU1,vdd,-1,FIN
S 18,8,33,10,2,V,ALU1,vdd,-1,FIN
S 19,8,22,6,2,V,ALU1,*,-1,FIN
S 20,8,22,1,2,H,ALU1,*,-1,FIN
S 21,14,30,5,2,V,ALU1,*,-1,FIN
S 22,14,13,17,1,V,ALU1,*,-1,FIN
S 23,14,13,6,1,H,ALU1,*,-1,FIN
S 24,17,22,2,2,H,POLY,*,-1,FIN
S 25,17,20,5,1,V,POLY,*,-1,FIN
S 26,9,22,2,2,H,POLY,*,-1,FIN
S 27,11,20,5,1,V,POLY,*,-1,FIN
S 28,8,45,12,2,H,DIFN,*,-1,FIN
S 29,5,39,18,26,H,CAISSON_N,*,-1,FIN
S 30,8,7,11,3,V,DIFN,*,-1,FIN
S 31,8,3,42,2,V,ALU2,i1,-1,FIN
S 32,14,3,42,2,V,ALU2,f,-1,FIN
S 33,14,27,11,3,V,DIFP,*,-1,FIN
S 34,20,7,11,3,V,DIFN,*,-1,FIN
S 35,14,7,11,3,V,DIFN,*,-1,FIN
S 36,20,3,42,2,V,ALU2,i0,-1,FIN
T 37,17,5,*,TN_15_1,NOSYM,-1,FIN
T 38,11,5,*,TN_15_1,NOSYM,-1,FIN
T 39,17,25,*,TP_15_1,NOSYM,-1,FIN
T 40,11,25,*,TP_15_1,NOSYM,-1,FIN
S 41,20,43,2,1,V,ALU1,vdd,-1,FIN
S 42,8,45,12,1,H,ALU1,vdd,-1,FIN
S 43,20,33,10,2,V,ALU1,vdd,-1,FIN
S 44,8,2,11,2,V,ALU1,vss,-1,FIN
S 45,8,2,12,2,H,ALU1,vss,-1,FIN
M 46,20,37,*,CONT_DIF_P,2,-1,FIN
M 47,8,37,*,CONT_DIF_P,2,-1,FIN
M 48,14,45,*,CONT_DIF_N,1,-1,FIN
M 49,14,2,*,CONT_DIF_P,2,-1,FIN
M 50,8,13,*,CONT_DIF_N,1,-1,FIN
M 51,20,13,*,CONT_DIF_N,1,-1,FIN
M 52,8,33,*,CONT_DIF_P,2,-1,FIN
M 53,20,33,*,CONT_DIF_P,2,-1,FIN
M 54,9,22,*,CONT_POLY,0,-1,FIN
M 55,19,22,*,CONT_POLY,0,-1,FIN
M 56,8,28,*,CONT_VIA,3,-1,FIN
M 57,20,28,*,CONT_VIA,3,-1,FIN
M 58,14,22,*,CONT_VIA,3,-1,FIN
M 59,8,8,*,CONT_DIF_N,1,-1,FIN
M 60,20,2,*,CONT_DIF_P,2,-1,FIN
M 61,8,2,*,CONT_DIF_P,2,-1,FIN
M 62,20,45,*,CONT_DIF_N,1,-1,FIN
M 63,8,45,*,CONT_DIF_N,1,-1,FIN
M 64,14,29,*,CONT_DIF_P,2,-1,FIN
M 65,14,35,*,CONT_DIF_P,2,-1,FIN
EOF
```

### Example 2

This example is the physical design of a small circuit including three nand.

```
V ALLIANCE 2.2 SETUP : 2
H test_nand,P,-1,57,12/ 4/92,10,A JOUR,3,1,61,60,
C 0,12,2,2,SUD,ALU2,a,IN,8,FIN
C 1,24,2,2,SUD,ALU2,b,IN,21,FIN
C 2,30,2,2,SUD,ALU2,c,IN,19,FIN
C 3,42,2,2,SUD,ALU2,d,IN,31,FIN
C 4,54,2,2,SUD,ALU2,s,OUT,36,FIN
C 5,4,47,1,EST,ALU1,vdd,IN,39,FIN
C 6,4,8,1,EST,ALU1,vss,IN,7,FIN
I 7,9,7,I1,na2_y,NOSYM,33,FIN
C 8,24,49,2,NORD,ALU2,i0,INOUT,11,NON
C 9,18,49,2,NORD,ALU2,f,INOUT,18,FIN
C 10,12,49,2,NORD,ALU2,i1,INOUT,13,NON
C 11,24,7,2,SUD,ALU2,i0,INOUT,41,NON
C 12,18,7,2,SUD,ALU2,f,INOUT,9,NON
C 13,12,7,2,SUD,ALU2,i1,INOUT,40,NON
C 14,27,47,8,EST,ALU1,vdd,INOUT,15,NON
C 15,9,47,8,OUEST,ALU1,vdd,INOUT,46,NON
C 16,9,9,8,OUEST,ALU1,vss,INOUT,45,NON
C 17,27,9,8,EST,ALU1,vss,INOUT,16,NON
I 18,27,7,I2,na2_y,NOSYM,35,FIN
C 19,42,49,2,NORD,ALU2,i0,INOUT,22,NON
C 20,36,49,2,NORD,ALU2,f,INOUT,29,FIN
C 21,30,49,2,NORD,ALU2,i1,INOUT,24,NON
C 22,42,7,2,SUD,ALU2,i0,INOUT,43,NON
C 23,36,7,2,SUD,ALU2,f,INOUT,20,NON
C 24,30,7,2,SUD,ALU2,i1,INOUT,42,NON
C 25,45,47,8,EST,ALU1,vdd,INOUT,26,NON
C 26,27,47,8,OUEST,ALU1,vdd,INOUT,14,NON
C 27,27,9,8,OUEST,ALU1,vss,INOUT,17,NON
C 28,45,9,8,EST,ALU1,vss,INOUT,27,NON
I 29,45,7,I3,na2_y,NOSYM,-1,FIN
C 30,60,49,2,NORD,ALU2,i0,INOUT,52,NON
C 31,54,49,2,NORD,ALU2,f,INOUT,34,NON
C 32,48,49,2,NORD,ALU2,i1,INOUT,51,NON
C 33,60,7,2,SUD,ALU2,i0,INOUT,30,NON
C 34,54,7,2,SUD,ALU2,f,INOUT,44,NON
C 35,48,7,2,SUD,ALU2,i1,INOUT,32,NON
C 36,63,47,8,EST,ALU1,vdd,INOUT,37,NON
C 37,45,47,8,OUEST,ALU1,vdd,INOUT,25,NON
C 38,45,9,8,OUEST,ALU1,vss,INOUT,28,NON
C 39,63,9,8,EST,ALU1,vss,INOUT,38,NON
S 40,12,2,5,2,V,ALU2,*,0,NON
S 41,24,2,5,2,V,ALU2,*,1,NON
S 42,30,2,5,2,V,ALU2,*,2,NON
S 43,42,2,5,2,V,ALU2,*,3,NON
S 44,54,2,5,2,V,ALU2,*,4,NON
S 45,4,8,5,1,H,ALU1,*,6,NON
S 46,4,47,5,1,H,ALU1,*,5,NON
S 47,18,55,42,1,H,ALU1,x,53,NON
S 48,36,60,12,1,H,ALU1,y,54,NON
S 49,18,49,6,2,V,ALU2,*,12,NON
S 50,36,49,11,2,V,ALU2,*,23,NON
S 51,48,49,11,2,V,ALU2,*,55,NON
S 52,60,49,6,2,V,ALU2,*,56,NON
M 53,18,55,*,CONT_VIA,3,49,NON
M 54,36,60,*,CONT_VIA,3,50,NON
M 55,48,60,*,CONT_VIA,3,48,NON
M 56,60,55,*,CONT_VIA,3,47,NON
EOF
```
