[qflow] 13/16: Added files for support of OSU018 (for TSMC). Also: Corrected the BLIF-to-verilog conversion so that trailing brackets <*> are converted back into verilog syntax square brackets [*] but brackets in the middle created by multi-dimensional arrays are replaced with underscores. The result appears to be compatible with gate-level simulations in Icarus verilog.
Ruben Undheim
rubund-guest at moszumanska.debian.org
Thu Jul 23 08:22:48 UTC 2015
This is an automated email from the git hooks/post-receive script.
rubund-guest pushed a commit to tag upstream/1.1.7
in repository qflow.
commit fe6d7d92178fd289c1d7318e44a5b67a3f9bbe19
Author: Tim Edwards <tim at opencircuitdesign.com>
Date: Tue Jun 9 11:27:53 2015 -0400
Added files for support of OSU018 (for TSMC). Also: Corrected
the BLIF-to-verilog conversion so that trailing brackets <*>
are converted back into verilog syntax square brackets [*] but
brackets in the middle created by multi-dimensional arrays are
replaced with underscores. The result appears to be compatible
with gate-level simulations in Icarus verilog.
---
config.log | 13 +-
config.status | 5 +-
configure | 5 +-
configure.in | 2 +-
src/blif2Verilog.c | 36 +-
tech/Makefile | 2 +-
tech/Makefile.in | 2 +-
tech/osu018/Makefile | 41 +
tech/osu018/Makefile.in | 41 +
tech/osu018/SCN6M_DEEP.09.tech | 11605 ++++++++++++++++++++++++++++++++++++++
tech/osu018/osu018.magicrc.in | 15 +
tech/osu018/osu018.par | 67 +
tech/osu018/osu018.prm | 26 +
tech/osu018/osu018.sh | 72 +
tech/osu018/osu018_stdcells.lef | 2935 ++++++++++
tech/osu018/osu018_stdcells.lib | 6141 ++++++++++++++++++++
tech/osu018/osu018_stdcells.sp | 803 +++
tech/osu018/osu018_stdcells.v | 1050 ++++
tech/osu035/osu035_stdcells.lef | 4 -
tech/osu050/osu050_stdcells.lef | 3 -
20 files changed, 22834 insertions(+), 34 deletions(-)
diff --git a/config.log b/config.log
index 43e8fcd..086d8e9 100644
--- a/config.log
+++ b/config.log
@@ -213,12 +213,13 @@ generated by GNU Autoconf 2.69. Invocation command line was
on stravinsky
-config.status:755: creating Makefile
-config.status:755: creating scripts/Makefile
-config.status:755: creating src/Makefile
-config.status:755: creating tech/Makefile
-config.status:755: creating tech/osu035/Makefile
-config.status:755: creating tech/osu050/Makefile
+config.status:756: creating Makefile
+config.status:756: creating scripts/Makefile
+config.status:756: creating src/Makefile
+config.status:756: creating tech/Makefile
+config.status:756: creating tech/osu050/Makefile
+config.status:756: creating tech/osu035/Makefile
+config.status:756: creating tech/osu018/Makefile
## ---------------- ##
## Cache variables. ##
diff --git a/config.status b/config.status
index 32de38c..99edcb4 100755
--- a/config.status
+++ b/config.status
@@ -393,7 +393,7 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
"
# Files that config.status was made for.
-config_files=" Makefile scripts/Makefile src/Makefile tech/Makefile tech/osu035/Makefile tech/osu050/Makefile"
+config_files=" Makefile scripts/Makefile src/Makefile tech/Makefile tech/osu050/Makefile tech/osu035/Makefile tech/osu018/Makefile"
ac_cs_usage="\
\`$as_me' instantiates files and other configuration actions
@@ -522,8 +522,9 @@ do
"scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
"src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
"tech/Makefile") CONFIG_FILES="$CONFIG_FILES tech/Makefile" ;;
- "tech/osu035/Makefile") CONFIG_FILES="$CONFIG_FILES tech/osu035/Makefile" ;;
"tech/osu050/Makefile") CONFIG_FILES="$CONFIG_FILES tech/osu050/Makefile" ;;
+ "tech/osu035/Makefile") CONFIG_FILES="$CONFIG_FILES tech/osu035/Makefile" ;;
+ "tech/osu018/Makefile") CONFIG_FILES="$CONFIG_FILES tech/osu018/Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
diff --git a/configure b/configure
index 5d712c0..2311cdc 100755
--- a/configure
+++ b/configure
@@ -4215,7 +4215,7 @@ fi
-ac_config_files="$ac_config_files Makefile scripts/Makefile src/Makefile tech/Makefile tech/osu035/Makefile tech/osu050/Makefile"
+ac_config_files="$ac_config_files Makefile scripts/Makefile src/Makefile tech/Makefile tech/osu050/Makefile tech/osu035/Makefile tech/osu018/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -4927,8 +4927,9 @@ do
"scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
"src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
"tech/Makefile") CONFIG_FILES="$CONFIG_FILES tech/Makefile" ;;
- "tech/osu035/Makefile") CONFIG_FILES="$CONFIG_FILES tech/osu035/Makefile" ;;
"tech/osu050/Makefile") CONFIG_FILES="$CONFIG_FILES tech/osu050/Makefile" ;;
+ "tech/osu035/Makefile") CONFIG_FILES="$CONFIG_FILES tech/osu035/Makefile" ;;
+ "tech/osu018/Makefile") CONFIG_FILES="$CONFIG_FILES tech/osu018/Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
diff --git a/configure.in b/configure.in
index e53d520..6a5b62b 100644
--- a/configure.in
+++ b/configure.in
@@ -164,7 +164,7 @@ fi
AC_SUBST(HAVE_YOSYS)
-AC_OUTPUT(Makefile scripts/Makefile src/Makefile tech/Makefile tech/osu035/Makefile tech/osu050/Makefile)
+AC_OUTPUT(Makefile scripts/Makefile src/Makefile tech/Makefile tech/osu050/Makefile tech/osu035/Makefile tech/osu018/Makefile)
echo ""
echo "Configuration results:"
diff --git a/src/blif2Verilog.c b/src/blif2Verilog.c
index 2bb5b69..a1d3255 100644
--- a/src/blif2Verilog.c
+++ b/src/blif2Verilog.c
@@ -458,23 +458,31 @@ void CleanupString(char text[LengthOfNodeName])
i+=1;
}
CitationPnt[i]='\0';
- CitationPnt=strchr(text,'<');
- if(CitationPnt != NULL) {
- i=0;
- while( CitationPnt[i+1] != '>' ) {
- CitationPnt[i]=CitationPnt[i+1];
- i+=1;
- }
- CitationPnt[i]='\0';
- }
}
- // Convert angle brackets to square brackets
+ // Convert angle brackets to square brackets if they
+ // occur at the end of a name; otherwise, convert
+ // them to underscores
+
+ while ((Weirdpnt = strchr(text,'<')) != NULL) {
+ char *eptr;
- Weirdpnt=strchr(text,'<');
- if(Weirdpnt != NULL) *Weirdpnt='[';
- Weirdpnt=strchr(text,'>');
- if(Weirdpnt != NULL) *Weirdpnt=']';
+ eptr = strchr(Weirdpnt, '>');
+
+ if (eptr == NULL) {
+ *Weirdpnt = '_';
+ }
+ else {
+ if (*(eptr + 1) == '\0') {
+ *Weirdpnt = '[';
+ *eptr = ']';
+ }
+ else {
+ *Weirdpnt = '_';
+ *eptr = '_';
+ }
+ }
+ }
// Disallow characters '.' and ':' in node names
diff --git a/tech/Makefile b/tech/Makefile
index 71d63a7..e21a251 100644
--- a/tech/Makefile
+++ b/tech/Makefile
@@ -11,7 +11,7 @@ INSTALL = /bin/install -c
QFLOW_LIB_DIR = /usr/local/share/qflow
-TECH_DIRS = osu035 osu050
+TECH_DIRS = osu050 osu035 osu018
TECHINSTALL = ${QFLOW_LIB_DIR}/tech
diff --git a/tech/Makefile.in b/tech/Makefile.in
index 1c34acf..236ebf8 100644
--- a/tech/Makefile.in
+++ b/tech/Makefile.in
@@ -11,7 +11,7 @@ INSTALL = @INSTALL@
QFLOW_LIB_DIR = @QFLOW_LIB_DIR@
-TECH_DIRS = osu035 osu050
+TECH_DIRS = osu050 osu035 osu018
TECHINSTALL = ${QFLOW_LIB_DIR}/tech
diff --git a/tech/osu018/Makefile b/tech/osu018/Makefile
new file mode 100644
index 0000000..e34a304
--- /dev/null
+++ b/tech/osu018/Makefile
@@ -0,0 +1,41 @@
+#
+# qflow project included technology osu018 files
+#
+
+# Main compiler arguments
+CFLAGS = -g -O2
+DEFS = -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SETENV=1 -DHAVE_PUTENV=1 -DTCLSH_PATH=\"/bin/tclsh\" -DQFLOW_MAGIC_PATH=\"/usr/local/bin/magic\" -DQFLOW_QROUTER_PATH=\"/usr/local/bin/qrouter\" -DQFLOW_GRAYWOLF_PATH=\"/usr/local/bin/graywolf\" -DQFLOW_YOSYS_PATH=\"/usr/local/bin/yosys\"
+LIBS =
+LDFLAGS =
+INSTALL = /bin/install -c
+
+QFLOW_LIB_DIR = /usr/local/share/qflow
+
+TECH_FILES = osu018.par osu018_stdcells.lef osu018.sh
+TECH_FILES += osu018_stdcells.sp osu018.magicrc osu018.prm
+TECH_FILES += SCN6M_DEEP.09.tech osu018_stdcells.lib
+TECH_FILES += osu018_stdcells.v
+
+TECHINSTALL = ${QFLOW_LIB_DIR}/tech
+
+# Substitute the target qflow tech directory name in .magicrc so that magic
+# can find the OSU018 techfile
+
+all: osu018.magicrc.in
+ $(RM) -f osu018.magicrc
+ cat osu018.magicrc.in | sed -e \
+ '/QFLOW_LIB_DIR/s#QFLOW_LIB_DIR#$(QFLOW_LIB_DIR)#' \
+ > osu018.magicrc
+
+install: ${TECH_FILES}
+ @echo "Installing osu018 tech files"
+ $(INSTALL) -d $(DESTDIR)$(TECHINSTALL)/osu018
+ for target in $(TECH_FILES); do \
+ $(INSTALL) $$target $(DESTDIR)$(TECHINSTALL)/osu018 ;\
+ done
+
+clean:
+ $(RM) -f osu018.magicrc
+
+uninstall:
+
diff --git a/tech/osu018/Makefile.in b/tech/osu018/Makefile.in
new file mode 100644
index 0000000..6063f67
--- /dev/null
+++ b/tech/osu018/Makefile.in
@@ -0,0 +1,41 @@
+#
+# qflow project included technology osu018 files
+#
+
+# Main compiler arguments
+CFLAGS = @CFLAGS@
+DEFS = @DEFS@
+LIBS = @LIBS@
+LDFLAGS = @LDFLAGS@
+INSTALL = @INSTALL@
+
+QFLOW_LIB_DIR = @QFLOW_LIB_DIR@
+
+TECH_FILES = osu018.par osu018_stdcells.lef osu018.sh
+TECH_FILES += osu018_stdcells.sp osu018.magicrc osu018.prm
+TECH_FILES += SCN6M_DEEP.09.tech osu018_stdcells.lib
+TECH_FILES += osu018_stdcells.v
+
+TECHINSTALL = ${QFLOW_LIB_DIR}/tech
+
+# Substitute the target qflow tech directory name in .magicrc so that magic
+# can find the OSU018 techfile
+
+all: osu018.magicrc.in
+ $(RM) -f osu018.magicrc
+ cat osu018.magicrc.in | sed -e \
+ '/QFLOW_LIB_DIR/s#QFLOW_LIB_DIR#$(QFLOW_LIB_DIR)#' \
+ > osu018.magicrc
+
+install: ${TECH_FILES}
+ @echo "Installing osu018 tech files"
+ $(INSTALL) -d $(DESTDIR)$(TECHINSTALL)/osu018
+ for target in $(TECH_FILES); do \
+ $(INSTALL) $$target $(DESTDIR)$(TECHINSTALL)/osu018 ;\
+ done
+
+clean:
+ $(RM) -f osu018.magicrc
+
+uninstall:
+
diff --git a/tech/osu018/SCN6M_DEEP.09.tech b/tech/osu018/SCN6M_DEEP.09.tech
new file mode 100644
index 0000000..3ddaeea
--- /dev/null
+++ b/tech/osu018/SCN6M_DEEP.09.tech
@@ -0,0 +1,11605 @@
+tech
+ format 29
+ scmos
+end
+
+version
+ version 2015a
+ description "SCMOS: Submit as technology.lambda: SCN6M_DEEP.09 [to process: TSMC18]"
+end
+
+planes
+ well,w
+ implant,i
+ select,s
+ active,a
+ metal1,m1
+ metal2,m2
+ metal3,m3
+ metal4,m4
+ metal5,m5
+ metal6,m6
+ metali,mi
+ oxide,ox
+ comment
+ xp
+ contact
+ via1,v1
+ via2,v2
+ via3,v3
+ via4,v4
+ via5,v5
+ viai,vi
+ fill
+end
+
+types
+ well nwell,nw
+ active nwr
+ well pwell,pw
+ implant n_field_implant,nfi
+ implant p_field_implant,pfi
+ select nselect,ns
+ select pselect,ps
+ active ntransistor,nfet
+ active ptransistor,pfet
+ active diffusion,diff
+ active transistor,fet
+ active ndiffusion,ndif,green
+ active pdiffusion,pdif,brown
+ active ndcontact,ndc
+ active pdcontact,pdc
+ active psubstratepdiff,pohmicdiff,pod,ppdiff,ppd,psd
+ active nsubstratendiff,nohmicdiff,nod,nndiff,nnd,nsd
+ active psubstratepcontact,pohmiccontact,poc,pwcontact,pwc,psc
+ active nsubstratencontact,nohmiccontact,noc,nwcontact,nwc,nsc
+ active nwsd
+ active nwsc
+ active polysilicon,red,poly,p
+ active polycontact,pcontact,polycut,pc
+ active polypplus,pp
+ active polynplus,pn
+ active polyppluscontact,ppcontact,ppc
+ active polynpluscontact,pncontact,pnc
+ contact genericcontact,gcontact,gc
+ metal1 metal1,m1,blue
+ metal1 pseudo_rmetal1,prm1
+ metal1 rmetal1,rm1
+ metal1 fillm1,fm1
+ metal1 m2contact,m2cut,m2c,via1,v1,via
+ metal2 metal2,m2,purple
+ metal2 pseudo_rmetal2,prm2
+ metal2 rmetal2,rm2
+ metal2 fillm2,fm2
+ via1 gv1
+ metal2 m3contact,m3cut,m3c,via2,v2
+ metal3 metal3,m3,cyan
+ metal3 pseudo_rmetal3,prm3
+ metal3 rmetal3,rm3
+ metal3 fillm3,fm3
+ via2 gv2
+ metal3 m4contact,m4cut,m4c,via3,v3
+ metal4 metal4,m4,yellow
+ metal4 pseudo_rmetal4,prm4
+ metal4 rmetal4,rm4
+ metal4 fillm4,fm4
+ via3 gv3
+ metal4 m5contact,m5cut,m5c,via4,v4
+ metal5 metal5,m5
+ metal5 pseudo_rmetal5,prm5
+ metal5 rmetal5,rm5
+ metal5 fillm5,fm5
+ via4 gv4
+ metal5 m6contact,m6cut,m6c,via5,v5
+ metal6 metal6,m6
+ metal6 pseudo_rmetal6,prm6
+ metal6 rmetal6,rm6
+ metal6 fillm6,fm6
+ via5 gv5
+ metal6 pad
+ metal6 micontact,micut,mic,viai,vi
+ metali metali,mim,mi
+ mi pseudo_rmetali,prmi
+ mi rmi
+ viai gvi
+ oxide glass
+ active silicide_block,sb
+ active poly_resist,pres
+ active pseudo_rpoly,prp
+ active rpoly,rp
+ active pseudo_rndiffusion,prnd
+ active rndiffusion,rndiff,rnd
+ active pseudo_rpdiffusion,prpd
+ active rpdiffusion,rpdiff,rpd
+ active pseudo_rnwell,prnwell,prnw
+ active rnwell,rnw
+ active pseudo_nwr,pnwr
+ implant filln,fn
+ fill filla,fa
+ fill fillb,fb
+ active fillp,fp
+ active fillapm,fapm
+ active activen_resist,anres
+ active activep_resist,apres
+ xp xp
+ xp m1p
+ xp m2p
+ xp m3p
+ xp m4p
+ xp m5p
+ xp m6p
+ comment comment
+ comment bb
+end
+
+contact
+ pc poly metal1
+ ppc pp metal1
+ pnc pn metal1
+ ndc ndiff metal1
+ pdc pdiff metal1
+ nsc nsd metal1
+ nwsc nwsd metal1
+ psc psd metal1
+ m2c metal1 metal2
+ m3c metal2 metal3
+ m4c metal3 metal4
+ m5c metal4 metal5
+ m6c metal5 metal6
+ mic metal6 metali
+ stackable pc m2c pm12contact,pm12c
+ stackable ppc m2c ppm12contact,ppm12c
+ stackable pnc m2c pnm12contact,pnm12c
+ stackable pdc m2c pdm12contact,pdm12c
+ stackable psc m2c psm12contact,psm12c,pom12c,pwm12c
+ stackable ndc m2c ndm12contact,ndm12c
+ stackable nsc m2c nsm12contact,nsm12c,nom12c,nwm12c
+ stackable nwsc m2c nwsm12contact,nwsm12c
+ stackable m2c m3c m123contact,m123c
+ stackable m3c m4c m234contact,m234c
+ stackable m4c m5c m345contact,m345c
+ stackable m5c m6c m456contact,m456c
+end
+
+styles
+ styletype mos
+ nwr 54
+ pnwr 53
+ nwsd 3 54
+ nwsc 3 20 32 54
+ nwell 12
+ pwell 13
+ nfi 53
+ pfi 54
+ nselect 43
+ pselect 44
+ diff 25
+ tran 2 4
+ ndiff 2
+ pdiff 4
+ nsd 3
+ psd 5
+ nfet 6 7
+ pfet 8 9
+ ndc 2 20 32
+ pdc 4 20 32
+ nsc 3 20 32
+ psc 5 20 32
+ poly 1
+ pp 1 44
+ pn 1 43
+ pcontact 1 20 32
+ gc 32
+ metal1 20
+ rm1 20 48
+ prm1 48
+ m1p 20 34
+ fm1 20 34
+ fp 1 34
+ fa 32
+ fb 45 34
+ fn 45 34
+ fapm 1 20 21 34
+ gv1 55
+ m2contact 20 21 55
+ metal2 21
+ rm2 21 48
+ prm2 48
+ m2p 21 34
+ fm2 21 34
+ gv2 56
+ m3contact 21 22 56
+ metal3 22
+ rm3 22 48
+ prm3 48
+ m3p 22 34
+ fm3 22 34
+ gv3 57
+ m4contact 22 23 57
+ metal4 23
+ rm4 23 48
+ prm4 48
+ m4p 23 34
+ fm4 23 34
+ gv4 58
+ m5contact 23 24 58
+ metal5 24
+ rm5 24 48
+ m5p 24 34
+ fm5 24 34
+ prm5 48
+ gv5 60
+ m6contact 24 26 60
+ metal6 26
+ rm6 26 48
+ m6p 26 34
+ fm6 26 34
+ prm6 48
+ gvi 61
+ micontact 26 27 61
+ mi 27
+ rmi 27 48
+ prmi 48
+ pad 22 23 34 38
+ glass 34
+ xp 25 34
+ sb 10
+ pres 47 48
+ rp 47 48
+ prp 48
+ anres 2 48
+ rnd 2 48
+ prnd 48
+ apres 4 53
+ rpd 4 53
+ prpd 53
+ rnw 12 53
+ prnw 54
+ comment 45
+ bb 32
+ error_p 42
+ error_s 42
+ error_ps 42
+ magnet 54
+ rotate 57
+ fence 59
+end
+
+compose
+ compose nfet poly ndiff
+ compose pfet poly pdiff
+ compose nfet pn ndiff
+ compose pfet pp pdiff
+ paint diff nselect ndiff
+ paint diff pselect pdiff
+ compose tran poly diff
+ paint tran nselect nfet
+ paint tran pselect pfet
+ paint psd ns ndiff
+ paint nsd ps pdiff
+ paint ndiff ps psd
+ paint pdiff ns nsd
+ paint pad m1 pad
+ paint pad m2 pad
+ paint pad m2c pad
+ paint pfi nwell nfi
+ paint nfi pwell pfi
+ paint anres nwell apres
+ paint apres pwell anres
+ paint ndc nwell pdc
+ paint nfet nwell pfet
+ paint ndiff nwell pdiff
+ paint psd nwell nsd
+ paint psc nwell nsc
+ paint pdc pwell ndc
+ paint pfet pwell nfet
+ paint pdiff pwell ndiff
+ paint nsd pwell psd
+ paint nsc pwell psc
+ paint pad m3 pad
+ paint pad m4 pad
+ paint pad m5 pad
+ paint pad m6 pad
+ compose pres poly sb
+ paint sb poly pres
+ paint poly sb pres
+ erase pres sb poly
+ compose anres ndiff sb
+ paint sb ndiff anres
+ paint ndiff sb anres
+ erase anres sb ndiff
+ compose apres pdiff sb
+ paint sb pdiff apres
+ paint pdiff sb apres
+ erase apres sb pdiff
+#CRE/CRM
+ compose rm1 prm1 m1
+ compose rm2 prm2 m2
+ compose rm3 prm3 m3
+ compose rm4 prm4 m4
+ compose rm5 prm5 m5
+ compose rm6 prm6 m6
+ compose rmi prmi mi
+ compose rp prp poly
+ compose rnd prnd ndiff
+ compose rpd prpd pdiff
+ paint nwell rnw space
+ paint nwell nwr space
+ paint nwell prnw space
+ paint poly fp fp
+ paint m1 fm1 fm1
+ paint m2 fm2 fm2
+ paint m3 fm3 fm3
+ paint m4 fm4 fm4
+ paint m5 fm5 fm5
+ paint m6 fm6 fm6
+end
+
+connect
+ nwell,nsc/a,nwsc/a,nsd,nwsd nwell,nsc/a,nwsc/a,nsd,nwsd
+ pwell,psc/a,psd pwell,psc/a,psd
+ m1,fm1,fapm,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 m1,fm1,fapm,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ m2,fm2,fapm,m2c/m2,m3c/m2,m3c/m2 m2,fm2,fapm,m2c/m2,m3c/m2,m3c/m2
+ m3,fm3,fapm,m3c/m3,m4c/m3,m4c/m3 m3,fm3,fapm,m3c/m3,m4c/m3,m4c/m3
+ m4,fm4,fapm,m4c/m4,m5c/m4,m5c/m4 m4,fm4,fapm,m4c/m4,m5c/m4,m5c/m4
+ m5,fm5,fapm,m5c/m5,m6c/m5,m6c/m5 m5,fm5,fapm,m5c/m5,m6c/m5,m6c/m5
+ m6,fm6,fapm,m6c/m6,mic/m6 m6,fm6,fapm,m6c/m6,mic/m6
+ mi,mic/mi mi,mic/mi
+ ndiff,nsd,nwsd,ndc/a,nsc/a,nwsc/a,pdiff,psd,pdc/a,psc/a ndiff,nsd,nwsd,ndc/a,nsc/a,nwsc/a,pdiff,psd,pdc/a,psc/a
+ poly,fp,pp,pn,nfet,pfet,fet,fapm,pc/a,ppc/a,pnc/a poly,fp,pp,pn,nfet,pfet,fet,fapm,pc/a,ppc/a,pnc/a
+ gc poly,fp,pp,pn,ndiff,pdiff,nsd,nwsd,psd,m1,fm1,fapm,m2c/m1
+ gv1 m1,fm1,fapm,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2,fm2,fapm,m3c/m2
+ gv2 m2,fm2,fapm,m2c/m2,m3c/m2,m3,fm3,fapm,m4c/m3
+ gv3 m3,fm3,fapm,m3c/m3,m4c/m3,m4,fm4,fapm,m5c/m4
+ gv4 m4,fm4,fapm,m4c/m4,m5c/m4,m5,fm5,fapm,m6c/m5
+ gv5 m5,fm5,fapm,m5c/m5,m6c/m5,m6,fm6,fapm
+ gvi m6,fm6,fapm,m6c/m6,mic/m6,mi
+ pad m1,fm1,m2,fm2,m3,fm3,m4,fm4,m5,fm5,m6,fm6
+ rm1 prm1
+ rm2 prm2
+ rm3 prm3
+ rm4 prm4
+ rm5 prm5
+ rm6 prm6
+ rmi prmi
+ rnw prnw
+ nwr pnwr
+ rp prp
+ rnd prnd
+ rpd prpd
+ pres sb
+ anres sb
+ apres sb
+end
+
+cifoutput
+
+style lambda=0.09(p)
+ scalefactor 9
+
+ layer CWN nwell,rnw,nwr,nwsd,nwsc
+ bloat-or pdiff,apres,rpd,pdc/a,pfet * 54
+ bloat-or nsd,nsc/a * 27
+ bloat-or nfi * 36
+ grow 27
+ shrink 27
+ labels nwell,rnw,nwr,nwsd,nwsc
+ calma 42 0
+
+ layer CWNR nwsd,nwsc,nwr
+ grow 135
+ calma 91 0
+
+ layer CWND nwr
+ labels nwr
+ calma 92 0
+
+ layer CAA nwsd,nwsc,nwr
+ grow 108
+ labels nwsd,nwsc
+ calma 43 0
+
+ layer CSN
+ bloat-or nwsd,nwsc * 72 nwr 0
+ calma 43 0
+
+ templayer TNWR
+ bloat-or nwr * 108 nwsd,nwsc 45
+
+ templayer TCSB nwsd,nwsc
+ grow 27
+ and-not TNWR
+
+ layer CSB nwsd,nwsc,nwr
+ grow 135
+ and-not TCSB
+ calma 29 0
+
+ layer CRNW pnwr
+ labels pnwr
+ calma 93 0
+
+ layer CWP pwell
+ bloat-or ndiff,anres,rnd,ndc/a,nfet * 54
+ bloat-or psd,psc/a * 27
+ bloat-or pfi * 36
+ grow 27
+ shrink 27
+ and-not CWN
+ labels pwell
+ calma 41 0
+
+ templayer TNS ndiff,anres,rnd,ndc/a,nsd,nsc/a
+ and gc
+ grow 9
+ or ndc/m1,nsc/m1,nwsc/m1
+ grow 5
+ or nselect
+
+ templayer TPS pdiff,apres,rpd,pdc/a,psd,psc/a
+ and gc
+ grow 9
+ or pdc/m1,psc/m1
+ grow 5
+ or pselect
+
+#we give priority to selects autogenerated around diffusions (vrs. ohmics)
+#XDP = (pdiff*18) Or ps
+#XDN = (ndiff*18) Or ns
+#FSP = ((pdiff*18,psc*18) Or XDP And-Not XDN Or ps shrink-grow
+#FSN = ((ndiff*18,nsc*18) Or XDN And-Not FDP Or ns shrink-grow
+#CSN = FSN
+#CSP = FSP
+
+#diffusion auto-nselect (will have priority)
+ templayer XDN
+ bloat-or ndiff,anres,rnd,ndc/a * 18 psd,psc/a 0
+ bloat-or pn * 09 pp 0
+ or TNS
+
+#diffusion auto-pselect (will have priority)
+ templayer XDP
+ bloat-or pdiff,apres,rpd,pdc/a * 18 nsd,nsc/a 0
+ bloat-or pp * 09 pn 0
+ or TPS
+
+#final pselect
+ templayer FSP
+ bloat-or pdiff,apres,rpd,pfet,psd,pdc/a,psc/a,pfet * 18 ndiff,anres,rnd,ndc/a,nsd,nsc/a,nfet 0
+ or XDP
+#give diff nselect priority
+ and-not XDN
+ or TPS
+ shrink 14
+ grow 14
+ grow 14
+ shrink 14
+
+#final nselect
+ templayer FSN
+ bloat-or ndiff,anres,rnd,nfet,nsd,nwsd,ndc/a,nsc/a,nwsc/a,nfet * 18 pdiff,apres,rpd,pdc/a,psd,psc/a,pfet 0
+ and-not nwr
+ or XDN
+#never conflict with final pselect
+ and-not FSP
+#drawn select always goes
+ or TNS
+ shrink 14
+ grow 14
+ grow 14
+ shrink 14
+
+ layer CSN FSN
+ calma 45 0
+
+ layer CSP FSP
+ calma 44 0
+
+ layer CAA diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet
+ labels diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet
+ calma 43 0
+
+ layer CCA nwsc/m1
+ squares 18 18 36
+ calma 48 0
+
+ layer CCA ndc/m1,nsc/m1
+ squares 09 18 36
+ calma 48 0
+
+ layer CCA pdc/m1,psc/m1
+ squares 09 18 36
+ calma 48 0
+
+ layer CPG poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ labels poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ calma 46 0
+
+ layer CCP pc/m1,ppc/m1,pnc/m1
+ squares 09 18 36
+ calma 47 0
+
+ layer CCC gc
+ squares 0 18 36
+ calma 25 0
+
+ layer CV1 m2c/m1
+ squares 10 20 20
+ calma 50 0
+
+ layer CV1 gv1
+ squares 0 20 20
+ calma 50 0
+
+ layer CV2 m3c/m2
+ squares 10 20 20
+ calma 61 0
+
+ layer CV2 gv2
+ squares 0 20 20
+ calma 61 0
+
+ layer CV3 m4c/m3
+ squares 10 20 20
+ calma 30 0
+
+ layer CV3 gv3
+ squares 0 20 20
+ calma 30 0
+
+ layer CV4 m5c/m4
+ squares 10 20 20
+ calma 32 0
+
+ layer CV4 gv4
+ squares 0 20 20
+ calma 32 0
+
+ layer CV5 m6c/m5
+ squares 10 30 30
+ calma 36 0
+
+ layer CV5 gv5
+ squares 0 30 30
+ calma 36 0
+
+ layer CV5 mic/mi
+ squares 30 30 210
+ calma 36 0
+
+ layer CV5 gvi
+ squares 0 30 210
+ calma 36 0
+
+
+ templayer XPAD1 pad
+ shrink 54
+
+ templayer XPAD2 XPAD1
+ shrink 54
+
+ layer CM6 pad
+ labels pad
+ calma 37 0
+
+ layer CV5 XPAD2
+ squares 09 36 72
+ calma 36 0
+
+ layer CM5 pad
+ labels pad
+ calma 33 0
+
+ layer CV4 XPAD2
+ squares 72 27 81
+ calma 32 0
+
+ layer CM4 pad
+ labels pad
+ calma 31 0
+
+ layer CV3 XPAD2
+ squares 18 27 81
+ calma 30 0
+
+ layer CM3 pad
+ labels pad
+ calma 62 0
+
+ layer CV2 XPAD2
+ squares 72 27 81
+ calma 61 0
+
+ layer CM2 pad
+ labels pad
+ calma 51 0
+
+ layer CV1 XPAD2
+ squares 18 27 81
+ calma 50 0
+
+ layer CM1 pad
+ calma 49 0
+
+ layer CM1 m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ labels m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ calma 49 0
+
+ layer CM2 m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ labels m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ calma 51 0
+
+ layer CMFP m1p
+ labels m1p
+ calma 81 0
+
+ layer CMSP m2p
+ labels m2p
+ calma 82 0
+
+ layer 100 fp
+ labels fp
+ calma 100 0
+
+ layer 101 fm1
+ labels fm1
+ calma 101 0
+
+ layer 102 fm2
+ labels fm2
+ calma 102 0
+
+ layer 103 fm3
+ labels fm3
+ calma 103 0
+
+ layer 104 fm4
+ labels fm4
+ calma 104 0
+
+ layer 105 fm5
+ labels fm5
+ calma 105 0
+
+ layer 106 fm6
+ labels fm6
+ calma 106 0
+
+ layer 109 fa
+ or fb
+ squares 0 207 36
+ labels fa
+ calma 109 0
+
+ layer 119 fn
+ calma 119 0
+
+ layer 110 fapm
+ labels fapm
+ calma 110 0
+
+# layer CPG fp
+ layer CPG fp,fapm
+ squares 0 207 36
+ labels fp
+ calma 46 0
+
+# layer CM1 fm1
+ layer CM1 fm1,fapm
+ squares 0 207 36
+ labels fm1
+ calma 49 0
+
+# layer CM2 fm2
+ layer CM2 fm2,fapm
+
+ squares 0 207 36
+ labels fm2
+ calma 51 0
+
+# layer CM3 fm3
+ layer CM3 fm3,fapm
+
+ squares 0 207 36
+ labels fm3
+ calma 62 0
+
+ layer CM3 m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ labels m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ calma 62 0
+
+ layer CMTP m3p
+ labels m3p
+ calma 83 0
+
+ layer CM4 m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ labels m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ calma 31 0
+
+ layer CMQP m4p
+ labels m4p
+ calma 84 0
+
+# layer CM4 fm4
+ layer CM4 fm4,fapm
+
+ squares 0 207 36
+ labels fm4
+ calma 31 0
+
+ layer CM5 m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ labels m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ calma 33 0
+
+ layer CMPP m5p
+ labels m5p
+ calma 85 0
+
+# layer CM5 fm5
+ layer CM5 fm5,fapm
+
+ squares 0 207 36
+ labels fm5
+ calma 33 0
+
+ layer CM6 m6,rm6,m6c/m6,mic/m6
+ labels m6,rm6,m6c/m6,mic/m6
+ calma 37 0
+
+ layer CM6P m6p
+ labels m6p
+ calma 85 0
+
+# layer CM6 fm6
+ layer CM6 fm6,fapm
+
+ squares 0 207 36
+ labels fm6
+ calma 37 0
+
+ layer CTM mi,mic/mi
+ labels mi,mic/mi
+ calma 35 0
+
+ layer COG pad
+ shrink 504
+ labels pad
+ calma 52 0
+
+ layer COG glass
+ labels glass
+ calma 52 0
+
+ layer CFI nfi,pfi
+ labels nfi,pfi
+ calma 27 0
+
+ layer CSB sb,pres,anres,apres
+ labels sb,pres,anres,apres
+ calma 29 0
+
+#CRE/CRM
+ layer CRW rnw,prnw
+ labels rnw,prnw
+ calma 65 0
+ layer CRG rp,prp,pres
+ labels rp,prp,pres
+ calma 67 0
+ layer CRD rnd,rpd,prnd,prpd,anres,apres
+ labels rnd,rpd,prnd,prpd,anres,apres
+ calma 66 0
+ layer CRE rnw,rp,rnd,rpd,pres,anres,apres
+ labels rnw,rp,rnd,rpd,pres,anres,apres
+ calma 64 0
+ layer CRF rm1,prm1
+ labels rm1,prm1
+ calma 71 0
+ layer CRS rm2,prm2
+ labels rm2,prm2
+ calma 72 0
+ layer CRT rm3,prm3
+ labels rm3,prm3
+ calma 73 0
+ layer CRQ rm4,prm4
+ labels rm4,prm4
+ calma 74 0
+ layer CRP rm5,prm5
+ labels rm5,prm5
+ calma 75 0
+ layer CR6 rm6,prm6
+ labels rm6,prm6
+ calma 76 0
+ layer CRI rmi,prmi
+ labels rmi,prmi
+ calma 79 0
+#CRE/CRM layer CRM rm1,prm1,rm2,prm2,rm3,prm3,rm4,prm4,rm5,prm5,rm6,prm6,rmi,prmi
+#CRE/CRM calma 70 0
+
+ layer CX comment
+ labels comment
+ calma 63 0
+
+ layer XP pad,xp
+ labels pad,xp
+ calma 26 0
+
+style fill-only
+ scalefactor 9
+
+ layer 100 fp
+ calma 100 0
+
+ layer 101 fm1
+ calma 101 0
+
+ layer 102 fm2
+ calma 102 0
+
+ layer 103 fm3
+ calma 103 0
+
+ layer 104 fm4
+ calma 104 0
+
+ layer 105 fm5
+ calma 105 0
+
+ layer 106 fm6
+ calma 106 0
+
+ layer 109 fa
+ or fb
+ calma 109 0
+
+ layer 119 fn
+ calma 119 0
+
+style fapm-boxes
+
+# this output style creates fill boxes automatically (to meet minimum
+# density requirements for poly and metal layers) 5 microns outside of
+# drawn layout IF: 1. you have a flattened version of your chip
+# 2. over which you paint the special fill layer 'fa', preferably with
+# a size that is a multiple of 23 + n * (23 + 4), 3. set 'cif
+# ostype fapm-boxes' and cif out to a file (this actually creates the
+# fill boxes on cif/strm layer '110' using the magic 'squares'
+# command), 4. cif in the resulting file (which creates boxes on magic
+# layer 'fapm') and place this cell onto your chip (and verify absence
+# of drc errors or shorts), then 5. cif out under your regular cif out
+# style, where the 'fapm' layer creates fill boxes on poly and all
+# metal layers.
+
+ scalefactor 09 calmaonly
+
+ templayer CRIT fapm,fn,diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet,poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ or fm1,m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ or fm2,m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ or fm3,m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ or fm4,m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ or fm5,m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ or fm6,m6,rm6,m6c/m6,mic/m6
+ or glass,pad
+ grow 500
+ and fa
+
+ layer 110 fa
+ squares 0 207 36
+ and-not CRIT
+ shrink 98.5
+ grow 98.5
+ or fapm
+ labels fapm
+ calma 110 0
+
+style fapm-stripes
+ scalefactor 9
+
+# this output style creates the above layer 110 as stripes for reduced size
+# HOWEVER it requires each 'fa' box to first be an exact multiple as above
+# and then *replacing* the left side (1-lambda wide) stripe of each 'fa' box
+# to be a 1-lambda wide layer 'fb' box -- else you won't get strips!
+
+ templayer CRIT fapm,fn,diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet,poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ or fm1,m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ or fm2,m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ or fm3,m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ or fm4,m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ or fm5,m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ or fm6,m6,rm6,m6c/m6,mic/m6
+ or glass,pad
+ grow 500
+ and fa
+
+ templayer FB fa
+ or fb
+ squares 0 207 36
+ and-not CRIT
+
+ layer 110 fa
+ squares 0 207 36
+ and-not CRIT
+ or FB
+ shrink 98.5
+ grow 98.5
+ or fapm
+ labels fapm
+ calma 110 0
+
+
+style lambda=0.09(cp)
+ scalefactor 9
+
+ layer CWN nwell,rnw,nwr,nwsd,nwsc
+ bloat-or pdiff,apres,rpd,pdc/a,pfet * 54
+ bloat-or nsd,nsc/a * 27
+ bloat-or nfi * 36
+ grow 27
+ shrink 27
+ labels nwell,rnw,nwr,nwsd,nwsc
+ calma 42 0
+
+ layer CWNR nwsd,nwsc,nwr
+ grow 135
+ calma 91 0
+
+ layer CWND nwr
+ labels nwr
+ calma 92 0
+
+ layer CAA nwsd,nwsc,nwr
+ grow 108
+ labels nwsd,nwsc
+ calma 43 0
+
+ layer CSN
+ bloat-or nwsd,nwsc * 72 nwr 0
+ calma 43 0
+
+ templayer TNWR
+ bloat-or nwr * 108 nwsd,nwsc 45
+
+ templayer TCSB nwsd,nwsc
+ grow 27
+ and-not TNWR
+
+ layer CSB nwsd,nwsc,nwr
+ grow 135
+ and-not TCSB
+ calma 29 0
+
+ layer CRNW pnwr
+ labels pnwr
+ calma 93 0
+
+ layer CWP pwell
+ bloat-or ndiff,anres,rnd,ndc/a,nfet * 54
+ bloat-or psd,psc/a * 27
+ bloat-or pfi * 36
+ grow 27
+ shrink 27
+ and-not CWN
+ labels pwell
+ calma 41 0
+
+ templayer TNS ndiff,anres,rnd,ndc/a,nsd,nsc/a
+ and gc
+ grow 9
+ or ndc/m1,nsc/m1,nwsc/m1
+ grow 5
+ or nselect
+
+ templayer TPS pdiff,apres,rpd,pdc/a,psd,psc/a
+ and gc
+ grow 9
+ or pdc/m1,psc/m1
+ grow 5
+ or pselect
+
+#we give priority to selects autogenerated around diffusions (vrs. ohmics)
+#XDP = (pdiff*18) Or ps
+#XDN = (ndiff*18) Or ns
+#FSP = ((pdiff*18,psc*18) Or XDP And-Not XDN Or ps shrink-grow
+#FSN = ((ndiff*18,nsc*18) Or XDN And-Not FDP Or ns shrink-grow
+#CSN = FSN
+#CSP = FSP
+
+#diffusion auto-nselect (will have priority)
+ templayer XDN
+ bloat-or ndiff,anres,rnd,ndc/a * 18 psd,psc/a 0
+ bloat-or pn * 09 pp 0
+ or TNS
+
+#diffusion auto-pselect (will have priority)
+ templayer XDP
+ bloat-or pdiff,apres,rpd,pdc/a * 18 nsd,nsc/a 0
+ bloat-or pp * 09 pn 0
+ or TPS
+
+#final pselect
+ templayer FSP
+ bloat-or pdiff,apres,rpd,pfet,psd,pdc/a,psc/a,pfet * 18 ndiff,anres,rnd,ndc/a,nsd,nsc/a,nfet 0
+ or XDP
+#give diff nselect priority
+ and-not XDN
+ or TPS
+ shrink 14
+ grow 14
+ grow 14
+ shrink 14
+
+#final nselect
+ templayer FSN
+ bloat-or ndiff,anres,rnd,nfet,nsd,nwsd,ndc/a,nsc/a,nwsc/a,nfet * 18 pdiff,apres,rpd,pdc/a,psd,psc/a,pfet 0
+ and-not nwr
+ or XDN
+#never conflict with final pselect
+ and-not FSP
+#drawn select always goes
+ or TNS
+ shrink 14
+ grow 14
+ grow 14
+ shrink 14
+
+ layer CSN FSN
+ calma 45 0
+
+ layer CSP FSP
+ calma 44 0
+
+ layer CAA diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet
+ labels diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet
+ calma 43 0
+
+ layer CCC nwsc/m1
+ squares 18 18 36
+ calma 25 0
+
+ layer CCC ndc/m1,nsc/m1
+ squares 09 18 36
+ calma 25 0
+
+ layer CCC pdc/m1,psc/m1
+ squares 09 18 36
+ calma 25 0
+
+ layer CPG poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ labels poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ calma 46 0
+
+ layer CCC pc/m1,ppc/m1,pnc/m1
+ squares 09 18 36
+ calma 25 0
+
+ layer CCC gc
+ squares 0 18 36
+ calma 25 0
+
+ layer CV1 m2c/m1
+ squares 09 27 27
+ calma 50 0
+
+ layer CV1 gv1
+ squares 0 27 27
+ calma 50 0
+
+ layer CV2 m3c/m2
+ squares 09 27 27
+ calma 61 0
+
+ layer CV2 gv2
+ squares 0 27 27
+ calma 61 0
+
+ layer CV3 m4c/m3
+ squares 09 27 27
+ calma 30 0
+
+ layer CV3 gv3
+ squares 0 27 27
+ calma 30 0
+
+ layer CV4 m5c/m4
+ squares 09 27 27
+ calma 32 0
+
+ layer CV4 gv4
+ squares 0 27 27
+ calma 32 0
+
+ layer CV5 m6c/m5
+ squares 18 36 36
+ calma 36 0
+
+ layer CV5 gv5
+ squares 0 36 36
+ calma 36 0
+
+ layer CV5 mic/mi
+ squares 27 36 207
+ calma 36 0
+
+ layer CV5 gvi
+ squares 0 36 207
+ calma 36 0
+
+
+ templayer XPAD1 pad
+ shrink 54
+
+ templayer XPAD2 XPAD1
+ shrink 54
+
+ layer CM6 pad
+ labels pad
+ calma 37 0
+
+ layer CV5 XPAD2
+ squares 09 36 72
+ calma 36 0
+
+ layer CM5 pad
+ labels pad
+ calma 33 0
+
+ layer CV4 XPAD2
+ squares 72 27 81
+ calma 32 0
+
+ layer CM4 pad
+ labels pad
+ calma 31 0
+
+ layer CV3 XPAD2
+ squares 18 27 81
+ calma 30 0
+
+ layer CM3 pad
+ labels pad
+ calma 62 0
+
+ layer CV2 XPAD2
+ squares 72 27 81
+ calma 61 0
+
+ layer CM2 pad
+ labels pad
+ calma 51 0
+
+ layer CV1 XPAD2
+ squares 18 27 81
+ calma 50 0
+
+ layer CM1 pad
+ calma 49 0
+
+ layer CM1 m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ labels m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ calma 49 0
+
+ layer CM2 m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ labels m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ calma 51 0
+
+ layer CMFP m1p
+ labels m1p
+ calma 81 0
+
+ layer CMSP m2p
+ labels m2p
+ calma 82 0
+
+ layer 100 fp
+ labels fp
+ calma 100 0
+
+ layer 101 fm1
+ labels fm1
+ calma 101 0
+
+ layer 102 fm2
+ labels fm2
+ calma 102 0
+
+ layer 103 fm3
+ labels fm3
+ calma 103 0
+
+ layer 104 fm4
+ labels fm4
+ calma 104 0
+
+ layer 105 fm5
+ labels fm5
+ calma 105 0
+
+ layer 106 fm6
+ labels fm6
+ calma 106 0
+
+ layer 109 fa
+ or fb
+ squares 0 207 36
+ labels fa
+ calma 109 0
+
+ layer 119 fn
+ calma 119 0
+
+ layer 110 fapm
+ labels fapm
+ calma 110 0
+
+# layer CPG fp
+ layer CPG fp,fapm
+ squares 0 207 36
+ labels fp
+ calma 46 0
+
+# layer CM1 fm1
+ layer CM1 fm1,fapm
+ squares 0 207 36
+ labels fm1
+ calma 49 0
+
+# layer CM2 fm2
+ layer CM2 fm2,fapm
+
+ squares 0 207 36
+ labels fm2
+ calma 51 0
+
+# layer CM3 fm3
+ layer CM3 fm3,fapm
+
+ squares 0 207 36
+ labels fm3
+ calma 62 0
+
+ layer CM3 m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ labels m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ calma 62 0
+
+ layer CMTP m3p
+ labels m3p
+ calma 83 0
+
+ layer CM4 m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ labels m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ calma 31 0
+
+ layer CMQP m4p
+ labels m4p
+ calma 84 0
+
+# layer CM4 fm4
+ layer CM4 fm4,fapm
+
+ squares 0 207 36
+ labels fm4
+ calma 31 0
+
+ layer CM5 m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ labels m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ calma 33 0
+
+ layer CMPP m5p
+ labels m5p
+ calma 85 0
+
+# layer CM5 fm5
+ layer CM5 fm5,fapm
+
+ squares 0 207 36
+ labels fm5
+ calma 33 0
+
+ layer CM6 m6,rm6,m6c/m6,mic/m6
+ labels m6,rm6,m6c/m6,mic/m6
+ calma 37 0
+
+ layer CM6P m6p
+ labels m6p
+ calma 85 0
+
+# layer CM6 fm6
+ layer CM6 fm6,fapm
+
+ squares 0 207 36
+ labels fm6
+ calma 37 0
+
+ layer CTM mi,mic/mi
+ labels mi,mic/mi
+ calma 35 0
+
+ layer COG pad
+ shrink 504
+ labels pad
+ calma 52 0
+
+ layer COG glass
+ labels glass
+ calma 52 0
+
+ layer CFI nfi,pfi
+ labels nfi,pfi
+ calma 27 0
+
+ layer CSB sb,pres,anres,apres
+ labels sb,pres,anres,apres
+ calma 29 0
+
+#CRE/CRM
+ layer CRW rnw,prnw
+ labels rnw,prnw
+ calma 65 0
+ layer CRG rp,prp,pres
+ labels rp,prp,pres
+ calma 67 0
+ layer CRD rnd,rpd,prnd,prpd,anres,apres
+ labels rnd,rpd,prnd,prpd,anres,apres
+ calma 66 0
+ layer CRE rnw,rp,rnd,rpd,pres,anres,apres
+ labels rnw,rp,rnd,rpd,pres,anres,apres
+ calma 64 0
+ layer CRF rm1,prm1
+ labels rm1,prm1
+ calma 71 0
+ layer CRS rm2,prm2
+ labels rm2,prm2
+ calma 72 0
+ layer CRT rm3,prm3
+ labels rm3,prm3
+ calma 73 0
+ layer CRQ rm4,prm4
+ labels rm4,prm4
+ calma 74 0
+ layer CRP rm5,prm5
+ labels rm5,prm5
+ calma 75 0
+ layer CR6 rm6,prm6
+ labels rm6,prm6
+ calma 76 0
+ layer CRI rmi,prmi
+ labels rmi,prmi
+ calma 79 0
+#CRE/CRM layer CRM rm1,prm1,rm2,prm2,rm3,prm3,rm4,prm4,rm5,prm5,rm6,prm6,rmi,prmi
+#CRE/CRM calma 70 0
+
+ layer CX comment
+ labels comment
+ calma 63 0
+
+ layer XP pad,xp
+ labels pad,xp
+ calma 26 0
+
+
+style lambda=0.09(c)
+ scalefactor 9
+
+ layer CWN nwell,rnw,nwr,nwsd,nwsc
+ bloat-or pdiff,apres,rpd,pdc/a,pfet * 54
+ bloat-or nsd,nsc/a * 27
+ bloat-or nfi * 36
+ grow 27
+ shrink 27
+ labels nwell,rnw,nwr,nwsd,nwsc
+ calma 42 0
+
+ layer CWNR nwsd,nwsc,nwr
+ grow 135
+ calma 91 0
+
+ layer CWND nwr
+ labels nwr
+ calma 92 0
+
+ layer CAA nwsd,nwsc,nwr
+ grow 108
+ labels nwsd,nwsc
+ calma 43 0
+
+ layer CSN
+ bloat-or nwsd,nwsc * 72 nwr 0
+ calma 43 0
+
+ templayer TNWR
+ bloat-or nwr * 108 nwsd,nwsc 45
+
+ templayer TCSB nwsd,nwsc
+ grow 27
+ and-not TNWR
+
+ layer CSB nwsd,nwsc,nwr
+ grow 135
+ and-not TCSB
+ calma 29 0
+
+ layer CRNW pnwr
+ labels pnwr
+ calma 93 0
+
+ templayer TNS ndiff,anres,rnd,ndc/a,nsd,nsc/a
+ and gc
+ grow 9
+ or ndc/m1,nsc/m1,nwsc/m1
+ grow 5
+ or nselect
+
+ templayer TPS pdiff,apres,rpd,pdc/a,psd,psc/a
+ and gc
+ grow 9
+ or pdc/m1,psc/m1
+ grow 5
+ or pselect
+
+#we give priority to selects autogenerated around diffusions (vrs. ohmics)
+#XDP = (pdiff*18) Or ps
+#XDN = (ndiff*18) Or ns
+#FSP = ((pdiff*18,psc*18) Or XDP And-Not XDN Or ps shrink-grow
+#FSN = ((ndiff*18,nsc*18) Or XDN And-Not FDP Or ns shrink-grow
+#CSN = FSN
+#CSP = FSP
+
+#diffusion auto-nselect (will have priority)
+ templayer XDN
+ bloat-or ndiff,anres,rnd,ndc/a * 18 psd,psc/a 0
+ bloat-or pn * 09 pp 0
+ or TNS
+
+#diffusion auto-pselect (will have priority)
+ templayer XDP
+ bloat-or pdiff,apres,rpd,pdc/a * 18 nsd,nsc/a 0
+ bloat-or pp * 09 pn 0
+ or TPS
+
+#final pselect
+ templayer FSP
+ bloat-or pdiff,apres,rpd,pfet,psd,pdc/a,psc/a,pfet * 18 ndiff,anres,rnd,ndc/a,nsd,nsc/a,nfet 0
+ or XDP
+#give diff nselect priority
+ and-not XDN
+ or TPS
+ shrink 14
+ grow 14
+ grow 14
+ shrink 14
+
+#final nselect
+ templayer FSN
+ bloat-or ndiff,anres,rnd,nfet,nsd,nwsd,ndc/a,nsc/a,nwsc/a,nfet * 18 pdiff,apres,rpd,pdc/a,psd,psc/a,pfet 0
+ and-not nwr
+ or XDN
+#never conflict with final pselect
+ and-not FSP
+#drawn select always goes
+ or TNS
+ shrink 14
+ grow 14
+ grow 14
+ shrink 14
+
+ layer CSN FSN
+ calma 45 0
+
+ layer CSP FSP
+ calma 44 0
+
+ layer CAA diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet
+ labels diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet
+ calma 43 0
+
+ layer CCC nwsc/m1
+ squares 18 18 36
+ calma 25 0
+
+ layer CCC ndc/m1,nsc/m1
+ squares 09 18 36
+ calma 25 0
+
+ layer CCC pdc/m1,psc/m1
+ squares 09 18 36
+ calma 25 0
+
+ layer CPG poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ labels poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ calma 46 0
+
+ layer CCC pc/m1,ppc/m1,pnc/m1
+ squares 09 18 36
+ calma 25 0
+
+ layer CCC gc
+ squares 0 18 36
+ calma 25 0
+
+ layer CV1 m2c/m1
+ squares 09 27 27
+ calma 50 0
+
+ layer CV1 gv1
+ squares 0 27 27
+ calma 50 0
+
+ layer CV2 m3c/m2
+ squares 09 27 27
+ calma 61 0
+
+ layer CV2 gv2
+ squares 0 27 27
+ calma 61 0
+
+ layer CV3 m4c/m3
+ squares 09 27 27
+ calma 30 0
+
+ layer CV3 gv3
+ squares 0 27 27
+ calma 30 0
+
+ layer CV4 m5c/m4
+ squares 09 27 27
+ calma 32 0
+
+ layer CV4 gv4
+ squares 0 27 27
+ calma 32 0
+
+ layer CV5 m6c/m5
+ squares 18 36 36
+ calma 36 0
+
+ layer CV5 gv5
+ squares 0 36 36
+ calma 36 0
+
+ layer CV5 mic/mi
+ squares 27 36 207
+ calma 36 0
+
+ layer CV5 gvi
+ squares 0 36 207
+ calma 36 0
+
+
+ templayer XPAD1 pad
+ shrink 54
+
+ templayer XPAD2 XPAD1
+ shrink 54
+
+ layer CM6 pad
+ labels pad
+ calma 37 0
+
+ layer CV5 XPAD2
+ squares 09 36 72
+ calma 36 0
+
+ layer CM5 pad
+ labels pad
+ calma 33 0
+
+ layer CV4 XPAD2
+ squares 72 27 81
+ calma 32 0
+
+ layer CM4 pad
+ labels pad
+ calma 31 0
+
+ layer CV3 XPAD2
+ squares 18 27 81
+ calma 30 0
+
+ layer CM3 pad
+ labels pad
+ calma 62 0
+
+ layer CV2 XPAD2
+ squares 72 27 81
+ calma 61 0
+
+ layer CM2 pad
+ labels pad
+ calma 51 0
+
+ layer CV1 XPAD2
+ squares 18 27 81
+ calma 50 0
+
+ layer CM1 pad
+ calma 49 0
+
+ layer CM1 m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ labels m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ calma 49 0
+
+ layer CM2 m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ labels m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ calma 51 0
+
+ layer CMFP m1p
+ labels m1p
+ calma 81 0
+
+ layer CMSP m2p
+ labels m2p
+ calma 82 0
+
+ layer 100 fp
+ labels fp
+ calma 100 0
+
+ layer 101 fm1
+ labels fm1
+ calma 101 0
+
+ layer 102 fm2
+ labels fm2
+ calma 102 0
+
+ layer 103 fm3
+ labels fm3
+ calma 103 0
+
+ layer 104 fm4
+ labels fm4
+ calma 104 0
+
+ layer 105 fm5
+ labels fm5
+ calma 105 0
+
+ layer 106 fm6
+ labels fm6
+ calma 106 0
+
+ layer 109 fa
+ or fb
+ squares 0 207 36
+ labels fa
+ calma 109 0
+
+ layer 119 fn
+ calma 119 0
+
+ layer 110 fapm
+ labels fapm
+ calma 110 0
+
+# layer CPG fp
+ layer CPG fp,fapm
+ squares 0 207 36
+ labels fp
+ calma 46 0
+
+# layer CM1 fm1
+ layer CM1 fm1,fapm
+ squares 0 207 36
+ labels fm1
+ calma 49 0
+
+# layer CM2 fm2
+ layer CM2 fm2,fapm
+
+ squares 0 207 36
+ labels fm2
+ calma 51 0
+
+# layer CM3 fm3
+ layer CM3 fm3,fapm
+
+ squares 0 207 36
+ labels fm3
+ calma 62 0
+
+ layer CM3 m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ labels m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ calma 62 0
+
+ layer CMTP m3p
+ labels m3p
+ calma 83 0
+
+ layer CM4 m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ labels m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ calma 31 0
+
+ layer CMQP m4p
+ labels m4p
+ calma 84 0
+
+# layer CM4 fm4
+ layer CM4 fm4,fapm
+
+ squares 0 207 36
+ labels fm4
+ calma 31 0
+
+ layer CM5 m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ labels m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ calma 33 0
+
+ layer CMPP m5p
+ labels m5p
+ calma 85 0
+
+# layer CM5 fm5
+ layer CM5 fm5,fapm
+
+ squares 0 207 36
+ labels fm5
+ calma 33 0
+
+ layer CM6 m6,rm6,m6c/m6,mic/m6
+ labels m6,rm6,m6c/m6,mic/m6
+ calma 37 0
+
+ layer CM6P m6p
+ labels m6p
+ calma 85 0
+
+# layer CM6 fm6
+ layer CM6 fm6,fapm
+
+ squares 0 207 36
+ labels fm6
+ calma 37 0
+
+ layer CTM mi,mic/mi
+ labels mi,mic/mi
+ calma 35 0
+
+ layer COG pad
+ shrink 504
+ labels pad
+ calma 52 0
+
+ layer COG glass
+ labels glass
+ calma 52 0
+
+ layer CFI nfi,pfi
+ labels nfi,pfi
+ calma 27 0
+
+ layer CSB sb,pres,anres,apres
+ labels sb,pres,anres,apres
+ calma 29 0
+
+#CRE/CRM
+ layer CRW rnw,prnw
+ labels rnw,prnw
+ calma 65 0
+ layer CRG rp,prp,pres
+ labels rp,prp,pres
+ calma 67 0
+ layer CRD rnd,rpd,prnd,prpd,anres,apres
+ labels rnd,rpd,prnd,prpd,anres,apres
+ calma 66 0
+ layer CRE rnw,rp,rnd,rpd,pres,anres,apres
+ labels rnw,rp,rnd,rpd,pres,anres,apres
+ calma 64 0
+ layer CRF rm1,prm1
+ labels rm1,prm1
+ calma 71 0
+ layer CRS rm2,prm2
+ labels rm2,prm2
+ calma 72 0
+ layer CRT rm3,prm3
+ labels rm3,prm3
+ calma 73 0
+ layer CRQ rm4,prm4
+ labels rm4,prm4
+ calma 74 0
+ layer CRP rm5,prm5
+ labels rm5,prm5
+ calma 75 0
+ layer CR6 rm6,prm6
+ labels rm6,prm6
+ calma 76 0
+ layer CRI rmi,prmi
+ labels rmi,prmi
+ calma 79 0
+#CRE/CRM layer CRM rm1,prm1,rm2,prm2,rm3,prm3,rm4,prm4,rm5,prm5,rm6,prm6,rmi,prmi
+#CRE/CRM calma 70 0
+
+ layer CX comment
+ labels comment
+ calma 63 0
+
+ layer XP pad,xp
+ labels pad,xp
+ calma 26 0
+
+
+style lambda=0.09()
+ scalefactor 9
+
+ layer CWN nwell,rnw,nwr,nwsd,nwsc
+ bloat-or pdiff,apres,rpd,pdc/a,pfet * 54
+ bloat-or nsd,nsc/a * 27
+ bloat-or nfi * 36
+ grow 27
+ shrink 27
+ labels nwell,rnw,nwr,nwsd,nwsc
+ calma 42 0
+
+ layer CWNR nwsd,nwsc,nwr
+ grow 135
+ calma 91 0
+
+ layer CWND nwr
+ labels nwr
+ calma 92 0
+
+ layer CAA nwsd,nwsc,nwr
+ grow 108
+ labels nwsd,nwsc
+ calma 43 0
+
+ layer CSN
+ bloat-or nwsd,nwsc * 72 nwr 0
+ calma 43 0
+
+ templayer TNWR
+ bloat-or nwr * 108 nwsd,nwsc 45
+
+ templayer TCSB nwsd,nwsc
+ grow 27
+ and-not TNWR
+
+ layer CSB nwsd,nwsc,nwr
+ grow 135
+ and-not TCSB
+ calma 29 0
+
+ layer CRNW pnwr
+ labels pnwr
+ calma 93 0
+
+ templayer TNS ndiff,anres,rnd,ndc/a,nsd,nsc/a
+ and gc
+ grow 9
+ or ndc/m1,nsc/m1,nwsc/m1
+ grow 5
+ or nselect
+
+ templayer TPS pdiff,apres,rpd,pdc/a,psd,psc/a
+ and gc
+ grow 9
+ or pdc/m1,psc/m1
+ grow 5
+ or pselect
+
+#we give priority to selects autogenerated around diffusions (vrs. ohmics)
+#XDP = (pdiff*18) Or ps
+#XDN = (ndiff*18) Or ns
+#FSP = ((pdiff*18,psc*18) Or XDP And-Not XDN Or ps shrink-grow
+#FSN = ((ndiff*18,nsc*18) Or XDN And-Not FDP Or ns shrink-grow
+#CSN = FSN
+#CSP = FSP
+
+#diffusion auto-nselect (will have priority)
+ templayer XDN
+ bloat-or ndiff,anres,rnd,ndc/a * 18 psd,psc/a 0
+ bloat-or pn * 09 pp 0
+ or TNS
+
+#diffusion auto-pselect (will have priority)
+ templayer XDP
+ bloat-or pdiff,apres,rpd,pdc/a * 18 nsd,nsc/a 0
+ bloat-or pp * 09 pn 0
+ or TPS
+
+#final pselect
+ templayer FSP
+ bloat-or pdiff,apres,rpd,pfet,psd,pdc/a,psc/a,pfet * 18 ndiff,anres,rnd,ndc/a,nsd,nsc/a,nfet 0
+ or XDP
+#give diff nselect priority
+ and-not XDN
+ or TPS
+ shrink 14
+ grow 14
+ grow 14
+ shrink 14
+
+#final nselect
+ templayer FSN
+ bloat-or ndiff,anres,rnd,nfet,nsd,nwsd,ndc/a,nsc/a,nwsc/a,nfet * 18 pdiff,apres,rpd,pdc/a,psd,psc/a,pfet 0
+ and-not nwr
+ or XDN
+#never conflict with final pselect
+ and-not FSP
+#drawn select always goes
+ or TNS
+ shrink 14
+ grow 14
+ grow 14
+ shrink 14
+
+ layer CSN FSN
+ calma 45 0
+
+ layer CSP FSP
+ calma 44 0
+
+ layer CAA diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet
+ labels diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,pfet,pfet,fet
+ calma 43 0
+
+ layer CCA nwsc/m1
+ squares 18 18 36
+ calma 48 0
+
+ layer CCA ndc/m1,nsc/m1
+ squares 09 18 36
+ calma 48 0
+
+ layer CCA pdc/m1,psc/m1
+ squares 09 18 36
+ calma 48 0
+
+ layer CPG poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ labels poly,pp,pn,pres,rp,nfet,pfet,fet,pc/a,ppc/a,pnc/a
+ calma 46 0
+
+ layer CCP pc/m1,ppc/m1,pnc/m1
+ squares 09 18 36
+ calma 47 0
+
+ layer CCC gc
+ squares 0 18 36
+ calma 25 0
+
+ layer CV1 m2c/m1
+ squares 09 27 27
+ calma 50 0
+
+ layer CV1 gv1
+ squares 0 27 27
+ calma 50 0
+
+ layer CV2 m3c/m2
+ squares 09 27 27
+ calma 61 0
+
+ layer CV2 gv2
+ squares 0 27 27
+ calma 61 0
+
+ layer CV3 m4c/m3
+ squares 09 27 27
+ calma 30 0
+
+ layer CV3 gv3
+ squares 0 27 27
+ calma 30 0
+
+ layer CV4 m5c/m4
+ squares 09 27 27
+ calma 32 0
+
+ layer CV4 gv4
+ squares 0 27 27
+ calma 32 0
+
+ layer CV5 m6c/m5
+ squares 18 36 36
+ calma 36 0
+
+ layer CV5 gv5
+ squares 0 36 36
+ calma 36 0
+
+ layer CV5 mic/mi
+ squares 27 36 207
+ calma 36 0
+
+ layer CV5 gvi
+ squares 0 36 207
+ calma 36 0
+
+
+ templayer XPAD1 pad
+ shrink 54
+
+ templayer XPAD2 XPAD1
+ shrink 54
+
+ layer CM6 pad
+ labels pad
+ calma 37 0
+
+ layer CV5 XPAD2
+ squares 09 36 72
+ calma 36 0
+
+ layer CM5 pad
+ labels pad
+ calma 33 0
+
+ layer CV4 XPAD2
+ squares 72 27 81
+ calma 32 0
+
+ layer CM4 pad
+ labels pad
+ calma 31 0
+
+ layer CV3 XPAD2
+ squares 18 27 81
+ calma 30 0
+
+ layer CM3 pad
+ labels pad
+ calma 62 0
+
+ layer CV2 XPAD2
+ squares 72 27 81
+ calma 61 0
+
+ layer CM2 pad
+ labels pad
+ calma 51 0
+
+ layer CV1 XPAD2
+ squares 18 27 81
+ calma 50 0
+
+ layer CM1 pad
+ calma 49 0
+
+ layer CM1 m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ labels m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1
+ calma 49 0
+
+ layer CM2 m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ labels m2,rm2,m2c/m2,m3c/m2,m3c/m2
+ calma 51 0
+
+ layer CMFP m1p
+ labels m1p
+ calma 81 0
+
+ layer CMSP m2p
+ labels m2p
+ calma 82 0
+
+ layer 100 fp
+ labels fp
+ calma 100 0
+
+ layer 101 fm1
+ labels fm1
+ calma 101 0
+
+ layer 102 fm2
+ labels fm2
+ calma 102 0
+
+ layer 103 fm3
+ labels fm3
+ calma 103 0
+
+ layer 104 fm4
+ labels fm4
+ calma 104 0
+
+ layer 105 fm5
+ labels fm5
+ calma 105 0
+
+ layer 106 fm6
+ labels fm6
+ calma 106 0
+
+ layer 109 fa
+ or fb
+ squares 0 207 36
+ labels fa
+ calma 109 0
+
+ layer 119 fn
+ calma 119 0
+
+ layer 110 fapm
+ labels fapm
+ calma 110 0
+
+# layer CPG fp
+ layer CPG fp,fapm
+ squares 0 207 36
+ labels fp
+ calma 46 0
+
+# layer CM1 fm1
+ layer CM1 fm1,fapm
+ squares 0 207 36
+ labels fm1
+ calma 49 0
+
+# layer CM2 fm2
+ layer CM2 fm2,fapm
+
+ squares 0 207 36
+ labels fm2
+ calma 51 0
+
+# layer CM3 fm3
+ layer CM3 fm3,fapm
+
+ squares 0 207 36
+ labels fm3
+ calma 62 0
+
+ layer CM3 m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ labels m3,rm3,m3c/m3,m4c/m3,m4c/m3
+ calma 62 0
+
+ layer CMTP m3p
+ labels m3p
+ calma 83 0
+
+ layer CM4 m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ labels m4,rm4,m4c/m4,m5c/m4,m5c/m4
+ calma 31 0
+
+ layer CMQP m4p
+ labels m4p
+ calma 84 0
+
+# layer CM4 fm4
+ layer CM4 fm4,fapm
+
+ squares 0 207 36
+ labels fm4
+ calma 31 0
+
+ layer CM5 m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ labels m5,rm5,m5c/m5,m6c/m5,m6c/m5
+ calma 33 0
+
+ layer CMPP m5p
+ labels m5p
+ calma 85 0
+
+# layer CM5 fm5
+ layer CM5 fm5,fapm
+
+ squares 0 207 36
+ labels fm5
+ calma 33 0
+
+ layer CM6 m6,rm6,m6c/m6,mic/m6
+ labels m6,rm6,m6c/m6,mic/m6
+ calma 37 0
+
+ layer CM6P m6p
+ labels m6p
+ calma 85 0
+
+# layer CM6 fm6
+ layer CM6 fm6,fapm
+
+ squares 0 207 36
+ labels fm6
+ calma 37 0
+
+ layer CTM mi,mic/mi
+ labels mi,mic/mi
+ calma 35 0
+
+ layer COG pad
+ shrink 504
+ labels pad
+ calma 52 0
+
+ layer COG glass
+ labels glass
+ calma 52 0
+
+ layer CFI nfi,pfi
+ labels nfi,pfi
+ calma 27 0
+
+ layer CSB sb,pres,anres,apres
+ labels sb,pres,anres,apres
+ calma 29 0
+
+#CRE/CRM
+ layer CRW rnw,prnw
+ labels rnw,prnw
+ calma 65 0
+ layer CRG rp,prp,pres
+ labels rp,prp,pres
+ calma 67 0
+ layer CRD rnd,rpd,prnd,prpd,anres,apres
+ labels rnd,rpd,prnd,prpd,anres,apres
+ calma 66 0
+ layer CRE rnw,rp,rnd,rpd,pres,anres,apres
+ labels rnw,rp,rnd,rpd,pres,anres,apres
+ calma 64 0
+ layer CRF rm1,prm1
+ labels rm1,prm1
+ calma 71 0
+ layer CRS rm2,prm2
+ labels rm2,prm2
+ calma 72 0
+ layer CRT rm3,prm3
+ labels rm3,prm3
+ calma 73 0
+ layer CRQ rm4,prm4
+ labels rm4,prm4
+ calma 74 0
+ layer CRP rm5,prm5
+ labels rm5,prm5
+ calma 75 0
+ layer CR6 rm6,prm6
+ labels rm6,prm6
+ calma 76 0
+ layer CRI rmi,prmi
+ labels rmi,prmi
+ calma 79 0
+#CRE/CRM layer CRM rm1,prm1,rm2,prm2,rm3,prm3,rm4,prm4,rm5,prm5,rm6,prm6,rmi,prmi
+#CRE/CRM calma 70 0
+
+ layer CX comment
+ labels comment
+ calma 63 0
+
+ layer XP pad,xp
+ labels pad,xp
+ calma 26 0
+
+end
+
+cifinput
+
+style lambda=0.09(p)
+ scalefactor 9
+
+ layer nwell CWN
+ and-not CWNR
+ and-not CTA
+ labels CWN
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRW
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer pseudo_rnwell CRW
+ and-not CRE
+ calma CRW 65 *
+
+ calma CWNR 91 *
+
+ layer nwr CWND
+ calma CWND 92 *
+
+ layer pseudo_nwr CRNW
+ calma CRNW 93 *
+
+ layer pwell CWP
+ and-not CTA
+ labels CWP
+ calma CWP 41 *
+
+ layer diff CAA
+ and-not CTA
+ and-not CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer tran CAA
+ and-not CTA
+ and CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ calma CSN 45 *
+
+ calma CSP 44 *
+
+ layer ndiff CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRD
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rndiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and CSN
+ and-not CBA
+ calma CRD 66 *
+
+ layer pdiff CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRD
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rpdiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CRD 66 *
+
+ layer nfet CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer pfet CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nsd CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer psd CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nwsd CAA
+ and CSN
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and-not CV1
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and-not CV1
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and-not CV3
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and-not CV3
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer poly CPG
+ and-not CRE
+ labels CPG
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRE
+ and-not CSB
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRG
+ calma CPG 46 *
+
+ layer pseudo_rpoly CRG
+ and-not CRE
+ calma CRG 67 *
+
+ layer pc CCP
+ and-not CV1
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and-not CV1
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pc CCP
+ and CV1
+ and CV2
+ and-not CV3
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pc CCP
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer gc CCP
+ and-not CPG
+ and-not CPC
+ calma CCP 47 *
+
+ layer gc CCP
+ and-not CM1
+ calma CCP 47 *
+
+ layer gc CCA
+ and-not COP
+ and-not CAA
+ and-not CBA
+ calma CCA 48 *
+
+ layer gc CCA
+ and-not COP
+ and-not CM1
+ calma CCA 48 *
+
+ layer gc CCC
+ and-not COP
+ and-not CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ and-not CBA
+ calma CCC 25 *
+
+ layer gc CCC
+ and-not COP
+ and-not CM1
+ calma CCC 25 *
+
+ layer gc CCE
+ and-not CPC
+ and-not CEL
+ calma CCE 55 *
+
+ layer gc CCE
+ and-not CM1
+ calma CCE 55 *
+
+ layer gv1 CV1
+ and-not COP
+ and-not CM1
+ calma CV1 50 *
+
+ layer gv1 CV1
+ and-not COP
+ and-not CM2
+ calma CV1 50 *
+
+ layer gv2 CV2
+ and-not COP
+ and-not CM2
+ calma CV2 61 *
+
+ layer gv2 CV2
+ and-not COP
+ and-not CM3
+ calma CV2 61 *
+
+ layer gv3 CV3
+ and-not COP
+ and-not CM3
+ calma CV3 30 *
+
+ layer gv3 CV3
+ and-not COP
+ and-not CM4
+ calma CV3 30 *
+
+ layer gv4 CV4
+ and-not CTM
+ and-not COP
+ and-not CM4
+ calma CV4 32 *
+
+ layer gv4 CV4
+ and-not CTM
+ and-not COP
+ and-not CM5
+ calma CV4 32 *
+
+ layer gv5 CV5
+ and-not CTM
+ and-not COP
+ and-not CM5
+ calma CV5 36 *
+
+ layer gv5 CV5
+ and-not CTM
+ and-not COP
+ and-not CM6
+ calma CV5 36 *
+
+ layer gvi CV5
+ and CTM
+ and-not COP
+ and-not CM6
+ calma CV5 36 *
+
+ layer m2c CV1
+ and-not CV2
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+ layer m2c CV1
+ and CV2
+ and CV3
+ and-not CV4
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+ layer m2c CV1
+ and CV5
+ and CV4
+ and CV3
+ and CV2
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+
+
+
+
+
+
+ layer m1 CM1
+ and-not CRM
+ and-not CRF
+ and-not XP
+ labels CM1
+ calma CM1 49 *
+
+ layer rm1 CRM
+ and CM1
+ calma CRM 70 *
+
+ layer rm1 CRF
+ and CM1
+ calma CRF 71 *
+
+ layer pseudo_rmetal1 CRF
+ and-not rm1
+ calma CRF 71 *
+
+ layer m1p CMFP
+ labels CMFP
+ calma CMFP 81 *
+
+ layer m2 CM2
+ and-not CRM
+ and-not CRS
+ and-not XP
+ labels CM2
+ calma CM2 51 *
+
+ layer rm2 CRM
+ and CM2
+ calma CRM 70 *
+
+ layer rm2 CRS
+ and CM2
+ calma CRS 72 *
+
+ layer pseudo_rmetal2 CRS
+ and-not rm2
+ calma CRS 72 *
+
+ layer m2p CMSP
+ labels CMSP
+ calma CMSP 82 *
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ layer fp 100
+ calma 100 100 *
+
+ layer fm1 101
+ calma 101 101 *
+
+ layer fm2 102
+ calma 102 102 *
+
+ layer fm3 103
+ calma 103 103 *
+
+ layer fm4 104
+ calma 104 104 *
+
+ layer fm5 105
+ calma 105 105 *
+
+ layer fm6 106
+ calma 106 106 *
+
+ layer fa 109
+ calma 109 109 *
+
+ layer fn 119
+ calma 119 119 *
+
+ layer fapm 110
+ calma 110 110 *
+
+ layer m3c CV2
+ and-not CV3
+ and-not CV1
+ and-not XP
+ grow 09
+ and CM3
+ and CM2
+ grow 5
+ shrink 5
+ calma CV2 61 *
+
+ layer m3c CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CV1
+ and-not XP
+ grow 09
+ and CM3
+ and CM2
+ grow 5
+ shrink 5
+ calma CV2 61 *
+
+
+
+ layer m3 CM3
+ and-not CRM
+ and-not CRT
+ and-not XP
+ labels CM3
+ calma CM3 62 *
+
+ layer rm3 CRM
+ and CM3
+ calma CRM 70 *
+
+ layer rm3 CRT
+ and CM3
+ calma CRT 73 *
+
+ layer pseudo_rmetal3 CRT
+ and-not rm3
+ calma CRT 73 *
+
+ layer m3p CMTP
+ labels CMTP
+ calma CMTP 83 *
+
+
+
+ layer m4 CM4
+ and-not CRM
+ and-not CRQ
+ and-not XP
+ labels CM4
+ calma CM4 31 *
+
+ layer rm4 CRM
+ and CM4
+ calma CRM 70 *
+
+ layer rm4 CRQ
+ and CM4
+ calma CRQ 74 *
+
+ layer pseudo_rmetal4 CRQ
+ and-not rm4
+ calma CRQ 74 *
+
+ layer m4p CMQP
+ labels CMQP
+ calma CMQP 84 *
+
+ layer m4c CV3
+ and-not CV4
+ and-not CV2
+ and-not XP
+ grow 09
+ and CM4
+ and CM3
+ grow 09
+ shrink 09
+ calma CV3 30 *
+
+ layer m4c CV3
+ and CV4
+ and CV5
+ and-not CV2
+ and-not XP
+ grow 09
+ and CM4
+ and CM3
+ grow 09
+ shrink 09
+ calma CV3 30 *
+
+
+ layer m5 CM5
+ and-not CRM
+ and-not CRP
+ and-not XP
+ labels CM5
+ calma CM5 33 *
+
+ layer rm5 CRM
+ and CM5
+ calma CRM 70 *
+
+ layer rm5 CRP
+ and CM5
+ calma CRP 75 *
+
+ layer pseudo_rmetal5 CRP
+ and-not rm5
+ calma CRP 75 *
+
+ layer m5p CMPP
+ labels CMPP
+ calma CMPP 85 *
+
+ layer m5c CV4
+
+ and-not CV5
+ and-not CV3
+ and-not XP
+ grow 09
+ and CM5
+ and CM4
+ grow 09
+ shrink 09
+ calma CV4 32 *
+
+
+ layer m6 CM6
+ and-not CRM
+ and-not CR6
+ and-not XP
+ labels CM6
+ calma CM6 37 *
+
+ layer rm6 CRM
+ and CM6
+ calma CRM 70 *
+
+ layer rm6 CR6
+ and CM6
+ calma CR6 76 *
+
+ layer pseudo_rmetal6 CR6
+ and-not rm6
+ calma CR6 76 *
+
+ layer m6p CM6P
+ labels CM6P
+ calma CM6P 85 *
+
+ layer m6c CV5
+ and-not CTM
+ shrink 09
+ and-not CV4
+ grow 09
+ and-not XP
+ grow 09
+ and CM6
+ and CM5
+ grow 09
+ shrink 09
+ calma CV5 36 *
+
+ layer mic CV5
+ and CTM
+ and-not XP
+ grow 27
+ and CTM
+ layer mi CTM
+ and-not CRM
+ and-not CRI
+ and-not XP
+ labels CTM
+ calma CTM 35 *
+
+ layer rmi CRM
+ and CTM
+ calma CRM 70 *
+
+ layer rmi CRI
+ and CTM
+ calma CRI 79 *
+
+ layer pseudo_rmetali CRI
+ and-not rmi
+ calma CRI 79 *
+
+ layer mic CV5
+ grow 5
+ and CTM
+ and-not XP
+ grow 103
+ and CTM
+ and CM6
+ grow 09
+ shrink 09
+ calma CV5 36 *
+
+ layer pad XP
+ labels pad
+ calma XP 26 *
+
+ layer glass COG
+ and-not COP
+ and-not XP
+ labels COG
+ calma COG 52 *
+
+ layer nfi CFI
+ and CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer pfi CFI
+ and-not CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer sb CSB
+ and-not CWNR
+ labels CSB
+ calma CSB 29 *
+
+ layer pres CPG
+ and CSB
+ calma CPG 46 *
+
+ layer anres CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer apres CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and-not CBA
+ calma CAA 43 *
+
+ layer comment CX
+ labels CX
+ calma CX 63 *
+
+ calma CTA 60 *
+
+ calma CRW 65 *
+ calma CRG 67 *
+ calma CRD 66 *
+ calma CRE 64 *
+ calma CRF 71 *
+ calma CRS 72 *
+ calma CRT 73 *
+ calma CRQ 74 *
+ calma CRP 75 *
+ calma CR6 76 *
+ calma CRI 79 *
+ calma CRM 70 *
+
+
+style lambda=0.09(s)
+ scalefactor 9
+
+ layer nwell CWN
+ and-not CWNR
+ and-not CTA
+ labels CWN
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRW
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer pseudo_rnwell CRW
+ and-not CRE
+ calma CRW 65 *
+
+ calma CWNR 91 *
+
+ layer nwr CWND
+ calma CWND 92 *
+
+ layer pseudo_nwr CRNW
+ calma CRNW 93 *
+
+
+ ignore CWP
+ calma CWP 41 *
+
+ layer diff CAA
+ and-not CTA
+ and-not CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer tran CAA
+ and-not CTA
+ and CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer nselect CSN
+ calma CSN 45 *
+
+ layer pselect CSP
+ calma CSP 44 *
+
+ layer ndiff CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRD
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rndiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and CSN
+ and-not CBA
+ calma CRD 66 *
+
+ layer pdiff CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRD
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rpdiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CRD 66 *
+
+ layer nfet CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer pfet CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nsd CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer psd CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nwsd CAA
+ and CSN
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and-not CV1
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and-not CV1
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and-not CV3
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and-not CV3
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer poly CPG
+ and-not CRE
+ labels CPG
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRE
+ and-not CSB
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRG
+ calma CPG 46 *
+
+ layer pseudo_rpoly CRG
+ and-not CRE
+ calma CRG 67 *
+
+ layer pc CCP
+ and-not CV1
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and-not CV1
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pc CCP
+ and CV1
+ and CV2
+ and-not CV3
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pc CCP
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer gc CCP
+ and-not CPG
+ and-not CPC
+ calma CCP 47 *
+
+ layer gc CCP
+ and-not CM1
+ calma CCP 47 *
+
+ layer gc CCA
+ and-not COP
+ and-not CAA
+ and-not CBA
+ calma CCA 48 *
+
+ layer gc CCA
+ and-not COP
+ and-not CM1
+ calma CCA 48 *
+
+ layer gc CCC
+ and-not COP
+ and-not CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ and-not CBA
+ calma CCC 25 *
+
+ layer gc CCC
+ and-not COP
+ and-not CM1
+ calma CCC 25 *
+
+ layer gc CCE
+ and-not CPC
+ and-not CEL
+ calma CCE 55 *
+
+ layer gc CCE
+ and-not CM1
+ calma CCE 55 *
+
+ layer gv1 CV1
+ and-not COP
+ and-not CM1
+ calma CV1 50 *
+
+ layer gv1 CV1
+ and-not COP
+ and-not CM2
+ calma CV1 50 *
+
+ layer gv2 CV2
+ and-not COP
+ and-not CM2
+ calma CV2 61 *
+
+ layer gv2 CV2
+ and-not COP
+ and-not CM3
+ calma CV2 61 *
+
+ layer gv3 CV3
+ and-not COP
+ and-not CM3
+ calma CV3 30 *
+
+ layer gv3 CV3
+ and-not COP
+ and-not CM4
+ calma CV3 30 *
+
+ layer gv4 CV4
+ and-not CTM
+ and-not COP
+ and-not CM4
+ calma CV4 32 *
+
+ layer gv4 CV4
+ and-not CTM
+ and-not COP
+ and-not CM5
+ calma CV4 32 *
+
+ layer gv5 CV5
+ and-not CTM
+ and-not COP
+ and-not CM5
+ calma CV5 36 *
+
+ layer gv5 CV5
+ and-not CTM
+ and-not COP
+ and-not CM6
+ calma CV5 36 *
+
+ layer gvi CV5
+ and CTM
+ and-not COP
+ and-not CM6
+ calma CV5 36 *
+
+ layer m2c CV1
+ and-not CV2
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+ layer m2c CV1
+ and CV2
+ and CV3
+ and-not CV4
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+ layer m2c CV1
+ and CV5
+ and CV4
+ and CV3
+ and CV2
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+
+
+
+
+
+
+ layer m1 CM1
+ and-not CRM
+ and-not CRF
+ and-not XP
+ labels CM1
+ calma CM1 49 *
+
+ layer rm1 CRM
+ and CM1
+ calma CRM 70 *
+
+ layer rm1 CRF
+ and CM1
+ calma CRF 71 *
+
+ layer pseudo_rmetal1 CRF
+ and-not rm1
+ calma CRF 71 *
+
+ layer m1p CMFP
+ labels CMFP
+ calma CMFP 81 *
+
+ layer m2 CM2
+ and-not CRM
+ and-not CRS
+ and-not XP
+ labels CM2
+ calma CM2 51 *
+
+ layer rm2 CRM
+ and CM2
+ calma CRM 70 *
+
+ layer rm2 CRS
+ and CM2
+ calma CRS 72 *
+
+ layer pseudo_rmetal2 CRS
+ and-not rm2
+ calma CRS 72 *
+
+ layer m2p CMSP
+ labels CMSP
+ calma CMSP 82 *
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ layer fp 100
+ calma 100 100 *
+
+ layer fm1 101
+ calma 101 101 *
+
+ layer fm2 102
+ calma 102 102 *
+
+ layer fm3 103
+ calma 103 103 *
+
+ layer fm4 104
+ calma 104 104 *
+
+ layer fm5 105
+ calma 105 105 *
+
+ layer fm6 106
+ calma 106 106 *
+
+ layer fa 109
+ calma 109 109 *
+
+ layer fn 119
+ calma 119 119 *
+
+ layer fapm 110
+ calma 110 110 *
+
+ layer m3c CV2
+ and-not CV3
+ and-not CV1
+ and-not XP
+ grow 09
+ and CM3
+ and CM2
+ grow 5
+ shrink 5
+ calma CV2 61 *
+
+ layer m3c CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CV1
+ and-not XP
+ grow 09
+ and CM3
+ and CM2
+ grow 5
+ shrink 5
+ calma CV2 61 *
+
+
+
+ layer m3 CM3
+ and-not CRM
+ and-not CRT
+ and-not XP
+ labels CM3
+ calma CM3 62 *
+
+ layer rm3 CRM
+ and CM3
+ calma CRM 70 *
+
+ layer rm3 CRT
+ and CM3
+ calma CRT 73 *
+
+ layer pseudo_rmetal3 CRT
+ and-not rm3
+ calma CRT 73 *
+
+ layer m3p CMTP
+ labels CMTP
+ calma CMTP 83 *
+
+
+
+ layer m4 CM4
+ and-not CRM
+ and-not CRQ
+ and-not XP
+ labels CM4
+ calma CM4 31 *
+
+ layer rm4 CRM
+ and CM4
+ calma CRM 70 *
+
+ layer rm4 CRQ
+ and CM4
+ calma CRQ 74 *
+
+ layer pseudo_rmetal4 CRQ
+ and-not rm4
+ calma CRQ 74 *
+
+ layer m4p CMQP
+ labels CMQP
+ calma CMQP 84 *
+
+ layer m4c CV3
+ and-not CV4
+ and-not CV2
+ and-not XP
+ grow 09
+ and CM4
+ and CM3
+ grow 09
+ shrink 09
+ calma CV3 30 *
+
+ layer m4c CV3
+ and CV4
+ and CV5
+ and-not CV2
+ and-not XP
+ grow 09
+ and CM4
+ and CM3
+ grow 09
+ shrink 09
+ calma CV3 30 *
+
+
+ layer m5 CM5
+ and-not CRM
+ and-not CRP
+ and-not XP
+ labels CM5
+ calma CM5 33 *
+
+ layer rm5 CRM
+ and CM5
+ calma CRM 70 *
+
+ layer rm5 CRP
+ and CM5
+ calma CRP 75 *
+
+ layer pseudo_rmetal5 CRP
+ and-not rm5
+ calma CRP 75 *
+
+ layer m5p CMPP
+ labels CMPP
+ calma CMPP 85 *
+
+ layer m5c CV4
+
+ and-not CV5
+ and-not CV3
+ and-not XP
+ grow 09
+ and CM5
+ and CM4
+ grow 09
+ shrink 09
+ calma CV4 32 *
+
+
+ layer m6 CM6
+ and-not CRM
+ and-not CR6
+ and-not XP
+ labels CM6
+ calma CM6 37 *
+
+ layer rm6 CRM
+ and CM6
+ calma CRM 70 *
+
+ layer rm6 CR6
+ and CM6
+ calma CR6 76 *
+
+ layer pseudo_rmetal6 CR6
+ and-not rm6
+ calma CR6 76 *
+
+ layer m6p CM6P
+ labels CM6P
+ calma CM6P 85 *
+
+ layer m6c CV5
+ and-not CTM
+ shrink 09
+ and-not CV4
+ grow 09
+ and-not XP
+ grow 09
+ and CM6
+ and CM5
+ grow 09
+ shrink 09
+ calma CV5 36 *
+
+ layer mic CV5
+ and CTM
+ and-not XP
+ grow 27
+ and CTM
+ layer mi CTM
+ and-not CRM
+ and-not CRI
+ and-not XP
+ labels CTM
+ calma CTM 35 *
+
+ layer rmi CRM
+ and CTM
+ calma CRM 70 *
+
+ layer rmi CRI
+ and CTM
+ calma CRI 79 *
+
+ layer pseudo_rmetali CRI
+ and-not rmi
+ calma CRI 79 *
+
+ layer mic CV5
+ grow 5
+ and CTM
+ and-not XP
+ grow 103
+ and CTM
+ and CM6
+ grow 09
+ shrink 09
+ calma CV5 36 *
+
+ layer pad XP
+ labels pad
+ calma XP 26 *
+
+ layer glass COG
+ and-not COP
+ and-not XP
+ labels COG
+ calma COG 52 *
+
+ layer nfi CFI
+ and CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer pfi CFI
+ and-not CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer sb CSB
+ and-not CWNR
+ labels CSB
+ calma CSB 29 *
+
+ layer pres CPG
+ and CSB
+ calma CPG 46 *
+
+ layer anres CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer apres CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and-not CBA
+ calma CAA 43 *
+
+ layer comment CX
+ labels CX
+ calma CX 63 *
+
+ calma CTA 60 *
+
+ calma CRW 65 *
+ calma CRG 67 *
+ calma CRD 66 *
+ calma CRE 64 *
+ calma CRF 71 *
+ calma CRS 72 *
+ calma CRT 73 *
+ calma CRQ 74 *
+ calma CRP 75 *
+ calma CR6 76 *
+ calma CRI 79 *
+ calma CRM 70 *
+
+
+style lambda=0.09(ps)
+ scalefactor 9
+
+ layer nwell CWN
+ and-not CWNR
+ and-not CTA
+ labels CWN
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRW
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer pseudo_rnwell CRW
+ and-not CRE
+ calma CRW 65 *
+
+ calma CWNR 91 *
+
+ layer nwr CWND
+ calma CWND 92 *
+
+ layer pseudo_nwr CRNW
+ calma CRNW 93 *
+
+ layer pwell CWP
+ and-not CTA
+ labels CWP
+ calma CWP 41 *
+
+ layer diff CAA
+ and-not CTA
+ and-not CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer tran CAA
+ and-not CTA
+ and CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer nselect CSN
+ calma CSN 45 *
+
+ layer pselect CSP
+ calma CSP 44 *
+
+ layer ndiff CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRD
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rndiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and CSN
+ and-not CBA
+ calma CRD 66 *
+
+ layer pdiff CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRD
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rpdiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CRD 66 *
+
+ layer nfet CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer pfet CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nsd CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer psd CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nwsd CAA
+ and CSN
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and-not CV1
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and-not CV1
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and-not CV3
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and-not CV3
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer poly CPG
+ and-not CRE
+ labels CPG
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRE
+ and-not CSB
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRG
+ calma CPG 46 *
+
+ layer pseudo_rpoly CRG
+ and-not CRE
+ calma CRG 67 *
+
+ layer pc CCP
+ and-not CV1
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and-not CV1
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pc CCP
+ and CV1
+ and CV2
+ and-not CV3
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pc CCP
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer gc CCP
+ and-not CPG
+ and-not CPC
+ calma CCP 47 *
+
+ layer gc CCP
+ and-not CM1
+ calma CCP 47 *
+
+ layer gc CCA
+ and-not COP
+ and-not CAA
+ and-not CBA
+ calma CCA 48 *
+
+ layer gc CCA
+ and-not COP
+ and-not CM1
+ calma CCA 48 *
+
+ layer gc CCC
+ and-not COP
+ and-not CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ and-not CBA
+ calma CCC 25 *
+
+ layer gc CCC
+ and-not COP
+ and-not CM1
+ calma CCC 25 *
+
+ layer gc CCE
+ and-not CPC
+ and-not CEL
+ calma CCE 55 *
+
+ layer gc CCE
+ and-not CM1
+ calma CCE 55 *
+
+ layer gv1 CV1
+ and-not COP
+ and-not CM1
+ calma CV1 50 *
+
+ layer gv1 CV1
+ and-not COP
+ and-not CM2
+ calma CV1 50 *
+
+ layer gv2 CV2
+ and-not COP
+ and-not CM2
+ calma CV2 61 *
+
+ layer gv2 CV2
+ and-not COP
+ and-not CM3
+ calma CV2 61 *
+
+ layer gv3 CV3
+ and-not COP
+ and-not CM3
+ calma CV3 30 *
+
+ layer gv3 CV3
+ and-not COP
+ and-not CM4
+ calma CV3 30 *
+
+ layer gv4 CV4
+ and-not CTM
+ and-not COP
+ and-not CM4
+ calma CV4 32 *
+
+ layer gv4 CV4
+ and-not CTM
+ and-not COP
+ and-not CM5
+ calma CV4 32 *
+
+ layer gv5 CV5
+ and-not CTM
+ and-not COP
+ and-not CM5
+ calma CV5 36 *
+
+ layer gv5 CV5
+ and-not CTM
+ and-not COP
+ and-not CM6
+ calma CV5 36 *
+
+ layer gvi CV5
+ and CTM
+ and-not COP
+ and-not CM6
+ calma CV5 36 *
+
+ layer m2c CV1
+ and-not CV2
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+ layer m2c CV1
+ and CV2
+ and CV3
+ and-not CV4
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+ layer m2c CV1
+ and CV5
+ and CV4
+ and CV3
+ and CV2
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+
+
+
+
+
+
+ layer m1 CM1
+ and-not CRM
+ and-not CRF
+ and-not XP
+ labels CM1
+ calma CM1 49 *
+
+ layer rm1 CRM
+ and CM1
+ calma CRM 70 *
+
+ layer rm1 CRF
+ and CM1
+ calma CRF 71 *
+
+ layer pseudo_rmetal1 CRF
+ and-not rm1
+ calma CRF 71 *
+
+ layer m1p CMFP
+ labels CMFP
+ calma CMFP 81 *
+
+ layer m2 CM2
+ and-not CRM
+ and-not CRS
+ and-not XP
+ labels CM2
+ calma CM2 51 *
+
+ layer rm2 CRM
+ and CM2
+ calma CRM 70 *
+
+ layer rm2 CRS
+ and CM2
+ calma CRS 72 *
+
+ layer pseudo_rmetal2 CRS
+ and-not rm2
+ calma CRS 72 *
+
+ layer m2p CMSP
+ labels CMSP
+ calma CMSP 82 *
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ layer fp 100
+ calma 100 100 *
+
+ layer fm1 101
+ calma 101 101 *
+
+ layer fm2 102
+ calma 102 102 *
+
+ layer fm3 103
+ calma 103 103 *
+
+ layer fm4 104
+ calma 104 104 *
+
+ layer fm5 105
+ calma 105 105 *
+
+ layer fm6 106
+ calma 106 106 *
+
+ layer fa 109
+ calma 109 109 *
+
+ layer fn 119
+ calma 119 119 *
+
+ layer fapm 110
+ calma 110 110 *
+
+ layer m3c CV2
+ and-not CV3
+ and-not CV1
+ and-not XP
+ grow 09
+ and CM3
+ and CM2
+ grow 5
+ shrink 5
+ calma CV2 61 *
+
+ layer m3c CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CV1
+ and-not XP
+ grow 09
+ and CM3
+ and CM2
+ grow 5
+ shrink 5
+ calma CV2 61 *
+
+
+
+ layer m3 CM3
+ and-not CRM
+ and-not CRT
+ and-not XP
+ labels CM3
+ calma CM3 62 *
+
+ layer rm3 CRM
+ and CM3
+ calma CRM 70 *
+
+ layer rm3 CRT
+ and CM3
+ calma CRT 73 *
+
+ layer pseudo_rmetal3 CRT
+ and-not rm3
+ calma CRT 73 *
+
+ layer m3p CMTP
+ labels CMTP
+ calma CMTP 83 *
+
+
+
+ layer m4 CM4
+ and-not CRM
+ and-not CRQ
+ and-not XP
+ labels CM4
+ calma CM4 31 *
+
+ layer rm4 CRM
+ and CM4
+ calma CRM 70 *
+
+ layer rm4 CRQ
+ and CM4
+ calma CRQ 74 *
+
+ layer pseudo_rmetal4 CRQ
+ and-not rm4
+ calma CRQ 74 *
+
+ layer m4p CMQP
+ labels CMQP
+ calma CMQP 84 *
+
+ layer m4c CV3
+ and-not CV4
+ and-not CV2
+ and-not XP
+ grow 09
+ and CM4
+ and CM3
+ grow 09
+ shrink 09
+ calma CV3 30 *
+
+ layer m4c CV3
+ and CV4
+ and CV5
+ and-not CV2
+ and-not XP
+ grow 09
+ and CM4
+ and CM3
+ grow 09
+ shrink 09
+ calma CV3 30 *
+
+
+ layer m5 CM5
+ and-not CRM
+ and-not CRP
+ and-not XP
+ labels CM5
+ calma CM5 33 *
+
+ layer rm5 CRM
+ and CM5
+ calma CRM 70 *
+
+ layer rm5 CRP
+ and CM5
+ calma CRP 75 *
+
+ layer pseudo_rmetal5 CRP
+ and-not rm5
+ calma CRP 75 *
+
+ layer m5p CMPP
+ labels CMPP
+ calma CMPP 85 *
+
+ layer m5c CV4
+
+ and-not CV5
+ and-not CV3
+ and-not XP
+ grow 09
+ and CM5
+ and CM4
+ grow 09
+ shrink 09
+ calma CV4 32 *
+
+
+ layer m6 CM6
+ and-not CRM
+ and-not CR6
+ and-not XP
+ labels CM6
+ calma CM6 37 *
+
+ layer rm6 CRM
+ and CM6
+ calma CRM 70 *
+
+ layer rm6 CR6
+ and CM6
+ calma CR6 76 *
+
+ layer pseudo_rmetal6 CR6
+ and-not rm6
+ calma CR6 76 *
+
+ layer m6p CM6P
+ labels CM6P
+ calma CM6P 85 *
+
+ layer m6c CV5
+ and-not CTM
+ shrink 09
+ and-not CV4
+ grow 09
+ and-not XP
+ grow 09
+ and CM6
+ and CM5
+ grow 09
+ shrink 09
+ calma CV5 36 *
+
+ layer mic CV5
+ and CTM
+ and-not XP
+ grow 27
+ and CTM
+ layer mi CTM
+ and-not CRM
+ and-not CRI
+ and-not XP
+ labels CTM
+ calma CTM 35 *
+
+ layer rmi CRM
+ and CTM
+ calma CRM 70 *
+
+ layer rmi CRI
+ and CTM
+ calma CRI 79 *
+
+ layer pseudo_rmetali CRI
+ and-not rmi
+ calma CRI 79 *
+
+ layer mic CV5
+ grow 5
+ and CTM
+ and-not XP
+ grow 103
+ and CTM
+ and CM6
+ grow 09
+ shrink 09
+ calma CV5 36 *
+
+ layer pad XP
+ labels pad
+ calma XP 26 *
+
+ layer glass COG
+ and-not COP
+ and-not XP
+ labels COG
+ calma COG 52 *
+
+ layer nfi CFI
+ and CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer pfi CFI
+ and-not CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer sb CSB
+ and-not CWNR
+ labels CSB
+ calma CSB 29 *
+
+ layer pres CPG
+ and CSB
+ calma CPG 46 *
+
+ layer anres CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer apres CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and-not CBA
+ calma CAA 43 *
+
+ layer comment CX
+ labels CX
+ calma CX 63 *
+
+ calma CTA 60 *
+
+ calma CRW 65 *
+ calma CRG 67 *
+ calma CRD 66 *
+ calma CRE 64 *
+ calma CRF 71 *
+ calma CRS 72 *
+ calma CRT 73 *
+ calma CRQ 74 *
+ calma CRP 75 *
+ calma CR6 76 *
+ calma CRI 79 *
+ calma CRM 70 *
+
+
+style lambda=0.09()
+ scalefactor 9
+
+ layer nwell CWN
+ and-not CWNR
+ and-not CTA
+ labels CWN
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRW
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer pseudo_rnwell CRW
+ and-not CRE
+ calma CRW 65 *
+
+ calma CWNR 91 *
+
+ layer nwr CWND
+ calma CWND 92 *
+
+ layer pseudo_nwr CRNW
+ calma CRNW 93 *
+
+
+ ignore CWP
+ calma CWP 41 *
+
+ layer diff CAA
+ and-not CTA
+ and-not CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer tran CAA
+ and-not CTA
+ and CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ calma CSN 45 *
+
+ calma CSP 44 *
+
+ layer ndiff CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRD
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rndiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and CSN
+ and-not CBA
+ calma CRD 66 *
+
+ layer pdiff CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRD
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rpdiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CRD 66 *
+
+ layer nfet CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer pfet CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nsd CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer psd CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nwsd CAA
+ and CSN
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and-not CV1
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and-not CV1
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and-not CV1
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and-not CV1
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and-not CV3
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and-not CV3
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer ndc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer ndc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nsc CAA
+ and CSN
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nsc CAA
+ and CSN
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CCA
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer nwsc CAA
+ and CSN
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CWNR
+ shrink 105
+ and-not CTA
+ and CCC
+
+ and CWN
+ and CM1
+ grow 18
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pdc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer pdc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer psc CAA
+ and CSP
+ and CCA
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCA 48 *
+
+ layer psc CAA
+ and CSP
+ and CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CWNR
+ and-not CTA
+
+ and-not CPS
+ and-not CWN
+ and CM1
+ grow 09
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer poly CPG
+ and-not CRE
+ labels CPG
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRE
+ and-not CSB
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRG
+ calma CPG 46 *
+
+ layer pseudo_rpoly CRG
+ and-not CRE
+ calma CRG 67 *
+
+ layer pc CCP
+ and-not CV1
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and-not CV1
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pc CCP
+ and CV1
+ and CV2
+ and-not CV3
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and CV1
+ and CV2
+ and-not CV3
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer pc CCP
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCP 47 *
+
+ layer pc CCC
+ and CV1
+ and CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ grow 09
+ and CM1
+ grow 9
+ shrink 9
+ calma CCC 25 *
+
+ layer gc CCP
+ and-not CPG
+ and-not CPC
+ calma CCP 47 *
+
+ layer gc CCP
+ and-not CM1
+ calma CCP 47 *
+
+ layer gc CCA
+ and-not COP
+ and-not CAA
+ and-not CBA
+ calma CCA 48 *
+
+ layer gc CCA
+ and-not COP
+ and-not CM1
+ calma CCA 48 *
+
+ layer gc CCC
+ and-not COP
+ and-not CPG
+ and-not CPC
+ and-not CEL
+ and-not CAA
+ and-not CBA
+ calma CCC 25 *
+
+ layer gc CCC
+ and-not COP
+ and-not CM1
+ calma CCC 25 *
+
+ layer gc CCE
+ and-not CPC
+ and-not CEL
+ calma CCE 55 *
+
+ layer gc CCE
+ and-not CM1
+ calma CCE 55 *
+
+ layer gv1 CV1
+ and-not COP
+ and-not CM1
+ calma CV1 50 *
+
+ layer gv1 CV1
+ and-not COP
+ and-not CM2
+ calma CV1 50 *
+
+ layer gv2 CV2
+ and-not COP
+ and-not CM2
+ calma CV2 61 *
+
+ layer gv2 CV2
+ and-not COP
+ and-not CM3
+ calma CV2 61 *
+
+ layer gv3 CV3
+ and-not COP
+ and-not CM3
+ calma CV3 30 *
+
+ layer gv3 CV3
+ and-not COP
+ and-not CM4
+ calma CV3 30 *
+
+ layer gv4 CV4
+ and-not CTM
+ and-not COP
+ and-not CM4
+ calma CV4 32 *
+
+ layer gv4 CV4
+ and-not CTM
+ and-not COP
+ and-not CM5
+ calma CV4 32 *
+
+ layer gv5 CV5
+ and-not CTM
+ and-not COP
+ and-not CM5
+ calma CV5 36 *
+
+ layer gv5 CV5
+ and-not CTM
+ and-not COP
+ and-not CM6
+ calma CV5 36 *
+
+ layer gvi CV5
+ and CTM
+ and-not COP
+ and-not CM6
+ calma CV5 36 *
+
+ layer m2c CV1
+ and-not CV2
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+ layer m2c CV1
+ and CV2
+ and CV3
+ and-not CV4
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+ layer m2c CV1
+ and CV5
+ and CV4
+ and CV3
+ and CV2
+ and-not CCC
+ and-not CCE
+ and-not CCP
+ and-not CCA
+ and-not XP
+ grow 09
+ and CM2
+ and CM1
+ grow 5
+ shrink 5
+ calma CV1 50 *
+
+
+
+
+
+
+
+ layer m1 CM1
+ and-not CRM
+ and-not CRF
+ and-not XP
+ labels CM1
+ calma CM1 49 *
+
+ layer rm1 CRM
+ and CM1
+ calma CRM 70 *
+
+ layer rm1 CRF
+ and CM1
+ calma CRF 71 *
+
+ layer pseudo_rmetal1 CRF
+ and-not rm1
+ calma CRF 71 *
+
+ layer m1p CMFP
+ labels CMFP
+ calma CMFP 81 *
+
+ layer m2 CM2
+ and-not CRM
+ and-not CRS
+ and-not XP
+ labels CM2
+ calma CM2 51 *
+
+ layer rm2 CRM
+ and CM2
+ calma CRM 70 *
+
+ layer rm2 CRS
+ and CM2
+ calma CRS 72 *
+
+ layer pseudo_rmetal2 CRS
+ and-not rm2
+ calma CRS 72 *
+
+ layer m2p CMSP
+ labels CMSP
+ calma CMSP 82 *
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ layer fp 100
+ calma 100 100 *
+
+ layer fm1 101
+ calma 101 101 *
+
+ layer fm2 102
+ calma 102 102 *
+
+ layer fm3 103
+ calma 103 103 *
+
+ layer fm4 104
+ calma 104 104 *
+
+ layer fm5 105
+ calma 105 105 *
+
+ layer fm6 106
+ calma 106 106 *
+
+ layer fa 109
+ calma 109 109 *
+
+ layer fn 119
+ calma 119 119 *
+
+ layer fapm 110
+ calma 110 110 *
+
+ layer m3c CV2
+ and-not CV3
+ and-not CV1
+ and-not XP
+ grow 09
+ and CM3
+ and CM2
+ grow 5
+ shrink 5
+ calma CV2 61 *
+
+ layer m3c CV2
+ and CV3
+ and CV4
+ and-not CV5
+ and-not CV1
+ and-not XP
+ grow 09
+ and CM3
+ and CM2
+ grow 5
+ shrink 5
+ calma CV2 61 *
+
+
+
+ layer m3 CM3
+ and-not CRM
+ and-not CRT
+ and-not XP
+ labels CM3
+ calma CM3 62 *
+
+ layer rm3 CRM
+ and CM3
+ calma CRM 70 *
+
+ layer rm3 CRT
+ and CM3
+ calma CRT 73 *
+
+ layer pseudo_rmetal3 CRT
+ and-not rm3
+ calma CRT 73 *
+
+ layer m3p CMTP
+ labels CMTP
+ calma CMTP 83 *
+
+
+
+ layer m4 CM4
+ and-not CRM
+ and-not CRQ
+ and-not XP
+ labels CM4
+ calma CM4 31 *
+
+ layer rm4 CRM
+ and CM4
+ calma CRM 70 *
+
+ layer rm4 CRQ
+ and CM4
+ calma CRQ 74 *
+
+ layer pseudo_rmetal4 CRQ
+ and-not rm4
+ calma CRQ 74 *
+
+ layer m4p CMQP
+ labels CMQP
+ calma CMQP 84 *
+
+ layer m4c CV3
+ and-not CV4
+ and-not CV2
+ and-not XP
+ grow 09
+ and CM4
+ and CM3
+ grow 09
+ shrink 09
+ calma CV3 30 *
+
+ layer m4c CV3
+ and CV4
+ and CV5
+ and-not CV2
+ and-not XP
+ grow 09
+ and CM4
+ and CM3
+ grow 09
+ shrink 09
+ calma CV3 30 *
+
+
+ layer m5 CM5
+ and-not CRM
+ and-not CRP
+ and-not XP
+ labels CM5
+ calma CM5 33 *
+
+ layer rm5 CRM
+ and CM5
+ calma CRM 70 *
+
+ layer rm5 CRP
+ and CM5
+ calma CRP 75 *
+
+ layer pseudo_rmetal5 CRP
+ and-not rm5
+ calma CRP 75 *
+
+ layer m5p CMPP
+ labels CMPP
+ calma CMPP 85 *
+
+ layer m5c CV4
+
+ and-not CV5
+ and-not CV3
+ and-not XP
+ grow 09
+ and CM5
+ and CM4
+ grow 09
+ shrink 09
+ calma CV4 32 *
+
+
+ layer m6 CM6
+ and-not CRM
+ and-not CR6
+ and-not XP
+ labels CM6
+ calma CM6 37 *
+
+ layer rm6 CRM
+ and CM6
+ calma CRM 70 *
+
+ layer rm6 CR6
+ and CM6
+ calma CR6 76 *
+
+ layer pseudo_rmetal6 CR6
+ and-not rm6
+ calma CR6 76 *
+
+ layer m6p CM6P
+ labels CM6P
+ calma CM6P 85 *
+
+ layer m6c CV5
+ and-not CTM
+ shrink 09
+ and-not CV4
+ grow 09
+ and-not XP
+ grow 09
+ and CM6
+ and CM5
+ grow 09
+ shrink 09
+ calma CV5 36 *
+
+ layer mic CV5
+ and CTM
+ and-not XP
+ grow 27
+ and CTM
+ layer mi CTM
+ and-not CRM
+ and-not CRI
+ and-not XP
+ labels CTM
+ calma CTM 35 *
+
+ layer rmi CRM
+ and CTM
+ calma CRM 70 *
+
+ layer rmi CRI
+ and CTM
+ calma CRI 79 *
+
+ layer pseudo_rmetali CRI
+ and-not rmi
+ calma CRI 79 *
+
+ layer mic CV5
+ grow 5
+ and CTM
+ and-not XP
+ grow 103
+ and CTM
+ and CM6
+ grow 09
+ shrink 09
+ calma CV5 36 *
+
+ layer pad XP
+ labels pad
+ calma XP 26 *
+
+ layer glass COG
+ and-not COP
+ and-not XP
+ labels COG
+ calma COG 52 *
+
+ layer nfi CFI
+ and CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer pfi CFI
+ and-not CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer sb CSB
+ and-not CWNR
+ labels CSB
+ calma CSB 29 *
+
+ layer pres CPG
+ and CSB
+ calma CPG 46 *
+
+ layer anres CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer apres CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and-not CBA
+ calma CAA 43 *
+
+ layer comment CX
+ labels CX
+ calma CX 63 *
+
+ calma CTA 60 *
+
+ calma CRW 65 *
+ calma CRG 67 *
+ calma CRD 66 *
+ calma CRE 64 *
+ calma CRF 71 *
+ calma CRS 72 *
+ calma CRT 73 *
+ calma CRQ 74 *
+ calma CRP 75 *
+ calma CR6 76 *
+ calma CRI 79 *
+ calma CRM 70 *
+
+
+style lambda=0.09(c)
+ scalefactor 9
+
+ layer nwell CWN
+ and-not CWNR
+ and-not CTA
+ labels CWN
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRW
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer pseudo_rnwell CRW
+ and-not CRE
+ calma CRW 65 *
+
+ calma CWNR 91 *
+
+ layer nwr CWND
+ calma CWND 92 *
+
+ layer pseudo_nwr CRNW
+ calma CRNW 93 *
+
+
+ ignore CWP
+ calma CWP 41 *
+
+ layer diff CAA
+ and-not CTA
+ and-not CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer tran CAA
+ and-not CTA
+ and CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ calma CSN 45 *
+
+ calma CSP 44 *
+
+ layer ndiff CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRD
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rndiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and CSN
+ and-not CBA
+ calma CRD 66 *
+
+ layer pdiff CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRD
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rpdiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CRD 66 *
+
+ layer nfet CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer pfet CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nsd CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer psd CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nwsd CAA
+ and CSN
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer gc CCA
+ and CPG
+ and-not CEL
+ calma CCA 48 *
+
+ layer gc CCP
+ and CPG
+ and-not CEL
+ calma CCP 47 *
+
+ layer gc CCC
+ and CPG
+ and-not CEL
+ calma CCC 25 *
+
+ layer gc CCE
+ and CPG
+ and-not CEL
+ calma CCE 55 *
+
+ layer gc CCA
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCA 48 *
+
+ layer gc CCP
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCP 47 *
+
+ layer gc CCC
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCC 25 *
+
+ layer gc CCE
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCE 55 *
+
+ layer poly CPG
+ and-not CRE
+ labels CPG
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRE
+ and-not CSB
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRG
+ calma CPG 46 *
+
+ layer pseudo_rpoly CRG
+ and-not CRE
+ calma CRG 67 *
+
+ layer m1 CM1
+ and-not CRM
+ and-not CRF
+ labels CM1
+ calma CM1 49 *
+
+ layer rm1 CRM
+ and CM1
+ calma CRM 70 *
+
+ layer rm1 CRF
+ and CM1
+ calma CRF 71 *
+
+ layer pseudo_rmetal1 CRF
+ and-not rm1
+ calma CRF 71 *
+
+ layer m1p CMFP
+ labels CMFP
+ calma CMFP 81 *
+
+ layer gv1 CV1
+ calma CV1 50 *
+
+ layer m2 CM2
+ and-not CRM
+ and-not CRS
+ labels CM2
+ calma CM2 51 *
+
+ layer rm2 CRM
+ and CM2
+ calma CRM 70 *
+
+ layer rm2 CRS
+ and CM2
+ calma CRS 72 *
+
+ layer pseudo_rmetal2 CRS
+ and-not rm2
+ calma CRS 72 *
+
+ layer m2p CMSP
+ labels CMSP
+ calma CMSP 82 *
+
+ layer fp 100
+ calma 100 100 *
+
+ layer fm1 101
+ calma 101 101 *
+
+ layer fm2 102
+ calma 102 102 *
+
+ layer fm3 103
+ calma 103 103 *
+
+ layer fm4 104
+ calma 104 104 *
+
+ layer fm5 105
+ calma 105 105 *
+
+ layer fm6 106
+ calma 106 106 *
+
+ layer fa 109
+ calma 109 109 *
+
+ layer fn 119
+ calma 119 119 *
+
+ layer fapm 110
+ calma 110 110 *
+
+ layer gv2 CV2
+ calma CV2 61 *
+
+ layer m3 CM3
+ and-not CRM
+ and-not CRT
+ labels CM3
+ calma CM3 62 *
+
+ layer rm3 CRM
+ and CM3
+ calma CRM 70 *
+
+ layer rm3 CRT
+ and CM3
+ calma CRT 73 *
+
+ layer pseudo_rmetal3 CRT
+ and-not rm3
+ calma CRT 73 *
+
+ layer m3p CMTP
+ labels CMTP
+ calma CMTP 83 *
+
+ layer gv3 CV3
+ calma CV3 30 *
+
+ layer m4 CM4
+ and-not CRM
+ and-not CRQ
+ labels CM4
+ calma CM4 31 *
+
+ layer rm4 CRM
+ and CM4
+ calma CRM 70 *
+
+ layer rm4 CRQ
+ and CM4
+ calma CRQ 74 *
+
+ layer pseudo_rmetal4 CRQ
+ and-not rm4
+ calma CRQ 74 *
+
+ layer m4p CMQP
+ labels CMQP
+ calma CMQP 84 *
+
+ layer gv4 CV4
+
+ calma CV4 32 *
+
+ layer m5 CM5
+ and-not CRM
+ and-not CRP
+ labels CM5
+ calma CM5 33 *
+
+ layer rm5 CRM
+ and CM5
+ calma CRM 70 *
+
+ layer rm5 CRP
+ and CM5
+ calma CRP 75 *
+
+ layer pseudo_rmetal5 CRP
+ and-not rm5
+ calma CRP 75 *
+
+ layer m5p CMPP
+ labels CMPP
+ calma CMPP 85 *
+
+ layer gv5 CV5
+ and-not CTM
+ calma CV5 36 *
+
+ layer m6 CM6
+ and-not CRM
+ and-not CR6
+ labels CM6
+ calma CM6 37 *
+
+ layer rm6 CRM
+ and CM6
+ calma CRM 70 *
+
+ layer rm6 CR6
+ and CM6
+ calma CR6 76 *
+
+ layer pseudo_rmetal6 CR6
+ and-not rm6
+ calma CR6 76 *
+
+ layer m6p CM6P
+ labels CM6P
+ calma CM6P 85 *
+
+ layer gvi CV5
+ and CTM
+ calma CV5 36 *
+
+ layer mi CTM
+ and-not CRM
+ and-not CRI
+ labels CTM
+ calma CTM 35 *
+
+ layer rmi CRM
+ and CTM
+ calma CRM 70 *
+
+ layer rmi CRI
+ and CTM
+ calma CRI 79 *
+
+ layer pseudo_rmetali CRI
+ and-not rmi
+ calma CRI 79 *
+
+ layer xp XP
+ calma XP 26 *
+
+ layer glass COG
+ and-not COP
+ labels COG
+ calma COG 52 *
+
+ layer nfi CFI
+ and CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer pfi CFI
+ and-not CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer sb CSB
+ and-not CWNR
+ labels CSB
+ calma CSB 29 *
+
+ layer pres CPG
+ and CSB
+ calma CPG 46 *
+
+ layer anres CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer apres CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and-not CBA
+ calma CAA 43 *
+
+ layer comment CX
+ labels CX
+ calma CX 63 *
+
+ calma CTA 60 *
+
+ calma CRW 65 *
+ calma CRG 67 *
+ calma CRD 66 *
+ calma CRE 64 *
+ calma CRF 71 *
+ calma CRS 72 *
+ calma CRT 73 *
+ calma CRQ 74 *
+ calma CRP 75 *
+ calma CR6 76 *
+ calma CRI 79 *
+ calma CRM 70 *
+
+
+style lambda=0.09(cs)
+ scalefactor 9
+
+ layer nwell CWN
+ and-not CWNR
+ and-not CTA
+ labels CWN
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRW
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer pseudo_rnwell CRW
+ and-not CRE
+ calma CRW 65 *
+
+ calma CWNR 91 *
+
+ layer nwr CWND
+ calma CWND 92 *
+
+ layer pseudo_nwr CRNW
+ calma CRNW 93 *
+
+
+ ignore CWP
+ calma CWP 41 *
+
+ layer diff CAA
+ and-not CTA
+ and-not CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer tran CAA
+ and-not CTA
+ and CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer nselect CSN
+ calma CSN 45 *
+
+ layer pselect CSP
+ calma CSP 44 *
+
+ layer ndiff CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRD
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rndiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and CSN
+ and-not CBA
+ calma CRD 66 *
+
+ layer pdiff CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRD
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rpdiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CRD 66 *
+
+ layer nfet CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer pfet CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nsd CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer psd CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nwsd CAA
+ and CSN
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer gc CCA
+ and CPG
+ and-not CEL
+ calma CCA 48 *
+
+ layer gc CCP
+ and CPG
+ and-not CEL
+ calma CCP 47 *
+
+ layer gc CCC
+ and CPG
+ and-not CEL
+ calma CCC 25 *
+
+ layer gc CCE
+ and CPG
+ and-not CEL
+ calma CCE 55 *
+
+ layer gc CCA
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCA 48 *
+
+ layer gc CCP
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCP 47 *
+
+ layer gc CCC
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCC 25 *
+
+ layer gc CCE
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCE 55 *
+
+ layer poly CPG
+ and-not CRE
+ labels CPG
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRE
+ and-not CSB
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRG
+ calma CPG 46 *
+
+ layer pseudo_rpoly CRG
+ and-not CRE
+ calma CRG 67 *
+
+ layer m1 CM1
+ and-not CRM
+ and-not CRF
+ labels CM1
+ calma CM1 49 *
+
+ layer rm1 CRM
+ and CM1
+ calma CRM 70 *
+
+ layer rm1 CRF
+ and CM1
+ calma CRF 71 *
+
+ layer pseudo_rmetal1 CRF
+ and-not rm1
+ calma CRF 71 *
+
+ layer m1p CMFP
+ labels CMFP
+ calma CMFP 81 *
+
+ layer gv1 CV1
+ calma CV1 50 *
+
+ layer m2 CM2
+ and-not CRM
+ and-not CRS
+ labels CM2
+ calma CM2 51 *
+
+ layer rm2 CRM
+ and CM2
+ calma CRM 70 *
+
+ layer rm2 CRS
+ and CM2
+ calma CRS 72 *
+
+ layer pseudo_rmetal2 CRS
+ and-not rm2
+ calma CRS 72 *
+
+ layer m2p CMSP
+ labels CMSP
+ calma CMSP 82 *
+
+ layer fp 100
+ calma 100 100 *
+
+ layer fm1 101
+ calma 101 101 *
+
+ layer fm2 102
+ calma 102 102 *
+
+ layer fm3 103
+ calma 103 103 *
+
+ layer fm4 104
+ calma 104 104 *
+
+ layer fm5 105
+ calma 105 105 *
+
+ layer fm6 106
+ calma 106 106 *
+
+ layer fa 109
+ calma 109 109 *
+
+ layer fn 119
+ calma 119 119 *
+
+ layer fapm 110
+ calma 110 110 *
+
+ layer gv2 CV2
+ calma CV2 61 *
+
+ layer m3 CM3
+ and-not CRM
+ and-not CRT
+ labels CM3
+ calma CM3 62 *
+
+ layer rm3 CRM
+ and CM3
+ calma CRM 70 *
+
+ layer rm3 CRT
+ and CM3
+ calma CRT 73 *
+
+ layer pseudo_rmetal3 CRT
+ and-not rm3
+ calma CRT 73 *
+
+ layer m3p CMTP
+ labels CMTP
+ calma CMTP 83 *
+
+ layer gv3 CV3
+ calma CV3 30 *
+
+ layer m4 CM4
+ and-not CRM
+ and-not CRQ
+ labels CM4
+ calma CM4 31 *
+
+ layer rm4 CRM
+ and CM4
+ calma CRM 70 *
+
+ layer rm4 CRQ
+ and CM4
+ calma CRQ 74 *
+
+ layer pseudo_rmetal4 CRQ
+ and-not rm4
+ calma CRQ 74 *
+
+ layer m4p CMQP
+ labels CMQP
+ calma CMQP 84 *
+
+ layer gv4 CV4
+
+ calma CV4 32 *
+
+ layer m5 CM5
+ and-not CRM
+ and-not CRP
+ labels CM5
+ calma CM5 33 *
+
+ layer rm5 CRM
+ and CM5
+ calma CRM 70 *
+
+ layer rm5 CRP
+ and CM5
+ calma CRP 75 *
+
+ layer pseudo_rmetal5 CRP
+ and-not rm5
+ calma CRP 75 *
+
+ layer m5p CMPP
+ labels CMPP
+ calma CMPP 85 *
+
+ layer gv5 CV5
+ and-not CTM
+ calma CV5 36 *
+
+ layer m6 CM6
+ and-not CRM
+ and-not CR6
+ labels CM6
+ calma CM6 37 *
+
+ layer rm6 CRM
+ and CM6
+ calma CRM 70 *
+
+ layer rm6 CR6
+ and CM6
+ calma CR6 76 *
+
+ layer pseudo_rmetal6 CR6
+ and-not rm6
+ calma CR6 76 *
+
+ layer m6p CM6P
+ labels CM6P
+ calma CM6P 85 *
+
+ layer gvi CV5
+ and CTM
+ calma CV5 36 *
+
+ layer mi CTM
+ and-not CRM
+ and-not CRI
+ labels CTM
+ calma CTM 35 *
+
+ layer rmi CRM
+ and CTM
+ calma CRM 70 *
+
+ layer rmi CRI
+ and CTM
+ calma CRI 79 *
+
+ layer pseudo_rmetali CRI
+ and-not rmi
+ calma CRI 79 *
+
+ layer xp XP
+ calma XP 26 *
+
+ layer glass COG
+ and-not COP
+ labels COG
+ calma COG 52 *
+
+ layer nfi CFI
+ and CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer pfi CFI
+ and-not CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer sb CSB
+ and-not CWNR
+ labels CSB
+ calma CSB 29 *
+
+ layer pres CPG
+ and CSB
+ calma CPG 46 *
+
+ layer anres CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer apres CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and-not CBA
+ calma CAA 43 *
+
+ layer comment CX
+ labels CX
+ calma CX 63 *
+
+ calma CTA 60 *
+
+ calma CRW 65 *
+ calma CRG 67 *
+ calma CRD 66 *
+ calma CRE 64 *
+ calma CRF 71 *
+ calma CRS 72 *
+ calma CRT 73 *
+ calma CRQ 74 *
+ calma CRP 75 *
+ calma CR6 76 *
+ calma CRI 79 *
+ calma CRM 70 *
+
+
+style lambda=0.09(cps)
+ scalefactor 9
+
+ layer nwell CWN
+ and-not CWNR
+ and-not CTA
+ labels CWN
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRW
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer pseudo_rnwell CRW
+ and-not CRE
+ calma CRW 65 *
+
+ calma CWNR 91 *
+
+ layer nwr CWND
+ calma CWND 92 *
+
+ layer pseudo_nwr CRNW
+ calma CRNW 93 *
+
+ layer pwell CWP
+ and-not CTA
+ labels CWP
+ calma CWP 41 *
+
+ layer diff CAA
+ and-not CTA
+ and-not CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer tran CAA
+ and-not CTA
+ and CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer nselect CSN
+ calma CSN 45 *
+
+ layer pselect CSP
+ calma CSP 44 *
+
+ layer ndiff CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRD
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rndiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and CSN
+ and-not CBA
+ calma CRD 66 *
+
+ layer pdiff CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRD
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rpdiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CRD 66 *
+
+ layer nfet CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer pfet CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nsd CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer psd CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nwsd CAA
+ and CSN
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer gc CCA
+ and CPG
+ and-not CEL
+ calma CCA 48 *
+
+ layer gc CCP
+ and CPG
+ and-not CEL
+ calma CCP 47 *
+
+ layer gc CCC
+ and CPG
+ and-not CEL
+ calma CCC 25 *
+
+ layer gc CCE
+ and CPG
+ and-not CEL
+ calma CCE 55 *
+
+ layer gc CCA
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCA 48 *
+
+ layer gc CCP
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCP 47 *
+
+ layer gc CCC
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCC 25 *
+
+ layer gc CCE
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCE 55 *
+
+ layer poly CPG
+ and-not CRE
+ labels CPG
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRE
+ and-not CSB
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRG
+ calma CPG 46 *
+
+ layer pseudo_rpoly CRG
+ and-not CRE
+ calma CRG 67 *
+
+ layer m1 CM1
+ and-not CRM
+ and-not CRF
+ labels CM1
+ calma CM1 49 *
+
+ layer rm1 CRM
+ and CM1
+ calma CRM 70 *
+
+ layer rm1 CRF
+ and CM1
+ calma CRF 71 *
+
+ layer pseudo_rmetal1 CRF
+ and-not rm1
+ calma CRF 71 *
+
+ layer m1p CMFP
+ labels CMFP
+ calma CMFP 81 *
+
+ layer gv1 CV1
+ calma CV1 50 *
+
+ layer m2 CM2
+ and-not CRM
+ and-not CRS
+ labels CM2
+ calma CM2 51 *
+
+ layer rm2 CRM
+ and CM2
+ calma CRM 70 *
+
+ layer rm2 CRS
+ and CM2
+ calma CRS 72 *
+
+ layer pseudo_rmetal2 CRS
+ and-not rm2
+ calma CRS 72 *
+
+ layer m2p CMSP
+ labels CMSP
+ calma CMSP 82 *
+
+ layer fp 100
+ calma 100 100 *
+
+ layer fm1 101
+ calma 101 101 *
+
+ layer fm2 102
+ calma 102 102 *
+
+ layer fm3 103
+ calma 103 103 *
+
+ layer fm4 104
+ calma 104 104 *
+
+ layer fm5 105
+ calma 105 105 *
+
+ layer fm6 106
+ calma 106 106 *
+
+ layer fa 109
+ calma 109 109 *
+
+ layer fn 119
+ calma 119 119 *
+
+ layer fapm 110
+ calma 110 110 *
+
+ layer gv2 CV2
+ calma CV2 61 *
+
+ layer m3 CM3
+ and-not CRM
+ and-not CRT
+ labels CM3
+ calma CM3 62 *
+
+ layer rm3 CRM
+ and CM3
+ calma CRM 70 *
+
+ layer rm3 CRT
+ and CM3
+ calma CRT 73 *
+
+ layer pseudo_rmetal3 CRT
+ and-not rm3
+ calma CRT 73 *
+
+ layer m3p CMTP
+ labels CMTP
+ calma CMTP 83 *
+
+ layer gv3 CV3
+ calma CV3 30 *
+
+ layer m4 CM4
+ and-not CRM
+ and-not CRQ
+ labels CM4
+ calma CM4 31 *
+
+ layer rm4 CRM
+ and CM4
+ calma CRM 70 *
+
+ layer rm4 CRQ
+ and CM4
+ calma CRQ 74 *
+
+ layer pseudo_rmetal4 CRQ
+ and-not rm4
+ calma CRQ 74 *
+
+ layer m4p CMQP
+ labels CMQP
+ calma CMQP 84 *
+
+ layer gv4 CV4
+
+ calma CV4 32 *
+
+ layer m5 CM5
+ and-not CRM
+ and-not CRP
+ labels CM5
+ calma CM5 33 *
+
+ layer rm5 CRM
+ and CM5
+ calma CRM 70 *
+
+ layer rm5 CRP
+ and CM5
+ calma CRP 75 *
+
+ layer pseudo_rmetal5 CRP
+ and-not rm5
+ calma CRP 75 *
+
+ layer m5p CMPP
+ labels CMPP
+ calma CMPP 85 *
+
+ layer gv5 CV5
+ and-not CTM
+ calma CV5 36 *
+
+ layer m6 CM6
+ and-not CRM
+ and-not CR6
+ labels CM6
+ calma CM6 37 *
+
+ layer rm6 CRM
+ and CM6
+ calma CRM 70 *
+
+ layer rm6 CR6
+ and CM6
+ calma CR6 76 *
+
+ layer pseudo_rmetal6 CR6
+ and-not rm6
+ calma CR6 76 *
+
+ layer m6p CM6P
+ labels CM6P
+ calma CM6P 85 *
+
+ layer gvi CV5
+ and CTM
+ calma CV5 36 *
+
+ layer mi CTM
+ and-not CRM
+ and-not CRI
+ labels CTM
+ calma CTM 35 *
+
+ layer rmi CRM
+ and CTM
+ calma CRM 70 *
+
+ layer rmi CRI
+ and CTM
+ calma CRI 79 *
+
+ layer pseudo_rmetali CRI
+ and-not rmi
+ calma CRI 79 *
+
+ layer xp XP
+ calma XP 26 *
+
+ layer glass COG
+ and-not COP
+ labels COG
+ calma COG 52 *
+
+ layer nfi CFI
+ and CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer pfi CFI
+ and-not CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer sb CSB
+ and-not CWNR
+ labels CSB
+ calma CSB 29 *
+
+ layer pres CPG
+ and CSB
+ calma CPG 46 *
+
+ layer anres CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer apres CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and-not CBA
+ calma CAA 43 *
+
+ layer comment CX
+ labels CX
+ calma CX 63 *
+
+ calma CTA 60 *
+
+ calma CRW 65 *
+ calma CRG 67 *
+ calma CRD 66 *
+ calma CRE 64 *
+ calma CRF 71 *
+ calma CRS 72 *
+ calma CRT 73 *
+ calma CRQ 74 *
+ calma CRP 75 *
+ calma CR6 76 *
+ calma CRI 79 *
+ calma CRM 70 *
+
+
+style lambda=0.09(cp)
+ scalefactor 9
+
+ layer nwell CWN
+ and-not CWNR
+ and-not CTA
+ labels CWN
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer rnw CWN
+ and-not CWNR
+ and CRW
+ and-not CRD
+ and-not CAA
+ and-not CPG
+ calma CWN 42 *
+
+ layer pseudo_rnwell CRW
+ and-not CRE
+ calma CRW 65 *
+
+ calma CWNR 91 *
+
+ layer nwr CWND
+ calma CWND 92 *
+
+ layer pseudo_nwr CRNW
+ calma CRNW 93 *
+
+ layer pwell CWP
+ and-not CTA
+ labels CWP
+ calma CWP 41 *
+
+ layer diff CAA
+ and-not CTA
+ and-not CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ layer tran CAA
+ and-not CTA
+ and CPG
+ and-not CWNR
+ and-not COP
+ and-not CSN
+ and-not CSP
+ labels CAA
+ calma CAA 43 *
+
+ calma CSN 45 *
+
+ calma CSP 44 *
+
+ layer ndiff CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rnd CAA
+ and CSN
+ and-not CWNR
+ and CRD
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rndiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and CSN
+ and-not CBA
+ calma CRD 66 *
+
+ layer pdiff CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRE
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer rpd CAA
+ and CSP
+ and-not CWNR
+ and CRD
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer pseudo_rpdiff CRD
+ and-not CRE
+ and-not CAA
+ and-not CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ calma CRD 66 *
+
+ layer nfet CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer pfet CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CPG
+ and-not CEL
+ and CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nsd CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer psd CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and-not CWN
+ and-not CSN
+ and-not CPS
+ and CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer nwsd CAA
+ and CSN
+ and CWNR
+ shrink 108
+ and-not CTA
+ and CWN
+ and-not CSP
+ and-not CBA
+ labels CAA
+ calma CAA 43 *
+
+ layer gc CCA
+ and CPG
+ and-not CEL
+ calma CCA 48 *
+
+ layer gc CCP
+ and CPG
+ and-not CEL
+ calma CCP 47 *
+
+ layer gc CCC
+ and CPG
+ and-not CEL
+ calma CCC 25 *
+
+ layer gc CCE
+ and CPG
+ and-not CEL
+ calma CCE 55 *
+
+ layer gc CCA
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCA 48 *
+
+ layer gc CCP
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCP 47 *
+
+ layer gc CCC
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCC 25 *
+
+ layer gc CCE
+ and-not COP
+ and-not CPC
+ and-not CEL
+ calma CCE 55 *
+
+ layer poly CPG
+ and-not CRE
+ labels CPG
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRE
+ and-not CSB
+ calma CPG 46 *
+
+ layer rp CPG
+ and CRG
+ calma CPG 46 *
+
+ layer pseudo_rpoly CRG
+ and-not CRE
+ calma CRG 67 *
+
+ layer m1 CM1
+ and-not CRM
+ and-not CRF
+ labels CM1
+ calma CM1 49 *
+
+ layer rm1 CRM
+ and CM1
+ calma CRM 70 *
+
+ layer rm1 CRF
+ and CM1
+ calma CRF 71 *
+
+ layer pseudo_rmetal1 CRF
+ and-not rm1
+ calma CRF 71 *
+
+ layer m1p CMFP
+ labels CMFP
+ calma CMFP 81 *
+
+ layer gv1 CV1
+ calma CV1 50 *
+
+ layer m2 CM2
+ and-not CRM
+ and-not CRS
+ labels CM2
+ calma CM2 51 *
+
+ layer rm2 CRM
+ and CM2
+ calma CRM 70 *
+
+ layer rm2 CRS
+ and CM2
+ calma CRS 72 *
+
+ layer pseudo_rmetal2 CRS
+ and-not rm2
+ calma CRS 72 *
+
+ layer m2p CMSP
+ labels CMSP
+ calma CMSP 82 *
+
+ layer fp 100
+ calma 100 100 *
+
+ layer fm1 101
+ calma 101 101 *
+
+ layer fm2 102
+ calma 102 102 *
+
+ layer fm3 103
+ calma 103 103 *
+
+ layer fm4 104
+ calma 104 104 *
+
+ layer fm5 105
+ calma 105 105 *
+
+ layer fm6 106
+ calma 106 106 *
+
+ layer fa 109
+ calma 109 109 *
+
+ layer fn 119
+ calma 119 119 *
+
+ layer fapm 110
+ calma 110 110 *
+
+ layer gv2 CV2
+ calma CV2 61 *
+
+ layer m3 CM3
+ and-not CRM
+ and-not CRT
+ labels CM3
+ calma CM3 62 *
+
+ layer rm3 CRM
+ and CM3
+ calma CRM 70 *
+
+ layer rm3 CRT
+ and CM3
+ calma CRT 73 *
+
+ layer pseudo_rmetal3 CRT
+ and-not rm3
+ calma CRT 73 *
+
+ layer m3p CMTP
+ labels CMTP
+ calma CMTP 83 *
+
+ layer gv3 CV3
+ calma CV3 30 *
+
+ layer m4 CM4
+ and-not CRM
+ and-not CRQ
+ labels CM4
+ calma CM4 31 *
+
+ layer rm4 CRM
+ and CM4
+ calma CRM 70 *
+
+ layer rm4 CRQ
+ and CM4
+ calma CRQ 74 *
+
+ layer pseudo_rmetal4 CRQ
+ and-not rm4
+ calma CRQ 74 *
+
+ layer m4p CMQP
+ labels CMQP
+ calma CMQP 84 *
+
+ layer gv4 CV4
+
+ calma CV4 32 *
+
+ layer m5 CM5
+ and-not CRM
+ and-not CRP
+ labels CM5
+ calma CM5 33 *
+
+ layer rm5 CRM
+ and CM5
+ calma CRM 70 *
+
+ layer rm5 CRP
+ and CM5
+ calma CRP 75 *
+
+ layer pseudo_rmetal5 CRP
+ and-not rm5
+ calma CRP 75 *
+
+ layer m5p CMPP
+ labels CMPP
+ calma CMPP 85 *
+
+ layer gv5 CV5
+ and-not CTM
+ calma CV5 36 *
+
+ layer m6 CM6
+ and-not CRM
+ and-not CR6
+ labels CM6
+ calma CM6 37 *
+
+ layer rm6 CRM
+ and CM6
+ calma CRM 70 *
+
+ layer rm6 CR6
+ and CM6
+ calma CR6 76 *
+
+ layer pseudo_rmetal6 CR6
+ and-not rm6
+ calma CR6 76 *
+
+ layer m6p CM6P
+ labels CM6P
+ calma CM6P 85 *
+
+ layer gvi CV5
+ and CTM
+ calma CV5 36 *
+
+ layer mi CTM
+ and-not CRM
+ and-not CRI
+ labels CTM
+ calma CTM 35 *
+
+ layer rmi CRM
+ and CTM
+ calma CRM 70 *
+
+ layer rmi CRI
+ and CTM
+ calma CRI 79 *
+
+ layer pseudo_rmetali CRI
+ and-not rmi
+ calma CRI 79 *
+
+ layer xp XP
+ calma XP 26 *
+
+ layer glass COG
+ and-not COP
+ labels COG
+ calma COG 52 *
+
+ layer nfi CFI
+ and CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer pfi CFI
+ and-not CWN
+ labels CFI
+ calma CFI 27 *
+
+ layer sb CSB
+ and-not CWNR
+ labels CSB
+ calma CSB 29 *
+
+ layer pres CPG
+ and CSB
+ calma CPG 46 *
+
+ layer anres CAA
+ and CSN
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and-not CWN
+ and-not CSP
+ and-not CBA
+ calma CAA 43 *
+
+ layer apres CAA
+ and CSP
+ and-not CWNR
+ and-not CTA
+ and CSB
+ and-not CPG
+ and CWN
+ and-not CSN
+ and-not CPS
+ and-not CBA
+ calma CAA 43 *
+
+ layer comment CX
+ labels CX
+ calma CX 63 *
+
+ calma CTA 60 *
+
+ calma CRW 65 *
+ calma CRG 67 *
+ calma CRD 66 *
+ calma CRE 64 *
+ calma CRF 71 *
+ calma CRS 72 *
+ calma CRT 73 *
+ calma CRQ 74 *
+ calma CRP 75 *
+ calma CR6 76 *
+ calma CRI 79 *
+ calma CRM 70 *
+
+style fill-only
+ scalefactor 9
+# scalefactor 100
+
+ layer fp 100
+ calma 100 100 *
+
+ layer fm1 101
+ calma 101 101 *
+
+ layer fm2 102
+ calma 102 102 *
+
+ layer fm3 103
+ calma 103 103 *
+
+ layer fm4 104
+ calma 104 104 *
+
+ layer fm5 105
+ calma 105 105 *
+
+ layer fm6 106
+ calma 106 106 *
+
+ layer fa 109
+ or fb
+ calma 109 109 *
+
+ layer fn 119
+ calma 119 119 *
+
+ layer fapm 110
+ calma 110 110 *
+
+end
+
+mzrouter
+ style irouter
+# layer hCost vCost jogCost hintCost
+ layer metal6 2 1 2 1
+ layer metal5 1 2 2 1
+ layer metal4 2 1 2 1
+ layer metal3 1 2 2 1
+ layer metal2 2 1 2 1
+ layer metal1 2 3 2 1
+ layer poly 10 10 11 1
+ contact m6contact metal6 metal5 2
+ contact m5contact metal5 metal4 3
+ contact m4contact metal4 metal3 4
+ contact m3contact metal3 metal2 5
+ contact m2contact metal2 metal1 6
+ contact pcontact metal1 poly 7
+ notactive poly pcontact
+
+style garouter
+ layer m2 32 64 256 1
+ layer m1 64 32 256 1
+ contact m2contact metal1 metal2 1024
+
+end
+
+drc
+
+ style tsmc_180
+
+ scalefactor 90
+
+ width nwell 1080 \
+ "N-well width < 1.08um (Mosis #1.1)"
+
+ width rnw 960 \
+ "rnwell (for resistor L/W extraction) width < 0.96um (Mosis #1.1)"
+
+ width nwr 960 \
+ "nwr (for Fig1b resistor L/W extraction) width < 0.96 (Mosis #Fig1bX)"
+
+ width pwell 1080 \
+ "P-well width < 1.08um (Mosis #1.1)"
+
+ width diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a 270 \
+ "Diffusion width < 0.27um (Mosis #2.1)"
+
+ edge4way nsd,nwsd,nsc/a,nwsc/a pdiff,apres,rpd,pdc/a 360 ~(nsd,nwsd,nsc/a,nwsc/a)/active pdiff,apres,rpd,pdc/a 360 \
+ "P-Diffusion width in N-Ohmic < 0.36um (Mosis #2.1)" active
+
+ edge4way psd,psc/a ndiff,anres,rnd,ndc/a 360 ~(psd,psc/a)/active ndiff,anres,rnd,ndc/a 360 \
+ "N-Diffusion width in P-Ohmic < 0.36um (Mosis #2.1)" active
+
+ edge4way pdiff,apres,rpd,pdc/a nsd,nwsd,nsc/a,nwsc/a 360 ~(pdiff,apres,rpd,pdc/a)/active nsd,nwsd,nsc/a,nwsc/a 360 \
+ "N-Ohmic width in P-Diffusion < 0.36um (Mosis #2.1)" active
+
+ edge4way ndiff,anres,rnd,ndc/a psd,psc/a 360 ~(ndiff,anres,rnd,ndc/a)/active psd,psc/a 360 \
+ "P-Ohmic width in N-Diffusion < 0.36um (Mosis #2.1)" active
+
+ width poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,nfet,pfet,fet 180 \
+ "Poly width < 0.18 (Mosis #3.1)"
+
+ width nselect 360 \
+ "N-Select width < 0.36um (Mosis #4.4)"
+
+ width pselect 360 \
+ "P-Select width < 0.36um (Mosis #4.4)"
+
+ width ndiff,anres,rnd,ndc/a,nsd,nsc/a 270 \
+ "N-Diffusion,N-Ohmic width < 0.27um (Mosis #4.4)"
+
+ width pdiff,apres,rpd,pdc/a,psd,psc/a 270 \
+ "P-Diffusion,P-Ohmic width < 0.27um (Mosis #4.4)"
+
+ width pc/m1 360 \
+ "Poly contact width < 0.36um (Mosis #5.1)"
+
+ width ppc/m1 360 \
+ "Poly contact width < 0.36um (Mosis #5.1)"
+
+ width pnc/m1 360 \
+ "Poly contact width < 0.36um (Mosis #5.1)"
+
+
+ width gc 180 \
+ "GC contact width < 0.18um (Mosis #6.1)"
+
+ width ndc/m1 360 \
+ "Diffusion contact width < 0.36um (Mosis #6.1)"
+
+
+ width nsc/m1 360 \
+ "Diffusion contact width < 0.36um (Mosis #6.1)"
+
+ width nwsc/m1 3604 \
+ "Diffusion contact width < 0.36um (Mosis #6.1)"
+
+
+
+ width nwsc 540 \
+ "nwr (for Fig1b resistor) active Contact width < 0.54um (Mosis #Fig1b)"
+
+ width pdc/m1 360 \
+ "Diffusion contact width < 0.36um (Mosis #6.1)"
+
+
+ width psc/m1 360 \
+ "Diffusion contact width < 0.36um (Mosis #6.1)"
+
+ width m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 300 \
+ "Metal1 width < 0.3um (Mosis #7.1)"
+
+ width gv1 200 \
+ "GV1 via width < 0.2um (Mosis #8.1)"
+
+ width m2c/m1 400 \
+ "Metal2 contact width < 0.4um (Mosis #8.1)"
+
+
+ width m2,fm2,rm2,m2c/m2,m3c/m2 300 \
+ "Metal2 width < 0.3um (Mosis #9.1)"
+
+ width gv2 200 \
+ "GV2 via width < 0.2um (Mosis #14.1)"
+
+ width m3c/m2 400 \
+ "Metal3 contact width < 0.4um (Mosis #14.1)"
+
+
+
+ width m3,fm3,rm3,m3c/m3,m4c/m3 300 \
+ "Metal3 width < 0.3um (Mosis #15.1)"
+
+ width sb,pres,anres,apres 360 \
+ "Silicide-Block width < 0.36 (Mosis #20.1)"
+
+ width pres 450 \
+ "Silicide-Block polyR width < 0.45um (Mosis #20.6)"
+
+ width anres,apres 540 \
+ "Silicide-Block activeR width < 0.54um (Mosis #20.16)"
+
+ width gv3 200 \
+ "GV3 via width < 0.2um (Mosis #21.3)"
+
+ width m4c/m3 400 \
+ "Metal4 contact width < 0.4um (Mosis #21.3)"
+
+ width m4,fm4,rm4,m4c/m4,m5c/m4 300 \
+ "Metal4 width < 0.3um (Mosis #22.1)"
+
+ width nfi,pfi 360 \
+ "N/P_field-implant width < 0.36um (Mosis #29.1)"
+
+ width gv4 200 \
+ "GV4 via width < 0.2um (Mosis #25.4)"
+
+ width m5c/m4 400 \
+ "Metal5 contact width < 0.4um (Mosis #25.4)"
+
+ width m5,fm5,rm5,m5c/m5,m6c/m5 300 \
+ "Metal5 width < 0.3um (Mosis #26.2)"
+
+ width gv5 300 \
+ "GV5 via width < 0.3um (Mosis #29.4)"
+
+ width m6c/m5 500 \
+ "Metal6 contact width < 0.5um (Mosis #29.4)"
+
+ width m6,fm6,rm6,m6c/m6,mic/m6,pad 500 \
+ "Metal6 width < 0.5um (Mosis #30.2)"
+
+ width gvi 360 \
+ "MIM via width < 0.36um (Mosis #28.4)"
+
+ width mic/mi 900 \
+ "MIM contact width < 0.9um (Mosis #28.4)"
+
+ width mi,mic/mi 4050 \
+ "MIM width < 4.05um (Mosis #28.1)"
+
+#--------!---------
+
+ spacing nwell nwell 540 touching_ok \
+ "N-well(at-same-potential) spacing < 0.54um (Mosis #1.3)"
+
+ spacing pwell pwell 540 touching_ok \
+ "P-well(at-same-potential) spacing < 0.54um (Mosis #1.3)"
+
+ spacing rnw nwell 1620 touching_illegal \
+ "rnw (for resistor L/W extraction) spacing to N-well < 1.62um (Mosis #2.3)"
+
+ spacing nwr nwell 1620 touching_illegal \
+ "nwr (for Fig1b resistor L/W extraction) spacing to N-well < 1.62um (Mosis #2.3)"
+
+ edge4way ~(pwell)/well pwell 1 ~(rnw)/active 0 0 \
+ "P-well cannot touch rnw (for resistor L/W extraction) (Mosis #1.4)" active
+
+ edge4way ~(pwell)/well pwell 1 ~(nwr)/active 0 0 \
+ "P-well cannot touch nwr (for Fig1b resistor L/W extraction) (Mosis #1.4)" active
+
+ spacing diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a 270 touching_ok \
+ "Diffusion spacing < 0.27um (Mosis #2.2)"
+
+ spacing nwell ndiff,anres,rnd,nfet,ndc/a 54 touching_illegal \
+ "N-well spacing to N-Diffusion < 0.54 (Mosis #2.3)"
+
+ spacing pwell pdiff,apres,rpd,pfet,pdc/a 54 touching_illegal \
+ "P-well spacing to P-Diffusion < 0.54 (Mosis #2.3)"
+
+ spacing ndiff,anres,rnd,nfet,ndc/a pdiff,apres,rpd,pfet,pdc/a 1080 touching_illegal \
+ "N-Diffusion spacing to P-Diffusion < 1.08um (Mosis #2.3+2.3)"
+
+ edge4way ~(nwell)/well nwell 540 ~(pdiff,apres,rpd,pfet,pdc/a)/active nwell 540 \
+ "N-well overlap of P-Diffusion < 0.54um (Mosis #2.4)" active
+
+ edge4way ~(pwell)/well pwell 540 ~(ndiff,anres,rnd,nfet,ndc/a)/active pwell 540 \
+ "P-well overlap of N-Diffusion < 0.54um (Mosis #2.4)" active
+
+ edge4way ~(nwell)/well nwell 270 ~(nsd,nwsd,nsc/a,nwsc/a)/active nwell 270 \
+ "N-well overlap of N-Ohmic < 0.27um (Mosis #2.4)" active
+
+ edge4way ~(pwell)/well pwell 270 ~(psd,psc/a)/active pwell 270 \
+ "P-well overlap of P-Ohmic < 0.27um (Mosis #2.4)" active
+
+ spacing ndiff,anres,rnd,ndc/a nsd,nwsd,nsc/a,nwsc/a 810 touching_illegal \
+ "N-Diffusion spacing to N-Ohmic < 0.81um (Mosis #2.3+2.4)"
+
+ spacing pdiff,apres,rpd,pdc/a psd,psc/a 810 touching_illegal \
+ "P-Diffusion spacing to P-Ohmic < 0.81um (Mosis #2.3+2.4)"
+
+ spacing nwell psd,psc/a 270 touching_illegal \
+ "N-well spacing to P-Ohmic < 0.27um (Mosis #2.4)"
+
+ spacing pwell nsd,nwsd,nsc/a,nwsc/a 270 touching_illegal \
+ "P-well spacing to N-Ohmic < 0.27um (Mosis #2.4)"
+
+ spacing psd,psc/a rnw,prnw 270 touching_illegal \
+ "P-Ohmic spacing to rnw,prnw < 0.27um (Mosis #2.4)"
+
+ spacing psd,psc/a nwr,pnwr 270 touching_illegal \
+ "P-Ohmic spacing to nwr,pnwr (for Fig1b Resistor) < 0.27um (Mosis #2.4)"
+
+ spacing nsd,nwsd,nsc/a,nwsc/a psd,psc/a 540 touching_illegal \
+ "N-Ohmic spacing to P-Ohmic < 0.54um (Mosis #2.4+2.4)"
+
+ spacing ndiff,anres,rnd,nfet,ndc/a,nfet psd,psc/a 360 touching_ok \
+ "N-Diffusion spacing to P-Ohmic < 0.36um (Mosis #2.5)"
+
+ spacing pdiff,apres,rpd,pfet,pdc/a,pfet nsd,nwsd,nsc/a,nwsc/a 360 touching_ok \
+ "P-Diffusion spacing to N-Ohmic < 0.36um (Mosis #2.5)"
+
+ spacing poly,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,nfet,pfet,fet poly,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,nfet,pfet,fet 270 touching_ok \
+ "Poly spacing < 0.27um (Mosis #3.2)"
+
+ spacing poly,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,nfet,pfet,fet fp,fapm 270 touching_illegal \
+ "Poly spacing to fill layer (fp) < 0.27um (Mosis #3.2)"
+
+ spacing fp fp 360 touching_ok \
+ "Poly fill layer (fp) spacing < 0.36um (Mosis #0)"
+
+ spacing nfet,pfet,fet nfet,pfet,fet 360 touching_ok \
+ "Poly spacing < 0.36um (Mosis #3.2.a)"
+
+ edge4way nfet,pfet,fet space/active,poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a 270 poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a 0 0 \
+ "Poly overhang of Transistor < 0.27um (Mosis #3.3)" active
+
+ edge4way nfet,pfet,fet space/active,ndiff,anres,rnd,ndc/a,pdiff,apres,rpd,pdc/a 360 ndiff,anres,rnd,ndc/a,pdiff,apres,rpd,pdc/a,nfet,pfet,fet 0 0 \
+ "N-Diffusion,P-Diffusion overhang of Transistor < 0.36um (Mosis #3.4)" active
+
+ edge4way poly,fp,pp,pn,rp,pc/a,ppc/a,pnc/a ~(poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,nfet,pfet,fet,prp)/active 90 space space 90 \
+ "Poly spacing to Diffusion < 0.09um (Mosis #3.5)"
+
+ edge4way nfet ~(nfet)/active 270 ~(pselect)/select ~(nfet)/active 270 \
+ "N-Transistor space to P-Select < 0.27um (Mosis #4.1)" select
+
+ edge4way pfet ~(pfet)/active 270 ~(nselect)/select ~(pfet)/active 270 \
+ "P-Transistor space to N-Select < 0.27um (Mosis #4.1)" select
+
+ edge4way nfet ~(nfet)/active 360 ~(psd,psc/a)/active ~(nfet)/active 270 \
+ "N-Transistor space to P-Ohmic < 0.36um (Mosis #4.1)" active
+
+ edge4way pfet ~(pfet)/active 360 ~(nsd,nwsd,nsc/a,nwsc/a)/active ~(pfet)/active 270 \
+ "P-Transistor space to N-Ohmic < 0.36um (Mosis #4.1)" active
+
+#PEZ edge4way psd,psc/a space ~(nfet)/active space \
+#PEZ "P-Ohmic space to N-Transistor < (Mosis #4.1)" active
+
+#PEZ edge4way nsd,nwsd,nsc/a,nwsc/a space ~(pfet)/active space \
+#PEZ "N-Ohmic space to P-Transistor < (Mosis #4.1)" active
+
+ edge4way ~(nselect,pselect)/select nselect,pselect 180 ~(diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a)/active nselect,pselect 180 \
+ "N-Select,P-Select overlap of Diffusion < 0.18um (Mosis #4.2_)" active
+
+ edge4way ~(nselect,pselect)/select nselect,pselect 90 ~(pp,pn)/active nselect,pselect 90 \
+ "N-Select,P-Select overlap of poly biased with Nselect or Pselect < 0.09um (Mosis #4.2_)" active
+
+#SOC edge4way ~(nselect)/select nselect 1 ~(gc)/contact nselect 1 \
+#SOC "N-Select overlap of Generic contact < 1 (Mosis #?.?__)" contact
+
+#SOC edge4way ~(pselect)/select pselect 1 ~(gc)/contact pselect 1 \
+#SOC "P-Select overlap of Generic contact < 1 (Mosis #?.?__)" contact
+
+ edge4way space nselect,pselect 180 ~(ndiff,anres,rnd,nfet,ndc/a)/active nselect 180 \
+ "N-Select space to N-Diffusion < 0.18um (Mosis #4.2a)" active
+
+ edge4way nselect,pselect space 180 ~(ndiff,anres,rnd,nfet,ndc/a)/active nselect 180 \
+ "N-Select space to N-Diffusion < 0.18um (Mosis #4.2b)" active
+
+ edge4way nselect,pselect space 180 ~(ndiff,anres,rnd,nfet,ndc/a)/active space,nselect,pselect 180 \
+ "N-Select space to N-Diffusion < 0.18um (Mosis #4.2c)" active
+
+ edge4way space nselect,pselect 180 ~(pdiff,apres,rpd,pfet,pdc/a)/active pselect 180 \
+ "P-Select space to P-Diffusion < 0.18um (Mosis #4.2aa)" active
+
+ edge4way nselect,pselect space 180 ~(pdiff,apres,rpd,pfet,pdc/a)/active pselect 180 \
+ "P-Select space to P-Diffusion < 0.18um (Mosis #4.2bb)" active
+
+ edge4way nselect,pselect space 180 ~(pdiff,apres,rpd,pfet,pdc/a)/active space,nselect,pselect 180 \
+ "P-Select space to P-Diffusion < 0.18um (Mosis #4.2cc)" active
+
+#SOC edge4way ~(nselect)/select nselect 0 ~(ndc/a,pdc/a,psc/a,nsc/a,nwsc/a)/active nselect 0 \
+#SOC "N-Select overlap of Diffusion contact < 0 (Mosis #?.?__)" active
+
+#SOC edge4way ~(pselect,dps)/select pselect,dps 0 ~(ndc/a,pdc/a,psc/a,nsc/a,nwsc/a)/active pselect,dps 0 \
+#SOC "P-Select overlap of Diffusion contact < 0 (Mosis #?.?__)" active
+
+ edge4way space nselect 90 ~(pn)/active nselect 90 \
+ "N-Select space to Poly < 0.09um (Mosis #4.2d)" active
+
+ edge4way space pselect 90 ~(pp)/active pselect 90 \
+ "P-Select space to Poly < 0.09um (Mosis #4.2d)" active
+
+ edge4way nselect space 90 ~(pn)/active nselect 90 \
+ "N-Select space to Poly < 0.09um (Mosis #4.2ep)" active
+
+ edge4way pselect space 90 ~(pp)/active pselect 90 \
+ "P-Select space to Poly < 0.09um (Mosis #4.2ep)" active
+
+ edge4way nselect space 90 ~(pn)/active space,nselect 90 \
+ "N-Select space to Poly < 0.09um (Mosis #4.2f)" active
+
+ edge4way pselect space 90 ~(pp)/active space,pselect 90 \
+ "P-Select space to Poly < 0.09um (Mosis #4.2f)" active
+
+ area nsd,nwsd,psd,nsc/a,nwsc/a,psc/a 1440 270 \
+ "Ohmic-Diffusion area < 1.44um^2 (Mosis #+++)"
+
+ edge4way pn space 90 ~(pselect)/select space 90 \
+ "poly with Nselect spacing to P-Select < 0.9um (Mosis #4.2y)" select
+
+ edge4way pp space 90 ~(nselect)/select space 90 \
+ "poly with Pselect spacing to N-Select < 0.9um (Mosis #4.2y)" select
+
+ edge4way diff space 180 nselect space 180 \
+ "N-Select must overlap Diffusion by 2 (Mosis #4.2)" select
+
+ edge4way diff space 180 pselect space 180 \
+ "P-Select must overlap Diffusion by 2 (Mosis #4.2)" select
+
+ edge4way ndiff,anres,rnd,nfet,ndc/a space 180 ~(pselect)/select space 180 \
+ "P-Select space to N-Diffusion < 0.18um (Mosis #4.2e)" select
+
+ edge4way pdiff,apres,rpd,pfet,pdc/a space 180 ~(nselect)/select space 180 \
+ "N-Select space to P-Diffusion < 0.18um (Mosis #4.2e)" select
+
+ edge4way ~(pdiff,apres,rpd,pfet,pdc/a,psd,psc/a)/active pdiff,apres,rpd,pfet,pdc/a,psd,psc/a 1 ~(nselect)/select 0 0 \
+ "N-Select cannot touch P-Diffusion,P-Ohmic (Mosis #4.2f)" select
+
+ edge4way ~(ndiff,anres,rnd,nfet,ndc/a,nsd,nwsd,nsc/a,nwsc/a)/active ndiff,anres,rnd,nfet,ndc/a,nsd,nwsd,nsc/a,nwsc/a 1 ~(pselect)/select 0 0 \
+ "P-Select cannot touch N-Diffusion,N-Ohmic (Mosis #4.2f)" select
+
+ spacing nselect nselect 360 touching_ok \
+ "N-Select spacing < 0.36um (Mosis #4.4)"
+
+ spacing pselect pselect 360 touching_ok \
+ "P-Select spacing < 0.36um (Mosis #4.4)"
+
+ edge4way ndiff,anres,rnd,ndc/a psd,psc/a 180 ~(ndiff,anres,rnd,ndc/a)/active 0 0 \
+ "P-Ohmic(that touches N-Diffusion) width < 0.18um (Mosis #4.4)"
+
+ edge4way pdiff,apres,rpd,pdc/a nsd,nwsd,nsc/a,nwsc/a 180 ~(pdiff,apres,rpd,pdc/a)/active 0 0 \
+ "N-Ohmic(that touches P-Diffusion) width < 0.18um (Mosis #4.4)"
+
+ edge4way gc ~(gc)/contact 90 poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a ~(gc)/contact 90 \
+ "Poly,Diffusion overlap of GC contact < 0.09um (Mosis #5.2)" active
+
+ edge4way ~(nwsd)/active nwsd 180 ~(gc)/contact nwsd 180 \
+ "nwr (for Fig1b resistor) active overlap of GC contact < 0.18um (Mosis #Fig1b)" contact
+
+ spacing nwr gc 450 touching_illegal \
+ "nwr (for Fig1b resistor) spacing to GC contact < 0.45um (Mosis #Fig1b)"
+
+ spacing nwr ndc/a,nsc/a,nwsc/a 270 touching_illegal \
+ "nwr (for Fig1b resistor) spacing to Diffusion contact < 0.27um (Mosis #Fig1b)"
+
+ edge4way gc space 1 poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a space 1 \
+ "one of: Poly,Diffusion must overlap GC contact by 1 (Mosis #5.2a,6.2a)" active
+
+ edge4way ~(poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a)/active poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a 1 ~(gc)/contact 0 0 \
+ "Edge to one of: Poly,Diffusion cannot touch GC contact (Mosis #5.2a,6.2a)" contact
+
+ spacing gc gc 360 touching_ok \
+ "Generic contact spacing < 0.36um (Mosis #5.3)"
+
+ edge4way ~(gc)/contact gc 1 ~(ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1)/metal1 0 0 \
+ "GC contact cannot touch Metal1 contacts (Mosis #0)" metal1
+
+ spacing gv1 m2c/m2 180 touching_illegal \
+ "GV1 via spacing to Metal2 contacts < 0.18um (Mosis #14.2)"
+
+ spacing poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a pc/a,ppc/a,pnc/a 360 touching_ok \
+ "Poly spacing to Poly contact < 0.36um (Mosis #5.5.b)"
+
+ edge4way gc ~(gc)/contact 90 diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a ~(gc)/contact 90 \
+ "Diffusion,Poly overlap of GC contact < 0.09um (Mosis #6.2)" active
+
+ spacing gc pc/a,ppc/a,pnc/a,ndc/a,pdc/a,psc/a,nsc/a,nwsc/a 270 touching_illegal \
+ "Generic contact spacing to Poly contact,Diffusion contact < 0.27um (Mosis #5.3)"
+
+ spacing pc/a,ppc/a,pnc/a pc/a,ppc/a,pnc/a 180 touching_ok \
+ "Poly contact spacing < 0.18um (Mosis #6.3)"
+
+ spacing ndc/a,pdc/a,psc/a,nsc/a,nwsc/a ndc/a,pdc/a,psc/a,nsc/a,nwsc/a 180 touching_ok \
+ "Diffusion contact spacing < 0.18um (Mosis #6.3)"
+
+ edge4way ndiff,anres,rnd,ndc/a ~(ndiff,anres,rnd,ndc/a)/active 90 ~(gc)/contact ~(ndiff,anres,rnd,ndc/a)/active 90 \
+ "N-Diffusion space to Generic contact < 0.09um (Mosis #6.2x)" contact
+
+ edge4way pdiff,apres,rpd,pdc/a ~(pdiff,apres,rpd,pdc/a)/active 90 ~(gc)/contact ~(pdiff,apres,rpd,pdc/a)/active 90 \
+ "P-Diffusion space to Generic contact < 0.09um (Mosis #6.2x)" contact
+
+ edge4way nsd,nwsd,nsc/a,nwsc/a ~(nsd,nwsd,nsc/a,nwsc/a)/active 90 ~(gc)/contact ~(nsd,nwsd,nsc/a,nwsc/a)/active 90 \
+ "N-Ohmic space to Generic contact < 0.09um (Mosis #6.2x)" contact
+
+ edge4way psd,psc/a ~(psd,psc/a)/active 90 ~(gc)/contact ~(psd,psc/a)/active 90 \
+ "P-Ohmic space to Generic contact < 0.09um (Mosis #6.2x)" contact
+
+ spacing nsc/m1,nwsc/m1 pdc/m1 180 touching_illegal \
+ "nsc spacing to pdc < 0.18um (Mosis #6.3)"
+
+ spacing psc/m1 ndc/m1 180 touching_illegal \
+ "psc spacing to ndc < 0.18um (Mosis #6.3)"
+
+
+
+ spacing nfet,pfet ndc/a,pdc/a,psc/a,nsc/a,nwsc/a 90 touching_illegal \
+ "N-Transistor,P-Transistor spacing to Diffusion contact < 0.09um (Mosis #6.4)"
+
+ spacing nfet,pfet gc 180 touching_illegal \
+ "N-Transistor,P-Transistor spacing to Generic contact < 0.18um (Mosis #6.4)"
+
+ spacing diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a pc/a,ppc/a,pnc/a 90 touching_illegal \
+ "Diffusion spacing to Poly contact < 0.09um (Mosis #6.5.b)"
+
+ spacing diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a,nfet,pfet ndc/a,pdc/a,psc/a,nsc/a,nwsc/a 360 touching_ok \
+ "Diffusion spacing to Diffusion contact < 0.36um (Mosis #6.5.b)"
+
+ spacing pc/a,ppc/a,pnc/a ndc/a,pdc/a,psc/a,nsc/a,nwsc/a 180 touching_illegal \
+ "pc/a,ppc/a,pnc/a,pm12c/a,ppm12c/a,pnm12c/a spacing to ndc/a,pdc/a,psc/a,nsc/a,nwsc/a < 0.18um (Mosis #6.7)"
+
+ spacing m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 300 touching_ok \
+ "Metal1 spacing < 0.3um (Mosis #7.2)"
+
+ spacing m1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 fm1,fapm 300 touching_illegal \
+ "Metal1 spacing to fill layer (fm1) < 0.3um (Mosis #7.2)"
+
+ spacing fm1 fm1 360 touching_ok \
+ "Metal1 fill layer (fm1) spacing < 0.36um (Mosis #0)"
+
+ edge4way gc space 1 m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 space 100 \
+ "Metal1 must overlap GC contact by 0.1um (Mosis #7.3,7.4)" metal1
+
+ edge4way ~(m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1)/metal1 m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 1 ~(gc)/contact 0 0 \
+ "Metal1(edge) cannot touch GC contact (Mosis #7.3+7.4)" contact
+
+ spacing gv1 gv1 270 touching_ok \
+ "GV1 via spacing < 0.27um (Mosis #8.2)"
+
+ edge4way gv1 ~(gv1)/via1 1 m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 ~(gv1)/via1 100 \
+ "Metal1 overlap of GV1 via < 0.1um (Mosis #8.3)" metal1
+
+ edge4way gv1 space 1 m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 space 100 \
+ "Metal1 must overlap GV1 via by 0.1um (Mosis #8.3)" metal1
+
+ edge4way ~(m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1)/metal1 m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 1 ~(gv1)/via1 0 0 \
+ "Metal1(edge) cannot touch GV1 via (Mosis #8.3)" via1
+
+ spacing m2,rm2,m2c/m2,m3c/m2 m2,rm2,m2c/m2,m3c/m2 300 touching_ok \
+ "Metal2 spacing < 0.3um (Mosis #9.2)"
+
+ spacing m2,rm2,m2c/m2,m3c/m2 fm2,fapm 360 touching_illegal \
+ "Metal2 spacing to fill layer (fm2) < 0.36um (Mosis #9.2)"
+
+ spacing fm2 fm2 360 touching_ok \
+ "Metal2 fill layer (fm2) spacing < 0.36um (Mosis #0)"
+
+ edge4way gv1 space 100 m2,fm2,rm2,m2c/m2,m3c/m2 space 100 \
+ "Metal2 must overlap GV1 via by 0.1um (Mosis #9.3)" metal2
+
+ edge4way ~(m2,fm2,rm2,m2c/m2,m3c/m2)/metal2 m2,fm2,rm2,m2c/m2,m3c/m2 1 ~(gv1)/via1 0 0 \
+ "Metal2(edge) cannot touch GV1 via (Mosis #9.3)" via1
+
+ width glass 900 \
+ "COG width < 0.9um (Mosis #10.2)"
+
+ edge4way ~(pad)/metal6 pad 6030 ~(glass)/oxide pad 6030 \
+ "pad overlap of COG < 6.03um (Mosis #10.3)" oxide
+
+ spacing gv2 gv2 300 touching_ok \
+ "GV2 via spacing < 0.3um (Mosis #14.2)"
+
+ spacing gv2 m3c/m2 180 touching_illegal \
+ "GV2 via spacing to Metal3 contact < 0.18um (Mosis #14.2)"
+
+ edge4way gv2 space 100 m2,fm2,rm2,m2c/m2,m3c/m2 space 100 \
+ "Metal2 must overlap GV2 via by 0.1um (Mosis #14.3)" metal2
+
+ edge4way ~(m2,fm2,rm2,m2c/m2,m3c/m2)/metal2 m2,fm2,rm2,m2c/m2,m3c/m2 1 ~(gv2)/via2 0 0 \
+ "Metal2(edge) cannot touch GV2 via (Mosis #14.3)" via2
+
+ spacing m3,rm3,m3c/m3,m4c/m3 m3,rm3,m3c/m3,m4c/m3 300 touching_ok \
+ "Metal3 spacing < 0.3um (Mosis #15.2)"
+
+ spacing m3,rm3,m3c/m3,m4c/m3 fm3,fapm 360 touching_illegal \
+ "Metal3 spacing to fill layer (fm3) < 0.36um (Mosis #15.2)"
+
+ spacing fm3 fm3 300 touching_ok \
+ "Metal3 fill layer (fm3) spacing < 0.3um (Mosis #0)"
+
+ edge4way gv2 space 100 m3,fm3,rm3,m3c/m3,m4c/m3 space 100 \
+ "Metal3 must overlap GV2 via by 0.1um (Mosis #15.3)" metal3
+
+ edge4way ~(m3,fm3,rm3,m3c/m3,m4c/m3)/metal3 m3,fm3,rm3,m3c/m3,m4c/m3 1 ~(gv2)/via2 0 0 \
+ "Metal3(edge) cannot touch GV2 via (Mosis #15.3)" via2
+
+ spacing sb,pres,anres,apres sb,pres,anres,apres 360 touching_ok \
+ "Silicide-Block spacing < 0.36um (Mosis #20.2)"
+
+ spacing sb,pres,anres,apres,pres,anres,apres pc/a,ppc/a,pnc/a,ndc/a,pdc/a,psc/a,nsc/a,nwsc/a 100 touching_illegal \
+ "Silicide-Block spacing to Diffusion contact,Poly contact < 0.1um (Mosis #20.3)"
+
+ spacing sb,pres,anres,apres,pres,anres,apres gc 180 touching_illegal \
+ "Silicide-Block spacing to GC contact < 0.18um (Mosis #20.3)"
+
+ edge4way sb,pres,anres,apres space 180 ~(diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a)/active 0 180 \
+ "Silicide-Block space to Diffusion < 0.18um (Mosis #20.4)" active
+
+ spacing sb,pres,anres,apres,pres poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a 180 touching_ok \
+ "Silicide-Block spacing to other Poly < 0.18um (Mosis #20.5)"
+
+ edge4way sb,pres,anres,apres space 180 ~(poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a)/contact sb,pres,anres,apres 180 \
+ "Silicide-Block space to Poly < 0.18um (Mosis #20.5x)" contact
+
+ spacing sb,pres,anres,apres,pres nfet,pfet,fet 180 touching_ok \
+ "Silicide-Block spacing to other Transistor < 0.18um (Mosis #20.5)"
+
+ edge4way sb,pres,anres,apres space 180 ~(nfet,pfet,fet)/contact sb,pres,anres,apres 180 \
+ "Silicide-Block space to Transistor < 0.18um (Mosis #20.5x)" contact
+
+ spacing pres pres 630 touching_ok \
+ "Silicide-Block polyR spacing < 0.63um (Mosis #20.13)"
+
+ edge4way pres,anres,apres space/active,sb 180 sb sb 180 \
+ "Silicide-Block overlap of Silicide-Block polyR/activeR < 0.18um (Mosis #20.15)"
+
+ edge4way sb,pres,anres,apres diff,ndiff,rnd,nfet,nsd,nwsd,pdiff,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a 270 diff,ndiff,rnd,nfet,nsd,nwsd,pdiff,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a 0 0 \
+ "Diffusion overhang of Silicide-Block < 0.27um (Mosis #20.17)
+
+ spacing gv3 gv3 300 touching_ok \
+ "GV3 via spacing < 0.3um (Mosis #21.2)"
+
+ spacing gv3 m4c/m3 180 touching_illegal \
+ "GV3 via spacing to Metal4 contact < 0.18um (Mosis #21.2)"
+
+ edge4way gv3 space 100 m3,fm3,rm3,m3c/m3,m4c/m3 space 100 \
+ "Metal3 must overlap GV3 via by 0.1um (Mosis #21.3)" metal3
+
+ edge4way ~(m3,fm3,rm3,m3c/m3,m4c/m3)/metal3 m3,fm3,rm3,m3c/m3,m4c/m3 1 ~(gv3)/via3 0 0 \
+ "Metal3(edge) cannot touch GV3 via (Mosis #21.3)" via3
+
+ spacing m4,rm4,m4c/m4,m5c/m4 m4,rm4,m4c/m4,m5c/m4 300 touching_ok \
+ "Metal4 spacing < 0.3um (Mosis #22.2)"
+
+ spacing m4,rm4,m4c/m4,m5c/m4 fm4,fapm 300 touching_illegal \
+ "Metal4 spacing to fill layer (fm4) < 0.3um (Mosis #22.2)"
+
+ spacing fm4 fm4 300 touching_ok \
+ "Metal4 fill layer (fm4) spacing < 0.3um (Mosis #0)"
+
+ edge4way gv3 space 100 m4,fm4,rm4,m4c/m4,m5c/m4 space 100 \
+ "Metal4 must overlap GV3 via by 0.1um (Mosis #22.3)" metal4
+
+ edge4way ~(m4,fm4,rm4,m4c/m4,m5c/m4)/metal4 m4,fm4,rm4,m4c/m4,m5c/m4 1 ~(gv3)/via3 0 0 \
+ "Metal4(edge) cannot touch GV3 via (Mosis #22.3)" via3
+
+ spacing gv4 gv4 300 touching_ok \
+ "GV4 via spacing < 0.3um (Mosis #25.3)"
+
+ edge4way ~(gv4)/via4 gv4 1 ~(m5c/m5)/metal5 0 0 \
+ "GV4 via cannot touch Metal5 contacts (Mosis #0)" metal5
+
+ edge4way gv4 space 100 m4,fm4,rm4,m4c/m4,m5c/m4 space 100 \
+ "Metal4 must overlap GV4 via by 0.1um (Mosis #25.4)" metal4
+
+ edge4way ~(m4,fm4,rm4,m4c/m4,m5c/m4)/metal4 m4,fm4,rm4,m4c/m4,m5c/m4 1 ~(gv4)/via4 0 0 \
+ "Metal4(edge) cannot touch GV4 via (Mosis #25.4)" via4
+
+ spacing m5,rm5,m5c/m5,m6c/m5 m5,rm5,m5c/m5,m6c/m5 300 touching_ok \
+ "Metal5 spacing < 0.3um (Mosis #26.3)"
+
+ spacing m5,rm5,m5c/m5,m6c/m5 fm5,fapm 30 touching_illegal \
+ "Metal5 spacing to fill layer (fm5) < 0.3 (Mosis #26.3)"
+
+ spacing fm5 fm5 300 touching_ok \
+ "Metal5 fill layer (fm5) spacing < 0.3 (Mosis #0)"
+
+ edge4way space gv4 1 m5,fm5,rm5,m5c/m5,m6c/m5 0 0 \
+ "Metal5 must overlap GV4 via (Mosis #26.1)" metal5
+
+ edge4way gv4 space 100 m5,fm5,rm5,m5c/m5,m6c/m5 space 100 \
+ "Metal5 must overlap GV4 via by 0.1um (Mosis #26.1)" metal5
+
+ edge4way ~(m5,fm5,rm5,m5c/m5,m6c/m5)/metal5 m5,fm5,rm5,m5c/m5,m6c/m5 1 ~(gv4)/via4 0 0 \
+ "Metal5(edge) cannot touch GV4 via (Mosis #26.1)" via4
+
+ spacing gv5 gv5 300 touching_ok \
+ "GV5 via spacing < 0.3um (Mosis #29.3)"
+
+ edge4way ~(gv5)/via5 gv5 1 ~(m6c/m6)/metal6 0 0 \
+ "GV5 via cannot touch Metal6 contacts (Mosis #0)" metal6
+
+ edge4way gv5 space 100 m5,fm5,rm5,m5c/m5,m6c/m5 space 100 \
+ "Metal5 must overlap GV5 via by 0.1um (Mosis #29.5)" metal5
+
+ edge4way ~(m5,fm5,rm5,m5c/m5,m6c/m5)/metal5 m5,fm5,rm5,m5c/m5,m6c/m5 1 ~(gv5)/via5 0 0 \
+ "Metal5(edge) cannot touch GV5 via (Mosis #29.5)" via5
+
+ spacing m6,rm6,m6c/m6,mic/m6,pad m6,rm6,m6c/m6,mic/m6,pad 500 touching_ok \
+ "Metal6 spacing < 0.5um (Mosis #30.3)"
+
+ spacing m6,rm6,m6c/m6,mic/m6,pad fm6,fapm 500 touching_illegal \
+ "Metal6 spacing to fill layer (fm6) < 0.5um (Mosis #30.3)"
+
+ spacing fm6 fm6 500 touching_ok \
+ "Metal6 fill layer (fm6) spacing < 0.5um (Mosis #0)"
+
+ edge4way space gv5 1 m6,fm6,rm6,m6c/m6,mic/m6,pad 0 0 \
+ "Metal6 must overlap GV5 via (Mosis #30.1)" metal6
+
+ edge4way gv5 space 100 m6,fm6,rm6,m6c/m6,mic/m6,pad space 100 \
+ "Metal6 must overlap GV5 via by 0.1um (Mosis #30.1)" metal6
+
+ edge4way ~(m6,fm6,rm6,m6c/m6,mic/m6,pad)/metal6 m6,fm6,rm6,m6c/m6,mic/m6,pad 1 ~(gv5)/via5 0 0 \
+ "Metal6(edge) cannot touch GV5 via (Mosis #30.1)" via5
+
+ spacing mi,mic/mi mi,mic/mi 1260 touching_ok \
+ "MIM spacing < 1.26um (Mosis #28.2)"
+
+ spacing gvi mic/mi 1800 touching_illegal \
+ "MIM via spacing to MIM contact < 1.8um (Mosis #28.2)"
+
+ spacing mic/mi mic/mi 1530 touching_ok \
+ "MIM contact spacing < 1.53um (Mosis #28.2)"
+
+ edge4way mi,mic/mi ~(mi,mic/mi)/metali 450 m5,fm5,rm5,m5c/m5,m6c/m5 ~(mi,mic/mi)/metali 450 \
+ "Metal5 overlap of MIM < 0.45um (Mosis #28.3)" metal5
+
+ edge4way gvi ~(gvi)/viai 180 m6,fm6,rm6,m6c/m6,mic/m6,pad ~(gvi)/viai 180 \
+ "Metal6 overlap of MIM via < 0.18um (Mosis #28.4)" metal6
+
+ spacing gvi gvi 2070 touching_ok \
+ "MIM via spacing < 2.07um (Mosis #28.4)"
+
+ edge4way space gvi 1 mi,mic/mi 0 0 \
+ "MIM must overlap MIM via (Mosis #28.4)" metali
+
+ edge4way ~(mi,mic/mi)/metali mi,mic/mi 1 ~(gvi)/viai 0 0 \
+ "MIM(edge) cannot touch MIM via (Mosis #28.4)" viai
+
+ spacing mi,mic/mi m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 2700 touching_illegal \
+ "MIM spacing to Metal1 < 2.7um (Mosis #28.7)"
+
+ spacing mi,mic/mi m2,fm2,rm2,m2c/m2,m3c/m2 2700 touching_illegal \
+ "MIM spacing to Metal2 < 2.7um (Mosis #28.7)"
+
+ spacing mi,mic/mi m3,fm3,rm3,m3c/m3,m4c/m3 2700 touching_illegal \
+ "MIM spacing to Metal3 < 2.7um (Mosis #28.7)"
+
+ spacing mi,mic/mi poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a 2700 touching_illegal \
+ "MIM spacing to Poly < 2.7um (Mosis #28.7)"
+
+ spacing mi,mic/mi diff,ndiff,anres,rnd,nfet,nsd,nwsd,pdiff,apres,rpd,pfet,psd,ndc/a,nsc/a,nwsc/a,pdc/a,psc/a 2700 touching_illegal \
+ "MIM spacing to Diffusion < 2.7um (Mosis #28.7)"
+
+ spacing mi,mic/mi gv4 450 touching_illegal \
+ "MIM spacing to GV4 via < 0.45um (Mosis #28.5)"
+
+ spacing mi,mic/mi m5c/m4 360 touching_illegal \
+ "MIM spacing to Metal5 contact < 0.36um (Mosis #28.5)"
+
+ spacing mi,mic/mi gv5 450 touching_illegal \
+ "MIM spacing to GV5 via < 0.45um (Mosis #28.5)"
+
+ spacing mi,mic/mi m6c/m5 270 touching_illegal \
+ "MIM spacing to Metal6 contact < 0.27um (Mosis #28.5)"
+
+ edge4way gvi space 270 mi,mic/mi space 270 \
+ "MIM must overlap MIM via by 0.27um (Mosis #28.5)" metali
+
+ edge4way ~(mi,mic/mi)/metali mi,mic/mi 1 ~(gvi)/viai 0 0 \
+ "MIM(edge) cannot touch MIM via (Mosis #28.5)" viai
+
+ spacing nfi nfi 360 touching_ok \
+ "N_field-implant spacing < 0.36um (Mosis #35.2)"
+
+ spacing pfi pfi 360 touching_ok \
+ "P_field-implant spacing < 0.36um (Mosis #35.2)"
+
+ spacing nfi pfi 360 touching_illegal \
+ "N_field-implant spacing to P_field-implant < 0.36um (Mosis #35.2)"
+
+ spacing nwell,pdiff,apres,rpd,pfet,pdc/a pfi 360 touching_illegal \
+ "N-well,P-Diffusion spacing to P_field-implant < 0.36um (Mosis #2.1)"
+
+ spacing pwell,ndiff,anres,rnd,nfet,ndc/a nfi 360 touching_illegal \
+ "P-well,N-Diffusion spacing to N_field-implant < 0.36um (Mosis #2.1)"
+
+ edge4way ~(nwell)/well nwell 360 ~(nfi)/implant nwell 360 \
+ "N-well overlap of N_field-implant < 0.36um (Mosis #21.2)" implant
+
+ edge4way ~(pwell)/well pwell 360 ~(pfi)/implant pwell 360 \
+ "P-well overlap of P_field-implant < 0.36um (Mosis #21.2)" implant
+
+ spacing fa fapm 360 touching_illegal \
+ "fill layer fa spacing to fill layer fapm < 0.36um (Mosis #0)"
+
+ width fa 2070 \
+ "filla width < 2.07um (Mosis #0)"
+
+ width fapm 2070 \
+ "fillapm width < 2.07um (Mosis #0)"
+
+ width fp 2070 \
+ "fillp width < 2.07um (Mosis #0)"
+
+ width fm1 2070 \
+ "fillm1 width < 2.07um (Mosis #0)"
+
+ width fm2 2070 \
+ "fillm2 width < 2.07um (Mosis #0)"
+
+ width fm3 2070 \
+ "fillm3 width < 2.07um (Mosis #0)"
+
+ width fm4 2070 \
+ "fillm4 width < 2.07um (Mosis #0)"
+
+ width fm5 2070 \
+ "fillm5 width < 2.07um (Mosis #0)"
+
+ width fm6 2070 \
+ "fillm6 width < 2.07um (Mosis #0)"
+
+ edge4way fa ~(fa)/fill 1 ~(fa)/fill (~(fa),fa)/fill 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way fb ~(fb)/fill 1 ~(fb)/fill (~(fb),fb)/fill 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way fapm ~(fapm)/active 1 ~(fapm)/active (~(fapm),fapm)/active 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way fp ~(fp)/active 1 ~(fp)/active (~(fp),fp)/active 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way fm1 ~(fm1)/metal1 1 ~(fm1)/metal1 (~(fm1),fm1)/metal1 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way fm2 ~(fm2)/metal2 1 ~(fm2)/metal2 (~(fm2),fm2)/metal2 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way fm3 ~(fm3)/metal3 1 ~(fm3)/metal3 (~(fm3),fm3)/metal3 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way fm4 ~(fm4)/metal4 1 ~(fm4)/metal4 (~(fm4),fm4)/metal4 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way fm5 ~(fm5)/metal5 1 ~(fm5)/metal5 (~(fm5),fm5)/metal5 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way fm6 ~(fm6)/metal6 1 ~(fm6)/metal6 (~(fm6),fm6)/metal6 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way rp space/active 90 prp 0 0 \
+ "prp overhang of rpoly (for resistor L/W extraction) < 0.09um (Mosis #0)" active
+
+ edge4way rnw space/active 90 prnw 0 0 \
+ "prnw overhang of rnwell (for resistor L/W extraction) < 0.09um (Mosis #0)" active
+
+ edge4way nwr space/active 90 pnwr 0 0 \
+ "pnwr overhang of nwr (for Fig1b resistor L/W extraction) < 0.09um (Mosis #0)" active
+
+ edge4way rpd space/active 90 prpd 0 0 \
+ "prpd overhang of rpdiff (for resistor L/W extraction) < 0.09um (Mosis #0)" active
+
+ edge4way rnd space/active 90 prnd 0 0 \
+ "prnd overhang of rndiff (for resistor L/W extraction) < 0.09um (Mosis #0)" active
+
+ edge4way rm1 space/metal1 90 prm1 0 0 \
+ "prm1 overhang of rmetal1 (for resistor L/W extraction) < 0.09um (Mosis #0)" metal1
+
+ edge4way rm2 space/metal2 90 prm2 0 0 \
+ "prm2 overhang of rmetal2 (for resistor L/W extraction) < 0.09um (Mosis #0)" metal2
+
+ edge4way rm3 space/metal3 90 prm3 0 0 \
+ "prm3 overhang of rmetal3 (for resistor L/W extraction) < 0.09um (Mosis #0)" metal3
+
+ edge4way rm4 space/metal4 90 prm4 0 0 \
+ "prm4 overhang of rmetal4 (for resistor L/W extraction) < 0.09um (Mosis #0)" metal4
+
+ edge4way rm5 space/metal5 90 prm5 0 0 \
+ "prm5 overhang of rmetal5 (for resistor L/W extraction) < 0.09um (Mosis #0)" metal5
+
+ edge4way rm6 space/metal6 90 prm6 0 0 \
+ "prm6 overhang of rmetal6 (for resistor L/W extraction) < 0.09um (Mosis #0)" metal6
+
+ edge4way rmi space/metali 90 prmi 0 0 \
+ "prmi overhang of rmetali (for resistor L/W extraction) < 0.09um (Mosis #0)" metali
+
+ edge4way ndc/a,nsc/a,nwsc/a ~(ndc/a,nsc/a,nwsc/a)/active 1 ~(ndc/a,nsc/a,nwsc/a)/active (~(ndc/a,nsc/a,nwsc/a),ndc/a,nsc/a,nwsc/a)/active 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way pdc/a,psc/a ~(pdc/a,psc/a)/active 1 ~(pdc/a,psc/a)/active (~(pdc/a,psc/a),pdc/a,psc/a)/active 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way pc/a,ppc/a,pnc/a ~(pc/a,ppc/a,pnc/a)/active 1 ~(pc/a,ppc/a,pnc/a)/active (~(pc/a,ppc/a,pnc/a),pc/a,ppc/a,pnc/a)/active 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way gc ~(gc)/contact 1 ~(gc)/contact (~(gc),gc)/contact 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way gv1 ~(gv1)/via1 1 ~(gv1)/via1 (~(gv1),gv1)/via1 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way m2c/m1 ~(m2c/m1)/metal1 1 ~(m2c/m1)/metal1 (~(m2c/m1),m2c/m1)/metal1 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way gv2 ~(gv2)/via2 1 ~(gv2)/via2 (~(gv2),gv2)/via2 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way m3c/m2 ~(m3c/m2)/metal2 1 ~(m3c/m2)/metal2 (~(m3c/m2),m3c/m2)/metal2 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way gv3 ~(gv3)/via3 1 ~(gv3)/via3 (~(gv3),gv3)/via3 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way m4c/m3 ~(m4c/m3)/metal3 1 ~(m4c/m3)/metal3 (~(m4c/m3),m4c/m3)/metal3 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way gv4 ~(gv4)/via4 1 ~(gv4)/via4 (~(gv4),gv4)/via4 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way m5c/m4 ~(m5c/m4)/metal4 1 ~(m5c/m4)/metal4 (~(m5c/m4),m5c/m4)/metal4 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way gv5 ~(gv5)/via5 1 ~(gv5)/via5 (~(gv5),gv5)/via5 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way m6c/m5 ~(m6c/m5)/metal5 1 ~(m6c/m5)/metal5 (~(m6c/m5),m6c/m5)/metal5 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way gvi ~(gvi)/viai 1 ~(gvi)/viai (~(gvi),gvi)/viai 1 \
+ "Contact not rectangular (Magic rule)"
+
+ edge4way mic/mi ~(mic/mi)/metali 1 ~(mic/mi)/metali (~(mic/mi),mic/mi)/metali 1 \
+ "Contact not rectangular (Magic rule)"
+
+ exact_overlap gc,ndc/a,pdc/a,psc/a,nsc/a,nwsc/a,gc,pc/a,ppc/a,pnc/a,gc
+
+ edge4way pad ~(pad)/m6 1 ~(pad)/m6 (~(pad),pad)/m6 1 \
+ "Contact not rectangular (Magic rule)"
+
+ exact_overlap ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1
+
+ exact_overlap m2c/m2
+
+ exact_overlap m3c/m3
+
+ exact_overlap m4c/m4
+
+ exact_overlap m5c/m5
+
+ exact_overlap m6c/m6
+
+ exact_overlap mic/mi
+
+ exact_overlap gv1
+
+ exact_overlap gv2
+
+ exact_overlap gv3
+
+ exact_overlap gv4
+
+ exact_overlap gv5
+
+ exact_overlap gvi
+
+ edge4way nfet,pfet,fet ~(nfet,pfet,fet)/active 1 ~(nfet,pfet,fet)/active nfet,pfet,fet 1 \
+ "Transistor cannot bend in this process (Mosis #?.?)"
+
+ width m1p 36 \
+ "Metal1 PIN width < 0.36um (do_pins)"
+
+ spacing m1p m1p 36 touching_ok \
+ "Metal1 PIN spacing < 0.36um (do_pins)"
+
+ width m2p 36 \
+ "Metal2 PIN width < 0.36um (do_pins)"
+
+ spacing m2p m2p 36 touching_ok \
+ "Metal2 PIN spacing < 0.36um (do_pins)"
+
+ width m3p 36 \
+ "Metal3 PIN width < 0.36um (do_pins)"
+
+ spacing m3p m3p 36 touching_ok \
+ "Metal3 PIN spacing < 0.36um (do_pins)"
+
+ width m4p 36 \
+ "Metal4 PIN width < 0.36um (do_pins)"
+
+ spacing m4p m4p 36 touching_ok \
+ "Metal4 PIN spacing < 0.36um (do_pins)"
+
+ width m5p 36 \
+ "Metal5 PIN width < 0.36um (do_pins)"
+
+ spacing m5p m5p 36 touching_ok \
+ "Metal5 PIN spacing < 0.36um (do_pins)"
+
+ width m6p 540 \
+ "Metal6 PIN width < 0.54um (do_pins)"
+
+ spacing m6p m6p 540 touching_ok \
+ "Metal6 PIN spacing < 0.54um (do_pins)"
+
+#CC cifstyle lambda=0.09(p)
+#CC cifwidth CWN 108 \
+#CC "generated CIF layer CWN width will be < 12 (';cif see CWN')"
+#CC cifspacing CWN CWN 54 touching_ok \
+#CC "generated CIF layer CWN spacing will be < 6 (';cif see CWN')"
+#CC cifwidth CWP 108 \
+#CC "generated CIF layer CWP width will be < 12 (';cif see CWP')"
+#CC cifspacing CWP CWP 54 touching_ok \
+#CC "generated CIF layer CWP spacing will be < 6 (';cif see CWP')"
+#CC cifwidth CSN 36 \
+#CC "generated CIF layer CSN width will be < 4 (';cif see CSN')"
+#CC cifspacing CSN CSN 36 touching_ok \
+#CC "generated CIF layer CSN spacing will be < 4 (';cif see CSN')"
+#CC cifwidth CSP 36 \
+#CC "generated CIF layer CSP width will be < 4 (';cif see CSP')"
+#CC cifspacing CSP CSP 36 touching_ok \
+#CC "generated CIF layer CSP spacing will be < 4 (';cif see CSP')"
+
+ stepsize 36000
+
+end
+
+#---------------------------------------------------
+# LEF format definitions
+#---------------------------------------------------
+
+lef
+
+ ignore PC
+ ignore CA
+
+ routing m1 M1 m1 met1
+ routing m2 M2 m2 met2
+ routing m3 M3 m3 met3
+ routing m4 M4 m4 met4
+ routing m5 M5 m5 met5
+ routing m6 M6 m6 met6
+
+ contact m2c via1 V1 v1
+ contact m3c via2 V2 v2
+ contact m4c via3 V3 v3
+ contact m5c via4 V4 v4
+ contact m6c via5 V5 v5
+
+end
+
+extract
+ style TSMC0.18um(tsmc18)from:t24i
+ cscale 1
+ lambda 9
+ step 100
+ sidehalo 8
+ planeorder well 0
+ planeorder implant 1
+ planeorder select 2
+ planeorder active 3
+ planeorder metal1 4
+ planeorder metal2 5
+ planeorder metal3 6
+ planeorder metal4 7
+ planeorder metal5 8
+ planeorder metal6 9
+ planeorder metali 10
+ planeorder oxide 11
+ planeorder xp 12
+ planeorder comment 13
+ planeorder contact 14
+ planeorder via1 15
+ planeorder via2 16
+ planeorder via3 17
+ planeorder via4 18
+ planeorder via5 19
+ planeorder viai 20
+ planeorder fill 21
+
+ resist (ndiff,anres,rnd,ndc,nsd,nwsd,nsc,nwsc)/active 6900
+ resist (pdiff,apres,rpd,pdc,psd,psc)/active 7800
+ resist (nwell)/well 946000
+ resist (rnw,nwr)/active 946000
+ resist (pwell)/well 1
+ resist (poly,fp,pp,pn,rp,pc,ppc,pnc,pc,ppc,pnc,nfet,pfet,fet)/active 8000
+ resist (pres)/active 8000
+ resist (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c,m2c)/metal1 80
+ resist (m2,fm2,rm2,m2c,m3c,m3c)/metal2 80
+ resist (m3,fm3,rm3,m3c,m4c,m4c)/metal3 80
+ resist (m4,fm4,rm4,m4c,m5c,m5c)/metal4 80
+ resist (m5,fm5,rm5,m5c,m6c,m6c)/metal5 80
+ resist (m6,fm6,rm6,m6c,mic,pad)/metal6 40
+
+ contact ndc 4 11400
+ contact pdc 4 11900
+ contact pc 4 10100
+ contact m2c 4 5440
+ contact m3c 4 10560
+ contact m4c 4 15260
+
+
+#nwell,cwell,pwell
+ areacap (nwell)/well 0.583
+
+#rnw
+ areacap (rnw,nwr)/active 0.583
+
+#ndiff
+# MODEL HANDLES THIS: areacap (ndiff,ndc)/active 8.092
+# MODEL HANDLES THIS: overlap (ndiff,ndc)/active ~space/w 8.092
+# MODEL HANDLES THIS: perimc (ndiff,ndc)/active ~(ndiff,ndc,nfet,pfet,fet)/active 23.310
+# MODEL HANDLES THIS: sideoverlap (ndiff,ndc)/active ~(ndiff,ndc,nfet,pfet,fet)/active ~space/w 23.310
+
+ areacap (rnd,anres)/active 8.092
+ overlap (rnd,anres)/active ~space/w 8.092
+ perimc (rnd,anres)/active ~(rnd,anres)/active 23.310
+ sideoverlap (rnd,anres)/active ~(rnd,anres)/active ~space/w 23.310
+
+#pdiff
+# MODEL HANDLES THIS: areacap (pdiff,pdc)/active 9.518
+# MODEL HANDLES THIS: overlap (pdiff,pdc)/active ~space/w 9.518
+# MODEL HANDLES THIS: perimc (pdiff,pdc)/active ~(pdiff,pdc,nfet,pfet,fet)/active 18.810
+# MODEL HANDLES THIS: sideoverlap (pdiff,pdc)/active ~(pdiff,pdc,nfet,pfet,fet)/active ~space/w 18.810
+
+ areacap (rpd,apres)/active 9.518
+ overlap (rpd,apres)/active ~space/w 9.518
+ perimc (rpd,apres)/active ~(rpd,apres)/active 18.810
+ sideoverlap (rpd,apres)/active ~(rpd,apres)/active ~space/w 18.810
+
+#rnw
+
+#poly
+# MODEL HANDLES THIS: overlap (nfet)/active (ndiff,anres,rnd,ndc)/active 68.364
+# MODEL HANDLES THIS: sideoverlap (nfet)/active ~(nfet)/active (ndiff,anres,rnd,ndc)/active 62.820
+# MODEL HANDLES THIS: overlap (pfet)/active (pdiff,apres,rpd,pdc)/active 66.161
+# MODEL HANDLES THIS: sideoverlap (pfet)/active ~(pfet)/active (pdiff,apres,rpd,pdc)/active 61.110
+
+ sidewall (poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active (poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active 12.714
+ areacap (poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active 0.946
+ overlap (poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active ~space/w 0.946
+ perimc (poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active 2.316
+ sideoverlap (poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc)/active ~space/w 2.316
+
+#poly2
+
+#rnw
+
+#metal1
+ sidewall (m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 (m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 23.087
+ areacap (m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 0.398
+
+#metal1-sub blocked by ~space/a
+ overlap (m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 ~space/w 0.398 ~space/a
+ perimc (m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 1.162
+ sideoverlap (m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 ~space/w 1.162 ~space/a
+
+#rnw
+ overlap (m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 rnw,nwr/active 0.398
+ sideoverlap (m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,pdc,pc,ppc,pnc,m2c)/metal1 rnw,nwr/active 1.162
+
+#metal1-diff blocked by
+ overlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (ndiff,anres,rnd,ndc)/active 0.421
+ sideoverlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (ndiff,anres,rnd,ndc)/active 1.162
+ overlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (pdiff,apres,rpd,pdc)/active 0.421
+ sideoverlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (pdiff,apres,rpd,pdc)/active 1.162
+
+#metal1-poly blocked by
+ overlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 0.400
+ sideoverlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 1.166
+ sideoverlap (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 1.166
+
+#metal2
+ sidewall (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 (m2,fm2,rm2,m2c,m3c)/metal2 25.475
+ areacap (m2,fm2,rm2,m3c)/metal2 0.127
+
+#metal2-sub blocked by
+ overlap (m2,fm2,rm2,m3c)/metal2 ~space/w 0.127 ~space/a,~space/m1
+ perimc (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 0.407
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 ~space/w 0.407 ~space/a,~space/m1
+ overlap (m2,fm2,rm2,m3c)/metal2 rnw,nwr/active 0.127 ~space/m1
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 rnw,nwr/active 0.407 ~space/m1
+
+#metal2-*diff blocked by ~space/m1
+ overlap (m2,fm2,rm2,m3c)/metal2 (ndiff,anres,rnd,ndc)/active 0.162 ~space/m1
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 (ndiff,anres,rnd,ndc)/active 0.407 ~space/m1
+ overlap (m2,fm2,rm2,m2c,m3c)/metal2 (pdiff,apres,rpd,pdc)/active 0.162 ~space/m1
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 (pdiff,apres,rpd,pdc)/active 0.407 ~space/m1
+
+#metal2-poly blocked by ~space/m1
+ overlap (m2,fm2,rm2,m3c)/metal2 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 0.128 ~space/m1
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 0.408 ~space/m1
+ sideoverlap (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active (m2,fm2,rm2,m2c,m3c)/metal2 0.408 ~space/m1
+
+#M2->M1
+ overlap (m2,fm2,rm2,m3c)/metal2 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 0.441
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 1.268
+ sideoverlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (m2,fm2,rm2,m2c,m3c)/metal2 1.268
+
+#metal3
+ sidewall (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 (m3,fm3,rm3,m3c,m4c)/metal3 26.825
+ areacap (m3,fm3,rm3,m4c)/metal3 0.076
+
+#metal3-sub blocked by ~space/a,~space/m1,~space/m2
+ overlap (m3,fm3,rm3,m4c)/metal3 ~space/w 0.076 ~space/a,~space/m1,~space/m2
+ perimc (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 0.246
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 ~space/w 0.246 ~space/a,~space/m1,~space/m2
+
+#rnw
+ overlap (m3,fm3,rm3,m4c)/metal3 rnw,nwr/active 0.076 ~space/m1,~space/m2
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 rnw,nwr/active 0.246 ~space/m1,~space/m2
+
+#metal3-*diff blocked by ~space/m1,~space/m2
+ overlap (m3,fm3,rm3,m4c)/metal3 (ndiff,anres,rnd,ndc)/active 0.105 ~space/m1,~space/m2
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 (ndiff,anres,rnd,ndc)/active 0.246 ~space/m1,~space/m2
+ overlap (m3,fm3,rm3,m4c)/metal3 (pdiff,apres,rpd,pdc)/active 0.105 ~space/m1,~space/m2
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 (pdiff,apres,rpd,pdc)/active 0.246 ~space/m1,~space/m2
+
+#metal3-poly blocked by ~space/m1,~space/m2
+ overlap (m3,fm3,rm3,m4c)/metal3 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 0.076 ~space/m1,~space/m2
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 0.246 ~space/m1,~space/m2
+ sideoverlap (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active (m3,fm3,rm3,m3c,m4c)/metal3 0.246 ~space/m1,~space/m2
+
+#M3->M1
+
+#metal3-metal1 blocked by ~space/m2
+ overlap (m3,fm3,rm3,m4c)/metal3 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 0.132 ~space/m2
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 0.420 ~space/m2
+ sideoverlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (m3,fm3,rm3,m3c,m4c)/metal3 0.420 ~space/m2
+
+#M3->M2
+ overlap (m3,fm3,rm3,m4c)/metal3 (m2,fm2,rm2,m2c,m3c)/metal2 0.441
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 (m2,fm2,rm2,m2c,m3c)/metal2 1.268
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 (m3,fm3,rm3,m3c,m4c)/metal3 1.268
+
+#metal4
+ sidewall (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 (m4,fm4,rm4,m4c,m5c)/metal4 72.420
+ areacap (m4,fm4,rm4)/metal4 0.050
+
+#metal4-sub blocked by ~space/a,~space/m1,~space/m2,~space/m3
+ overlap (m4,fm4,rm4)/metal4 ~space/w 0.050 ~space/a,~space/m1,~space/m2,~space/m3
+ perimc (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 0.381
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 ~space/w 0.381 ~space/a,~space/m1,~space/m2,~space/m3
+
+#rnw
+ overlap (m4,fm4,rm4)/metal4 rnw,nwr/active 0.050 ~space/m1,~space/m2,~space/m3
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 rnw,nwr/active 0.381 ~space/m1,~space/m2,~space/m3
+
+#metal4-*diff blocked by ~space/m1,~space/m2,~space/m3
+ overlap (m4,fm4,rm4)/metal4 (ndiff,anres,rnd,ndc)/active 0.089 ~space/m1,~space/m2,~space/m3
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 (ndiff,anres,rnd,ndc)/active 0.381 ~space/m1,~space/m2,~space/m3
+ overlap (m4,fm4,rm4)/metal4 (pdiff,apres,rpd,pdc)/active 0.089 ~space/m1,~space/m2,~space/m3
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 (pdiff,apres,rpd,pdc)/active 0.381 ~space/m1,~space/m2,~space/m3
+
+#metal4-poly blocked by ~space/m1,~space/m2,~space/m3
+ overlap (m4,fm4,rm4)/metal4 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 0.058 ~space/m1,~space/m2,~space/m3
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 0.312 ~space/m1,~space/m2,~space/m3
+ sideoverlap (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active (m4,fm4,rm4,m4c,m5c)/metal4 0.312 ~space/m1,~space/m2,~space/m3
+
+#M4->M1
+
+#metal4-metal1 blocked by ~space/m2,~space/m3
+ overlap (m4,fm4,rm4)/metal4 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 0.077 ~space/m2,~space/m3
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 0.495 ~space/m2,~space/m3
+ sideoverlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (m4,fm4,rm4,m4c,m5c)/metal4 0.495 ~space/m2,~space/m3
+
+#M4->M2
+
+#metal4-metal2 blocked by ~space/m3
+ overlap (m4,fm4,rm4)/metal4 (m2,fm2,rm2,m2c,m3c)/metal2 0.132 ~space/m3
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 (m2,fm2,rm2,m2c,m3c)/metal2 0.824 ~space/m3
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 (m4,fm4,rm4,m4c,m5c)/metal4 0.824 ~space/m3
+
+#M4->M3
+ overlap (m4,fm4,rm4)/metal4 (m3,fm3,rm3,m3c,m4c)/metal3 0.440
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 (m3,fm3,rm3,m3c,m4c)/metal3 2.385
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 (m4,fm4,rm4,m4c,m5c)/metal4 2.385
+
+#metal5
+ sidewall (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 (m5,fm5,rm5,m5c,m6c)/metal5 12.750
+ areacap (m5,fm5,rm5)/metal5 0.065
+
+#metal5-sub blocked by ~space/a,~space/m1,~space/m2,~space/m3,~space/m4
+ overlap (m5,fm5,rm5)/metal5 ~space/w 0.065 ~space/a,~space/m1,~space/m2,~space/m3,~space/m4
+ perimc (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 2.070
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 ~space/w 2.070 ~space/a,~space/m1,~space/m2,~space/m3,~space/m4
+
+#rnw
+ overlap (m5,fm5,rm5)/metal5 rnw,nwr/active 0.065 ~space/m1,~space/m2,~space/m3,~space/m4
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 rnw,nwr/active 2.070 ~space/m1,~space/m2,~space/m3,~space/m4
+
+#metal5-*diff blocked by ~space/m1,~space/m2,~space/m3,~space/m4
+ overlap (m5,fm5,rm5)/metal5 (ndiff,anres,rnd,ndc)/active 0.073 ~space/m1,~space/m2,~space/m3,~space/m4
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 (ndiff,anres,rnd,ndc)/active 2.070 ~space/m1,~space/m2,~space/m3,~space/m4
+ overlap (m5,fm5,rm5)/metal5 (pdiff,apres,rpd,pdc)/active 0.073 ~space/m1,~space/m2,~space/m3,~space/m4
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 (pdiff,apres,rpd,pdc)/active 2.070 ~space/m1,~space/m2,~space/m3,~space/m4
+
+#metal5-poly blocked by ~space/m1,~space/m2,~space/m3,~space/m4
+ overlap (m5,fm5,rm5)/metal5 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 0.040 ~space/m1,~space/m2,~space/m3,~space/m4
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 1.800 ~space/m1,~space/m2,~space/m3,~space/m4
+ sideoverlap (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active (m5,fm5,rm5,m5c,m6c)/metal5 1.800 ~space/m1,~space/m2,~space/m3,~space/m4
+
+#M5->M1
+
+#metal5-metal1 blocked by ~space/m2,~space/m3,~space/m4
+ overlap (m5,fm5,rm5)/metal5 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 0.073 ~space/m2,~space/m3,~space/m4
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 1.980 ~space/m2,~space/m3,~space/m4
+ sideoverlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (m5,fm5,rm5,m5c,m6c)/metal5 1.980 ~space/m2,~space/m3,~space/m4
+
+#M5->M2
+
+#metal5-metal2 blocked by ~space/m3,~space/m4
+ overlap (m5,fm5,rm5)/metal5 (m2,fm2,rm2,m2c,m3c)/metal2 0.073 ~space/m3,~space/m4
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 (m2,fm2,rm2,m2c,m3c)/metal2 2.430 ~space/m3,~space/m4
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 (m5,fm5,rm5,m5c,m6c)/metal5 2.430 ~space/m3,~space/m4
+
+#M5->M3
+
+#metal5-metal3 blocked by ~space/m4
+ overlap (m5,fm5,rm5)/metal5 (m3,fm3,rm3,m3c,m4c)/metal3 0.113 ~space/m4
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 (m3,fm3,rm3,m3c,m4c)/metal3 3.060 ~space/m4
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 (m5,fm5,rm5,m5c,m6c)/metal5 3.060 ~space/m4
+
+#M5->M4
+ overlap (m5,fm5,rm5)/metal5 (m4,fm4,rm4,m4c,m5c)/metal4 0.300
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 (m4,fm4,rm4,m4c,m5c)/metal4 4.860
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 (m5,fm5,rm5,m5c,m6c)/metal5 4.860
+
+#metal6
+ sidewall (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 (m6,fm6,rm6,m6c,mic,pad)/metal6 27.675
+ areacap (m6,fm6,rm6,pad)/metal6 0.024
+
+#metal6-sub blocked by ~space/a,~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ overlap (m6,fm6,rm6,pad)/metal6 ~space/w 0.024 ~space/a,~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ perimc (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 3.780
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 ~space/w 3.780 ~space/a,~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+
+#rnw
+ overlap (m6,fm6,rm6,pad)/metal6 rnw,nwr/active 0.024 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 rnw,nwr/active 3.780 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+
+#metal6-*diff blocked by ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ overlap (m6,fm6,rm6,pad)/metal6 (ndiff,anres,rnd,ndc)/active 0.065 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 (ndiff,anres,rnd,ndc)/active 3.780 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ overlap (m6,fm6,rm6,pad)/metal6 (pdiff,apres,rpd,pdc)/active 0.065 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 (pdiff,apres,rpd,pdc)/active 3.780 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+
+#metal6-poly blocked by ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ overlap (m6,fm6,rm6,pad)/metal6 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 0.032 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active 1.530 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ sideoverlap (poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active ~(poly,fp,pp,pn,pres,rp,pc,ppc,pnc,nfet,pfet,fet)/active (m6,fm6,rm6,m6c,mic,pad)/metal6 1.530 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+
+#M6->M1
+
+#metal6-metal1 blocked by ~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ overlap (m6,fm6,rm6,pad)/metal6 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 0.049 ~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 1.710 ~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+ sideoverlap (m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 ~(m1,fm1,rm1,ndc,nsc,nwsc,pdc,psc,pc,ppc,pnc,m2c)/metal1 (m6,fm6,rm6,m6c,mic,pad)/metal6 1.710 ~space/m2,~space/m3,~space/m4,~space/m5,~space/mi
+
+#M6->M2
+
+#metal6-metal2 blocked by ~space/m3,~space/m4,~space/m5,~space/mi
+ overlap (m6,fm6,rm6,pad)/metal6 (m2,fm2,rm2,m2c,m3c)/metal2 0.049 ~space/m3,~space/m4,~space/m5,~space/mi
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 (m2,fm2,rm2,m2c,m3c)/metal2 1.980 ~space/m3,~space/m4,~space/m5,~space/mi
+ sideoverlap (m2,fm2,rm2,m2c,m3c)/metal2 ~(m2,fm2,rm2,m2c,m3c)/metal2 (m6,fm6,rm6,m6c,mic,pad)/metal6 1.980 ~space/m3,~space/m4,~space/m5,~space/mi
+
+#M6->M3
+
+#metal6-metal3 blocked by ~space/m4,~space/m5,~space/mi
+ overlap (m6,fm6,rm6,pad)/metal6 (m3,fm3,rm3,m3c,m4c)/metal3 0.073 ~space/m4,~space/m5,~space/mi
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 (m3,fm3,rm3,m3c,m4c)/metal3 2.430 ~space/m4,~space/m5,~space/mi
+ sideoverlap (m3,fm3,rm3,m3c,m4c)/metal3 ~(m3,fm3,rm3,m3c,m4c)/metal3 (m6,fm6,rm6,m6c,mic,pad)/metal6 2.430 ~space/m4,~space/m5,~space/mi
+
+#M6->M4
+
+#metal6-metal4 blocked by ~space/m5,~space/mi
+ overlap (m6,fm6,rm6,pad)/metal6 (m4,fm4,rm4,m4c,m5c)/metal4 0.113 ~space/m5,~space/mi
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 (m4,fm4,rm4,m4c,m5c)/metal4 3.150 ~space/m5,~space/mi
+ sideoverlap (m4,fm4,rm4,m4c,m5c)/metal4 ~(m4,fm4,rm4,m4c,m5c)/metal4 (m6,fm6,rm6,m6c,mic,pad)/metal6 3.150 ~space/m5,~space/mi
+
+#M6->M5
+ overlap (m6,fm6,rm6,pad)/metal6 (m5,fm5,rm5,m5c,m6c)/metal5 0.284
+ sideoverlap (m6,fm6,rm6,m6c,mic,pad)/metal6 ~(m6,fm6,rm6,m6c,mic,pad)/metal6 (m5,fm5,rm5,m5c,m6c)/metal5 5.130 ~space/mi
+ sideoverlap (m5,fm5,rm5,m5c,m6c)/metal5 ~(m5,fm5,rm5,m5c,m6c)/metal5 (m6,fm6,rm6,m6c,mic,pad)/metal6 5.130 ~space/mi
+
+#metal7
+
+#metali
+
+#Mi->M5
+
+#Mi->M6
+
+#fets
+
+ fet pfet pdiff,pdc 2 pfet Vdd! nwell 61 66
+ fet pfet pdiff,pdc 1 pfet Vdd! nwell 61 66
+
+ fet nfet ndiff,ndc 2 nfet Gnd! pwell 63 68
+ fet nfet ndiff,ndc 1 nfet Gnd! pwell 63 68
+
+ fetresis pfet linear 28253
+ fetresis pfet saturation 28253
+ fetresis nfet linear 4769
+ fetresis nfet saturation 4769
+
+ fet rnwell nsd,nsc 2 nwellResistor Gnd! nwell,pwell 0 0
+ fet rpoly poly,pc 2 polyResistor Gnd! nwell,pwell 0 0
+ fet nwr nwsd 2 nwellFig1bResistor Gnd! nwell,pwell 0 0
+ fet rndiff ndiff,ndc 2 ndiffResistor Gnd! nwell,pwell 0 0
+ fet rpdiff pdiff,pdc 2 pdiffResistor Gnd! nwell,pwell 0 0
+
+ fet rmetal1 metal1 2 metal1Resistor Gnd! nwell,pwell 0 0
+ fet rmetal2 metal2 2 metal2Resistor Gnd! nwell,pwell 0 0
+ fet rmetal3 metal3 2 metal3Resistor Gnd! nwell,pwell 0 0
+ fet rmetal4 metal4 2 metal4Resistor Gnd! nwell,pwell 0 0
+ fet rmetal5 metal5 2 metal5Resistor Gnd! nwell,pwell 0 0
+ fet rmetal6 metal6 2 metal6Resistor Gnd! nwell,pwell 0 0
+
+ fet pres poly,pc 2 presResistor Gnd! nwell,pwell 0 0
+ fet anres ndiff,ndc 2 anresResistor Gnd! nwell,pwell 0 0
+ fet apres pdiff,pdc 2 apresResistor Gnd! nwell,pwell 0 0
+
+end
+
+wiring
+ contact pdcontact 4 metal1 0 pdiff 0
+ contact ndcontact 4 metal1 0 ndiff 0
+ contact pcontact 4 metal1 0 poly 0
+ contact m2contact 4 metal1 0 metal2 0
+ contact m3contact 5 metal2 0 metal3 1
+ contact m4contact 4 metal3 0 metal4 0
+ contact m5contact 5 metal4 0 metal5 0
+ contact m6contact 6 metal5 0 metal6 0
+ contact micontact 6 metal6 0 mi 0
+
+end
+
+router
+ layer2 metal2 3 m2,fm2,rm2,m2c/m2,m3c/m2,m3c/m2 4 poly,fp,pp,pn,pres,rp,ndiff,anres,rnd,nsd,nwsd,pdiff,apres,rpd,psd,m1,fm1,rm1 1
+ layer1 metal1 3 m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 3
+ contacts m2contact 4
+ gridspacing 8
+
+end
+
+plowing
+ fixed nfet,pfet,glass,pad
+ covered nfet,pfet
+ drag nfet,pfet
+
+end
+
+plot
+style colorversatec
+ ndiff,anres,rnd,ndc/a yellow \
+ 5555 AAAA 5555 AAAA \
+ 5555 AAAA 5555 AAAA \
+ 5555 AAAA 5555 AAAA \
+ 5555 AAAA 5555 AAAA
+ ndiff,anres,rnd,ndc/a cyan \
+ 0000 5555 0000 5555 \
+ 0000 5555 0000 5555 \
+ 0000 5555 0000 5555 \
+ 0000 5555 0000 5555
+ nsd,nwsd,nsc/a,nwsc/a yellow \
+ 1515 2A2A 5151 A2A2 \
+ 1515 2A2A 5151 A2A2 \
+ 1515 2A2A 5151 A2A2 \
+ 1515 2A2A 5151 A2A2
+ nsd,nwsd,nsc/a,nwsc/a cyan \
+ 0000 1515 0000 5151 \
+ 0000 1515 0000 5151 \
+ 0000 1515 0000 5151 \
+ 0000 1515 0000 5151
+ pdiff,apres,rpd,pdc/a yellow \
+ 5555 AAAA 5555 AAAA \
+ 5555 AAAA 5555 AAAA \
+ 5555 AAAA 5555 AAAA \
+ 5555 AAAA 5555 AAAA
+ pdiff,apres,rpd,pdc/a cyan \
+ 0000 5555 0000 5555 \
+ 0000 5555 0000 5555 \
+ 0000 5555 0000 5555 \
+ 0000 5555 0000 5555
+ pdiff,apres,rpd,pdc/a magenta \
+ AAAA 0000 AAAA 0000 \
+ AAAA 0000 AAAA 0000 \
+ AAAA 0000 AAAA 0000 \
+ AAAA 0000 AAAA 0000
+ psd,psc/a yellow \
+ 1515 2A2A 5151 A2A2 \
+ 1515 2A2A 5151 A2A2 \
+ 1515 2A2A 5151 A2A2 \
+ 1515 2A2A 5151 A2A2
+ psd,psc/a cyan \
+ 0000 1515 0000 5151 \
+ 0000 1515 0000 5151 \
+ 0000 1515 0000 5151 \
+ 0000 1515 0000 5151
+ psd,psc/a magenta \
+ 2A2A 0000 A2A2 0000 \
+ 2A2A 0000 A2A2 0000 \
+ 2A2A 0000 A2A2 0000 \
+ 2A2A 0000 A2A2 0000
+ poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a magenta \
+ 5555 AAAA 5555 AAAA \
+ 5555 AAAA 5555 AAAA \
+ 5555 AAAA 5555 AAAA \
+ 5555 AAAA 5555 AAAA
+ nfet yellow \
+ 0505 8282 1414 0A0A \
+ 5050 2828 4141 A0A0 \
+ 0505 8282 1414 0A0A \
+ 5050 2828 4141 A0A0
+ nfet cyan \
+ 0000 0505 0000 1414 \
+ 0000 5050 0000 4141 \
+ 0000 0505 0000 1414 \
+ 0000 5050 0000 4141
+ nfet magenta \
+ 5050 2828 4141 A0A0 \
+ 0505 8282 1414 0A0A \
+ 5050 2828 4141 A0A0 \
+ 0505 8282 1414 0A0A
+ pfet yellow \
+ 6363 A0A0 5050 2828 \
+ 3636 0A0A 0505 8282 \
+ 6363 A0A0 5050 2828 \
+ 3636 0A0A 0505 8282
+ pfet cyan \
+ 0000 5151 0000 5454 \
+ 0000 1515 0000 1515 \
+ 0000 5151 0000 5454 \
+ 0000 1515 0000 1515
+ pfet magenta \
+ 9494 0A0A 2525 8282 \
+ 4949 A0A0 5252 2828 \
+ 9494 0A0A 2525 8282 \
+ 4949 A0A0 5252 2828
+ m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 cyan \
+ AAAA 0000 AAAA 0000 \
+ AAAA 0000 AAAA 0000 \
+ AAAA 0000 AAAA 0000 \
+ AAAA 0000 AAAA 0000
+ m2,fm2,rm2,m2c/m2,m3c/m2 cyan \
+ 0000 1111 0000 4444 \
+ 0000 1111 0000 4444 \
+ 0000 1111 0000 4444 \
+ 0000 1111 0000 4444
+ m2,fm2,rm2,m2c/m2,m3c/m2 magenta \
+ 0000 4444 0000 1111 \
+ 0000 4444 0000 1111 \
+ 0000 4444 0000 1111 \
+ 0000 4444 0000 1111
+ m2c/m1,gv1 black \
+ 0000 6666 6666 0000 \
+ 0000 9999 9999 0000 \
+ 0000 6666 6666 0000 \
+ 0000 9999 9999 0000
+ pad,glass black \
+ 0300 0700 0E00 1C00 \
+ 3800 7000 E000 C000 \
+ 00C0 00E0 0070 0038 \
+ 001C 000E 0007 0003
+ nwell yellow \
+ 0800 1000 2000 4000 \
+ 8000 0001 0002 0004 \
+ 0008 0010 0020 0040 \
+ 0080 0010 0200 0400
+ nwell cyan \
+ 1000 2000 4000 8000 \
+ 0001 0002 0004 0008 \
+ 0010 0020 0040 0080 \
+ 0100 0200 0400 0800
+ pwell yellow \
+ 1000 0400 0400 0100 \
+ 0100 0040 0040 0010 \
+ 0010 0004 0004 0001 \
+ 0001 4000 4000 1000
+ pwell cyan \
+ 0000 0800 0000 0200 \
+ 0000 0080 0000 0020 \
+ 0000 0008 0000 0002 \
+ 0000 8000 0000 2000
+ pwell magenta \
+ 0800 0000 0200 0000 \
+ 0080 0000 0020 0000 \
+ 0008 0000 0002 0000 \
+ 8000 0000 2000 0000
+ m3c/m2,gv2 black \
+ 0100 0000 0000 0000 \
+ 1010 0000 0000 0000 \
+ 0001 0000 0000 0000 \
+ 1010 0000 0000 0000
+ m3c/m2,gv2 cyan \
+ 0280 0000 0820 0000 \
+ 2008 0000 8002 0000 \
+ 8002 0000 2008 0000 \
+ 0820 0000 0280 0000
+ m3c/m2,gv2 magenta \
+ 0100 06C0 0440 1830 \
+ 1010 600C 4004 8003 \
+ 0001 C006 4004 3018 \
+ 1010 0C60 0440 0380
+ m3c/m2,gv2 black \
+ 0820 0820 0820 0FE0 \
+ E00F 2008 2008 2008 \
+ 2008 2008 2008 E00F \
+ 0000 0FE0 0820 0820
+ error_p,error_s,error_ps black \
+ 0000 3C3C 4646 4A4A \
+ 5252 6262 3C3C 0000 \
+ 0000 3C3C 4646 4A4A \
+ 5252 6262 3C3C 0000
+ magnet yellow \
+ AAAA 0000 5555 0000 \
+ AAAA 0000 5555 0000 \
+ AAAA 0000 5555 0000 \
+ AAAA 0000 5555 0000
+ fence magenta \
+ FFFF 0000 0000 0000 \
+ 0000 0000 0000 0000 \
+ FFFF 0000 0000 0000 \
+ 0000 0000 0000 0000
+ rotate cyan \
+ 0000 E0E0 E0E0 E0E0 \
+ 0000 0000 0000 0000 \
+ 0000 E0E0 E0E0 E0E0 \
+ 0000 0000 0000 0000
+ pc/a,ppc/a,pnc/a,ndc/a,pdc/a,psc/a,nsc/a,nwsc/a,gc,gc,gc X
+
+style versatec
+ pfet \
+ 07c0 0f80 1f00 3e00 \
+ 7c00 f800 f001 e003 \
+ c007 800f 001f 003e \
+ 00c7 00f8 01f0 03e0
+ nfet \
+ 1f00 0f80 07c0 03e0 \
+ 01f0 00f8 007c 003e \
+ 001f 800f c007 e003 \
+ f001 f800 7c00 3e00
+ gv1 \
+ c3c3 c3c3 0000 0000 \
+ 0000 0000 c3c3 c3c3 \
+ c3c3 c3c3 0000 0000 \
+ 0000 0000 c3c3 c3c3
+ pwell \
+ 2020 2020 2020 2020 \
+ 2020 2020 2020 2020 \
+ 0000 0000 0000 0000 \
+ 0000 0000 0000 0000
+ nwell \
+ 0808 0404 0202 0101 \
+ 0000 0000 0000 0000 \
+ 0808 0404 0202 0101 \
+ 0000 0000 0000 0000
+ poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,nfet,pfet \
+ 0808 0400 0202 0101 \
+ 8080 4000 2020 1010 \
+ 0808 0004 0202 0101 \
+ 8080 0040 2020 1010
+ m1,fm1,rm1,ndc/m1,nsc/m1,nwsc/m1,pdc/m1,psc/m1,pc/m1,ppc/m1,pnc/m1,m2c/m1 \
+ 8080 0000 0000 0000 \
+ 0808 0000 0000 0000 \
+ 8080 0000 0000 0000 \
+ 0808 0000 0000 0000
+ pad,glass \
+ 0000 0000 1c1c 3e3e \
+ 3636 3e3e 1c1c 0000 \
+ 0000 0000 1c1c 3e3e \
+ 3636 3e3e 1c1c 0000
+ nsd,nwsd,nsc/a,nwsc/a \
+ 0808 1414 2222 4141 \
+ 8080 4040 2020 1010 \
+ 0808 1414 2222 4141 \
+ 8080 4040 2020 1010
+ m2,fm2,rm2,m2c/m2,m3c/m2 \
+ 0000 1111 0000 0000 \
+ 0000 1111 0000 0000 \
+ 0000 1111 0000 0000 \
+ 0000 1111 0000 0000
+ pdiff,apres,rpd,pdc/a,pfet \
+ 0000 0808 5555 8080 \
+ 0000 8080 5555 0808 \
+ 0000 0808 5555 8080 \
+ 0000 8080 5555 0808
+ psd,psc/a \
+ 1414 2222 0000 2222 \
+ 4141 2222 0000 2222 \
+ 1414 2222 0000 2222 \
+ 4141 2222 0000 2222
+ ndiff,anres,rnd,ndc/a,nfet \
+ 0808 1010 2020 4040 \
+ 8080 4141 2222 1414 \
+ 0808 1010 2020 4040 \
+ 8080 4141 2222 1414
+ pc/a,ppc/a,pnc/a,ndc/a,pdc/a,psc/a,nsc/a,nwsc/a,gc,gc,gc X
+
+style gremlin
+ pfet 9
+ nfet 10
+ gv1 11
+ pwell 15
+ nwell 16
+ poly,fp,pp,pn,pres,rp,pc/a,ppc/a,pnc/a,nfet,pfet 19
+ pc/a,ppc/a,pnc/a,ndc/a,pdc/a,psc/a,nsc/a,nwsc/a,gc,gc,gc 22
+ pad,glass 23
+ nsd,nwsd,nsc/a,nwsc/a 24
+ gv1 28
+ pdiff,apres,rpd,pdc/a,pfet 29
+ psd,psc/a 30
+ ndiff,anres,rnd,ndc/a,nfet 31
+ pc/a,ppc/a,pnc/a,ndc/a,pdc/a,psc/a,nsc/a,nwsc/a,gc,gc,gc,gv1 X
+
+end
+
diff --git a/tech/osu018/osu018.magicrc.in b/tech/osu018/osu018.magicrc.in
new file mode 100644
index 0000000..0f95826
--- /dev/null
+++ b/tech/osu018/osu018.magicrc.in
@@ -0,0 +1,15 @@
+#-----------------------------------------------------
+# .magicrc startup file for OSU018 project under qflow
+#-----------------------------------------------------
+
+path sys +QFLOW_LIB_DIR/tech/osu018
+tech load SCN6M_DEEP.09 -noprompt
+scalegrid 1 9
+set GND gnd
+set VDD vdd
+
+drc euclidean on
+drc off
+
+addpath digital
+
diff --git a/tech/osu018/osu018.par b/tech/osu018/osu018.par
new file mode 100644
index 0000000..ca6768a
--- /dev/null
+++ b/tech/osu018/osu018.par
@@ -0,0 +1,67 @@
+# osu018.par --- Parameter file for GrayWolf
+# NOTE: all distance units are in centimicrons unless otherwise stated
+
+RULES
+ # values are resistance in ohms/sq and capacitance in fF/um^2
+ layer metal1 0.07 0.030 horizontal
+ layer metal2 0.07 0.017 vertical
+ layer metal3 0.07 0.006 horizontal
+ layer metal4 0.04 0.004 vertical
+
+ via via12 metal1 metal2
+ via via23 metal2 metal3
+ via via34 metal3 metal4
+
+ width metal1 60
+ width metal2 60
+ width metal3 60
+ width metal4 120
+ width via12 60
+ width via23 60
+ width via34 120
+
+ # Set spacing = track pitch - width, so that GrayWolf places pins
+ # on the right pitch.
+ # Pitches are (in um):
+ # metal1 = 200, metal2 = 160, metal3 = 200, metal4 = 320
+
+ spacing metal1 metal1 140
+ spacing metal2 metal2 100
+ spacing metal3 metal3 140
+ spacing metal4 metal4 200
+
+ # Stacked vias allowed
+ spacing via12 via23 0
+ spacing via23 via34 0
+
+ overhang via12 metal1 8
+ overhang via12 metal2 6
+
+ overhang via23 metal2 8
+ overhang via23 metal3 6
+
+ overhang via34 metal3 14
+ overhang via34 metal4 16
+ENDRULES
+
+*vertical_wire_weight : 1.0
+*vertical_path_weight : 1.0
+*padspacing : variable
+*rowSep : 0.0 0
+*track.pitch : 80
+*graphics.wait : off
+*last_chance.wait : off
+*random.seed : 12345
+
+TWMC*chip.aspect.ratio : 0.75
+
+TWSC*feedThruWidth : 80 layer 1
+TWSC*do.global.route : on
+TWSC*ignore_feeds : true
+TWSC*call_row_evener : true
+TWSC*even_rows_maximally : true
+# TWSC*no.graphics : on
+
+GENR*row_to_tile_spacing: 1
+# GENR*numrows : 6
+GENR*flip_alternate_rows : 1
diff --git a/tech/osu018/osu018.prm b/tech/osu018/osu018.prm
new file mode 100755
index 0000000..1973f0a
--- /dev/null
+++ b/tech/osu018/osu018.prm
@@ -0,0 +1,26 @@
+;
+; configuration file for osu018 (0.18um process)
+; Note that these values are totally bogus!
+;
+
+lambda 0.01 ; length scaling, microns (1 lambda = 1 centimicron)
+
+capga .0115 ; gate capacitance, pF/micron^2
+
+capda 0.0012
+capdp 0.0013
+cappda 0.00260
+cappdp 0.00090
+
+lowthresh 0.5 ; logic low threshold as a normalized voltage
+highthresh 0.5 ; logic high threshold as a normalized voltage
+
+cntpullup 0 ; irrelevant, cmos technology; no depletion transistors
+diffperim 0 ; don't include diffusion perimeters for sidewall cap.
+subparea 0 ; poly over transistor won't count as part pf bulk-poly cap.
+diffext 0 ; diffusion extension for each transistor
+
+resistance n-channel dynamic-low 2 0.4 1844.70
+resistance p-channel dynamic-high 6.2 0.4 1489.10
+resistance n-channel static 2 0.4 2203.94
+resistance p-channel static 6.2 0.4 1693.37
diff --git a/tech/osu018/osu018.sh b/tech/osu018/osu018.sh
new file mode 100644
index 0000000..91d0f33
--- /dev/null
+++ b/tech/osu018/osu018.sh
@@ -0,0 +1,72 @@
+#!/bin/tcsh
+#---------------------------------------------------------------
+# Shell script setting up all variables used by the qflow scripts
+# for this project
+#---------------------------------------------------------------
+
+# The LEF file containing standard cell macros
+
+set leffile=osu018_stdcells.lef
+
+# The SPICE netlist containing subcell definitions for all the standard cells
+
+set spicefile=osu018_stdcells.sp
+
+# The liberty format file containing standard cell timing and function information
+
+set libertyfile=osu018_stdcells.lib
+
+# If there is another LEF file containing technology information
+# that is separate from the file containing standard cell macros,
+# set this. Otherwise, leave it defined as an empty string.
+
+set techleffile=""
+
+# All cells below should be the lowest output drive strength value,
+# if the standard cell set has multiple cells with different drive
+# strengths. Comment out any cells that do not exist.
+
+set flopcell=DFFPOSX1 ;# Standard positive-clocked DFF, no set or reset
+# set flopset=DFFS ;# DFF with preset, if available
+# set flopreset=DFFSR ;# DFF with clear, if available
+set flopsetreset=DFFSR ;# DFF with both set and clear
+set setpin=S ;# The name of the set pin on DFFs
+set resetpin=R ;# The name of the clear/reset pin on DFFs
+set setpininvert=1 ;# Set this to 1 if the set pin is inverted (!set)
+set resetpininvert=1 ;# Set this to 1 if the reset pin is inverted (!reset)
+set floppinout=Q ;# Name of the output pin on DFFs
+set floppinin=D ;# Name of the output pin on DFFs
+set floppinclk=CLK ;# Name of the clock pin on DFFs
+
+set bufcell=BUFX2 ;# Minimum drive strength buffer cell
+set bufpin_in=A ;# Name of input port to buffer cell
+set bufpin_out=Y ;# Name of output port to buffer cell
+set inverter=INVX1 ;# Minimum drive strength inverter cell
+set invertpin_in=A ;# Name of input port to inverter cell
+set invertpin_out=Y ;# Name of output port to inverter cell
+set norgate=NOR2X1 ;# 2-input NOR gate, minimum drive strength
+set norpin_in1=A ;# Name of first input pin to NOR gate
+set norpin_in2=B ;# Name of second input pin to NOR gate
+set norpin_out=Y ;# Name of output pin from OR gate
+set nandgate=NAND2X1 ;# 2-input NAND gate, minimum drive strength
+set nandpin_in1=A ;# Name of first input pin to NAND gate
+set nandpin_in2=B ;# Name of second input pin to NAND gate
+set nandpin_out=Y ;# Name of output pin from NAND gate
+set fillcell=FILL ;# Spacer (filler) cell (prefix, if more than one)
+
+set tiehi="" ;# Cell to connect to power, if one exists
+set tiehipin_out="" ;# Output pin name of tiehi cell, if it exists
+set tielo="" ;# Cell to connect to ground, if one exists
+set tielopin_out="" ;# Output pin name of tielo cell, if it exists
+
+set gndnet=gnd ;# Name used for ground pins in standard cells
+set vddnet=vdd ;# Name used for power pins in standard cells
+
+set separator="" ;# Separator between gate names and drive strengths
+set techfile=SCN4M_SUBM.20 ;# magic techfile
+set magicrc=osu018.magicrc ;# magic startup script
+set gdsfile=osu018_stdcells.gds ;# GDS database of standard cells
+
+set fanout_options="-l 200 -c 50" ;# blifFanout target maximum latency
+ ;# per gate 200ps, output load set to 50fF
+
diff --git a/tech/osu018/osu018_stdcells.lef b/tech/osu018/osu018_stdcells.lef
new file mode 100755
index 0000000..24f8125
--- /dev/null
+++ b/tech/osu018/osu018_stdcells.lef
@@ -0,0 +1,2935 @@
+# LEF file generated by Abstract Generator version 5.5.10 on Jul 28 14:07:14 2004
+#
+# Contains LEF for all bins.
+# Options: [x] Antenna
+# [x] Geometry
+# [x] Technology
+
+VERSION 5.4 ;
+NAMESCASESENSITIVE ON ;
+BUSBITCHARS "[]" ;
+DIVIDERCHAR "/" ;
+UNITS
+ DATABASE MICRONS 1000 ;
+END UNITS
+
+USEMINSPACING OBS ON ;
+USEMINSPACING PIN OFF ;
+CLEARANCEMEASURE EUCLIDEAN ;
+
+
+MANUFACTURINGGRID 0.05 ;
+
+LAYER nwell
+ TYPE MASTERSLICE ;
+END nwell
+
+LAYER nactive
+ TYPE MASTERSLICE ;
+END nactive
+
+LAYER pactive
+ TYPE MASTERSLICE ;
+END pactive
+
+LAYER poly
+ TYPE MASTERSLICE ;
+END poly
+
+LAYER cc
+ TYPE CUT ;
+ SPACING 0.45 ;
+END cc
+
+LAYER metal1
+ TYPE ROUTING ;
+ DIRECTION HORIZONTAL ;
+ PITCH 1 ;
+ WIDTH 0.3 ;
+ SPACING 0.3 ;
+ RESISTANCE RPERSQ 0.08 ;
+ CAPACITANCE CPERSQDIST 3.8e-05 ;
+ EDGECAPACITANCE 8.000000e-05 ;
+END metal1
+
+LAYER via
+ TYPE CUT ;
+ SPACING 0.3 ;
+END via
+
+LAYER metal2
+ TYPE ROUTING ;
+ DIRECTION VERTICAL ;
+ PITCH 0.8 ;
+ WIDTH 0.3 ;
+ SPACING 0.3 ;
+ RESISTANCE RPERSQ 0.08 ;
+ CAPACITANCE CPERSQDIST 1.9e-05 ;
+ EDGECAPACITANCE 6.000000e-05 ;
+END metal2
+
+LAYER via2
+ TYPE CUT ;
+ SPACING 0.3 ;
+END via2
+
+LAYER metal3
+ TYPE ROUTING ;
+ DIRECTION HORIZONTAL ;
+ PITCH 1 ;
+ WIDTH 0.3 ;
+ SPACING 0.3 ;
+ RESISTANCE RPERSQ 0.08 ;
+ CAPACITANCE CPERSQDIST 1.3e-05 ;
+ EDGECAPACITANCE 5.400000e-05 ;
+END metal3
+
+LAYER via3
+ TYPE CUT ;
+ SPACING 0.4 ;
+END via3
+
+LAYER metal4
+ TYPE ROUTING ;
+ DIRECTION VERTICAL ;
+ PITCH 0.8 ;
+ WIDTH 0.3 ;
+ SPACING 0.3 ;
+ RESISTANCE RPERSQ 0.07 ;
+ CAPACITANCE CPERSQDIST 8e-06 ;
+ EDGECAPACITANCE 4.100000e-05 ;
+END metal4
+
+LAYER via4
+ TYPE CUT ;
+ SPACING 0.3 ;
+END via4
+
+LAYER metal5
+ TYPE ROUTING ;
+ DIRECTION HORIZONTAL ;
+ PITCH 1 ;
+ WIDTH 0.3 ;
+ SPACING 0.3 ;
+ RESISTANCE RPERSQ 0.07 ;
+ CAPACITANCE CPERSQDIST 8e-06 ;
+ EDGECAPACITANCE 2.400000e-05 ;
+END metal5
+
+LAYER via5
+ TYPE CUT ;
+ SPACING 0.4 ;
+END via5
+
+LAYER metal6
+ TYPE ROUTING ;
+ DIRECTION VERTICAL ;
+ PITCH 1.6 ;
+ WIDTH 0.5 ;
+ SPACING 0.5 ;
+ RESISTANCE RPERSQ 0.03 ;
+ CAPACITANCE CPERSQDIST 3e-06 ;
+ EDGECAPACITANCE 2.000000e-05 ;
+END metal6
+
+VIA M2_M1 DEFAULT
+ LAYER metal1 ;
+ RECT -0.200 -0.200 0.200 0.200 ;
+ LAYER via ;
+ RECT -0.100 -0.100 0.100 0.100 ;
+ LAYER metal2 ;
+ RECT -0.200 -0.200 0.200 0.200 ;
+END M2_M1
+
+VIA M3_M2 DEFAULT
+ LAYER metal2 ;
+ RECT -0.200 -0.200 0.200 0.200 ;
+ LAYER via2 ;
+ RECT -0.100 -0.100 0.100 0.100 ;
+ LAYER metal3 ;
+ RECT -0.200 -0.200 0.200 0.200 ;
+END M3_M2
+
+VIA M4_M3 DEFAULT
+ LAYER metal3 ;
+ RECT -0.200 -0.200 0.200 0.200 ;
+ LAYER via3 ;
+ RECT -0.100 -0.100 0.100 0.100 ;
+ LAYER metal4 ;
+ RECT -0.200 -0.200 0.200 0.200 ;
+END M4_M3
+
+VIA M5_M4 DEFAULT
+ LAYER metal4 ;
+ RECT -0.200 -0.200 0.200 0.200 ;
+ LAYER via4 ;
+ RECT -0.100 -0.100 0.100 0.100 ;
+ LAYER metal5 ;
+ RECT -0.200 -0.200 0.200 0.200 ;
+END M5_M4
+
+VIA M6_M5 DEFAULT
+ LAYER metal5 ;
+ RECT -0.250 -0.250 0.250 0.250 ;
+ LAYER via5 ;
+ RECT -0.150 -0.150 0.150 0.150 ;
+ LAYER metal6 ;
+ RECT -0.250 -0.250 0.250 0.250 ;
+END M6_M5
+
+
+VIARULE viagen21 GENERATE
+ LAYER metal1 ;
+ DIRECTION HORIZONTAL ;
+ WIDTH 0.3 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER metal2 ;
+ DIRECTION VERTICAL ;
+ WIDTH 0.3 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER via ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.5 BY 0.5 ;
+END viagen21
+
+VIARULE viagen32 GENERATE
+ LAYER metal3 ;
+ DIRECTION HORIZONTAL ;
+ WIDTH 0.3 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER metal2 ;
+ DIRECTION VERTICAL ;
+ WIDTH 0.3 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER via2 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.5 BY 0.5 ;
+END viagen32
+
+VIARULE viagen43 GENERATE
+ LAYER metal3 ;
+ DIRECTION HORIZONTAL ;
+ WIDTH 0.3 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER metal4 ;
+ DIRECTION VERTICAL ;
+ WIDTH 0.3 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER via3 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.6 BY 0.6 ;
+END viagen43
+
+VIARULE viagen54 GENERATE
+ LAYER metal5 ;
+ DIRECTION HORIZONTAL ;
+ WIDTH 0.3 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER metal4 ;
+ DIRECTION VERTICAL ;
+ WIDTH 0.3 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER via4 ;
+ RECT -0.1 -0.1 0.1 0.1 ;
+ SPACING 0.5 BY 0.5 ;
+END viagen54
+
+VIARULE viagen65 GENERATE
+ LAYER metal5 ;
+ DIRECTION HORIZONTAL ;
+ WIDTH 0.5 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER metal6 ;
+ DIRECTION VERTICAL ;
+ WIDTH 0.5 TO 60 ;
+ OVERHANG 0.1 ;
+ METALOVERHANG 0 ;
+ LAYER via5 ;
+ RECT -0.15 -0.15 0.15 0.15 ;
+ SPACING 0.7 BY 0.7 ;
+END viagen65
+
+VIARULE TURN1 GENERATE
+ LAYER metal1 ;
+ DIRECTION HORIZONTAL ;
+ LAYER metal1 ;
+ DIRECTION VERTICAL ;
+END TURN1
+
+VIARULE TURN2 GENERATE
+ LAYER metal2 ;
+ DIRECTION HORIZONTAL ;
+ LAYER metal2 ;
+ DIRECTION VERTICAL ;
+END TURN2
+
+VIARULE TURN3 GENERATE
+ LAYER metal3 ;
+ DIRECTION HORIZONTAL ;
+ LAYER metal3 ;
+ DIRECTION VERTICAL ;
+END TURN3
+
+VIARULE TURN4 GENERATE
+ LAYER metal4 ;
+ DIRECTION HORIZONTAL ;
+ LAYER metal4 ;
+ DIRECTION VERTICAL ;
+END TURN4
+
+VIARULE TURN5 GENERATE
+ LAYER metal5 ;
+ DIRECTION HORIZONTAL ;
+ LAYER metal5 ;
+ DIRECTION VERTICAL ;
+END TURN5
+
+VIARULE TURN6 GENERATE
+ LAYER metal6 ;
+ DIRECTION HORIZONTAL ;
+ LAYER metal6 ;
+ DIRECTION VERTICAL ;
+END TURN6
+
+SITE core
+ CLASS CORE ;
+ SYMMETRY Y ;
+ SIZE 0.800 BY 10.000 ;
+END core
+
+MACRO FILL
+ CLASS CORE ;
+ FOREIGN FILL 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 0.800 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT -0.200 -0.300 1.000 0.300 ;
+ END
+ END gnd
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT -0.200 9.700 1.000 10.300 ;
+ END
+ END vdd
+END FILL
+
+MACRO AND2X1
+ CLASS CORE ;
+ FOREIGN AND2X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 3.200 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.300 0.600 4.100 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.300 4.900 1.700 5.700 ;
+ RECT 1.000 5.300 1.700 5.700 ;
+ END
+ END B
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.500 -0.300 1.900 2.600 ;
+ RECT -0.200 -0.300 3.400 0.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.600 6.300 3.000 6.700 ;
+ RECT 2.600 7.400 3.000 9.400 ;
+ RECT 2.700 1.600 3.000 9.400 ;
+ RECT 2.300 0.600 2.700 1.900 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 7.400 0.600 10.300 ;
+ RECT -0.200 9.700 3.400 10.300 ;
+ RECT 1.800 7.400 2.200 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 0.200 0.600 0.600 2.600 ;
+ RECT 0.300 2.600 1.200 2.900 ;
+ RECT 0.900 2.600 1.200 3.300 ;
+ RECT 2.000 2.900 2.400 3.300 ;
+ RECT 0.900 3.000 2.400 3.300 ;
+ RECT 2.000 2.900 2.300 7.100 ;
+ RECT 1.100 6.800 2.300 7.100 ;
+ RECT 1.100 6.800 1.400 9.400 ;
+ RECT 1.000 7.400 1.400 9.400 ;
+ END
+END AND2X1
+
+MACRO AND2X2
+ CLASS CORE ;
+ FOREIGN AND2X2 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 3.200 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.300 0.600 4.100 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.100 3.600 1.400 4.700 ;
+ RECT 1.200 3.500 1.600 3.900 ;
+ RECT 1.000 4.300 1.400 4.700 ;
+ END
+ END B
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.500 -0.300 1.900 2.500 ;
+ RECT -0.200 -0.300 3.400 0.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.600 4.300 3.000 4.700 ;
+ RECT 2.600 5.400 3.000 9.400 ;
+ RECT 2.700 2.100 3.000 9.400 ;
+ RECT 2.300 0.600 2.700 2.600 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 7.400 0.600 10.300 ;
+ RECT -0.200 9.700 3.400 10.300 ;
+ RECT 1.800 5.600 2.200 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 0.200 0.600 0.600 2.600 ;
+ RECT 0.300 0.600 0.600 3.000 ;
+ RECT 0.300 2.700 1.200 3.000 ;
+ RECT 0.900 2.900 2.400 3.200 ;
+ RECT 2.000 2.900 2.400 3.300 ;
+ RECT 2.000 2.900 2.300 5.300 ;
+ RECT 1.100 5.000 2.300 5.300 ;
+ RECT 1.100 5.000 1.400 9.400 ;
+ RECT 1.000 7.400 1.400 9.400 ;
+ END
+END AND2X2
+
+MACRO AOI21X1
+ CLASS CORE ;
+ FOREIGN AOI21X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 3.200 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 4.300 0.600 4.700 ;
+ RECT 0.600 4.400 1.000 4.900 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 3.300 1.400 4.100 ;
+ END
+ END B
+ PIN C
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.500 1.900 2.900 2.300 ;
+ RECT 2.600 2.300 3.000 2.700 ;
+ END
+ END C
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.500 -0.300 0.900 2.600 ;
+ RECT -0.200 -0.300 3.400 0.300 ;
+ RECT 2.600 -0.300 3.000 1.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 0.600 2.100 4.700 ;
+ RECT 2.600 5.400 3.000 9.400 ;
+ RECT 1.800 4.400 3.000 4.700 ;
+ RECT 2.600 4.300 3.000 4.700 ;
+ RECT 2.600 4.300 2.900 9.400 ;
+ RECT 1.800 0.600 2.200 2.600 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 6.000 1.400 10.300 ;
+ RECT -0.200 9.700 3.400 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 0.200 5.400 2.200 5.700 ;
+ RECT 0.200 5.400 0.600 9.400 ;
+ RECT 1.800 5.400 2.200 9.400 ;
+ END
+END AOI21X1
+
+MACRO AOI22X1
+ CLASS CORE ;
+ FOREIGN AOI22X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 4.000 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 4.300 0.600 4.700 ;
+ RECT 0.600 4.400 1.000 4.900 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 3.300 1.400 4.100 ;
+ END
+ END B
+ PIN C
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 3.400 4.300 3.800 5.100 ;
+ END
+ END C
+ PIN D
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.600 3.300 2.900 4.300 ;
+ RECT 2.600 3.300 3.000 3.700 ;
+ RECT 2.500 3.900 2.900 4.300 ;
+ END
+ END D
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.400 -0.300 0.800 2.600 ;
+ RECT -0.200 -0.300 4.200 0.300 ;
+ RECT 3.400 -0.300 3.800 2.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 4.300 2.200 4.700 ;
+ RECT 2.600 5.400 3.000 8.800 ;
+ RECT 2.600 4.800 2.900 8.800 ;
+ RECT 1.900 4.800 2.900 5.100 ;
+ RECT 1.700 0.600 2.500 2.600 ;
+ RECT 1.900 0.600 2.200 5.100 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 6.000 1.400 10.300 ;
+ RECT -0.200 9.700 4.200 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 0.200 5.400 2.200 5.700 ;
+ RECT 1.800 5.400 2.200 9.400 ;
+ RECT 0.200 5.400 0.600 9.400 ;
+ RECT 3.400 5.400 3.800 9.400 ;
+ RECT 1.800 9.100 3.800 9.400 ;
+ END
+END AOI22X1
+
+MACRO BUFX2
+ CLASS CORE ;
+ FOREIGN BUFX2 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 2.400 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.900 0.600 4.700 ;
+ END
+ END A
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 2.600 ;
+ RECT -0.200 -0.300 2.600 0.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 0.600 2.200 4.300 ;
+ RECT 1.800 5.400 2.200 9.400 ;
+ RECT 1.900 0.600 2.200 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 6.000 1.400 10.300 ;
+ RECT -0.200 9.700 2.600 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 0.200 0.600 0.600 3.200 ;
+ RECT 0.200 2.900 1.300 3.200 ;
+ RECT 1.000 4.700 1.600 5.100 ;
+ RECT 1.000 2.900 1.300 5.700 ;
+ RECT 0.200 5.400 1.300 5.700 ;
+ RECT 0.200 5.400 0.600 9.400 ;
+ END
+END BUFX2
+
+MACRO BUFX4
+ CLASS CORE ;
+ FOREIGN BUFX4 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 3.200 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.300 3.900 0.700 4.700 ;
+ RECT 0.200 4.300 0.700 4.700 ;
+ END
+ END A
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 2.600 ;
+ RECT -0.200 -0.300 3.400 0.300 ;
+ RECT 2.600 -0.300 3.000 2.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 0.600 2.200 2.600 ;
+ RECT 2.000 2.300 2.300 5.900 ;
+ RECT 1.800 5.400 2.200 9.400 ;
+ RECT 1.800 3.300 2.300 3.700 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 6.000 1.400 10.300 ;
+ RECT -0.200 9.700 3.400 10.300 ;
+ RECT 2.600 5.400 3.000 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 0.200 0.600 0.600 3.200 ;
+ RECT 0.200 2.900 1.500 3.200 ;
+ RECT 1.200 4.000 1.700 4.400 ;
+ RECT 1.200 2.900 1.500 5.700 ;
+ RECT 0.200 5.400 1.500 5.700 ;
+ RECT 0.200 5.400 0.600 9.400 ;
+ END
+END BUFX4
+
+MACRO DFFNEGX1
+ CLASS CORE ;
+ FOREIGN DFFNEGX1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 9.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN Q
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 7.300 4.700 7.700 5.100 ;
+ RECT 9.000 0.600 9.400 9.400 ;
+ RECT 7.300 4.800 9.400 5.100 ;
+ RECT 7.500 2.800 9.400 3.100 ;
+ RECT 7.500 2.700 7.900 3.100 ;
+ END
+ END Q
+ PIN CLK
+ DIRECTION INPUT ;
+ USE CLOCK ;
+ PORT
+ LAYER metal2 ;
+ RECT 2.600 3.400 3.000 6.700 ;
+ LAYER via ;
+ RECT 2.700 6.400 2.900 6.600 ;
+ RECT 2.700 3.500 2.900 3.700 ;
+ LAYER metal1 ;
+ RECT 2.600 6.300 3.000 6.700 ;
+ RECT 0.600 3.400 6.400 3.700 ;
+ RECT 6.000 3.300 6.400 3.700 ;
+ RECT 2.600 3.400 3.000 3.800 ;
+ RECT 2.100 2.300 2.500 2.700 ;
+ RECT 2.000 2.700 2.400 3.700 ;
+ RECT 0.600 3.300 1.400 3.700 ;
+ RECT 2.700 6.700 3.100 7.100 ;
+ END
+ END CLK
+ PIN D
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.400 4.200 1.800 4.600 ;
+ RECT 3.400 4.300 3.800 4.700 ;
+ RECT 1.400 4.300 3.800 4.600 ;
+ END
+ END D
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 2.600 ;
+ RECT -0.200 -0.300 9.800 0.300 ;
+ RECT 8.200 -0.300 8.600 2.500 ;
+ RECT 5.400 -0.300 5.800 1.600 ;
+ RECT 3.700 -0.300 4.200 1.600 ;
+ END
+ END gnd
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 5.500 1.400 10.300 ;
+ RECT -0.200 9.700 9.800 10.300 ;
+ RECT 8.200 5.400 8.600 10.300 ;
+ RECT 5.400 7.400 5.800 10.300 ;
+ RECT 3.800 7.400 4.200 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal2 ;
+ RECT 0.200 2.600 0.600 5.400 ;
+ RECT 1.800 1.600 2.200 5.000 ;
+ RECT 1.800 1.600 2.100 7.400 ;
+ RECT 1.800 5.400 2.200 7.400 ;
+ RECT 6.600 1.600 7.000 5.700 ;
+ RECT 6.600 1.600 6.900 7.400 ;
+ RECT 6.600 6.100 7.000 7.400 ;
+ LAYER metal1 ;
+ RECT 0.200 0.600 0.600 3.000 ;
+ RECT 1.800 7.000 2.200 7.700 ;
+ RECT 1.800 7.400 2.800 7.700 ;
+ RECT 2.400 7.400 2.800 9.400 ;
+ RECT 2.400 0.600 2.800 1.600 ;
+ RECT 1.800 1.300 2.800 1.600 ;
+ RECT 1.800 1.300 2.200 2.000 ;
+ RECT 1.800 5.700 4.500 6.000 ;
+ RECT 1.800 5.700 2.200 6.100 ;
+ RECT 4.100 5.700 4.500 6.100 ;
+ RECT 4.600 0.600 5.000 1.600 ;
+ RECT 4.600 0.600 4.900 2.200 ;
+ RECT 3.500 1.900 4.900 2.200 ;
+ RECT 3.500 1.900 3.900 2.300 ;
+ RECT 3.500 6.700 3.900 7.100 ;
+ RECT 4.900 6.700 5.300 7.100 ;
+ RECT 3.500 6.800 5.300 7.100 ;
+ RECT 4.600 6.800 4.900 9.400 ;
+ RECT 4.600 7.400 5.000 9.400 ;
+ RECT 6.600 7.000 7.000 7.400 ;
+ RECT 6.700 7.400 7.300 9.400 ;
+ RECT 0.200 4.900 2.500 5.200 ;
+ RECT 2.100 5.100 5.700 5.400 ;
+ RECT 5.400 5.100 5.700 6.100 ;
+ RECT 5.400 5.700 7.300 6.000 ;
+ RECT 5.400 5.700 5.900 6.100 ;
+ RECT 6.900 5.700 7.300 6.100 ;
+ RECT 0.200 4.900 0.600 9.400 ;
+ RECT 6.700 0.600 7.300 1.600 ;
+ RECT 6.600 1.300 7.000 2.000 ;
+ RECT 6.600 4.000 7.000 4.400 ;
+ RECT 6.600 4.100 8.500 4.400 ;
+ RECT 8.100 4.100 8.500 4.500 ;
+ LAYER via ;
+ RECT 0.300 5.100 0.500 5.300 ;
+ RECT 0.300 2.700 0.500 2.900 ;
+ RECT 1.900 7.100 2.100 7.300 ;
+ RECT 1.900 5.800 2.100 6.000 ;
+ RECT 1.900 1.700 2.100 1.900 ;
+ RECT 6.700 7.100 6.900 7.300 ;
+ RECT 6.700 4.100 6.900 4.300 ;
+ RECT 6.700 1.700 6.900 1.900 ;
+ END
+END DFFNEGX1
+
+MACRO NOR3X1
+ CLASS CORE ;
+ FOREIGN NOR3X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 6.400 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 2.300 1.900 2.700 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 3.300 2.600 3.700 ;
+ END
+ END B
+ PIN C
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.600 4.300 3.400 4.700 ;
+ END
+ END C
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 1.600 ;
+ RECT -0.200 -0.300 6.600 0.300 ;
+ RECT 2.600 -0.300 3.000 1.400 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 0.600 2.200 1.600 ;
+ RECT 5.000 6.000 5.400 8.800 ;
+ RECT 5.000 5.300 5.400 5.700 ;
+ RECT 5.000 5.300 5.300 8.800 ;
+ RECT 3.700 5.300 5.400 5.600 ;
+ RECT 3.700 1.600 4.000 5.600 ;
+ RECT 3.400 0.600 3.800 2.000 ;
+ RECT 2.000 1.700 4.000 2.000 ;
+ RECT 2.000 1.300 2.300 2.000 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 6.400 1.400 10.300 ;
+ RECT -0.200 9.700 6.600 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 0.300 5.800 2.100 6.100 ;
+ RECT 1.800 5.800 2.100 9.400 ;
+ RECT 1.800 6.400 2.200 9.400 ;
+ RECT 0.300 5.800 0.600 9.400 ;
+ RECT 0.200 6.400 0.600 9.400 ;
+ RECT 3.400 6.500 3.800 9.400 ;
+ RECT 1.800 9.100 3.800 9.400 ;
+ RECT 2.700 5.900 4.500 6.200 ;
+ RECT 2.700 5.900 3.000 8.800 ;
+ RECT 2.600 6.400 3.000 8.800 ;
+ RECT 4.200 6.000 4.600 9.000 ;
+ RECT 5.800 6.000 6.200 9.000 ;
+ RECT 4.300 6.000 4.600 9.400 ;
+ RECT 5.800 6.000 6.100 9.400 ;
+ RECT 4.300 9.100 6.100 9.400 ;
+ END
+END NOR3X1
+
+MACRO DFFPOSX1
+ CLASS CORE ;
+ FOREIGN DFFPOSX1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 9.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN Q
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 7.300 4.700 7.700 5.100 ;
+ RECT 9.000 0.600 9.400 9.400 ;
+ RECT 7.300 4.800 9.400 5.100 ;
+ RECT 7.500 2.800 9.400 3.100 ;
+ RECT 7.500 2.700 7.900 3.100 ;
+ END
+ END Q
+ PIN CLK
+ DIRECTION INPUT ;
+ USE CLOCK ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.600 3.300 1.400 3.700 ;
+ RECT 6.700 6.100 7.400 6.500 ;
+ RECT 6.700 5.300 7.000 6.500 ;
+ RECT 5.800 5.300 7.000 5.600 ;
+ RECT 5.800 3.400 6.100 5.600 ;
+ RECT 5.500 3.300 5.900 3.700 ;
+ RECT 0.600 3.400 6.100 3.700 ;
+ RECT 2.700 1.900 3.000 3.700 ;
+ RECT 2.600 1.900 3.000 2.300 ;
+ RECT 2.100 3.400 2.500 3.800 ;
+ END
+ END CLK
+ PIN D
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.300 4.200 1.700 4.600 ;
+ RECT 3.400 4.300 3.800 4.700 ;
+ RECT 1.300 4.300 3.800 4.600 ;
+ END
+ END D
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 2.600 ;
+ RECT -0.200 -0.300 9.800 0.300 ;
+ RECT 8.200 -0.300 8.600 2.500 ;
+ RECT 5.400 -0.300 5.800 1.600 ;
+ RECT 3.700 -0.300 4.200 1.600 ;
+ END
+ END gnd
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 5.500 1.400 10.300 ;
+ RECT -0.200 9.700 9.800 10.300 ;
+ RECT 8.200 5.400 8.600 10.300 ;
+ RECT 5.400 7.400 5.800 10.300 ;
+ RECT 3.800 7.400 4.200 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal2 ;
+ RECT 0.200 2.600 0.600 5.400 ;
+ RECT 1.800 1.600 2.200 7.400 ;
+ RECT 6.600 1.600 7.000 7.400 ;
+ LAYER metal1 ;
+ RECT 0.200 0.600 0.600 3.000 ;
+ RECT 1.800 7.000 2.200 7.700 ;
+ RECT 1.800 7.400 2.800 7.700 ;
+ RECT 2.400 7.400 2.800 9.400 ;
+ RECT 2.400 0.600 2.800 1.600 ;
+ RECT 1.800 1.300 2.800 1.600 ;
+ RECT 1.800 1.300 2.200 2.000 ;
+ RECT 1.800 5.700 4.500 6.000 ;
+ RECT 1.800 5.700 2.200 6.100 ;
+ RECT 4.100 5.700 4.500 6.100 ;
+ RECT 4.600 0.600 5.000 1.600 ;
+ RECT 4.600 0.600 4.900 2.200 ;
+ RECT 3.500 1.900 4.900 2.200 ;
+ RECT 3.500 1.900 3.900 2.300 ;
+ RECT 3.500 6.700 3.900 7.100 ;
+ RECT 4.900 6.700 5.300 7.100 ;
+ RECT 3.500 6.800 5.300 7.100 ;
+ RECT 4.600 6.800 4.900 9.400 ;
+ RECT 4.600 7.400 5.000 9.400 ;
+ RECT 0.200 5.000 3.100 5.200 ;
+ RECT 0.200 4.900 3.000 5.200 ;
+ RECT 2.700 5.100 5.100 5.400 ;
+ RECT 4.800 5.100 5.100 6.300 ;
+ RECT 5.500 5.900 5.900 6.300 ;
+ RECT 4.800 6.000 5.900 6.300 ;
+ RECT 0.200 4.900 0.600 9.400 ;
+ RECT 6.600 7.000 7.000 7.400 ;
+ RECT 6.700 7.400 7.300 9.400 ;
+ RECT 6.700 0.600 7.300 1.600 ;
+ RECT 6.600 1.300 7.000 2.000 ;
+ RECT 6.600 4.000 7.000 4.400 ;
+ RECT 6.600 4.100 8.500 4.400 ;
+ RECT 8.100 4.100 8.500 4.500 ;
+ LAYER via ;
+ RECT 0.300 5.100 0.500 5.300 ;
+ RECT 0.300 2.700 0.500 2.900 ;
+ RECT 1.900 7.100 2.100 7.300 ;
+ RECT 1.900 5.800 2.100 6.000 ;
+ RECT 1.900 1.700 2.100 1.900 ;
+ RECT 6.700 7.100 6.900 7.300 ;
+ RECT 6.700 4.100 6.900 4.300 ;
+ RECT 6.700 1.700 6.900 1.900 ;
+ END
+END DFFPOSX1
+
+MACRO FAX1
+ CLASS CORE ;
+ FOREIGN FAX1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 12.000 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN YC
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 11.400 0.600 11.800 1.600 ;
+ RECT 11.400 7.400 11.800 9.400 ;
+ RECT 11.500 0.600 11.800 9.400 ;
+ RECT 11.400 3.300 11.800 3.700 ;
+ END
+ END YC
+ PIN YS
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 9.800 0.600 10.200 1.600 ;
+ RECT 10.400 2.300 11.000 2.700 ;
+ RECT 9.700 4.600 10.700 4.900 ;
+ RECT 10.400 1.900 10.700 4.900 ;
+ RECT 9.900 1.900 10.700 2.200 ;
+ RECT 9.800 7.400 10.200 9.400 ;
+ RECT 9.900 0.600 10.200 2.200 ;
+ RECT 9.700 4.600 10.000 7.700 ;
+ END
+ END YS
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.300 3.000 1.000 3.300 ;
+ RECT 8.900 3.400 9.300 3.800 ;
+ RECT 8.900 2.800 9.200 3.800 ;
+ RECT 3.700 2.800 9.200 3.100 ;
+ RECT 0.300 3.000 4.100 3.200 ;
+ RECT 0.600 2.900 9.200 3.100 ;
+ RECT 0.200 3.300 0.600 3.700 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.100 3.600 1.400 4.700 ;
+ RECT 8.000 3.400 8.400 3.800 ;
+ RECT 4.700 3.400 8.400 3.700 ;
+ RECT 1.100 3.600 5.100 3.800 ;
+ RECT 1.400 3.500 8.400 3.700 ;
+ RECT 2.900 3.500 3.300 3.900 ;
+ RECT 1.100 3.600 1.800 3.900 ;
+ RECT 1.000 4.300 1.400 4.700 ;
+ END
+ END B
+ PIN C
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 4.300 2.600 4.700 ;
+ RECT 7.200 4.000 7.600 4.400 ;
+ RECT 5.200 4.100 7.600 4.400 ;
+ RECT 1.800 4.300 5.900 4.500 ;
+ RECT 1.800 4.300 5.500 4.600 ;
+ END
+ END C
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 2.000 ;
+ RECT -0.200 -0.300 12.200 0.300 ;
+ RECT 10.600 -0.300 11.000 1.600 ;
+ RECT 9.000 -0.300 9.400 2.500 ;
+ RECT 5.500 -0.300 5.900 1.900 ;
+ RECT 3.900 -0.300 4.300 2.400 ;
+ END
+ END gnd
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 6.000 1.400 10.300 ;
+ RECT -0.200 9.700 12.200 10.300 ;
+ RECT 10.600 7.400 11.000 10.300 ;
+ RECT 9.000 4.600 9.400 10.300 ;
+ RECT 5.500 6.400 5.900 10.300 ;
+ RECT 3.900 5.400 4.300 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal2 ;
+ RECT 7.200 2.100 7.600 2.500 ;
+ RECT 7.300 3.900 10.100 4.200 ;
+ RECT 9.700 3.900 10.100 4.300 ;
+ RECT 7.300 2.100 7.600 5.100 ;
+ RECT 7.200 4.700 7.600 5.100 ;
+ RECT 2.600 2.200 3.000 2.600 ;
+ RECT 6.000 4.800 6.400 5.700 ;
+ RECT 10.400 5.300 10.800 5.700 ;
+ RECT 2.600 5.400 10.800 5.700 ;
+ RECT 2.700 2.200 3.000 5.800 ;
+ RECT 2.600 5.400 3.000 5.800 ;
+ LAYER metal1 ;
+ RECT 0.200 5.400 2.200 5.700 ;
+ RECT 0.200 5.400 0.600 9.400 ;
+ RECT 1.800 5.400 2.200 9.400 ;
+ RECT 0.200 0.600 0.600 2.600 ;
+ RECT 1.800 0.600 2.200 2.600 ;
+ RECT 0.200 2.300 2.200 2.600 ;
+ RECT 2.600 5.400 3.000 9.400 ;
+ RECT 2.600 0.600 3.000 2.600 ;
+ RECT 4.700 5.800 6.700 6.100 ;
+ RECT 4.700 5.400 5.100 9.400 ;
+ RECT 6.300 5.800 6.700 9.400 ;
+ RECT 4.700 0.600 5.100 2.500 ;
+ RECT 6.300 0.600 6.700 2.500 ;
+ RECT 4.700 2.200 6.700 2.500 ;
+ RECT 6.400 4.700 6.800 5.100 ;
+ RECT 6.000 4.800 6.400 5.200 ;
+ RECT 7.200 4.700 7.600 9.400 ;
+ RECT 7.100 5.100 7.600 9.400 ;
+ RECT 7.100 0.600 7.600 2.100 ;
+ RECT 7.200 0.600 7.600 2.500 ;
+ RECT 9.700 3.500 10.100 4.300 ;
+ RECT 10.400 5.300 11.200 5.700 ;
+ LAYER via ;
+ RECT 2.700 5.500 2.900 5.700 ;
+ RECT 2.700 2.300 2.900 2.500 ;
+ RECT 6.100 4.900 6.300 5.100 ;
+ RECT 7.300 4.800 7.500 5.000 ;
+ RECT 7.300 2.200 7.500 2.400 ;
+ RECT 9.800 4.000 10.000 4.200 ;
+ RECT 10.500 5.400 10.700 5.600 ;
+ END
+END FAX1
+
+MACRO HAX1
+ CLASS CORE ;
+ FOREIGN HAX1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 8.000 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN YC
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal2 ;
+ RECT 2.300 1.600 3.000 2.000 ;
+ RECT 2.600 4.200 3.000 4.600 ;
+ RECT 2.700 1.600 3.000 4.600 ;
+ LAYER via ;
+ RECT 2.400 1.700 2.600 1.900 ;
+ RECT 2.700 4.300 2.900 4.500 ;
+ LAYER metal1 ;
+ RECT 2.300 0.600 2.700 2.000 ;
+ RECT 2.600 4.200 3.000 9.400 ;
+ END
+ END YC
+ PIN YS
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 6.600 5.300 7.000 5.700 ;
+ RECT 7.100 7.400 7.500 9.400 ;
+ RECT 7.200 6.800 7.500 9.400 ;
+ RECT 6.700 2.000 7.500 2.300 ;
+ RECT 7.200 0.600 7.500 2.300 ;
+ RECT 6.700 6.800 7.500 7.100 ;
+ RECT 7.100 0.600 7.500 1.600 ;
+ RECT 6.700 2.000 7.000 7.100 ;
+ END
+ END YS
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.000 0.600 3.700 ;
+ RECT 5.000 3.300 5.400 3.700 ;
+ RECT 4.200 3.300 5.400 3.600 ;
+ RECT 0.200 3.000 4.500 3.300 ;
+ RECT 0.400 2.900 0.800 3.300 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.100 4.000 1.500 4.300 ;
+ RECT 4.200 3.900 4.600 4.300 ;
+ RECT 3.600 3.900 4.600 4.200 ;
+ RECT 1.200 3.600 3.900 3.900 ;
+ RECT 1.200 3.600 1.600 4.000 ;
+ RECT 1.000 4.300 1.400 4.700 ;
+ END
+ END B
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 2.600 ;
+ RECT -0.200 -0.300 8.200 0.300 ;
+ RECT 6.300 -0.300 6.700 1.600 ;
+ RECT 3.100 -0.300 3.500 2.500 ;
+ END
+ END gnd
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 7.600 1.400 10.300 ;
+ RECT -0.200 9.700 8.200 10.300 ;
+ RECT 6.300 7.400 6.700 10.300 ;
+ RECT 5.500 5.400 5.900 10.300 ;
+ RECT 3.400 7.400 3.800 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal2 ;
+ RECT 1.900 2.300 2.300 2.700 ;
+ RECT 1.900 2.300 2.200 4.600 ;
+ RECT 1.900 4.200 2.300 4.600 ;
+ LAYER metal1 ;
+ RECT 1.900 4.200 2.300 4.600 ;
+ RECT 0.300 7.000 2.200 7.300 ;
+ RECT 0.300 7.000 0.600 9.400 ;
+ RECT 0.200 7.400 0.600 9.400 ;
+ RECT 1.900 4.200 2.200 9.400 ;
+ RECT 1.800 7.000 2.200 9.400 ;
+ RECT 1.500 0.600 1.900 2.600 ;
+ RECT 1.900 2.300 2.800 2.700 ;
+ RECT 3.900 0.600 5.900 0.900 ;
+ RECT 5.500 0.600 5.900 2.400 ;
+ RECT 3.900 0.600 4.300 2.600 ;
+ RECT 4.700 1.200 5.100 2.600 ;
+ RECT 4.800 1.200 5.100 3.000 ;
+ RECT 4.800 2.700 6.300 3.000 ;
+ RECT 5.700 2.700 6.300 3.100 ;
+ RECT 5.700 2.700 6.000 5.100 ;
+ RECT 4.300 4.800 6.000 5.100 ;
+ RECT 4.300 4.800 4.600 9.400 ;
+ RECT 4.200 5.400 4.600 9.400 ;
+ LAYER via ;
+ RECT 2.000 4.300 2.200 4.500 ;
+ RECT 2.000 2.400 2.200 2.600 ;
+ END
+END HAX1
+
+MACRO INVX1
+ CLASS CORE ;
+ FOREIGN INVX1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 1.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 1.900 0.600 2.700 ;
+ END
+ END A
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 1.600 ;
+ RECT -0.200 -0.300 1.800 0.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 7.400 0.600 10.300 ;
+ RECT -0.200 9.700 1.800 10.300 ;
+ END
+ END vdd
+END INVX1
+
+MACRO INVX2
+ CLASS CORE ;
+ FOREIGN INVX2 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 1.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 2.900 0.600 3.700 ;
+ END
+ END A
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 2.600 ;
+ RECT -0.200 -0.300 1.800 0.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 1.800 10.300 ;
+ END
+ END vdd
+END INVX2
+
+MACRO INVX4
+ CLASS CORE ;
+ FOREIGN INVX4 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 2.400 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 2.900 0.600 3.700 ;
+ END
+ END A
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 2.600 ;
+ RECT -0.200 -0.300 2.600 0.300 ;
+ RECT 1.800 -0.300 2.200 2.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 2.600 10.300 ;
+ RECT 1.800 5.400 2.200 10.300 ;
+ END
+ END vdd
+END INVX4
+
+MACRO INVX8
+ CLASS CORE ;
+ FOREIGN INVX8 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 4.000 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 2.900 0.600 3.700 ;
+ END
+ END A
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 2.600 ;
+ RECT -0.200 -0.300 4.200 0.300 ;
+ RECT 3.400 -0.300 3.800 2.600 ;
+ RECT 1.800 -0.300 2.200 2.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 3.300 ;
+ RECT 2.600 0.600 3.000 9.400 ;
+ RECT 1.000 4.700 3.000 5.100 ;
+ RECT 1.000 2.900 3.000 3.300 ;
+ RECT 1.000 4.700 1.400 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 4.200 10.300 ;
+ RECT 3.400 5.400 3.800 10.300 ;
+ RECT 1.800 5.400 2.200 10.300 ;
+ END
+ END vdd
+END INVX8
+
+MACRO NAND2X1
+ CLASS CORE ;
+ FOREIGN NAND2X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 2.400 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 2.900 0.600 3.700 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 5.300 2.200 6.100 ;
+ END
+ END B
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 2.600 ;
+ RECT -0.200 -0.300 2.600 0.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 2.300 1.400 9.400 ;
+ RECT 1.000 2.300 1.900 2.600 ;
+ RECT 1.500 0.600 1.900 2.600 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 7.400 0.600 10.300 ;
+ RECT -0.200 9.700 2.600 10.300 ;
+ RECT 1.800 7.400 2.200 10.300 ;
+ END
+ END vdd
+END NAND2X1
+
+MACRO NAND3X1
+ CLASS CORE ;
+ FOREIGN NAND3X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 3.200 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 4.900 0.600 5.700 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 4.300 1.800 4.700 ;
+ END
+ END B
+ PIN C
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 5.900 2.200 6.700 ;
+ END
+ END C
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 3.600 ;
+ RECT -0.200 -0.300 3.400 0.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.100 7.000 1.400 9.400 ;
+ RECT 2.600 7.400 3.000 9.400 ;
+ RECT 2.600 5.300 3.000 5.700 ;
+ RECT 2.600 3.400 2.900 9.400 ;
+ RECT 1.100 7.000 2.900 7.300 ;
+ RECT 2.100 3.400 2.900 3.700 ;
+ RECT 2.000 0.600 2.400 3.600 ;
+ RECT 1.000 7.400 1.400 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 7.400 0.600 10.300 ;
+ RECT -0.200 9.700 3.400 10.300 ;
+ RECT 1.800 7.600 2.200 10.300 ;
+ END
+ END vdd
+END NAND3X1
+
+MACRO NOR2X1
+ CLASS CORE ;
+ FOREIGN NOR2X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 2.400 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 1.900 0.600 2.700 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 4.300 2.200 5.100 ;
+ END
+ END B
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 1.600 ;
+ RECT -0.200 -0.300 2.600 0.300 ;
+ RECT 1.800 -0.300 2.200 1.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 1.600 ;
+ RECT 1.500 5.400 1.900 9.400 ;
+ RECT 1.000 5.400 1.900 5.800 ;
+ RECT 1.100 0.600 1.400 5.800 ;
+ RECT 1.000 3.300 1.400 3.700 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 2.600 10.300 ;
+ END
+ END vdd
+END NOR2X1
+
+MACRO OAI21X1
+ CLASS CORE ;
+ FOREIGN OAI21X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 3.200 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.300 0.600 3.700 ;
+ RECT 0.600 3.100 1.000 3.600 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 3.900 1.400 4.700 ;
+ END
+ END B
+ PIN C
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.300 5.400 2.600 6.700 ;
+ RECT 2.600 5.300 3.000 5.700 ;
+ RECT 2.200 6.300 2.600 6.700 ;
+ END
+ END C
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 2.200 ;
+ RECT -0.200 -0.300 3.400 0.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.500 5.400 1.900 9.400 ;
+ RECT 1.700 3.300 3.000 3.700 ;
+ RECT 2.600 0.600 3.000 2.600 ;
+ RECT 2.600 0.600 2.900 3.700 ;
+ RECT 1.700 3.300 2.000 5.700 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 3.400 10.300 ;
+ RECT 2.300 7.400 2.700 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 0.200 0.600 0.600 2.600 ;
+ RECT 1.800 0.600 2.200 2.600 ;
+ RECT 0.300 2.500 2.100 2.800 ;
+ END
+END OAI21X1
+
+MACRO OAI22X1
+ CLASS CORE ;
+ FOREIGN OAI22X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 4.000 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.300 0.600 3.700 ;
+ RECT 0.600 3.100 1.000 3.600 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 3.900 1.400 4.700 ;
+ END
+ END B
+ PIN C
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 3.400 3.300 3.800 4.100 ;
+ END
+ END C
+ PIN D
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.600 3.900 3.000 4.700 ;
+ END
+ END D
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 2.200 ;
+ RECT -0.200 -0.300 4.200 0.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 3.300 2.100 9.400 ;
+ RECT 1.800 3.300 3.000 3.600 ;
+ RECT 2.700 1.200 3.000 3.600 ;
+ RECT 2.600 1.200 3.000 2.600 ;
+ RECT 1.500 5.400 2.500 9.400 ;
+ RECT 1.800 3.300 2.200 3.700 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 4.200 10.300 ;
+ RECT 3.400 5.400 3.800 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 1.800 0.600 3.800 0.900 ;
+ RECT 0.200 0.600 0.600 2.600 ;
+ RECT 1.800 0.600 2.200 2.600 ;
+ RECT 3.400 0.600 3.800 2.600 ;
+ RECT 0.300 2.500 2.100 2.800 ;
+ END
+END OAI22X1
+
+MACRO OR2X1
+ CLASS CORE ;
+ FOREIGN OR2X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 3.200 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 1.900 0.600 2.700 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 3.300 1.400 3.700 ;
+ RECT 1.100 2.900 1.800 3.300 ;
+ END
+ END B
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 1.600 ;
+ RECT -0.200 -0.300 3.400 0.300 ;
+ RECT 1.800 -0.300 2.200 1.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.600 0.600 3.000 1.600 ;
+ RECT 2.700 0.600 3.000 7.400 ;
+ RECT 2.300 7.400 2.700 9.400 ;
+ RECT 2.400 7.100 3.000 7.400 ;
+ RECT 2.600 4.300 3.000 4.700 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.500 5.400 1.900 10.300 ;
+ RECT -0.200 9.700 3.400 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 1.600 ;
+ RECT 1.100 0.600 1.400 2.400 ;
+ RECT 1.100 2.100 2.400 2.400 ;
+ RECT 2.100 2.100 2.400 3.900 ;
+ RECT 1.900 3.600 2.200 5.100 ;
+ RECT 1.900 4.700 2.300 5.100 ;
+ RECT 0.200 4.800 2.300 5.100 ;
+ RECT 0.200 4.800 0.600 9.400 ;
+ END
+END OR2X1
+
+MACRO OR2X2
+ CLASS CORE ;
+ FOREIGN OR2X2 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 3.200 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 1.900 0.600 2.700 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 3.300 1.500 3.700 ;
+ RECT 1.200 3.700 1.600 4.100 ;
+ END
+ END B
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 1.600 ;
+ RECT -0.200 -0.300 3.400 0.300 ;
+ RECT 1.800 -0.300 2.200 2.400 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.600 0.600 3.000 2.600 ;
+ RECT 2.700 0.600 3.000 5.700 ;
+ RECT 2.300 5.400 2.700 9.400 ;
+ RECT 2.600 4.300 3.000 4.700 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.500 5.400 1.900 10.300 ;
+ RECT -0.200 9.700 3.400 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 1.600 ;
+ RECT 1.100 0.600 1.400 3.000 ;
+ RECT 1.100 2.700 2.300 3.000 ;
+ RECT 1.900 4.500 2.300 4.900 ;
+ RECT 2.000 2.700 2.300 4.900 ;
+ RECT 0.200 4.800 2.200 5.100 ;
+ RECT 0.200 4.800 0.600 9.400 ;
+ END
+END OR2X2
+
+MACRO TBUFX1
+ CLASS CORE ;
+ FOREIGN TBUFX1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 4.000 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 3.000 3.300 3.800 3.700 ;
+ END
+ END A
+ PIN EN
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 6.300 1.000 6.700 ;
+ END
+ END EN
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 1.600 ;
+ RECT -0.200 -0.300 4.200 0.300 ;
+ RECT 3.200 -0.300 3.600 2.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.900 0.600 2.300 2.600 ;
+ RECT 1.900 5.400 2.300 9.400 ;
+ RECT 2.000 0.600 2.300 9.400 ;
+ RECT 1.800 4.300 2.300 4.700 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 7.400 0.600 10.300 ;
+ RECT -0.200 9.700 4.200 10.300 ;
+ RECT 3.200 5.400 3.600 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 1.600 ;
+ RECT 1.300 3.300 1.700 3.700 ;
+ RECT 1.300 1.200 1.600 4.000 ;
+ RECT 1.200 3.700 1.500 5.300 ;
+ RECT 1.300 5.000 1.600 7.700 ;
+ RECT 1.000 7.400 1.400 9.400 ;
+ END
+END TBUFX1
+
+MACRO TBUFX2
+ CLASS CORE ;
+ FOREIGN TBUFX2 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 5.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 4.500 3.300 5.400 3.700 ;
+ END
+ END A
+ PIN EN
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 2.900 0.500 5.100 ;
+ RECT 0.200 2.900 0.700 3.300 ;
+ RECT 0.200 4.300 0.600 5.100 ;
+ END
+ END EN
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 2.600 ;
+ RECT -0.200 -0.300 5.800 0.300 ;
+ RECT 4.200 -0.300 4.600 2.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.600 1.200 2.900 8.800 ;
+ RECT 2.600 5.400 3.000 8.800 ;
+ RECT 2.600 4.300 3.000 4.700 ;
+ RECT 2.600 1.200 3.000 2.600 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 5.800 10.300 ;
+ RECT 4.200 6.100 4.600 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 2.600 ;
+ RECT 1.000 4.100 1.400 4.500 ;
+ RECT 1.000 0.600 1.300 9.400 ;
+ RECT 1.000 5.400 1.400 9.400 ;
+ RECT 3.400 5.400 5.400 5.800 ;
+ RECT 1.800 5.400 2.200 9.400 ;
+ RECT 3.400 5.400 3.800 9.400 ;
+ RECT 1.800 9.100 3.800 9.400 ;
+ RECT 5.000 5.400 5.400 9.400 ;
+ RECT 1.800 0.600 3.800 0.900 ;
+ RECT 5.000 0.600 5.400 2.300 ;
+ RECT 3.400 0.600 3.800 2.900 ;
+ RECT 1.800 0.600 2.200 2.600 ;
+ RECT 5.100 0.600 5.400 2.900 ;
+ RECT 3.400 2.600 5.400 2.900 ;
+ END
+END TBUFX2
+
+MACRO XOR2X1
+ CLASS CORE ;
+ FOREIGN XOR2X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 5.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.300 1.000 3.700 ;
+ RECT 2.000 3.500 2.400 3.900 ;
+ RECT 1.000 3.500 2.400 3.800 ;
+ RECT 0.200 3.400 1.300 3.700 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 4.600 3.300 5.400 3.700 ;
+ END
+ END B
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.100 -0.300 1.500 2.300 ;
+ RECT -0.200 -0.300 5.800 0.300 ;
+ RECT 4.100 -0.300 4.600 2.300 ;
+ RECT 1.000 0.600 1.500 2.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.600 4.300 3.000 4.700 ;
+ RECT 2.400 5.400 3.200 9.400 ;
+ RECT 2.900 0.600 3.200 3.700 ;
+ RECT 2.700 3.400 3.000 9.400 ;
+ RECT 2.400 0.600 3.200 2.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 6.100 1.500 9.400 ;
+ RECT -0.200 9.700 5.800 10.300 ;
+ RECT 4.100 6.100 4.600 10.300 ;
+ RECT 1.100 6.100 1.500 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal2 ;
+ RECT 1.100 2.600 1.500 3.000 ;
+ RECT 1.100 2.700 3.900 3.000 ;
+ RECT 1.800 2.700 2.200 3.100 ;
+ RECT 3.500 2.700 3.900 3.100 ;
+ RECT 1.100 2.600 1.400 5.800 ;
+ RECT 1.100 5.400 1.500 5.800 ;
+ RECT 4.200 2.600 4.600 3.000 ;
+ RECT 1.800 3.400 4.600 3.700 ;
+ RECT 1.800 3.400 2.100 4.800 ;
+ RECT 1.700 4.400 2.100 4.800 ;
+ RECT 4.300 2.600 4.600 5.800 ;
+ RECT 4.200 5.400 4.600 5.800 ;
+ LAYER metal1 ;
+ RECT 0.200 5.400 1.500 5.700 ;
+ RECT 1.100 5.400 1.500 5.800 ;
+ RECT 0.200 5.400 0.600 9.400 ;
+ RECT 0.200 0.600 0.600 2.900 ;
+ RECT 0.200 2.600 1.500 2.900 ;
+ RECT 1.100 2.600 1.500 3.000 ;
+ RECT 1.300 4.300 1.700 4.700 ;
+ RECT 1.700 4.400 2.100 4.800 ;
+ RECT 1.800 2.700 2.600 3.100 ;
+ RECT 3.500 2.700 3.900 3.100 ;
+ RECT 3.600 2.700 3.900 3.700 ;
+ RECT 3.600 3.300 4.000 3.700 ;
+ RECT 4.200 5.400 5.400 5.700 ;
+ RECT 4.200 5.400 4.600 5.800 ;
+ RECT 5.000 5.400 5.400 9.400 ;
+ RECT 5.000 0.600 5.400 2.900 ;
+ RECT 4.200 2.600 5.400 2.900 ;
+ RECT 4.200 2.600 4.600 3.000 ;
+ LAYER via ;
+ RECT 1.200 5.500 1.400 5.700 ;
+ RECT 1.200 2.700 1.400 2.900 ;
+ RECT 1.800 4.500 2.000 4.700 ;
+ RECT 1.900 2.800 2.100 3.000 ;
+ RECT 3.600 2.800 3.800 3.000 ;
+ RECT 4.300 5.500 4.500 5.700 ;
+ RECT 4.300 2.700 4.500 2.900 ;
+ END
+END XOR2X1
+
+MACRO MUX2X1
+ CLASS CORE ;
+ FOREIGN MUX2X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 4.800 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 3.400 4.300 3.800 5.100 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 3.900 1.400 4.700 ;
+ END
+ END B
+ PIN S
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.900 0.600 4.700 ;
+ END
+ END S
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 2.800 ;
+ RECT -0.200 -0.300 5.000 0.300 ;
+ RECT 3.600 -0.300 4.000 3.000 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.300 1.000 2.700 2.800 ;
+ RECT 2.800 3.300 3.800 3.700 ;
+ RECT 2.300 5.600 3.100 5.900 ;
+ RECT 2.800 2.500 3.100 5.900 ;
+ RECT 2.700 2.500 3.100 3.000 ;
+ RECT 2.300 5.600 2.700 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 5.600 1.400 10.300 ;
+ RECT -0.200 9.700 5.000 10.300 ;
+ RECT 3.600 5.400 4.000 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 0.200 1.000 0.600 2.000 ;
+ RECT 0.200 1.000 0.500 3.400 ;
+ RECT 0.200 3.100 2.300 3.400 ;
+ RECT 1.800 3.100 2.300 4.000 ;
+ RECT 1.800 3.600 2.500 4.000 ;
+ RECT 1.800 3.100 2.100 5.300 ;
+ RECT 0.200 5.000 2.100 5.300 ;
+ RECT 0.200 5.000 0.500 9.000 ;
+ RECT 0.200 7.000 0.600 9.000 ;
+ END
+END MUX2X1
+
+MACRO XNOR2X1
+ CLASS CORE ;
+ FOREIGN XNOR2X1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 5.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal2 ;
+ RECT 1.800 2.700 2.200 3.100 ;
+ RECT 3.500 2.700 3.900 3.100 ;
+ RECT 1.800 2.700 3.900 3.000 ;
+ LAYER via ;
+ RECT 1.900 2.800 2.100 3.000 ;
+ RECT 3.600 2.800 3.800 3.000 ;
+ LAYER metal1 ;
+ RECT 0.200 3.300 1.000 3.700 ;
+ RECT 3.600 3.300 4.000 3.700 ;
+ RECT 3.600 2.700 3.900 3.700 ;
+ RECT 3.500 2.700 3.900 3.100 ;
+ RECT 1.800 2.700 2.600 3.100 ;
+ RECT 0.200 3.300 1.900 3.600 ;
+ RECT 1.600 2.800 1.900 3.600 ;
+ END
+ END A
+ PIN B
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 4.600 3.300 5.400 3.700 ;
+ END
+ END B
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.100 -0.300 1.500 2.300 ;
+ RECT -0.200 -0.300 5.800 0.300 ;
+ RECT 4.100 -0.300 4.600 2.300 ;
+ RECT 1.000 0.600 1.500 2.300 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 2.400 0.600 3.200 2.400 ;
+ RECT 3.100 4.300 3.800 4.700 ;
+ RECT 3.100 4.100 3.400 5.700 ;
+ RECT 2.400 5.400 3.200 9.400 ;
+ RECT 2.900 0.600 3.200 4.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 6.100 1.500 9.400 ;
+ RECT -0.200 9.700 5.800 10.300 ;
+ RECT 4.100 6.100 4.600 10.300 ;
+ RECT 1.100 6.100 1.500 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal2 ;
+ RECT 0.900 2.600 1.300 3.000 ;
+ RECT 0.900 2.600 1.200 5.800 ;
+ RECT 0.900 5.400 1.300 5.800 ;
+ RECT 4.200 2.600 4.600 3.000 ;
+ RECT 2.200 3.400 4.600 3.700 ;
+ RECT 2.200 3.400 2.600 3.800 ;
+ RECT 4.300 2.600 4.600 5.800 ;
+ RECT 4.200 5.400 4.600 5.800 ;
+ LAYER metal1 ;
+ RECT 0.200 0.600 0.600 2.900 ;
+ RECT 0.200 2.600 1.300 2.900 ;
+ RECT 0.900 2.600 1.300 3.000 ;
+ RECT 2.200 3.400 2.600 3.800 ;
+ RECT 2.200 3.400 2.500 4.400 ;
+ RECT 1.200 4.100 2.500 4.400 ;
+ RECT 1.200 4.100 1.600 4.500 ;
+ RECT 2.300 4.700 2.700 5.100 ;
+ RECT 1.000 4.800 2.700 5.100 ;
+ RECT 0.200 5.400 1.300 5.700 ;
+ RECT 1.000 4.800 1.300 5.800 ;
+ RECT 0.900 5.400 1.300 5.800 ;
+ RECT 0.200 5.400 0.600 9.400 ;
+ RECT 4.200 5.400 5.400 5.700 ;
+ RECT 4.200 5.400 4.600 5.800 ;
+ RECT 5.000 5.400 5.400 9.400 ;
+ RECT 5.000 0.600 5.400 2.900 ;
+ RECT 4.200 2.600 5.400 2.900 ;
+ RECT 4.200 2.600 4.600 3.000 ;
+ LAYER via ;
+ RECT 1.000 5.500 1.200 5.700 ;
+ RECT 1.000 2.700 1.200 2.900 ;
+ RECT 2.300 3.500 2.500 3.700 ;
+ RECT 4.300 5.500 4.500 5.700 ;
+ RECT 4.300 2.700 4.500 2.900 ;
+ END
+END XNOR2X1
+
+MACRO LATCH
+ CLASS CORE ;
+ FOREIGN LATCH 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 5.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN Q
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 3.700 3.800 5.400 4.200 ;
+ RECT 5.000 0.600 5.400 9.400 ;
+ END
+ END Q
+ PIN CLK
+ DIRECTION INPUT ;
+ USE CLOCK ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.600 3.300 1.400 3.700 ;
+ RECT 2.900 3.300 3.300 4.100 ;
+ RECT 0.600 3.300 3.300 3.600 ;
+ RECT 2.200 2.300 2.600 3.600 ;
+ END
+ END CLK
+ PIN D
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.300 4.700 2.200 5.100 ;
+ RECT 1.800 4.700 2.200 5.700 ;
+ END
+ END D
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 -0.300 1.400 2.600 ;
+ RECT -0.200 -0.300 5.800 0.300 ;
+ RECT 4.200 -0.300 4.600 2.600 ;
+ END
+ END gnd
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.000 5.400 1.400 10.300 ;
+ RECT -0.200 9.700 5.800 10.300 ;
+ RECT 4.200 5.400 4.600 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal2 ;
+ RECT 0.200 2.600 0.600 5.400 ;
+ RECT 2.600 1.600 3.000 7.400 ;
+ LAYER metal1 ;
+ RECT 0.200 4.900 0.600 9.400 ;
+ RECT 0.200 0.600 0.600 3.000 ;
+ RECT 0.200 4.000 2.500 4.300 ;
+ RECT 0.200 4.000 0.600 4.400 ;
+ RECT 2.100 4.000 2.500 4.400 ;
+ RECT 2.600 7.000 3.000 9.400 ;
+ RECT 2.500 7.400 3.100 9.400 ;
+ RECT 2.500 0.600 3.100 1.600 ;
+ RECT 2.600 0.600 3.000 2.000 ;
+ RECT 2.600 4.700 4.700 5.100 ;
+ LAYER via ;
+ RECT 0.300 5.100 0.500 5.300 ;
+ RECT 0.300 4.100 0.500 4.300 ;
+ RECT 0.300 2.700 0.500 2.900 ;
+ RECT 2.700 7.100 2.900 7.300 ;
+ RECT 2.700 4.800 2.900 5.000 ;
+ RECT 2.700 1.700 2.900 1.900 ;
+ END
+END LATCH
+
+MACRO DFFSR
+ CLASS CORE ;
+ FOREIGN DFFSR 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 17.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN Q
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 16.200 0.600 16.600 2.900 ;
+ RECT 16.300 2.500 16.700 5.500 ;
+ RECT 16.200 5.100 16.600 9.400 ;
+ END
+ END Q
+ PIN CLK
+ DIRECTION INPUT ;
+ USE CLOCK ;
+ PORT
+ LAYER metal1 ;
+ RECT 8.200 2.300 9.000 2.700 ;
+ END
+ END CLK
+ PIN R
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.900 4.400 1.300 4.800 ;
+ RECT 0.900 4.500 12.600 4.800 ;
+ RECT 12.200 4.200 12.600 4.800 ;
+ RECT 3.400 4.300 3.800 4.800 ;
+ END
+ END R
+ PIN S
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 5.100 2.200 5.700 ;
+ RECT 1.800 5.100 15.300 5.400 ;
+ RECT 14.900 5.000 15.300 5.400 ;
+ RECT 3.500 5.100 3.900 5.500 ;
+ END
+ END S
+ PIN D
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 6.600 2.900 7.000 3.700 ;
+ END
+ END D
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 1.800 -0.300 2.200 2.600 ;
+ RECT -0.200 -0.300 17.800 0.300 ;
+ RECT 17.000 -0.300 17.400 1.600 ;
+ RECT 13.800 -0.300 14.200 2.600 ;
+ RECT 8.200 -0.300 8.600 1.600 ;
+ RECT 6.600 -0.300 7.000 1.600 ;
+ END
+ END gnd
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 7.400 0.600 10.300 ;
+ RECT -0.200 9.700 17.800 10.300 ;
+ RECT 17.000 7.400 17.400 10.300 ;
+ RECT 15.400 7.400 15.800 10.300 ;
+ RECT 13.800 7.400 14.200 10.300 ;
+ RECT 12.200 7.400 12.600 10.300 ;
+ RECT 8.200 7.400 8.600 10.300 ;
+ RECT 6.600 7.400 7.000 10.300 ;
+ RECT 3.400 7.400 3.800 10.300 ;
+ RECT 1.800 7.400 2.200 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal2 ;
+ RECT 4.200 1.600 4.600 8.400 ;
+ RECT 5.000 1.600 5.400 8.400 ;
+ RECT 5.800 1.600 6.200 7.400 ;
+ RECT 7.400 1.600 7.800 7.400 ;
+ RECT 9.000 1.600 9.400 7.400 ;
+ RECT 9.800 1.600 10.200 8.400 ;
+ RECT 10.600 1.600 11.000 8.400 ;
+ RECT 11.400 1.600 11.800 8.400 ;
+ LAYER metal1 ;
+ RECT 3.400 0.600 3.800 2.600 ;
+ RECT 2.500 2.200 3.800 2.600 ;
+ RECT 2.500 2.200 2.900 3.300 ;
+ RECT 1.400 2.900 2.900 3.300 ;
+ RECT 4.200 8.000 4.600 9.400 ;
+ RECT 0.200 3.600 4.600 4.000 ;
+ RECT 0.200 0.600 0.600 7.100 ;
+ RECT 0.200 6.800 1.200 7.100 ;
+ RECT 0.900 6.800 1.200 7.700 ;
+ RECT 1.000 7.400 1.400 9.400 ;
+ RECT 4.200 0.600 4.600 2.000 ;
+ RECT 5.000 8.000 5.400 9.400 ;
+ RECT 2.700 5.800 5.400 6.100 ;
+ RECT 5.000 5.700 5.400 6.100 ;
+ RECT 2.300 6.000 3.000 6.400 ;
+ RECT 5.000 0.600 5.400 2.000 ;
+ RECT 5.800 7.000 6.200 9.400 ;
+ RECT 5.800 0.600 6.200 2.000 ;
+ RECT 7.400 7.000 7.800 9.400 ;
+ RECT 6.500 6.300 7.800 6.700 ;
+ RECT 5.500 2.300 7.800 2.600 ;
+ RECT 7.400 2.300 7.800 2.700 ;
+ RECT 5.500 2.300 5.900 4.200 ;
+ RECT 4.900 3.800 5.900 4.200 ;
+ RECT 7.400 0.600 7.800 2.000 ;
+ RECT 9.000 6.300 9.400 9.400 ;
+ RECT 7.800 3.800 9.400 4.200 ;
+ RECT 9.000 0.600 9.400 2.000 ;
+ RECT 7.400 3.000 7.800 3.400 ;
+ RECT 7.400 3.100 9.600 3.400 ;
+ RECT 9.200 3.100 9.600 3.500 ;
+ RECT 9.800 8.000 10.200 9.400 ;
+ RECT 5.900 5.700 10.200 6.000 ;
+ RECT 9.800 5.700 10.200 6.100 ;
+ RECT 1.000 6.100 1.800 6.500 ;
+ RECT 1.500 6.100 1.800 7.100 ;
+ RECT 3.300 6.400 6.200 6.700 ;
+ RECT 5.900 5.700 6.200 6.700 ;
+ RECT 1.500 6.700 3.600 7.100 ;
+ RECT 2.600 6.700 3.000 9.400 ;
+ RECT 9.800 0.600 10.200 2.000 ;
+ RECT 10.600 8.000 11.000 9.400 ;
+ RECT 10.500 2.300 11.000 2.700 ;
+ RECT 10.600 2.300 11.000 4.100 ;
+ RECT 10.600 0.600 11.000 2.000 ;
+ RECT 11.400 8.000 11.800 9.400 ;
+ RECT 11.400 0.600 11.800 2.000 ;
+ RECT 10.600 6.700 12.700 7.100 ;
+ RECT 13.000 6.300 14.300 6.700 ;
+ RECT 13.000 6.300 13.400 9.400 ;
+ RECT 12.200 0.600 12.600 2.600 ;
+ RECT 12.200 2.200 13.400 2.600 ;
+ RECT 13.000 2.200 13.400 3.200 ;
+ RECT 13.000 2.900 13.900 3.200 ;
+ RECT 13.500 2.900 13.900 4.200 ;
+ RECT 13.500 3.800 15.400 4.200 ;
+ RECT 15.400 0.600 15.800 3.500 ;
+ RECT 15.700 3.200 16.000 4.800 ;
+ RECT 11.400 5.700 15.900 6.000 ;
+ RECT 11.400 5.700 11.800 6.100 ;
+ RECT 15.600 4.500 15.900 7.100 ;
+ RECT 14.600 6.800 15.900 7.100 ;
+ RECT 14.600 6.800 15.000 9.400 ;
+ LAYER via ;
+ RECT 4.300 8.100 4.500 8.300 ;
+ RECT 4.300 3.700 4.500 3.900 ;
+ RECT 4.300 1.700 4.500 1.900 ;
+ RECT 5.100 8.100 5.300 8.300 ;
+ RECT 5.100 5.800 5.300 6.000 ;
+ RECT 5.100 1.700 5.300 1.900 ;
+ RECT 5.900 7.100 6.100 7.300 ;
+ RECT 5.900 1.700 6.100 1.900 ;
+ RECT 7.500 7.100 7.700 7.300 ;
+ RECT 7.500 6.400 7.700 6.600 ;
+ RECT 7.500 3.100 7.700 3.300 ;
+ RECT 7.500 1.700 7.700 1.900 ;
+ RECT 9.100 7.100 9.300 7.300 ;
+ RECT 9.100 3.900 9.300 4.100 ;
+ RECT 9.100 1.700 9.300 1.900 ;
+ RECT 9.900 8.100 10.100 8.300 ;
+ RECT 9.900 5.800 10.100 6.000 ;
+ RECT 9.900 1.700 10.100 1.900 ;
+ RECT 10.700 8.100 10.900 8.300 ;
+ RECT 10.700 6.800 10.900 7.000 ;
+ RECT 10.700 1.700 10.900 1.900 ;
+ RECT 11.500 8.100 11.700 8.300 ;
+ RECT 11.500 5.800 11.700 6.000 ;
+ RECT 11.500 1.700 11.700 1.900 ;
+ END
+END DFFSR
+
+MACRO CLKBUF1
+ CLASS CORE ;
+ FOREIGN CLKBUF1 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 7.200 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.300 0.600 4.000 ;
+ RECT 0.200 3.600 1.100 4.000 ;
+ END
+ END A
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 2.600 ;
+ RECT -0.200 -0.300 7.400 0.300 ;
+ RECT 6.600 -0.300 7.000 2.600 ;
+ RECT 5.000 -0.300 5.400 2.600 ;
+ RECT 3.400 -0.300 3.800 2.600 ;
+ RECT 1.800 -0.300 2.200 2.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 5.800 0.600 6.200 3.300 ;
+ RECT 5.800 4.700 7.000 5.100 ;
+ RECT 6.600 2.900 7.000 5.100 ;
+ RECT 5.800 2.900 7.000 3.300 ;
+ RECT 5.800 4.700 6.200 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 7.400 10.300 ;
+ RECT 6.600 5.400 7.000 10.300 ;
+ RECT 5.000 5.400 5.400 10.300 ;
+ RECT 3.400 5.400 3.800 10.300 ;
+ RECT 1.800 5.400 2.200 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 3.300 ;
+ RECT 1.000 2.900 1.900 3.300 ;
+ RECT 1.500 3.600 2.800 4.000 ;
+ RECT 1.500 2.900 1.900 5.100 ;
+ RECT 1.000 4.700 1.900 5.100 ;
+ RECT 1.000 4.700 1.400 9.400 ;
+ RECT 2.600 0.600 3.000 3.300 ;
+ RECT 2.600 2.900 3.700 3.300 ;
+ RECT 3.300 3.600 4.500 4.000 ;
+ RECT 3.300 2.900 3.700 5.100 ;
+ RECT 2.600 4.700 3.700 5.100 ;
+ RECT 2.600 4.700 3.000 9.400 ;
+ RECT 4.200 0.600 4.600 3.300 ;
+ RECT 4.200 2.900 5.300 3.300 ;
+ RECT 4.900 3.600 6.200 4.000 ;
+ RECT 4.900 2.900 5.300 5.100 ;
+ RECT 4.200 4.700 5.300 5.100 ;
+ RECT 4.200 4.700 4.600 9.400 ;
+ END
+END CLKBUF1
+
+MACRO CLKBUF2
+ CLASS CORE ;
+ FOREIGN CLKBUF2 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 10.400 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.300 0.600 4.000 ;
+ RECT 0.200 3.600 1.100 4.000 ;
+ END
+ END A
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 2.600 ;
+ RECT -0.200 -0.300 10.600 0.300 ;
+ RECT 9.800 -0.300 10.200 2.600 ;
+ RECT 8.200 -0.300 8.600 2.600 ;
+ RECT 6.600 -0.300 7.000 2.600 ;
+ RECT 5.000 -0.300 5.400 2.600 ;
+ RECT 3.400 -0.300 3.800 2.600 ;
+ RECT 1.800 -0.300 2.200 2.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 9.000 0.600 9.400 3.300 ;
+ RECT 9.000 4.700 10.200 5.100 ;
+ RECT 9.800 2.900 10.200 5.100 ;
+ RECT 9.000 2.900 10.200 3.300 ;
+ RECT 9.000 4.700 9.400 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 10.600 10.300 ;
+ RECT 9.800 5.400 10.200 10.300 ;
+ RECT 8.200 5.400 8.600 10.300 ;
+ RECT 6.600 5.400 7.000 10.300 ;
+ RECT 5.000 5.400 5.400 10.300 ;
+ RECT 3.400 5.400 3.800 10.300 ;
+ RECT 1.800 5.400 2.200 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 3.300 ;
+ RECT 1.000 2.900 1.900 3.300 ;
+ RECT 1.500 3.600 2.800 4.000 ;
+ RECT 1.500 2.900 1.900 5.100 ;
+ RECT 1.000 4.700 1.900 5.100 ;
+ RECT 1.000 4.700 1.400 9.400 ;
+ RECT 2.600 0.600 3.000 3.300 ;
+ RECT 2.600 2.900 3.700 3.300 ;
+ RECT 3.300 3.600 4.500 4.000 ;
+ RECT 3.300 2.900 3.700 5.100 ;
+ RECT 2.600 4.700 3.700 5.100 ;
+ RECT 2.600 4.700 3.000 9.400 ;
+ RECT 4.200 0.600 4.600 3.300 ;
+ RECT 4.200 2.900 5.300 3.300 ;
+ RECT 4.900 3.600 6.200 4.000 ;
+ RECT 4.900 2.900 5.300 5.100 ;
+ RECT 4.200 4.700 5.300 5.100 ;
+ RECT 4.200 4.700 4.600 9.400 ;
+ RECT 5.800 0.600 6.200 3.300 ;
+ RECT 5.800 2.900 7.000 3.300 ;
+ RECT 6.600 3.600 7.500 4.000 ;
+ RECT 6.600 2.900 7.000 5.100 ;
+ RECT 5.800 4.700 7.000 5.100 ;
+ RECT 5.800 4.700 6.200 9.400 ;
+ RECT 7.400 0.600 7.800 3.300 ;
+ RECT 7.400 2.900 8.300 3.300 ;
+ RECT 7.900 3.600 9.200 4.000 ;
+ RECT 7.900 2.900 8.300 5.100 ;
+ RECT 7.400 4.700 8.300 5.100 ;
+ RECT 7.400 4.700 7.800 9.400 ;
+ END
+END CLKBUF2
+
+MACRO CLKBUF3
+ CLASS CORE ;
+ FOREIGN CLKBUF3 0.000 0.000 ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 13.600 BY 10.000 ;
+ SYMMETRY X Y ;
+ SITE core ;
+ PIN A
+ DIRECTION INPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 3.300 0.600 4.000 ;
+ RECT 0.200 3.600 1.100 4.000 ;
+ END
+ END A
+ PIN gnd
+ DIRECTION INOUT ;
+ USE GROUND ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 -0.300 0.600 2.600 ;
+ RECT -0.200 -0.300 13.800 0.300 ;
+ RECT 13.000 -0.300 13.400 2.600 ;
+ RECT 11.400 -0.300 11.800 2.600 ;
+ RECT 9.800 -0.300 10.200 2.600 ;
+ RECT 8.200 -0.300 8.600 2.600 ;
+ RECT 6.600 -0.300 7.000 2.600 ;
+ RECT 5.000 -0.300 5.400 2.600 ;
+ RECT 3.400 -0.300 3.800 2.600 ;
+ RECT 1.800 -0.300 2.200 2.600 ;
+ END
+ END gnd
+ PIN Y
+ DIRECTION OUTPUT ;
+ PORT
+ LAYER metal1 ;
+ RECT 12.200 0.600 12.600 3.300 ;
+ RECT 12.200 4.700 13.400 5.100 ;
+ RECT 13.000 2.900 13.400 5.100 ;
+ RECT 12.200 2.900 13.400 3.300 ;
+ RECT 12.200 4.700 12.600 9.400 ;
+ END
+ END Y
+ PIN vdd
+ DIRECTION INOUT ;
+ USE POWER ;
+ SHAPE ABUTMENT ;
+ PORT
+ LAYER metal1 ;
+ RECT 0.200 5.400 0.600 10.300 ;
+ RECT -0.200 9.700 13.800 10.300 ;
+ RECT 13.000 5.400 13.400 10.300 ;
+ RECT 11.400 5.400 11.800 10.300 ;
+ RECT 9.800 5.400 10.200 10.300 ;
+ RECT 8.200 5.400 8.600 10.300 ;
+ RECT 6.600 5.400 7.000 10.300 ;
+ RECT 5.000 5.400 5.400 10.300 ;
+ RECT 3.400 5.400 3.800 10.300 ;
+ RECT 1.800 5.400 2.200 10.300 ;
+ END
+ END vdd
+ OBS
+ LAYER metal1 ;
+ RECT 1.000 0.600 1.400 3.300 ;
+ RECT 1.000 2.900 1.900 3.300 ;
+ RECT 1.500 3.600 2.800 4.000 ;
+ RECT 1.500 2.900 1.900 5.100 ;
+ RECT 1.000 4.700 1.900 5.100 ;
+ RECT 1.000 4.700 1.400 9.400 ;
+ RECT 2.600 0.600 3.000 3.300 ;
+ RECT 2.600 2.900 3.700 3.300 ;
+ RECT 3.300 3.600 4.500 4.000 ;
+ RECT 3.300 2.900 3.700 5.100 ;
+ RECT 2.600 4.700 3.700 5.100 ;
+ RECT 2.600 4.700 3.000 9.400 ;
+ RECT 4.200 0.600 4.600 3.300 ;
+ RECT 4.200 2.900 5.300 3.300 ;
+ RECT 4.900 3.600 6.200 4.000 ;
+ RECT 4.900 2.900 5.300 5.100 ;
+ RECT 4.200 4.700 5.300 5.100 ;
+ RECT 4.200 4.700 4.600 9.400 ;
+ RECT 5.800 0.600 6.200 3.300 ;
+ RECT 5.800 2.900 7.000 3.300 ;
+ RECT 6.600 3.600 7.500 4.000 ;
+ RECT 6.600 2.900 7.000 5.100 ;
+ RECT 5.800 4.700 7.000 5.100 ;
+ RECT 5.800 4.700 6.200 9.400 ;
+ RECT 7.400 0.600 7.800 3.300 ;
+ RECT 7.400 2.900 8.300 3.300 ;
+ RECT 7.900 3.600 9.200 4.000 ;
+ RECT 7.900 2.900 8.300 5.100 ;
+ RECT 7.400 4.700 8.300 5.100 ;
+ RECT 7.400 4.700 7.800 9.400 ;
+ RECT 9.000 0.600 9.400 3.300 ;
+ RECT 9.000 2.900 10.100 3.300 ;
+ RECT 9.700 3.600 10.900 4.000 ;
+ RECT 9.700 2.900 10.100 5.100 ;
+ RECT 9.000 4.700 10.100 5.100 ;
+ RECT 9.000 4.700 9.400 9.400 ;
+ RECT 10.600 0.600 11.000 3.300 ;
+ RECT 10.600 2.900 11.700 3.300 ;
+ RECT 11.300 3.600 12.600 4.000 ;
+ RECT 11.300 2.900 11.700 5.100 ;
+ RECT 10.600 4.700 11.700 5.100 ;
+ RECT 10.600 4.700 11.000 9.400 ;
+ END
+END CLKBUF3
+
+END LIBRARY
diff --git a/tech/osu018/osu018_stdcells.lib b/tech/osu018/osu018_stdcells.lib
new file mode 100755
index 0000000..ce3f257
--- /dev/null
+++ b/tech/osu018/osu018_stdcells.lib
@@ -0,0 +1,6141 @@
+/*
+ delay model : typ
+ check model : typ
+ power model : typ
+ capacitance model : typ
+ other model : typ
+*/
+library(osu018_stdcells) {
+
+ delay_model : table_lookup;
+ in_place_swap_mode : match_footprint;
+
+ /* unit attributes */
+ time_unit : "1ns";
+ voltage_unit : "1V";
+ current_unit : "1uA";
+ pulling_resistance_unit : "1kohm";
+ leakage_power_unit : "1nW";
+ capacitive_load_unit (1,pf);
+
+ slew_upper_threshold_pct_rise : 80;
+ slew_lower_threshold_pct_rise : 20;
+ slew_upper_threshold_pct_fall : 80;
+ slew_lower_threshold_pct_fall : 20;
+ input_threshold_pct_rise : 50;
+ input_threshold_pct_fall : 50;
+ output_threshold_pct_rise : 50;
+ output_threshold_pct_fall : 50;
+ nom_process : 1;
+ nom_voltage : 1.8;
+ nom_temperature : 25;
+ operating_conditions ( typical ) {
+ process : 1;
+ voltage : 1.8;
+ temperature : 25;
+ }
+ default_operating_conditions : typical;
+
+ lu_table_template(delay_template_5x1) {
+ variable_1 : input_net_transition;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ }
+ lu_table_template(delay_template_5x5) {
+ variable_1 : total_output_net_capacitance;
+ variable_2 : input_net_transition;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ }
+ lu_table_template(delay_template_5x6) {
+ variable_1 : total_output_net_capacitance;
+ variable_2 : input_net_transition;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+ lu_table_template(delay_template_6x6) {
+ variable_1 : total_output_net_capacitance;
+ variable_2 : input_net_transition;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+ power_lut_template(energy_template_5x5) {
+ variable_1 : total_output_net_capacitance;
+ variable_2 : input_transition_time;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ }
+ power_lut_template(energy_template_5x6) {
+ variable_1 : total_output_net_capacitance;
+ variable_2 : input_transition_time;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+ power_lut_template(energy_template_6x6) {
+ variable_1 : total_output_net_capacitance;
+ variable_2 : input_transition_time;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+ lu_table_template(hold_template_3x5) {
+ variable_1 : related_pin_transition;
+ variable_2 : constrained_pin_transition;
+ index_1 ("1000.0, 1001.0, 1002.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ }
+ lu_table_template(hold_template_3x6) {
+ variable_1 : related_pin_transition;
+ variable_2 : constrained_pin_transition;
+ index_1 ("1000.0, 1001.0, 1002.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+ power_lut_template(passive_energy_template_5x1) {
+ variable_1 : input_transition_time;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ }
+ power_lut_template(passive_energy_template_6x1) {
+ variable_1 : input_transition_time;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+ lu_table_template(recovery_template_3x6) {
+ variable_1 : related_pin_transition;
+ variable_2 : constrained_pin_transition;
+ index_1 ("1000.0, 1001.0, 1002.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+ lu_table_template(recovery_template_6x6) {
+ variable_1 : related_pin_transition;
+ variable_2 : constrained_pin_transition;
+ index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+ lu_table_template(removal_template_3x6) {
+ variable_1 : related_pin_transition;
+ variable_2 : constrained_pin_transition;
+ index_1 ("1000.0, 1001.0, 1002.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+ lu_table_template(setup_template_3x5) {
+ variable_1 : related_pin_transition;
+ variable_2 : constrained_pin_transition;
+ index_1 ("1000.0, 1001.0, 1002.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
+ }
+ lu_table_template(setup_template_3x6) {
+ variable_1 : related_pin_transition;
+ variable_2 : constrained_pin_transition;
+ index_1 ("1000.0, 1001.0, 1002.0");
+ index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0, 1005.0");
+ }
+
+/* --------------- *
+ * Design : AND2X1 *
+ * --------------- */
+cell (AND2X1) {
+area : 32;
+ cell_leakage_power : 0.0746794;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0129077;
+ rise_capacitance : 0.0129077;
+ fall_capacitance : 0.0128842;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0125298;
+ rise_capacitance : 0.0125298;
+ fall_capacitance : 0.0122586;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.505476;
+ function : "(A B)";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.06367, 0.070461, 0.076801, 0.076477, 0.064975", \
+ "0.078318, 0.085985, 0.097551, 0.097523, 0.084151", \
+ "0.101102, 0.106523, 0.116541, 0.12064, 0.109008", \
+ "0.186369, 0.192402, 0.20213, 0.204066, 0.197112", \
+ "0.311845, 0.327388, 0.329449, 0.331209, 0.325543");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.03002, 0.034126, 0.049111, 0.051622, 0.058375", \
+ "0.043159, 0.047719, 0.05847, 0.0606, 0.075", \
+ "0.0738, 0.0726, 0.0786, 0.0882, 0.0936", \
+ "0.1884, 0.189, 0.1908, 0.192, 0.1968", \
+ "0.366, 0.3666, 0.3684, 0.369, 0.3732");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.076128, 0.106375, 0.152212, 0.183594, 0.267424", \
+ "0.089908, 0.120622, 0.171438, 0.198723, 0.290365", \
+ "0.111016, 0.141837, 0.194222, 0.221808, 0.312359", \
+ "0.184884, 0.217444, 0.268203, 0.297785, 0.394616", \
+ "0.295351, 0.333462, 0.380054, 0.411544, 0.506596");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.023191, 0.030696, 0.049255, 0.05222, 0.0624", \
+ "0.038144, 0.042236, 0.054779, 0.066, 0.0702", \
+ "0.0648, 0.0642, 0.0744, 0.0744, 0.0876", \
+ "0.1506, 0.1512, 0.153, 0.1566, 0.1608", \
+ "0.291, 0.2916, 0.2928, 0.2928, 0.2964");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.065215, 0.070029, 0.065114, 0.06797, 0.030044", \
+ "0.080046, 0.085518, 0.084303, 0.085736, 0.052763", \
+ "0.102829, 0.108928, 0.108632, 0.109566, 0.080609", \
+ "0.188114, 0.194154, 0.19869, 0.195568, 0.171942", \
+ "0.313575, 0.323664, 0.32479, 0.321763, 0.301292");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.02568, 0.030953, 0.040555, 0.052662, 0.058886", \
+ "0.04175, 0.049456, 0.06, 0.0696, 0.0768", \
+ "0.0738, 0.0714, 0.0804, 0.087, 0.093", \
+ "0.1884, 0.1878, 0.1908, 0.1926, 0.1992", \
+ "0.366, 0.3666, 0.3672, 0.3684, 0.3744");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.086342, 0.123374, 0.175522, 0.217083, 0.314459", \
+ "0.101176, 0.139097, 0.191667, 0.230985, 0.335929", \
+ "0.121305, 0.16117, 0.21439, 0.251706, 0.358423", \
+ "0.19482, 0.23553, 0.289847, 0.328581, 0.439064", \
+ "0.306582, 0.349002, 0.400715, 0.439677, 0.549921");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.025127, 0.029204, 0.03336, 0.051446, 0.049241", \
+ "0.03916, 0.041168, 0.047199, 0.055391, 0.0648", \
+ "0.0636, 0.069, 0.0678, 0.078, 0.0774", \
+ "0.1512, 0.1518, 0.1536, 0.1548, 0.1578", \
+ "0.291, 0.2904, 0.291, 0.2928, 0.2946");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.012351, 0.01753, 0.032859, 0.046092, 0.090803", \
+ "0.013339, 0.017698, 0.032616, 0.045498, 0.08953", \
+ "0.013729, 0.018863, 0.033136, 0.045572, 0.08851", \
+ "0.014763, 0.019558, 0.033444, 0.045067, 0.086251", \
+ "0.015252, 0.020471, 0.033879, 0.045469, 0.086416");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.051843, 0.061484, 0.075909, 0.087394, 0.131465", \
+ "0.053948, 0.063015, 0.075339, 0.087007, 0.129259", \
+ "0.054045, 0.062985, 0.07537, 0.086885, 0.1283", \
+ "0.054653, 0.062832, 0.075179, 0.087109, 0.127955", \
+ "0.05485, 0.062533, 0.07543, 0.087243, 0.127915");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.013537, 0.018652, 0.030058, 0.044763, 0.08865", \
+ "0.014079, 0.018327, 0.030221, 0.044563, 0.086591", \
+ "0.014302, 0.018522, 0.030189, 0.043793, 0.085708", \
+ "0.01524, 0.018832, 0.030544, 0.042699, 0.085217", \
+ "0.015577, 0.018888, 0.031139, 0.043193, 0.085027");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.062565, 0.073373, 0.086577, 0.10111, 0.1452", \
+ "0.065226, 0.072689, 0.085935, 0.100245, 0.143405", \
+ "0.065879, 0.073131, 0.086345, 0.099667, 0.142411", \
+ "0.06752, 0.07374, 0.08798, 0.099495, 0.141641", \
+ "0.067305, 0.074406, 0.08846, 0.100126, 0.141826");
+ }
+ }
+ }
+}
+
+/* --------------- *
+ * Design : AND2X2 *
+ * --------------- */
+cell (AND2X2) {
+area : 32;
+ cell_leakage_power : 0.090278;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0129068;
+ rise_capacitance : 0.0128698;
+ fall_capacitance : 0.0129068;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0125119;
+ rise_capacitance : 0.0125119;
+ fall_capacitance : 0.0122677;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.975557;
+ function : "(A B)";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.079151, 0.091168, 0.112401, 0.116815, 0.110012", \
+ "0.094906, 0.109298, 0.130095, 0.135144, 0.12883", \
+ "0.119494, 0.131824, 0.155457, 0.159344, 0.157233", \
+ "0.206917, 0.222384, 0.241527, 0.246456, 0.248042", \
+ "0.336707, 0.351629, 0.370971, 0.375914, 0.378028");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.035696, 0.039511, 0.054169, 0.05627, 0.0702", \
+ "0.051008, 0.056876, 0.0702, 0.0726, 0.0798", \
+ "0.0756, 0.0798, 0.0894, 0.0918, 0.1056", \
+ "0.1932, 0.1968, 0.1974, 0.1992, 0.2058", \
+ "0.378, 0.378, 0.3798, 0.381, 0.384");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.093907, 0.13403, 0.18857, 0.218416, 0.32176", \
+ "0.109237, 0.15259, 0.205536, 0.241165, 0.340988", \
+ "0.132441, 0.175416, 0.229071, 0.263575, 0.366037", \
+ "0.214386, 0.257165, 0.311103, 0.348813, 0.453364", \
+ "0.334685, 0.376026, 0.432567, 0.46796, 0.572264");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032309, 0.035034, 0.053938, 0.0618, 0.0654", \
+ "0.054496, 0.0581, 0.069, 0.0696, 0.0768", \
+ "0.0732, 0.075, 0.0786, 0.0876, 0.0978", \
+ "0.1632, 0.1662, 0.1668, 0.1704, 0.1764", \
+ "0.3156, 0.315, 0.3156, 0.3174, 0.3204");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.081559, 0.090357, 0.092534, 0.091354, 0.070717", \
+ "0.097397, 0.107931, 0.113633, 0.110762, 0.095186", \
+ "0.121832, 0.129937, 0.138311, 0.139972, 0.12199", \
+ "0.208737, 0.218082, 0.225122, 0.227706, 0.21528", \
+ "0.338379, 0.353386, 0.358576, 0.359126, 0.346878");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.036916, 0.048718, 0.047469, 0.059474, 0.0684", \
+ "0.05105, 0.055258, 0.063, 0.0684, 0.0792", \
+ "0.0756, 0.0792, 0.0906, 0.0912, 0.1014", \
+ "0.1938, 0.1962, 0.1968, 0.1992, 0.2064", \
+ "0.378, 0.378, 0.3792, 0.3804, 0.3852");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.103564, 0.145068, 0.207945, 0.242964, 0.357798", \
+ "0.119673, 0.162172, 0.227495, 0.263905, 0.381804", \
+ "0.143018, 0.187723, 0.250938, 0.290462, 0.406679", \
+ "0.224466, 0.268745, 0.332739, 0.372766, 0.491968", \
+ "0.345577, 0.387664, 0.45055, 0.491515, 0.610706");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.030793, 0.033285, 0.041193, 0.049891, 0.0606", \
+ "0.051182, 0.054372, 0.05968, 0.0696, 0.0726", \
+ "0.072, 0.069, 0.0846, 0.0876, 0.0924", \
+ "0.1668, 0.1668, 0.1686, 0.1686, 0.1722", \
+ "0.3156, 0.3156, 0.3168, 0.3168, 0.318");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.035999, 0.038715, 0.059579, 0.073077, 0.118449", \
+ "0.037968, 0.039043, 0.059066, 0.07139, 0.11484", \
+ "0.038182, 0.039703, 0.057496, 0.069577, 0.112525", \
+ "0.039912, 0.043893, 0.056441, 0.06669, 0.107963", \
+ "0.040724, 0.04515, 0.056218, 0.067369, 0.107406");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.074272, 0.081015, 0.097734, 0.112162, 0.158445", \
+ "0.073801, 0.081767, 0.096117, 0.108499, 0.153047", \
+ "0.076291, 0.082021, 0.095328, 0.107162, 0.149707", \
+ "0.078079, 0.082673, 0.096068, 0.107066, 0.147203", \
+ "0.0781, 0.083521, 0.096298, 0.107338, 0.147001");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038631, 0.040743, 0.05645, 0.068737, 0.116469", \
+ "0.040765, 0.040589, 0.055418, 0.067048, 0.112598", \
+ "0.040617, 0.040473, 0.054706, 0.06586, 0.110001", \
+ "0.041329, 0.041845, 0.054698, 0.065431, 0.10611", \
+ "0.041651, 0.042621, 0.054878, 0.065731, 0.105909");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.084865, 0.09187, 0.111881, 0.123101, 0.172144", \
+ "0.087084, 0.092993, 0.111047, 0.120415, 0.168159", \
+ "0.088325, 0.09227, 0.108629, 0.121633, 0.165087", \
+ "0.090064, 0.094995, 0.109267, 0.120689, 0.161319", \
+ "0.090229, 0.095784, 0.109314, 0.120709, 0.161502");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : AOI21X1 *
+ * ---------------- */
+cell (AOI21X1) {
+area : 32;
+ cell_leakage_power : 0.0515209;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0173593;
+ rise_capacitance : 0.0170698;
+ fall_capacitance : 0.0173593;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0179733;
+ rise_capacitance : 0.0174936;
+ fall_capacitance : 0.0179733;
+ }
+ pin(C) {
+ direction : input;
+ capacitance : 0.0150799;
+ rise_capacitance : 0.0150575;
+ fall_capacitance : 0.0150799;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.494067;
+ function : "(!((A B)+C))";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.047915, 0.060212, 0.067163, 0.069103, 0.070089", \
+ "0.05909, 0.074221, 0.08307, 0.09116, 0.096894", \
+ "0.076858, 0.094301, 0.110559, 0.120474, 0.134719", \
+ "0.13882, 0.160652, 0.194186, 0.212651, 0.254514", \
+ "0.231208, 0.253692, 0.295337, 0.321981, 0.388552");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.034132, 0.063, 0.0906, 0.1116, 0.168", \
+ "0.052839, 0.0732, 0.108, 0.1272, 0.1932", \
+ "0.0672, 0.0882, 0.1242, 0.144, 0.219", \
+ "0.1464, 0.1536, 0.1878, 0.2166, 0.3024", \
+ "0.2676, 0.2688, 0.291, 0.3162, 0.4056");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.064718, 0.082701, 0.106751, 0.125102, 0.180744", \
+ "0.080174, 0.098818, 0.126855, 0.147241, 0.210669", \
+ "0.100295, 0.124476, 0.155884, 0.179478, 0.251019", \
+ "0.189553, 0.21113, 0.256309, 0.285843, 0.375986", \
+ "0.31622, 0.336614, 0.386991, 0.424065, 0.529812");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.048645, 0.0678, 0.0918, 0.1146, 0.1578", \
+ "0.06, 0.0816, 0.1128, 0.1278, 0.1794", \
+ "0.09, 0.1068, 0.135, 0.153, 0.2148", \
+ "0.2082, 0.2124, 0.2388, 0.261, 0.3264", \
+ "0.3858, 0.3852, 0.3996, 0.4188, 0.492");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.049492, 0.060665, 0.079308, 0.091203, 0.11301", \
+ "0.059982, 0.083223, 0.105699, 0.115734, 0.142968", \
+ "0.075933, 0.10303, 0.132388, 0.150129, 0.184911", \
+ "0.138897, 0.172235, 0.225315, 0.253245, 0.316038", \
+ "0.232339, 0.264177, 0.331505, 0.373206, 0.467627");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.036341, 0.06, 0.102, 0.1212, 0.1794", \
+ "0.054499, 0.0828, 0.114, 0.1374, 0.201", \
+ "0.0666, 0.0948, 0.1344, 0.159, 0.2376", \
+ "0.1464, 0.1572, 0.2076, 0.2388, 0.3348", \
+ "0.2676, 0.2682, 0.303, 0.3408, 0.4542");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.055077, 0.073278, 0.084771, 0.098675, 0.132128", \
+ "0.070455, 0.087716, 0.1086, 0.124224, 0.167364", \
+ "0.092563, 0.114522, 0.141653, 0.160472, 0.214472", \
+ "0.181857, 0.201909, 0.245085, 0.272242, 0.351721", \
+ "0.309465, 0.3284, 0.377731, 0.413032, 0.511912");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.039657, 0.057392, 0.0918, 0.1104, 0.1548", \
+ "0.051732, 0.075, 0.1008, 0.1248, 0.1794", \
+ "0.0828, 0.0966, 0.1284, 0.1518, 0.21", \
+ "0.1986, 0.2022, 0.2298, 0.2532, 0.3234", \
+ "0.3756, 0.3762, 0.3912, 0.411, 0.486");
+ }
+ }
+ timing() {
+ related_pin : "C";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.040927, 0.054774, 0.07418, 0.082139, 0.103563", \
+ "0.055377, 0.076133, 0.100949, 0.114073, 0.146048", \
+ "0.074977, 0.103939, 0.138062, 0.157255, 0.201662", \
+ "0.150359, 0.185939, 0.249198, 0.282431, 0.362184", \
+ "0.263086, 0.297154, 0.37096, 0.422663, 0.541719");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032516, 0.062798, 0.0975, 0.1203, 0.1728", \
+ "0.048692, 0.0774, 0.1134, 0.1371, 0.2022", \
+ "0.0663, 0.0906, 0.138, 0.1641, 0.2382", \
+ "0.1602, 0.1671, 0.2166, 0.2541, 0.3528", \
+ "0.2994, 0.2997, 0.3258, 0.363, 0.4899");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.047529, 0.066647, 0.090407, 0.10183, 0.137361", \
+ "0.059937, 0.084705, 0.114419, 0.133901, 0.177228", \
+ "0.078431, 0.112276, 0.150614, 0.173776, 0.230771", \
+ "0.154015, 0.191568, 0.259108, 0.296207, 0.387531", \
+ "0.265695, 0.302125, 0.380136, 0.434427, 0.565985");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.041826, 0.0747, 0.0897, 0.111, 0.1569", \
+ "0.053506, 0.0849, 0.1134, 0.1293, 0.1863", \
+ "0.0768, 0.1044, 0.141, 0.1611, 0.2268", \
+ "0.1791, 0.186, 0.2325, 0.2679, 0.3531", \
+ "0.3339, 0.3345, 0.3603, 0.3945, 0.5094");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.01884, 0.015378, 0.002987, 0.018991, 0.076233", \
+ "0.018379, 0.014956, 0.000845, 0.016266, 0.071924", \
+ "0.018063, 0.015186, 0.00144, 0.012644, 0.065864", \
+ "0.017216, 0.016158, 0.006591, 0.004175, 0.04943", \
+ "0.016838, 0.016602, 0.009608, 0.001584, 0.035332");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.091023, 0.091252, 0.108402, 0.124045, 0.182645", \
+ "0.089299, 0.091534, 0.10694, 0.121957, 0.179202", \
+ "0.090732, 0.091004, 0.104261, 0.118649, 0.174125", \
+ "0.09076, 0.090645, 0.100016, 0.111306, 0.158859", \
+ "0.091388, 0.091076, 0.097453, 0.106102, 0.145954");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.018566, 0.013046, 0.004696, 0.020236, 0.074908", \
+ "0.018223, 0.01362, 0.002409, 0.017471, 0.070868", \
+ "0.017705, 0.013684, 0.00017, 0.013747, 0.065047", \
+ "0.017097, 0.015358, 0.005946, 0.004681, 0.048729", \
+ "0.016861, 0.016115, 0.009462, 0.001479, 0.034466");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.076734, 0.079298, 0.095157, 0.110941, 0.166091", \
+ "0.077202, 0.07904, 0.09362, 0.10795, 0.162013", \
+ "0.0786, 0.078901, 0.091229, 0.10469, 0.156162", \
+ "0.080713, 0.079266, 0.087636, 0.097937, 0.14147", \
+ "0.082064, 0.080484, 0.085746, 0.093548, 0.129674");
+ }
+ }
+ internal_power() {
+ related_pin : "C";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.018953, 0.013695, 0.002159, 0.014727, 0.058473", \
+ "0.018108, 0.014132, 0.000778, 0.011816, 0.054292", \
+ "0.016648, 0.014865, 0.002678, 0.008304, 0.048784", \
+ "0.014337, 0.014426, 0.007209, 0.000966, 0.034909", \
+ "0.013051, 0.013508, 0.00931, 0.00346, 0.023891");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.052359, 0.058578, 0.072513, 0.084065, 0.125476", \
+ "0.052467, 0.057513, 0.070505, 0.081461, 0.121554", \
+ "0.052973, 0.056219, 0.067995, 0.078279, 0.116559", \
+ "0.054189, 0.054888, 0.063141, 0.071481, 0.104394", \
+ "0.054944, 0.055102, 0.060377, 0.066747, 0.094347");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : AOI22X1 *
+ * ---------------- */
+cell (AOI22X1) {
+area : 40;
+ cell_leakage_power : 0.0588648;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0173718;
+ rise_capacitance : 0.0170846;
+ fall_capacitance : 0.0173718;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0179972;
+ rise_capacitance : 0.0175034;
+ fall_capacitance : 0.0179972;
+ }
+ pin(C) {
+ direction : input;
+ capacitance : 0.0182378;
+ rise_capacitance : 0.0182378;
+ fall_capacitance : 0.0180284;
+ }
+ pin(D) {
+ direction : input;
+ capacitance : 0.0186552;
+ rise_capacitance : 0.0186345;
+ fall_capacitance : 0.0186552;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.484829;
+ function : "(!((A B)+(C D)))";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.059558, 0.073754, 0.085031, 0.09237, 0.102238", \
+ "0.07058, 0.086236, 0.101938, 0.110973, 0.125485", \
+ "0.086388, 0.104904, 0.127903, 0.139455, 0.161089", \
+ "0.149571, 0.171416, 0.206445, 0.227382, 0.273242", \
+ "0.242188, 0.264574, 0.306552, 0.334379, 0.404558");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.051245, 0.0717, 0.1065, 0.1296, 0.1908", \
+ "0.062189, 0.0804, 0.1167, 0.1398, 0.2076", \
+ "0.081, 0.0972, 0.1335, 0.1593, 0.2328", \
+ "0.1605, 0.1662, 0.2013, 0.2277, 0.3117", \
+ "0.2802, 0.2814, 0.3018, 0.3273, 0.4173");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.077033, 0.09881, 0.125826, 0.145776, 0.206338", \
+ "0.089617, 0.113047, 0.142975, 0.164835, 0.231783", \
+ "0.107809, 0.13482, 0.170236, 0.194768, 0.268272", \
+ "0.184454, 0.210985, 0.262028, 0.29356, 0.386243", \
+ "0.296011, 0.322621, 0.379046, 0.41979, 0.531586");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.057564, 0.0732, 0.1017, 0.1257, 0.1743", \
+ "0.070588, 0.0864, 0.1191, 0.1395, 0.1953", \
+ "0.0957, 0.1083, 0.1437, 0.1635, 0.2259", \
+ "0.1986, 0.204, 0.2322, 0.2577, 0.33", \
+ "0.3549, 0.3546, 0.372, 0.3945, 0.4758");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.060499, 0.083279, 0.106107, 0.118099, 0.147539", \
+ "0.070377, 0.096739, 0.123079, 0.139748, 0.17443", \
+ "0.086504, 0.115719, 0.152173, 0.169862, 0.213697", \
+ "0.149623, 0.18266, 0.239418, 0.268681, 0.337737", \
+ "0.243324, 0.274964, 0.342875, 0.386367, 0.485573");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.051394, 0.0804, 0.1155, 0.1389, 0.204", \
+ "0.062424, 0.0867, 0.1257, 0.1533, 0.2229", \
+ "0.0816, 0.1029, 0.147, 0.1761, 0.2544", \
+ "0.1608, 0.1704, 0.219, 0.2526, 0.3495", \
+ "0.2802, 0.2817, 0.3138, 0.351, 0.4674");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.069362, 0.087059, 0.107361, 0.122199, 0.163316", \
+ "0.081873, 0.103323, 0.128196, 0.144999, 0.193609", \
+ "0.10122, 0.125231, 0.156939, 0.177262, 0.235215", \
+ "0.177716, 0.203377, 0.251819, 0.281169, 0.363544", \
+ "0.28987, 0.315506, 0.370789, 0.409941, 0.515064");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.047614, 0.0672, 0.0957, 0.1209, 0.1779", \
+ "0.061365, 0.0798, 0.114, 0.1344, 0.1977", \
+ "0.0885, 0.1008, 0.1374, 0.1584, 0.225", \
+ "0.1905, 0.195, 0.2262, 0.2529, 0.3279", \
+ "0.3468, 0.3462, 0.3645, 0.387, 0.4719");
+ }
+ }
+ timing() {
+ related_pin : "C";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.043116, 0.051263, 0.049222, 0.046851, 0.028806", \
+ "0.053362, 0.064879, 0.070894, 0.070263, 0.060648", \
+ "0.070468, 0.084656, 0.098411, 0.103026, 0.103853", \
+ "0.133327, 0.154566, 0.184787, 0.200938, 0.231736", \
+ "0.225667, 0.24762, 0.288028, 0.31323, 0.372808");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.034602, 0.063, 0.0921, 0.1152, 0.1704", \
+ "0.048178, 0.075, 0.1044, 0.1269, 0.1893", \
+ "0.0657, 0.0882, 0.1206, 0.144, 0.2166", \
+ "0.1443, 0.1536, 0.1872, 0.2148, 0.2985", \
+ "0.2649, 0.2667, 0.2892, 0.3153, 0.4038");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.063545, 0.094871, 0.136401, 0.16142, 0.242981", \
+ "0.07483, 0.1105, 0.154295, 0.185845, 0.272672", \
+ "0.094749, 0.132305, 0.185895, 0.218339, 0.313591", \
+ "0.169409, 0.208046, 0.283047, 0.327487, 0.447253", \
+ "0.281497, 0.318212, 0.398529, 0.457162, 0.610092");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.052268, 0.0828, 0.1041, 0.1233, 0.1653", \
+ "0.070018, 0.0924, 0.1254, 0.1383, 0.192", \
+ "0.0909, 0.1095, 0.1491, 0.1689, 0.2271", \
+ "0.195, 0.2016, 0.2415, 0.273, 0.3516", \
+ "0.3492, 0.3501, 0.3723, 0.4038, 0.5091");
+ }
+ }
+ timing() {
+ related_pin : "D";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.042736, 0.053327, 0.064886, 0.066692, 0.066033", \
+ "0.054666, 0.069528, 0.085321, 0.092299, 0.100861", \
+ "0.070329, 0.094855, 0.118569, 0.128733, 0.148953", \
+ "0.133457, 0.165786, 0.215247, 0.238769, 0.290855", \
+ "0.227208, 0.258062, 0.324137, 0.363734, 0.449975");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.036357, 0.0663, 0.0963, 0.1182, 0.1797", \
+ "0.049069, 0.0738, 0.117, 0.1359, 0.2046", \
+ "0.0672, 0.0945, 0.1338, 0.1596, 0.2355", \
+ "0.1443, 0.1563, 0.2049, 0.2382, 0.3345", \
+ "0.2649, 0.2661, 0.3012, 0.3399, 0.4542");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.055133, 0.083033, 0.112962, 0.137088, 0.19711", \
+ "0.066932, 0.099166, 0.13773, 0.161212, 0.231136", \
+ "0.087392, 0.123134, 0.169512, 0.198112, 0.27848", \
+ "0.163047, 0.200404, 0.272061, 0.313522, 0.422928", \
+ "0.275586, 0.31125, 0.390389, 0.44751, 0.592551");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.045942, 0.0738, 0.1017, 0.1119, 0.1644", \
+ "0.059367, 0.0882, 0.1167, 0.1338, 0.189", \
+ "0.0834, 0.105, 0.1437, 0.165, 0.2268", \
+ "0.1872, 0.1923, 0.2361, 0.2679, 0.3495", \
+ "0.3417, 0.3423, 0.3654, 0.3975, 0.5052");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.017252, 0.014504, 0.002012, 0.017593, 0.073678", \
+ "0.016991, 0.014085, 0.001121, 0.015296, 0.070035", \
+ "0.01643, 0.014244, 0.001354, 0.012311, 0.064843", \
+ "0.01571, 0.014909, 0.00564, 0.00501, 0.050029", \
+ "0.015323, 0.015251, 0.008357, 0.001706, 0.036823");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.115446, 0.116135, 0.129847, 0.144513, 0.201731", \
+ "0.116415, 0.116075, 0.128039, 0.142387, 0.198152", \
+ "0.116086, 0.116647, 0.126483, 0.139869, 0.193572", \
+ "0.116179, 0.116861, 0.123363, 0.133721, 0.179649", \
+ "0.116614, 0.115892, 0.121362, 0.129414, 0.167706");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.016981, 0.012866, 0.003748, 0.018859, 0.072511", \
+ "0.016622, 0.013066, 0.002135, 0.016484, 0.069066", \
+ "0.016337, 0.01353, 0.001276, 0.013404, 0.064006", \
+ "0.015625, 0.014455, 0.00495, 0.005528, 0.049308", \
+ "0.015302, 0.014761, 0.008174, 0.001762, 0.036019");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.103614, 0.103917, 0.116687, 0.130781, 0.184576", \
+ "0.104035, 0.104344, 0.115506, 0.128643, 0.180928", \
+ "0.104894, 0.104706, 0.113914, 0.126271, 0.175692", \
+ "0.106145, 0.105647, 0.111102, 0.120551, 0.162396", \
+ "0.107214, 0.105361, 0.109731, 0.116971, 0.151643");
+ }
+ }
+ internal_power() {
+ related_pin : "C";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.019796, 0.015099, 0.002586, 0.017576, 0.070439", \
+ "0.018534, 0.015991, 0.000882, 0.014832, 0.066302", \
+ "0.017084, 0.016253, 0.00167, 0.011388, 0.060581", \
+ "0.014548, 0.015105, 0.005856, 0.004036, 0.0455", \
+ "0.013335, 0.01384, 0.007841, 0.000506, 0.033248");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.079176, 0.085628, 0.10238, 0.116879, 0.166948", \
+ "0.079246, 0.084479, 0.100338, 0.114328, 0.163665", \
+ "0.079457, 0.083914, 0.097961, 0.111276, 0.159308", \
+ "0.080706, 0.081878, 0.092798, 0.10383, 0.146816", \
+ "0.081347, 0.081968, 0.089357, 0.097961, 0.134919");
+ }
+ }
+ internal_power() {
+ related_pin : "D";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.018921, 0.013487, 0.004758, 0.019294, 0.070418", \
+ "0.018072, 0.013734, 0.002565, 0.016448, 0.066247", \
+ "0.016721, 0.013837, 0.000845, 0.012859, 0.060584", \
+ "0.01445, 0.014048, 0.005005, 0.004885, 0.045461", \
+ "0.013184, 0.013269, 0.007554, 0.000456, 0.033016");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.067102, 0.073574, 0.089864, 0.103549, 0.151461", \
+ "0.067404, 0.073003, 0.087748, 0.101072, 0.147805", \
+ "0.068244, 0.072128, 0.08545, 0.0979, 0.143101", \
+ "0.070645, 0.070678, 0.080594, 0.090759, 0.130749", \
+ "0.07195, 0.071514, 0.077661, 0.085554, 0.119758");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : BUFX2 *
+ * -------------- */
+cell (BUFX2) {
+ cell_footprint : buf;
+area : 24;
+ cell_leakage_power : 0.0660639;
+ pin(A) {
+ direction : input;
+ capacitance : 0.00933171;
+ rise_capacitance : 0.00930577;
+ fall_capacitance : 0.00933171;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.975984;
+ function : "A";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.080192, 0.099332, 0.125551, 0.141601, 0.160879", \
+ "0.09527, 0.119121, 0.146424, 0.159624, 0.180791", \
+ "0.119549, 0.142384, 0.170285, 0.182826, 0.208459", \
+ "0.206725, 0.226318, 0.258778, 0.269216, 0.29682", \
+ "0.336459, 0.356012, 0.387945, 0.399852, 0.425204");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.035642, 0.045563, 0.054071, 0.057308, 0.0714", \
+ "0.050072, 0.056113, 0.0636, 0.0738, 0.0786", \
+ "0.075, 0.084, 0.087, 0.0894, 0.1002", \
+ "0.1932, 0.1938, 0.1956, 0.198, 0.2046", \
+ "0.378, 0.378, 0.378, 0.3792, 0.3816");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.089994, 0.120328, 0.164981, 0.192952, 0.273426", \
+ "0.105036, 0.137433, 0.18812, 0.215291, 0.293841", \
+ "0.126393, 0.161711, 0.209388, 0.240117, 0.319216", \
+ "0.207389, 0.241744, 0.292741, 0.321104, 0.405447", \
+ "0.326255, 0.363651, 0.411543, 0.440746, 0.523808");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.039104, 0.036002, 0.057053, 0.0624, 0.0708", \
+ "0.045857, 0.047088, 0.0684, 0.0702, 0.0768", \
+ "0.0726, 0.0744, 0.0786, 0.084, 0.0972", \
+ "0.165, 0.1656, 0.1668, 0.1692, 0.1764", \
+ "0.315, 0.3156, 0.3168, 0.3162, 0.3198");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.03658, 0.03891, 0.056883, 0.069415, 0.11089", \
+ "0.038085, 0.039057, 0.055117, 0.067529, 0.106812", \
+ "0.038003, 0.039633, 0.053668, 0.064651, 0.102782", \
+ "0.0397, 0.044023, 0.054656, 0.064068, 0.099339", \
+ "0.040525, 0.044916, 0.055363, 0.064444, 0.098589");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.065076, 0.073013, 0.086097, 0.096905, 0.139646", \
+ "0.064781, 0.072449, 0.084139, 0.093176, 0.13361", \
+ "0.066108, 0.072526, 0.082909, 0.094136, 0.129964", \
+ "0.06771, 0.073062, 0.083144, 0.093032, 0.127476", \
+ "0.068291, 0.073042, 0.083768, 0.092995, 0.127196");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : BUFX4 *
+ * -------------- */
+cell (BUFX4) {
+ cell_footprint : buf;
+area : 32;
+ cell_leakage_power : 0.112874;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0139855;
+ rise_capacitance : 0.0139855;
+ fall_capacitance : 0.013977;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 1.95039;
+ function : "A";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.094477, 0.118917, 0.151175, 0.170545, 0.198697", \
+ "0.108268, 0.136412, 0.17212, 0.189943, 0.218536", \
+ "0.131873, 0.161346, 0.197906, 0.213426, 0.248242", \
+ "0.219765, 0.24781, 0.283692, 0.300935, 0.338057", \
+ "0.352268, 0.380624, 0.412859, 0.429202, 0.465845");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.046281, 0.039491, 0.057229, 0.058188, 0.0714", \
+ "0.050589, 0.052795, 0.066, 0.0762, 0.0876", \
+ "0.0804, 0.0822, 0.0924, 0.096, 0.111", \
+ "0.1968, 0.195, 0.1986, 0.2004, 0.2088", \
+ "0.378, 0.3786, 0.3798, 0.3798, 0.3834");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.096657, 0.137402, 0.190461, 0.220804, 0.300489", \
+ "0.114807, 0.156287, 0.204939, 0.239659, 0.321534", \
+ "0.138395, 0.179398, 0.231548, 0.262645, 0.349399", \
+ "0.220463, 0.261654, 0.314512, 0.347774, 0.436449", \
+ "0.34088, 0.380615, 0.434973, 0.466641, 0.554835");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.042949, 0.037058, 0.05589, 0.056171, 0.0708", \
+ "0.05743, 0.0612, 0.0678, 0.0732, 0.0834", \
+ "0.0774, 0.0786, 0.0834, 0.0924, 0.1044", \
+ "0.1668, 0.1686, 0.1686, 0.1728, 0.1818", \
+ "0.3168, 0.3168, 0.3174, 0.3192, 0.3228");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.079355, 0.092501, 0.114694, 0.133098, 0.19854", \
+ "0.08082, 0.089804, 0.108722, 0.12801, 0.185272", \
+ "0.081934, 0.089236, 0.106385, 0.124121, 0.177529", \
+ "0.085841, 0.089194, 0.104203, 0.115974, 0.170571", \
+ "0.086429, 0.090348, 0.104476, 0.116805, 0.167856");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.113213, 0.128563, 0.154335, 0.175638, 0.240473", \
+ "0.118931, 0.129253, 0.143695, 0.166165, 0.225257", \
+ "0.120815, 0.128692, 0.144521, 0.161484, 0.21689", \
+ "0.123609, 0.128749, 0.144859, 0.158581, 0.208574", \
+ "0.123005, 0.130448, 0.145475, 0.15896, 0.207448");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : CLKBUF1 *
+ * ---------------- */
+cell (CLKBUF1) {
+ cell_footprint : buf;
+area : 72;
+ cell_leakage_power : 0.352221;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0373913;
+ rise_capacitance : 0.0373913;
+ fall_capacitance : 0.0373758;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 1.95928;
+ function : "A";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.168143, 0.183015, 0.204676, 0.218411, 0.224292, 0.227969", \
+ "0.340692, 0.35709, 0.379018, 0.392042, 0.404133, 0.411802", \
+ "0.642727, 0.659179, 0.681041, 0.704111, 0.705919, 0.713961", \
+ "1.41986, 1.43638, 1.45833, 1.48108, 1.48603, 1.49136", \
+ "1.85216, 1.86801, 1.88929, 1.9131, 1.91767, 1.92258", \
+ "2.28372, 2.30018, 2.32154, 2.34438, 2.34984, 2.35428");
+ }
+ rise_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.0768, 0.072, 0.0738, 0.0762, 0.0744, 0.0768", \
+ "0.3156, 0.3156, 0.315, 0.315, 0.3156, 0.3156", \
+ "0.7452, 0.7452, 0.744, 0.7452, 0.7452, 0.7446", \
+ "1.8504, 1.8504, 1.8504, 1.851, 1.8504, 1.851", \
+ "2.466, 2.4654, 2.466, 2.4666, 2.4648, 2.466", \
+ "3.0804, 3.081, 3.0798, 3.0798, 3.0804, 3.0804");
+ }
+ cell_fall(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.171898, 0.209013, 0.238962, 0.289989, 0.323338, 0.374155", \
+ "0.330297, 0.368254, 0.398808, 0.448915, 0.482008, 0.538509", \
+ "0.606906, 0.645017, 0.675653, 0.725812, 0.758901, 0.815565", \
+ "1.31873, 1.35685, 1.38712, 1.43771, 1.47029, 1.52749", \
+ "1.71431, 1.75246, 1.78241, 1.83326, 1.86622, 1.92306", \
+ "2.10966, 2.14763, 2.17812, 2.22879, 2.26112, 2.31861");
+ }
+ fall_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.0648, 0.063, 0.0666, 0.0684, 0.0618, 0.0684", \
+ "0.2616, 0.2616, 0.2628, 0.2628, 0.2628, 0.2628", \
+ "0.6168, 0.6168, 0.6162, 0.6168, 0.6168, 0.6168", \
+ "1.5312, 1.53, 1.5306, 1.5312, 1.5312, 1.5306", \
+ "2.0394, 2.0394, 2.0382, 2.0394, 2.0394, 2.0388", \
+ "2.5476, 2.5476, 2.5464, 2.5476, 2.5458, 2.5476");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.230035, 0.255216, 0.321324, 0.420025, 0.492297, 0.633715", \
+ "0.234501, 0.258663, 0.327011, 0.423913, 0.490504, 0.638684", \
+ "0.235402, 0.259609, 0.328388, 0.412522, 0.491125, 0.64063", \
+ "0.234015, 0.260022, 0.328987, 0.41302, 0.488217, 0.641615", \
+ "0.233949, 0.26015, 0.32931, 0.41342, 0.48807, 0.64199", \
+ "0.23428, 0.26007, 0.32922, 0.413416, 0.488471, 0.642");
+ }
+ fall_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.353671, 0.385256, 0.429396, 0.538556, 0.609563, 0.759305", \
+ "0.35517, 0.38778, 0.431764, 0.541422, 0.612262, 0.761955", \
+ "0.355302, 0.388239, 0.432452, 0.541993, 0.613065, 0.763151", \
+ "0.355385, 0.388522, 0.432782, 0.542278, 0.613428, 0.763567", \
+ "0.355551, 0.388693, 0.433049, 0.542469, 0.613581, 0.763856", \
+ "0.3556, 0.388816, 0.432977, 0.542237, 0.61366, 0.763712");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : CLKBUF2 *
+ * ---------------- */
+cell (CLKBUF2) {
+ cell_footprint : buf;
+area : 104;
+ cell_leakage_power : 0.548764;
+ pin(A) {
+ direction : input;
+ capacitance : 0.037409;
+ rise_capacitance : 0.037409;
+ fall_capacitance : 0.0373773;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 1.96195;
+ function : "A";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.231101, 0.25098, 0.270172, 0.286134, 0.291134, 0.293352", \
+ "0.407523, 0.424195, 0.441497, 0.457232, 0.464429, 0.467226", \
+ "0.709412, 0.726144, 0.743538, 0.759384, 0.766413, 0.772549", \
+ "1.48587, 1.50277, 1.52051, 1.53634, 1.54292, 1.54911", \
+ "1.9178, 1.93426, 1.95217, 1.96797, 1.97524, 1.98152", \
+ "2.34982, 2.36644, 2.38381, 2.40013, 2.40661, 2.41316");
+ }
+ rise_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.0756, 0.072, 0.072, 0.0738, 0.0726, 0.0726", \
+ "0.3144, 0.3156, 0.3156, 0.3156, 0.3156, 0.3156", \
+ "0.7446, 0.7446, 0.7446, 0.7452, 0.7446, 0.7446", \
+ "1.8498, 1.8504, 1.851, 1.8504, 1.8504, 1.8504", \
+ "2.4648, 2.466, 2.466, 2.4654, 2.4654, 2.4654", \
+ "3.0798, 3.0804, 3.0798, 3.081, 3.0804, 3.0792");
+ }
+ cell_fall(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.237151, 0.273513, 0.303669, 0.357429, 0.38715, 0.439064", \
+ "0.395538, 0.432664, 0.462126, 0.516443, 0.546053, 0.597581", \
+ "0.672499, 0.712585, 0.739108, 0.79317, 0.822941, 0.874386", \
+ "1.38386, 1.42405, 1.45077, 1.50516, 1.53467, 1.58634", \
+ "1.77945, 1.81979, 1.84606, 1.9007, 1.93037, 1.98171", \
+ "2.17547, 2.21509, 2.24142, 2.29593, 2.32564, 2.37648");
+ }
+ fall_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.0624, 0.0678, 0.0654, 0.0618, 0.0666, 0.0642", \
+ "0.2622, 0.2622, 0.2616, 0.2628, 0.2628, 0.2628", \
+ "0.6168, 0.6168, 0.6168, 0.6168, 0.6162, 0.6168", \
+ "1.5312, 1.5306, 1.5306, 1.5312, 1.5306, 1.53", \
+ "2.0388, 2.0388, 2.0376, 2.0388, 2.0388, 2.0382", \
+ "2.5476, 2.5464, 2.5458, 2.5476, 2.5482, 2.5464");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.407535, 0.42745, 0.493283, 0.589349, 0.665537, 0.813485", \
+ "0.416735, 0.433198, 0.504101, 0.601088, 0.66997, 0.818487", \
+ "0.417986, 0.434291, 0.505001, 0.601282, 0.670891, 0.80778", \
+ "0.418682, 0.434887, 0.505709, 0.60217, 0.671759, 0.808482", \
+ "0.418933, 0.434931, 0.505977, 0.602236, 0.671561, 0.80855", \
+ "0.4189, 0.435265, 0.505945, 0.602361, 0.671877, 0.808502");
+ }
+ fall_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.528849, 0.563066, 0.602892, 0.706677, 0.780092, 0.934708", \
+ "0.532688, 0.567377, 0.606397, 0.71032, 0.783573, 0.937407", \
+ "0.533324, 0.559561, 0.606931, 0.711026, 0.784325, 0.937969", \
+ "0.533553, 0.560266, 0.607245, 0.711439, 0.784616, 0.938267", \
+ "0.533579, 0.560528, 0.6074, 0.711702, 0.784756, 0.938157", \
+ "0.533815, 0.559945, 0.607495, 0.711832, 0.784615, 0.938139");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : CLKBUF3 *
+ * ---------------- */
+cell (CLKBUF3) {
+ cell_footprint : buf;
+area : 136;
+ cell_leakage_power : 0.745304;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0373938;
+ rise_capacitance : 0.0373938;
+ fall_capacitance : 0.0373674;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 1.96085;
+ function : "A";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.294709, 0.31169, 0.33559, 0.351998, 0.355536, 0.360151", \
+ "0.476517, 0.48564, 0.50671, 0.522794, 0.529119, 0.533172", \
+ "0.778644, 0.787463, 0.808733, 0.824881, 0.831107, 0.835158", \
+ "1.55587, 1.56467, 1.58567, 1.60104, 1.60814, 1.61162", \
+ "1.98756, 1.99562, 2.01749, 2.03278, 2.03978, 2.04388", \
+ "2.41922, 2.42762, 2.44964, 2.46398, 2.47131, 2.47588");
+ }
+ rise_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.0762, 0.0738, 0.0738, 0.0738, 0.0762, 0.0744", \
+ "0.3156, 0.3144, 0.3156, 0.315, 0.3156, 0.3162", \
+ "0.7446, 0.7446, 0.7452, 0.7446, 0.744, 0.7446", \
+ "1.851, 1.8504, 1.8504, 1.8498, 1.8504, 1.8504", \
+ "2.466, 2.466, 2.4654, 2.466, 2.4654, 2.466", \
+ "3.0804, 3.081, 3.081, 3.0804, 3.0804, 3.0804");
+ }
+ cell_fall(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.301525, 0.339234, 0.3677, 0.420709, 0.45207, 0.503376", \
+ "0.460268, 0.497618, 0.526095, 0.579533, 0.610902, 0.661892", \
+ "0.737156, 0.774426, 0.802781, 0.856206, 0.887576, 0.938553", \
+ "1.44891, 1.48629, 1.51461, 1.56821, 1.59963, 1.65006", \
+ "1.84423, 1.88188, 1.90953, 1.96378, 1.99519, 2.04617", \
+ "2.23985, 2.27754, 2.3052, 2.35909, 2.39074, 2.44139");
+ }
+ fall_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.0648, 0.0648, 0.0606, 0.0666, 0.0666, 0.0624", \
+ "0.2622, 0.2616, 0.2628, 0.2622, 0.2622, 0.2622", \
+ "0.6168, 0.6168, 0.6168, 0.6168, 0.6168, 0.6168", \
+ "1.53, 1.5312, 1.5306, 1.5312, 1.5312, 1.5306", \
+ "2.0388, 2.0394, 2.0388, 2.0388, 2.0388, 2.0388", \
+ "2.5464, 2.5476, 2.5458, 2.5482, 2.5476, 2.5476");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.584981, 0.606793, 0.669461, 0.761461, 0.842257, 0.980551", \
+ "0.577744, 0.611346, 0.681401, 0.773839, 0.845194, 0.985074", \
+ "0.579438, 0.612296, 0.681589, 0.774684, 0.846157, 0.985993", \
+ "0.580153, 0.612788, 0.683058, 0.77515, 0.846696, 0.986721", \
+ "0.580353, 0.613088, 0.683115, 0.775092, 0.84689, 0.986983", \
+ "0.580756, 0.612984, 0.683275, 0.775178, 0.846676, 0.987227");
+ }
+ fall_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.704098, 0.731354, 0.778711, 0.879269, 0.954459, 1.11027", \
+ "0.705941, 0.735162, 0.782427, 0.882782, 0.957859, 1.11224", \
+ "0.706445, 0.735857, 0.783021, 0.88338, 0.958398, 1.11296", \
+ "0.706452, 0.736107, 0.783299, 0.883745, 0.958796, 1.11318", \
+ "0.706528, 0.736197, 0.783541, 0.883923, 0.958804, 1.11305", \
+ "0.706534, 0.736049, 0.783693, 0.883944, 0.958701, 1.11345");
+ }
+ }
+ }
+}
+
+/* ----------------- *
+ * Design : DFFNEGX1 *
+ * ----------------- */
+cell (DFFNEGX1) {
+area : 96;
+ cell_leakage_power : 0.155885;
+ ff (DS0000,P0002) {
+ next_state : "D";
+ clocked_on : "(!CLK)";
+ }
+ pin(CLK) {
+ direction : input;
+ capacitance : 0.0295634;
+ rise_capacitance : 0.0293582;
+ fall_capacitance : 0.0295634;
+ clock : true;
+ internal_power() {
+ rise_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.037284, 0.04096, 0.059148, 0.107824, 0.1437, 0.218602");
+ }
+ fall_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.086451, 0.105124, 0.131012, 0.175654, 0.209051, 0.277005");
+ }
+ }
+ min_pulse_width_high : 0.0939412;
+ min_pulse_width_low : 0.104504;
+ }
+ pin(D) {
+ direction : input;
+ capacitance : 0.00890146;
+ rise_capacitance : 0.00881587;
+ fall_capacitance : 0.00890146;
+ internal_power() {
+ rise_power(passive_energy_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.030829, 0.032759, 0.042528, 0.055396, 0.083943");
+ }
+ fall_power(passive_energy_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.097866, 0.100952, 0.108957, 0.117496, 0.148741");
+ }
+ }
+ timing() {
+ related_pin : "CLK";
+ timing_type : hold_falling;
+ rise_constraint(hold_template_3x5) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0, -0.0875, -0.075, -0.1125, -0.08125", \
+ "-0.10625, -0.1, -0.0875, -0.125, -0.1875", \
+ "-0.16875, -0.1625, -0.15, -0.1875, -0.25");
+ }
+ fall_constraint(hold_template_3x5) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0, -0.0875, -0.075, -0.1125, -0.175", \
+ "-0.0125, -0.00625, -0.0875, -0.125, -0.1875", \
+ "0.01875, 0.025, -0.05625, -0.09375, -0.0625");
+ }
+ }
+ timing() {
+ related_pin : "CLK";
+ timing_type : setup_falling;
+ rise_constraint(setup_template_3x5) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.1875, 0.18125, 0.16875, 0.20625, 0.26875", \
+ "0.2, 0.19375, 0.18125, 0.21875, 0.28125", \
+ "0.2625, 0.44375, 0.24375, 0.28125, 0.71875");
+ }
+ fall_constraint(setup_template_3x5) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.1875, 0.18125, 0.2625, 0.3, 0.3625", \
+ "0.2, 0.19375, 0.275, 0.21875, 0.375", \
+ "0.16875, 0.1625, 0.24375, 0.1875, 0.34375");
+ }
+ }
+ }
+ pin(Q) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.992362;
+ function : "DS0000";
+ timing() {
+ related_pin : "CLK";
+ timing_sense : non_unate;
+ timing_type : falling_edge;
+ cell_rise(delay_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.127171, 0.157261, 0.193197, 0.242742, 0.272567, 0.320526", \
+ "0.138941, 0.168471, 0.203551, 0.253043, 0.281605, 0.331377", \
+ "0.152581, 0.183347, 0.217393, 0.266999, 0.293007, 0.344469", \
+ "0.202583, 0.230235, 0.266411, 0.316181, 0.341026, 0.393926", \
+ "0.268294, 0.296675, 0.332037, 0.382057, 0.409008, 0.460614");
+ }
+ rise_transition(delay_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.035941, 0.036804, 0.041981, 0.042554, 0.039872, 0.044075", \
+ "0.047854, 0.048167, 0.048199, 0.048987, 0.049388, 0.059309", \
+ "0.057766, 0.0606, 0.0606, 0.0612, 0.063, 0.0624", \
+ "0.1194, 0.1182, 0.12, 0.1212, 0.12, 0.12", \
+ "0.2046, 0.2058, 0.204, 0.2058, 0.2058, 0.2064");
+ }
+ cell_fall(delay_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.12194, 0.172988, 0.224116, 0.298592, 0.344721, 0.429327", \
+ "0.132048, 0.18302, 0.234315, 0.309127, 0.35693, 0.443335", \
+ "0.147217, 0.19846, 0.25123, 0.324558, 0.372696, 0.459914", \
+ "0.198327, 0.250554, 0.302789, 0.377794, 0.426431, 0.515884", \
+ "0.262685, 0.314083, 0.366272, 0.443553, 0.492671, 0.583101");
+ }
+ fall_transition(delay_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.041908, 0.046796, 0.056173, 0.0744, 0.0762, 0.0888", \
+ "0.048334, 0.053789, 0.0618, 0.0792, 0.087, 0.0984", \
+ "0.0606, 0.066, 0.078, 0.084, 0.0942, 0.108", \
+ "0.1122, 0.1134, 0.12, 0.1314, 0.1374, 0.1476", \
+ "0.1794, 0.1812, 0.1878, 0.1932, 0.1974, 0.2064");
+ }
+ }
+ internal_power() {
+ related_pin : "CLK";
+ rise_power(energy_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.146359, 0.162663, 0.190528, 0.240766, 0.277657, 0.349249", \
+ "0.146218, 0.162653, 0.191643, 0.241715, 0.277774, 0.348517", \
+ "0.146337, 0.162754, 0.191394, 0.240994, 0.276402, 0.34748", \
+ "0.146945, 0.163341, 0.19181, 0.241151, 0.277252, 0.346929", \
+ "0.148527, 0.163953, 0.193025, 0.242309, 0.277088, 0.347497");
+ }
+ fall_power(energy_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.144274, 0.170803, 0.212085, 0.283695, 0.33617, 0.436977", \
+ "0.143072, 0.168248, 0.207577, 0.27871, 0.330148, 0.431632", \
+ "0.142643, 0.167591, 0.20368, 0.273148, 0.323676, 0.424924", \
+ "0.143936, 0.165886, 0.2005, 0.267703, 0.31655, 0.41505", \
+ "0.14445, 0.165176, 0.199606, 0.265547, 0.313716, 0.411094");
+ }
+ }
+ }
+}
+
+/* ----------------- *
+ * Design : DFFPOSX1 *
+ * ----------------- */
+cell (DFFPOSX1) {
+area : 96;
+ cell_leakage_power : 0.160725;
+ ff (DS0000,P0002) {
+ next_state : "D";
+ clocked_on : "CLK";
+ }
+ pin(CLK) {
+ direction : input;
+ capacitance : 0.0279235;
+ rise_capacitance : 0.0279235;
+ fall_capacitance : 0.0274634;
+ clock : true;
+ internal_power() {
+ rise_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.006865, 0.006943, 0.030508, 0.076138, 0.112244, 0.183321");
+ }
+ fall_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.11034, 0.129769, 0.160216, 0.216283, 0.258089, 0.338194");
+ }
+ }
+ min_pulse_width_high : 0.106969;
+ min_pulse_width_low : 0.09927;
+ }
+ pin(D) {
+ direction : input;
+ capacitance : 0.00882947;
+ rise_capacitance : 0.00882947;
+ fall_capacitance : 0.00881001;
+ internal_power() {
+ rise_power(passive_energy_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.045424, 0.045977, 0.055651, 0.063033, 0.096119");
+ }
+ fall_power(passive_energy_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.08841, 0.087952, 0.097074, 0.107295, 0.139032");
+ }
+ }
+ timing() {
+ related_pin : "CLK";
+ timing_type : hold_rising;
+ rise_constraint(hold_template_3x5) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0, 0.00625, -0.075, -0.01875, -0.08125", \
+ "-0.0125, -0.00625, 0.00625, -0.03125, 0", \
+ "0.01875, -0.06875, -0.05625, 0, -0.0625");
+ }
+ fall_constraint(hold_template_3x5) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "-0.09375, -0.0875, -0.075, -0.1125, -0.175", \
+ "-0.10625, -0.19375, -0.18125, -0.21875, -0.28125", \
+ "0.1125, 0.11875, -0.05625, -0.09375, -0.25");
+ }
+ }
+ timing() {
+ related_pin : "CLK";
+ timing_type : setup_rising;
+ rise_constraint(setup_template_3x5) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.1875, 0.18125, 0.16875, 0.20625, 0.26875", \
+ "0.2, 0.2875, 0.275, 0.3125, 0.28125", \
+ "0.45, 0.35, 0.3375, 0.46875, 0.53125");
+ }
+ fall_constraint(setup_template_3x5) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.1875, 0.18125, 0.2625, 0.3, 0.3625", \
+ "0.29375, 0.2875, 0.275, 0.3125, 0.375", \
+ "0.91875, 0.35, 0.525, 0.65625, 0.4375");
+ }
+ }
+ }
+ pin(Q) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.967534;
+ function : "DS0000";
+ timing() {
+ related_pin : "CLK";
+ timing_sense : non_unate;
+ timing_type : rising_edge;
+ cell_rise(delay_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.093526, 0.121034, 0.13421, 0.134398, 0.122773, 0.0926", \
+ "0.10403, 0.130762, 0.143181, 0.144557, 0.132377, 0.104697", \
+ "0.118023, 0.14606, 0.158231, 0.158041, 0.151991, 0.121227", \
+ "0.166235, 0.192972, 0.208222, 0.211247, 0.203428, 0.179357", \
+ "0.233467, 0.259728, 0.276539, 0.279342, 0.271987, 0.248208");
+ }
+ rise_transition(delay_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.036088, 0.043386, 0.051719, 0.0678, 0.0702, 0.0774", \
+ "0.04409, 0.050885, 0.0606, 0.0762, 0.0762, 0.084", \
+ "0.057821, 0.0654, 0.0744, 0.0846, 0.096, 0.1026", \
+ "0.1182, 0.1224, 0.1284, 0.1368, 0.1398, 0.1476", \
+ "0.2052, 0.207, 0.2094, 0.216, 0.2208, 0.2286");
+ }
+ cell_fall(delay_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.159821, 0.176886, 0.193318, 0.207708, 0.211849, 0.213209", \
+ "0.169871, 0.18774, 0.204315, 0.217111, 0.221269, 0.221151", \
+ "0.186934, 0.201494, 0.219369, 0.229968, 0.234471, 0.239765", \
+ "0.235597, 0.250463, 0.267087, 0.28101, 0.285745, 0.288909", \
+ "0.300793, 0.314188, 0.331092, 0.344623, 0.351457, 0.352857");
+ }
+ fall_transition(delay_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.041962, 0.04207, 0.045013, 0.042772, 0.04261, 0.04369", \
+ "0.052151, 0.051175, 0.049987, 0.050183, 0.052505, 0.051007", \
+ "0.066, 0.0624, 0.0654, 0.0636, 0.0618, 0.0678", \
+ "0.1086, 0.1086, 0.1068, 0.1098, 0.108, 0.1116", \
+ "0.1794, 0.18, 0.1788, 0.1812, 0.1812, 0.1824");
+ }
+ }
+ internal_power() {
+ related_pin : "CLK";
+ rise_power(energy_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.040752, 0.06407, 0.099137, 0.162883, 0.207764, 0.296269", \
+ "0.041217, 0.062027, 0.097688, 0.158665, 0.203554, 0.289681", \
+ "0.04099, 0.061849, 0.09519, 0.156194, 0.200043, 0.285303", \
+ "0.043452, 0.061538, 0.092194, 0.152786, 0.194912, 0.280997", \
+ "0.044433, 0.06208, 0.091836, 0.150899, 0.194246, 0.279888");
+ }
+ fall_power(energy_template_5x6) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.064773, 0.076646, 0.104009, 0.152643, 0.185108, 0.255024", \
+ "0.063395, 0.075613, 0.102582, 0.150636, 0.183907, 0.254132", \
+ "0.060938, 0.076343, 0.099156, 0.149918, 0.183611, 0.25348", \
+ "0.062326, 0.075376, 0.099814, 0.149755, 0.183003, 0.253934", \
+ "0.062787, 0.07564, 0.100256, 0.149373, 0.182383, 0.253656");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : DFFSR *
+ * -------------- */
+cell (DFFSR) {
+area : 176;
+ cell_leakage_power : 0.27727;
+ ff (P0002,P0003) {
+ next_state : "D";
+ clocked_on : "CLK";
+ clear : "(!R)";
+ preset : "(!S)";
+ clear_preset_var1 : L;
+ }
+ pin(CLK) {
+ direction : input;
+ capacitance : 0.00937511;
+ rise_capacitance : 0.00932314;
+ fall_capacitance : 0.00937511;
+ clock : true;
+ internal_power() {
+ rise_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.041704, 0.046706, 0.061572, 0.084344, 0.106433, 0.145893");
+ }
+ fall_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.123008, 0.130168, 0.141509, 0.16925, 0.188732, 0.226953");
+ }
+ }
+ min_pulse_width_high : 0.283301;
+ min_pulse_width_low : 0.205581;
+ }
+ pin(D) {
+ direction : input;
+ capacitance : 0.00940895;
+ rise_capacitance : 0.00940895;
+ fall_capacitance : 0.00932956;
+ internal_power() {
+ rise_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.088283, 0.087505, 0.100628, 0.129385, 0.145716, 0.182119");
+ }
+ fall_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.117272, 0.124444, 0.14019, 0.164994, 0.182539, 0.221408");
+ }
+ }
+ timing() {
+ related_pin : "CLK";
+ timing_type : hold_rising;
+ when : "S&R";
+ sdf_cond : "S\&R";
+ rise_constraint(hold_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0, -0.0375, -0.025, -0.05, -0.08125, -0.05", \
+ "-0.0125, -0.05, -0.0375, -0.0625, -0.09375, -0.0625", \
+ "0.01875, -0.01875, -0.00625, -0.03125, -0.0625, -0.125");
+ }
+ fall_constraint(hold_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0, -0.0375, -0.025, -0.14375, -0.175, -0.2375", \
+ "0.08125, 0.04375, -0.0375, -0.0625, -0.09375, -0.15625", \
+ "0.1125, 0.075, -0.00625, -0.03125, -0.0625, -0.21875");
+ }
+ }
+ timing() {
+ related_pin : "CLK";
+ timing_type : setup_rising;
+ when : "S&R";
+ sdf_cond : "S\&R";
+ rise_constraint(setup_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.09375, 0.13125, 0.2125, 0.2375, 0.175, 0.2375", \
+ "0.10625, 0.14375, 0.13125, 0.15625, 0.1875, 0.15625", \
+ "0.075, 0.1125, 0.1, 0.125, 0.15625, 0.21875");
+ }
+ fall_constraint(setup_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.09375, 0.13125, 0.2125, 0.2375, 0.26875, 0.33125", \
+ "0.10625, 0.14375, 0.13125, 0.25, 0.28125, 0.34375", \
+ "0.075, 0.1125, 0.19375, 0.21875, 0.25, 0.3125");
+ }
+ }
+ }
+ pin(Q) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.468113;
+ function : "P0002";
+ timing() {
+ related_pin : "CLK";
+ timing_sense : non_unate;
+ timing_type : rising_edge;
+ cell_rise(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.387715, 0.4242, 0.449241, 0.479863, 0.493378, 0.510336", \
+ "1.0593, 1.0961, 1.12132, 1.15077, 1.16518, 1.18191", \
+ "2.23385, 2.27146, 2.29657, 2.32582, 2.33969, 2.35696", \
+ "5.2553, 5.2922, 5.31832, 5.34803, 5.36054, 5.37695", \
+ "6.93294, 6.96936, 6.99478, 7.02496, 7.04016, 7.05535", \
+ "8.61201, 8.64857, 8.67436, 8.70236, 8.71621, 8.73283");
+ }
+ rise_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.249, 0.249, 0.249, 0.249, 0.2478, 0.249", \
+ "1.2018, 1.2, 1.2024, 1.2006, 1.2018, 1.2006", \
+ "2.8728, 2.874, 2.8734, 2.8734, 2.8728, 2.874", \
+ "7.1718, 7.1718, 7.1724, 7.1712, 7.1724, 7.1724", \
+ "9.5604, 9.5604, 9.561, 9.5604, 9.5604, 9.561", \
+ "11.949, 11.949, 11.9484, 11.949, 11.9496, 11.949");
+ }
+ cell_fall(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.381095, 0.414212, 0.432258, 0.455285, 0.464189, 0.473544", \
+ "0.969567, 1.00258, 1.02077, 1.04374, 1.05286, 1.06194", \
+ "1.99852, 2.03201, 2.05037, 2.07286, 2.0826, 2.09148", \
+ "4.64736, 4.68053, 4.69836, 4.72175, 4.73048, 4.74011", \
+ "6.11846, 6.15174, 6.16849, 6.19271, 6.2017, 6.20769", \
+ "7.5897, 7.62114, 7.63829, 7.66214, 7.67262, 7.67916");
+ }
+ fall_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.1992, 0.1998, 0.1992, 0.1998, 0.1992, 0.198", \
+ "0.9498, 0.9498, 0.9498, 0.9492, 0.9492, 0.9498", \
+ "2.271, 2.271, 2.2704, 2.271, 2.271, 2.2698", \
+ "5.6688, 5.6682, 5.6682, 5.6676, 5.6682, 5.6682", \
+ "7.5552, 7.5546, 7.5522, 7.5546, 7.5552, 7.5492", \
+ "9.4416, 9.441, 9.438, 9.441, 9.4416, 9.438");
+ }
+ }
+ timing() {
+ related_pin : "R";
+ timing_sense : positive_unate;
+ timing_type : clear;
+ cell_rise(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.255245, 0.267211, 0.272748, 0.270558, 0.263299, 0.239588", \
+ "0.927233, 0.939028, 0.945323, 0.943953, 0.937484, 0.91901", \
+ "2.10242, 2.11391, 2.1206, 2.1188, 2.11337, 2.09441", \
+ "5.1226, 5.13558, 5.14239, 5.14108, 5.13447, 5.11702", \
+ "6.8014, 6.81238, 6.8206, 6.82046, 6.81426, 6.7949", \
+ "8.48041, 8.48981, 8.49679, 8.49628, 8.49257, 8.47179");
+ }
+ rise_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.2484, 0.2472, 0.2484, 0.2532, 0.2574, 0.2652", \
+ "1.2, 1.2006, 1.2012, 1.2018, 1.2024, 1.2048", \
+ "2.8746, 2.874, 2.874, 2.874, 2.874, 2.8722", \
+ "7.1724, 7.1712, 7.1724, 7.1724, 7.1718, 7.1724", \
+ "9.5604, 9.561, 9.5598, 9.5586, 9.5574, 9.5604", \
+ "11.9484, 11.949, 11.949, 11.9496, 11.949, 11.9496");
+ }
+ cell_fall(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.262875, 0.324685, 0.387813, 0.478452, 0.536493, 0.645793", \
+ "0.851442, 0.913295, 0.975835, 1.06676, 1.12496, 1.23348", \
+ "1.88088, 1.94277, 2.00526, 2.09652, 2.15413, 2.26351", \
+ "4.52922, 4.59101, 4.65322, 4.74343, 4.80087, 4.91083", \
+ "6.00047, 6.06223, 6.12484, 6.2146, 6.27193, 6.38037", \
+ "7.47138, 7.53306, 7.59593, 7.68652, 7.74417, 7.85151");
+ }
+ fall_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.1992, 0.2007, 0.2013, 0.2028, 0.204, 0.2052", \
+ "0.9486, 0.9489, 0.9492, 0.9501, 0.9504, 0.951", \
+ "2.2698, 2.2707, 2.2698, 2.2698, 2.2704, 2.2704", \
+ "5.6664, 5.6679, 5.6652, 5.667, 5.6652, 5.6649", \
+ "7.5516, 7.5534, 7.5534, 7.5525, 7.5498, 7.5498", \
+ "9.4386, 9.4419, 9.4413, 9.4419, 9.4392, 9.4386");
+ }
+ }
+ timing() {
+ related_pin : "S";
+ timing_sense : negative_unate;
+ timing_type : preset;
+ cell_rise(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.344773, 0.399864, 0.446316, 0.525767, 0.573992, 0.666461", \
+ "1.01865, 1.07188, 1.1183, 1.19933, 1.24819, 1.33808", \
+ "2.19343, 2.24681, 2.29288, 2.37423, 2.42321, 2.51328", \
+ "5.21504, 5.26772, 5.31423, 5.39634, 5.44478, 5.53429", \
+ "6.89381, 6.94555, 6.99241, 7.0739, 7.12265, 7.21244", \
+ "8.57089, 8.62568, 8.67173, 8.75022, 8.80049, 8.88991");
+ }
+ rise_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.2481, 0.2487, 0.2484, 0.2484, 0.2487, 0.2484", \
+ "1.2021, 1.2012, 1.2015, 1.2018, 1.2015, 1.2012", \
+ "2.8728, 2.8737, 2.8725, 2.8728, 2.8734, 2.8734", \
+ "7.1712, 7.1721, 7.1721, 7.1718, 7.1721, 7.1718", \
+ "9.5598, 9.5607, 9.5604, 9.5604, 9.5601, 9.5604", \
+ "11.9493, 11.9487, 11.949, 11.949, 11.9493, 11.949");
+ }
+ }
+ internal_power() {
+ related_pin : "CLK";
+ rise_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.151048, 0.158622, 0.171511, 0.198768, 0.218728, 0.261211", \
+ "0.151825, 0.159701, 0.172467, 0.200096, 0.219924, 0.261879", \
+ "0.15194, 0.160143, 0.172798, 0.200608, 0.220285, 0.262227", \
+ "0.151944, 0.160856, 0.173235, 0.201487, 0.221175, 0.262197", \
+ "0.152164, 0.161005, 0.173711, 0.201586, 0.222216, 0.26255", \
+ "0.15174, 0.161323, 0.173527, 0.201327, 0.220975, 0.263137");
+ }
+ fall_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.141227, 0.150979, 0.161428, 0.189053, 0.207561, 0.246194", \
+ "0.141671, 0.151133, 0.161697, 0.189503, 0.207945, 0.246892", \
+ "0.141959, 0.151299, 0.161897, 0.1897, 0.207945, 0.246928", \
+ "0.142566, 0.151503, 0.161463, 0.189777, 0.208281, 0.247071", \
+ "0.142479, 0.151289, 0.16179, 0.189948, 0.208155, 0.247255", \
+ "0.142818, 0.151617, 0.161884, 0.18964, 0.207948, 0.247395");
+ }
+ }
+ internal_power() {
+ related_pin : "R";
+ rise_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.045492, 0.062305, 0.088334, 0.143928, 0.185508, 0.269919", \
+ "0.046712, 0.063494, 0.089542, 0.145009, 0.186228, 0.269839", \
+ "0.047174, 0.063914, 0.089887, 0.145658, 0.186844, 0.270401", \
+ "0.047779, 0.064828, 0.090518, 0.146173, 0.187214, 0.271169", \
+ "0.048538, 0.064695, 0.090025, 0.14627, 0.188292, 0.270964", \
+ "0.049886, 0.064719, 0.090939, 0.145803, 0.187952, 0.271418");
+ }
+ fall_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.155704, 0.173754, 0.203811, 0.256892, 0.29055, 0.350772", \
+ "0.156347, 0.174395, 0.20423, 0.256484, 0.289596, 0.349078", \
+ "0.156642, 0.174668, 0.204576, 0.256703, 0.289826, 0.349161", \
+ "0.156902, 0.174751, 0.204971, 0.257079, 0.290016, 0.349805", \
+ "0.157086, 0.17465, 0.205296, 0.257578, 0.290391, 0.349282", \
+ "0.157219, 0.175227, 0.205143, 0.25757, 0.290435, 0.349746");
+ }
+ }
+ internal_power() {
+ related_pin : "S";
+ power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.15628, 0.170156, 0.19269, 0.238568, 0.270569, 0.331301", \
+ "0.156928, 0.171426, 0.193829, 0.2389, 0.271492, 0.332601", \
+ "0.157284, 0.171847, 0.194132, 0.239121, 0.271853, 0.333062", \
+ "0.158082, 0.172581, 0.194372, 0.239638, 0.272424, 0.333474", \
+ "0.158841, 0.172592, 0.194391, 0.239616, 0.273092, 0.333673", \
+ "0.158095, 0.172153, 0.193866, 0.239884, 0.27239, 0.334038");
+ }
+ }
+ }
+ pin(R) {
+ direction : input;
+ capacitance : 0.0255048;
+ rise_capacitance : 0.0255048;
+ fall_capacitance : 0.0220338;
+ min_pulse_width_low : 0.152176;
+ timing() {
+ related_pin : "CLK";
+ timing_type : recovery_rising;
+ when : "D&S";
+ sdf_cond : "D\&S";
+ rise_constraint(recovery_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "-0.09375, -0.05625, 0.025, 0.05, 0.175, 0.33125", \
+ "-0.08125, -0.1375, -0.05625, -0.03125, 0, 0.25", \
+ "-0.1125, -0.16875, -0.0875, -0.0625, -0.03125, 0.125");
+ }
+ }
+ timing() {
+ related_pin : "S";
+ timing_type : recovery_rising;
+ rise_constraint(recovery_template_6x6) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0, 0.05625, 0.06875, 0.04375, 0.10625, 0.1375", \
+ "0.0375, 0, 0.0125, 0.08125, 0.05, 0.128125", \
+ "0.025, 0.034375, 0, 0.06875, 0.084375, 0.115625", \
+ "0.003125, 0.0125, 0.025, 0.046875, 0.0625, 0.09375", \
+ "-0.0125, -0.003125, -0.0375, 0.03125, 0.046875, 0.078125", \
+ "-0.04375, -0.034375, -0.06875, 0, -0.03125, 0.046875");
+ }
+ }
+ timing() {
+ related_pin : "CLK";
+ timing_type : removal_rising;
+ when : "D&S";
+ sdf_cond : "D\&S";
+ rise_constraint(removal_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.1875, 0.24375, 0.25625, 0.325, 0.3875, 0.41875", \
+ "0.26875, 0.23125, 0.24375, 0.3125, 0.375, 0.5", \
+ "0.3, 0.2625, 0.275, 0.34375, 0.40625, 0.4375");
+ }
+ }
+ }
+ pin(S) {
+ direction : input;
+ capacitance : 0.0230606;
+ rise_capacitance : 0.0141532;
+ fall_capacitance : 0.0230606;
+ internal_power() {
+ rise_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.036159, 0.033603, 0.035396, 0.034302, 0.033581, 0.034303");
+ }
+ fall_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0, 0, 0, 0, 0, 0");
+ }
+ }
+ min_pulse_width_low : 0.199049;
+ timing() {
+ related_pin : "CLK";
+ timing_type : recovery_rising;
+ when : "!D&R";
+ sdf_cond : "\~D\&R";
+ rise_constraint(recovery_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0, 0.0375, 0.025, 0.14375, 0.08125, 0.2375", \
+ "0.0125, 0.05, 0.0375, 0.0625, 0.09375, 0.15625", \
+ "-0.01875, 0.01875, 0.00625, 0.03125, 0.0625, 0.21875");
+ }
+ }
+ timing() {
+ related_pin : "R";
+ timing_type : recovery_rising;
+ rise_constraint(recovery_template_6x6) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.09375, 0.05625, 0.06875, 0.090625, 0.10625, 0.1375", \
+ "0.0375, 0.09375, 0.10625, 0.08125, 0.096875, 0.128125", \
+ "0.025, 0.08125, 0.09375, 0.06875, 0.084375, 0.1625", \
+ "0.05, 0.0125, 0.025, 0.046875, 0.0625, 0.09375", \
+ "0.034375, 0.04375, 0.009375, 0.03125, 0.046875, 0.125", \
+ "0.003125, -0.034375, -0.021875, 0, 0.015625, 0.046875");
+ }
+ }
+ timing() {
+ related_pin : "CLK";
+ timing_type : removal_rising;
+ when : "!D&R";
+ sdf_cond : "\~D\&R";
+ rise_constraint(removal_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.09375, 0.05625, 0.06875, 0.04375, 0.10625, 0.04375", \
+ "0.175, 0.1375, 0.05625, 0.125, 0.09375, 0.125", \
+ "0.1125, 0.16875, 0.0875, 0.0625, 0.125, 0.15625");
+ }
+ }
+ }
+}
+
+/* ------------- *
+ * Design : FAX1 *
+ * ------------- */
+cell (FAX1) {
+area : 120;
+ cell_leakage_power : 0.230647;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0613054;
+ rise_capacitance : 0.0606345;
+ fall_capacitance : 0.0613054;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.05692;
+ rise_capacitance : 0.05692;
+ fall_capacitance : 0.0549316;
+ }
+ pin(C) {
+ direction : input;
+ capacitance : 0.0416003;
+ rise_capacitance : 0.0416003;
+ fall_capacitance : 0.04156;
+ }
+ pin(YC) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.497776;
+ function : "(((A B)+(B C))+(C A))";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.110961, 0.128075, 0.1516, 0.167167, 0.190781", \
+ "0.130601, 0.147139, 0.171029, 0.186307, 0.212628", \
+ "0.154326, 0.172367, 0.200121, 0.213629, 0.243016", \
+ "0.244814, 0.262639, 0.291037, 0.305225, 0.339785", \
+ "0.372364, 0.389878, 0.418591, 0.432655, 0.468862");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.034724, 0.036496, 0.040349, 0.05232, 0.05513", \
+ "0.05407, 0.054239, 0.058178, 0.0663, 0.0747", \
+ "0.0777, 0.0834, 0.0903, 0.0912, 0.1002", \
+ "0.1938, 0.1944, 0.1959, 0.1989, 0.2055", \
+ "0.3687, 0.369, 0.3705, 0.3714, 0.3747");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.133895, 0.155633, 0.191369, 0.2175, 0.293908", \
+ "0.152322, 0.174355, 0.212242, 0.238006, 0.316257", \
+ "0.177897, 0.200656, 0.239699, 0.266038, 0.34816", \
+ "0.263185, 0.285715, 0.327493, 0.355817, 0.442452", \
+ "0.375727, 0.398327, 0.440573, 0.470266, 0.558082");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.039038, 0.038593, 0.050291, 0.051711, 0.061636", \
+ "0.052901, 0.050905, 0.0624, 0.061602, 0.0705", \
+ "0.0741, 0.0753, 0.0831, 0.0849, 0.0936", \
+ "0.1623, 0.1632, 0.1662, 0.1689, 0.1782", \
+ "0.2958, 0.2955, 0.2973, 0.2991, 0.303");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.11476, 0.135987, 0.16121, 0.173508, 0.200806", \
+ "0.133581, 0.154327, 0.181009, 0.194579, 0.222158", \
+ "0.159361, 0.180709, 0.209291, 0.223078, 0.25317", \
+ "0.249995, 0.271007, 0.30202, 0.316622, 0.350916", \
+ "0.377283, 0.398337, 0.43029, 0.445191, 0.480202");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038642, 0.039314, 0.045251, 0.043585, 0.058504", \
+ "0.052925, 0.054573, 0.0627, 0.0648, 0.0729", \
+ "0.0828, 0.0834, 0.0897, 0.0924, 0.1029", \
+ "0.195, 0.1956, 0.1992, 0.2007, 0.2079", \
+ "0.3693, 0.3684, 0.3711, 0.3729, 0.3762");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.134739, 0.162025, 0.20358, 0.230737, 0.313007", \
+ "0.153404, 0.181647, 0.223749, 0.253855, 0.339344", \
+ "0.180482, 0.208858, 0.251188, 0.283223, 0.369465", \
+ "0.267421, 0.295778, 0.342971, 0.375215, 0.465786", \
+ "0.380838, 0.409362, 0.458422, 0.491805, 0.583521");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.044455, 0.036854, 0.041074, 0.047622, 0.056824", \
+ "0.052948, 0.053563, 0.05985, 0.063435, 0.0735", \
+ "0.078, 0.0804, 0.0834, 0.0906, 0.0966", \
+ "0.1638, 0.1659, 0.1713, 0.1746, 0.1815", \
+ "0.297, 0.2973, 0.3012, 0.3042, 0.3078");
+ }
+ }
+ timing() {
+ related_pin : "C";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.109702, 0.132682, 0.165136, 0.180248, 0.211225", \
+ "0.125675, 0.151973, 0.18654, 0.202286, 0.235363", \
+ "0.150952, 0.178149, 0.214452, 0.230656, 0.266633", \
+ "0.241765, 0.268351, 0.305137, 0.323826, 0.364625", \
+ "0.369534, 0.395458, 0.432847, 0.45156, 0.492283");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.039084, 0.036944, 0.045434, 0.04891, 0.058904", \
+ "0.052615, 0.054065, 0.0651, 0.0708, 0.0816", \
+ "0.0798, 0.0807, 0.0933, 0.0957, 0.105", \
+ "0.1941, 0.1953, 0.1977, 0.2004, 0.2061", \
+ "0.369, 0.369, 0.3702, 0.3708, 0.3735");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.121862, 0.159349, 0.209459, 0.244319, 0.337679", \
+ "0.142508, 0.178687, 0.232523, 0.266623, 0.361761", \
+ "0.169443, 0.207156, 0.263743, 0.296007, 0.397463", \
+ "0.256454, 0.294002, 0.354327, 0.389602, 0.493712", \
+ "0.369994, 0.407462, 0.468873, 0.505373, 0.609741");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037254, 0.040396, 0.054151, 0.055881, 0.0714", \
+ "0.053461, 0.05241, 0.0633, 0.0687, 0.081", \
+ "0.075, 0.0774, 0.0861, 0.0894, 0.1032", \
+ "0.1662, 0.1653, 0.1716, 0.1731, 0.1815", \
+ "0.297, 0.2973, 0.2997, 0.3018, 0.3057");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.007466, 0.006824, 0.019945, 0.030237, 0.060247", \
+ "0.007781, 0.009663, 0.019533, 0.028757, 0.058276", \
+ "0.009603, 0.01151, 0.02075, 0.028254, 0.057467", \
+ "0.011239, 0.012692, 0.020968, 0.028039, 0.056866", \
+ "0.011618, 0.012838, 0.020969, 0.028073, 0.056587");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.137117, 0.137859, 0.147519, 0.1579, 0.188671", \
+ "0.139337, 0.139992, 0.146761, 0.155933, 0.187897", \
+ "0.140148, 0.140413, 0.148995, 0.155314, 0.186999", \
+ "0.140706, 0.141603, 0.149331, 0.156135, 0.186049", \
+ "0.141124, 0.14205, 0.149664, 0.156595, 0.186534");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.020977, 0.016769, 0.028506, 0.037122, 0.06575", \
+ "0.021323, 0.021127, 0.027771, 0.037435, 0.064538", \
+ "0.02299, 0.02218, 0.028788, 0.036974, 0.06455", \
+ "0.024243, 0.02359, 0.029653, 0.036487, 0.063384", \
+ "0.024575, 0.024024, 0.029942, 0.036647, 0.062954");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.127293, 0.127927, 0.133519, 0.143645, 0.173349", \
+ "0.128426, 0.128439, 0.136064, 0.144179, 0.172543", \
+ "0.129915, 0.129742, 0.136701, 0.143946, 0.171524", \
+ "0.130654, 0.130271, 0.137166, 0.14483, 0.170651", \
+ "0.131043, 0.130674, 0.137556, 0.14511, 0.171284");
+ }
+ }
+ internal_power() {
+ related_pin : "C";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.035808, 0.035489, 0.044592, 0.051538, 0.079147", \
+ "0.036017, 0.035802, 0.043906, 0.051867, 0.077981", \
+ "0.037705, 0.036801, 0.044343, 0.051059, 0.077119", \
+ "0.039283, 0.038198, 0.044045, 0.051184, 0.076567", \
+ "0.039825, 0.03845, 0.044375, 0.051195, 0.07665");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.109316, 0.111416, 0.117667, 0.128347, 0.156639", \
+ "0.112156, 0.112979, 0.120978, 0.127124, 0.155339", \
+ "0.112995, 0.114118, 0.121699, 0.126441, 0.153897", \
+ "0.113217, 0.114428, 0.121547, 0.127901, 0.152452", \
+ "0.113603, 0.114684, 0.121592, 0.127952, 0.152668");
+ }
+ }
+ }
+ pin(YS) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.489093;
+ function : "((A^B)^C)";
+ timing() {
+ related_pin : "A";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.198183, 0.22063, 0.259412, 0.287266, 0.367605", \
+ "0.21377, 0.235995, 0.273259, 0.300061, 0.38353", \
+ "0.236314, 0.258625, 0.29837, 0.323221, 0.405175", \
+ "0.321968, 0.343793, 0.382244, 0.407984, 0.488959", \
+ "0.447254, 0.469405, 0.506264, 0.534698, 0.617398");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037797, 0.039201, 0.03673, 0.038477, 0.039783", \
+ "0.050172, 0.052297, 0.053855, 0.05436, 0.056819", \
+ "0.0762, 0.0774, 0.0756, 0.0789, 0.0789", \
+ "0.1899, 0.1905, 0.1896, 0.1887, 0.1908", \
+ "0.366, 0.3663, 0.3666, 0.3666, 0.3666");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.179906, 0.198864, 0.221325, 0.23664, 0.262513", \
+ "0.197175, 0.214473, 0.238905, 0.255863, 0.280951", \
+ "0.223018, 0.240051, 0.265965, 0.279625, 0.304494", \
+ "0.303623, 0.320228, 0.345878, 0.359077, 0.383134", \
+ "0.414797, 0.431443, 0.456678, 0.468045, 0.494199");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.035764, 0.038967, 0.037141, 0.034726, 0.035765", \
+ "0.048585, 0.05173, 0.053486, 0.054128, 0.05515", \
+ "0.0723, 0.0732, 0.0756, 0.0759, 0.0768", \
+ "0.1581, 0.1584, 0.159, 0.1581, 0.1593", \
+ "0.2937, 0.2928, 0.2928, 0.2934, 0.2925");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.202117, 0.231199, 0.276088, 0.304101, 0.392641", \
+ "0.218949, 0.245499, 0.292062, 0.321212, 0.408316", \
+ "0.24145, 0.268402, 0.310025, 0.343549, 0.42776", \
+ "0.32668, 0.35353, 0.395463, 0.42947, 0.513406", \
+ "0.452468, 0.479998, 0.521574, 0.555072, 0.63896");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037337, 0.044051, 0.039734, 0.040894, 0.035759", \
+ "0.050144, 0.055434, 0.055747, 0.057998, 0.05534", \
+ "0.0816, 0.0801, 0.0765, 0.0798, 0.0768", \
+ "0.1902, 0.1899, 0.1902, 0.1884, 0.1905", \
+ "0.3669, 0.3666, 0.3669, 0.3669, 0.3666");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.185393, 0.20353, 0.23274, 0.244705, 0.274081", \
+ "0.204116, 0.222138, 0.24931, 0.261169, 0.289819", \
+ "0.228238, 0.246207, 0.274022, 0.286163, 0.312778", \
+ "0.309031, 0.325896, 0.352465, 0.365124, 0.391495", \
+ "0.420284, 0.436555, 0.465196, 0.475751, 0.504204");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.03854, 0.036548, 0.034395, 0.0348, 0.034625", \
+ "0.050765, 0.054813, 0.051472, 0.051291, 0.055094", \
+ "0.0738, 0.0738, 0.0741, 0.0744, 0.0783", \
+ "0.1569, 0.1578, 0.1557, 0.1566, 0.1581", \
+ "0.2937, 0.2937, 0.2928, 0.2925, 0.2934");
+ }
+ }
+ timing() {
+ related_pin : "C";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.198886, 0.231292, 0.283268, 0.317909, 0.415721", \
+ "0.209685, 0.244193, 0.297881, 0.330434, 0.428519", \
+ "0.232007, 0.267345, 0.319887, 0.352255, 0.448891", \
+ "0.317976, 0.354153, 0.405449, 0.439606, 0.5336", \
+ "0.444198, 0.482263, 0.531046, 0.568327, 0.661703");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.040325, 0.041068, 0.03271, 0.040722, 0.038196", \
+ "0.050494, 0.052706, 0.049769, 0.053343, 0.051024", \
+ "0.0774, 0.0783, 0.0741, 0.0759, 0.0783", \
+ "0.1896, 0.1908, 0.1899, 0.1893, 0.1905", \
+ "0.3678, 0.3669, 0.3678, 0.3678, 0.3675");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.182744, 0.205478, 0.235746, 0.249718, 0.282904", \
+ "0.199541, 0.21712, 0.251752, 0.267096, 0.300069", \
+ "0.221615, 0.240859, 0.273688, 0.287033, 0.320866", \
+ "0.299374, 0.317787, 0.349653, 0.363724, 0.396233", \
+ "0.410155, 0.430433, 0.460409, 0.475767, 0.50694");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.031091, 0.038205, 0.032021, 0.031051, 0.033051", \
+ "0.044424, 0.05168, 0.051882, 0.048639, 0.054146", \
+ "0.0705, 0.0684, 0.0675, 0.0702, 0.0747", \
+ "0.1554, 0.1554, 0.1548, 0.1545, 0.1551", \
+ "0.2925, 0.2919, 0.2922, 0.2919, 0.2928");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.137117, 0.137859, 0.147519, 0.1579, 0.188671", \
+ "0.139337, 0.139992, 0.146761, 0.155933, 0.187897", \
+ "0.140148, 0.140413, 0.148995, 0.155314, 0.186999", \
+ "0.140706, 0.141603, 0.149331, 0.156135, 0.186049", \
+ "0.141124, 0.14205, 0.149664, 0.156595, 0.186534");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.007466, 0.006824, 0.019945, 0.030237, 0.060247", \
+ "0.007781, 0.009663, 0.019533, 0.028757, 0.058276", \
+ "0.009603, 0.01151, 0.02075, 0.028254, 0.057467", \
+ "0.011239, 0.012692, 0.020968, 0.028039, 0.056866", \
+ "0.011618, 0.012838, 0.020969, 0.028073, 0.056587");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.127293, 0.127927, 0.133519, 0.143645, 0.173349", \
+ "0.128426, 0.128439, 0.136064, 0.144179, 0.172543", \
+ "0.129915, 0.129742, 0.136701, 0.143946, 0.171524", \
+ "0.130654, 0.130271, 0.137166, 0.14483, 0.170651", \
+ "0.131043, 0.130674, 0.137556, 0.14511, 0.171284");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.020977, 0.016769, 0.028506, 0.037122, 0.06575", \
+ "0.021323, 0.021127, 0.027771, 0.037435, 0.064538", \
+ "0.02299, 0.02218, 0.028788, 0.036974, 0.06455", \
+ "0.024243, 0.02359, 0.029653, 0.036487, 0.063384", \
+ "0.024575, 0.024024, 0.029942, 0.036647, 0.062954");
+ }
+ }
+ internal_power() {
+ related_pin : "C";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.109316, 0.111416, 0.117667, 0.128347, 0.156639", \
+ "0.112156, 0.112979, 0.120978, 0.127124, 0.155339", \
+ "0.112995, 0.114118, 0.121699, 0.126441, 0.153897", \
+ "0.113217, 0.114428, 0.121547, 0.127901, 0.152452", \
+ "0.113603, 0.114684, 0.121592, 0.127952, 0.152668");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.035808, 0.035489, 0.044592, 0.051538, 0.079147", \
+ "0.036017, 0.035802, 0.043906, 0.051867, 0.077981", \
+ "0.037705, 0.036801, 0.044343, 0.051059, 0.077119", \
+ "0.039283, 0.038198, 0.044045, 0.051184, 0.076567", \
+ "0.039825, 0.03845, 0.044375, 0.051195, 0.07665");
+ }
+ }
+ }
+}
+
+/* ------------- *
+ * Design : HAX1 *
+ * ------------- */
+cell (HAX1) {
+area : 80;
+ cell_leakage_power : 0.161137;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0247171;
+ rise_capacitance : 0.0246331;
+ fall_capacitance : 0.0247171;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0211106;
+ rise_capacitance : 0.0211106;
+ fall_capacitance : 0.0210191;
+ }
+ pin(YC) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.502594;
+ function : "(A B)";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.085358, 0.094012, 0.100275, 0.099453, 0.082882", \
+ "0.101778, 0.112779, 0.119221, 0.119581, 0.104536", \
+ "0.125066, 0.13649, 0.147553, 0.148647, 0.135188", \
+ "0.211867, 0.22364, 0.234494, 0.238289, 0.228946", \
+ "0.338223, 0.349942, 0.361144, 0.364776, 0.35749");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.029846, 0.033511, 0.039111, 0.042072, 0.0678", \
+ "0.047394, 0.054259, 0.056519, 0.059846, 0.0768", \
+ "0.0768, 0.078, 0.0858, 0.0888, 0.0966", \
+ "0.1902, 0.1908, 0.192, 0.1956, 0.2022", \
+ "0.3666, 0.3666, 0.3678, 0.369, 0.3732");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.108843, 0.148356, 0.210329, 0.252769, 0.367948", \
+ "0.125339, 0.1652, 0.233502, 0.272277, 0.389844", \
+ "0.1487, 0.188581, 0.257852, 0.298306, 0.419765", \
+ "0.227414, 0.267177, 0.338186, 0.379907, 0.504804", \
+ "0.338046, 0.377809, 0.449292, 0.490981, 0.616712");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.030945, 0.034479, 0.041411, 0.043358, 0.069", \
+ "0.049692, 0.046589, 0.06, 0.058864, 0.0762", \
+ "0.066, 0.0696, 0.0768, 0.0786, 0.09", \
+ "0.1542, 0.1542, 0.159, 0.1608, 0.1692", \
+ "0.2916, 0.2922, 0.2922, 0.294, 0.297");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.083223, 0.097317, 0.114316, 0.119069, 0.118286", \
+ "0.099521, 0.115173, 0.133598, 0.139531, 0.142715", \
+ "0.122739, 0.137849, 0.15908, 0.168142, 0.170798", \
+ "0.209715, 0.226246, 0.247335, 0.256975, 0.264658", \
+ "0.336211, 0.352081, 0.374516, 0.383711, 0.391929");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.029604, 0.034946, 0.039841, 0.042991, 0.056287", \
+ "0.047447, 0.05219, 0.059766, 0.059756, 0.075", \
+ "0.078, 0.078, 0.0834, 0.0888, 0.0954", \
+ "0.1902, 0.1908, 0.1926, 0.195, 0.2022", \
+ "0.3672, 0.3666, 0.369, 0.369, 0.372");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.097136, 0.136274, 0.188809, 0.226182, 0.327261", \
+ "0.114498, 0.156371, 0.207832, 0.245453, 0.35214", \
+ "0.137501, 0.179508, 0.235227, 0.272065, 0.380852", \
+ "0.216183, 0.258107, 0.316202, 0.356775, 0.466672", \
+ "0.327126, 0.3686, 0.427276, 0.468319, 0.579168");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.029882, 0.039079, 0.036229, 0.045811, 0.052498", \
+ "0.044321, 0.053219, 0.054172, 0.056233, 0.0708", \
+ "0.0642, 0.066, 0.0762, 0.0786, 0.0924", \
+ "0.1542, 0.1536, 0.1578, 0.1596, 0.1674", \
+ "0.291, 0.2922, 0.294, 0.2946, 0.2982");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037026, 0.033786, 0.042761, 0.048825, 0.072809", \
+ "0.037638, 0.034849, 0.042862, 0.048604, 0.071392", \
+ "0.038414, 0.035234, 0.043727, 0.049392, 0.070211", \
+ "0.039016, 0.036021, 0.04298, 0.049002, 0.069506", \
+ "0.0393, 0.036454, 0.043253, 0.048934, 0.069391");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.077084, 0.078004, 0.086945, 0.094421, 0.118606", \
+ "0.07744, 0.078311, 0.088214, 0.094018, 0.116461", \
+ "0.077756, 0.078449, 0.088388, 0.093451, 0.115465", \
+ "0.078677, 0.079201, 0.088598, 0.093644, 0.115553", \
+ "0.079144, 0.079244, 0.088865, 0.094032, 0.116101");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.047187, 0.04301, 0.052467, 0.058987, 0.084861", \
+ "0.047188, 0.043824, 0.053109, 0.059138, 0.083706", \
+ "0.047529, 0.043539, 0.052945, 0.059775, 0.082777", \
+ "0.048555, 0.044674, 0.052352, 0.059345, 0.083031", \
+ "0.049041, 0.045208, 0.052753, 0.059207, 0.083092");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.06765, 0.070247, 0.075598, 0.081985, 0.106254", \
+ "0.067897, 0.069771, 0.075292, 0.081491, 0.104973", \
+ "0.068347, 0.069856, 0.076452, 0.081147, 0.104028", \
+ "0.068946, 0.070314, 0.07664, 0.082397, 0.102172", \
+ "0.068601, 0.070691, 0.076904, 0.082678, 0.102693");
+ }
+ }
+ }
+ pin(YS) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.481203;
+ function : "(A^B)";
+ timing() {
+ related_pin : "A";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.149058, 0.187598, 0.252874, 0.291453, 0.413224", \
+ "0.166689, 0.201554, 0.26849, 0.306329, 0.427747", \
+ "0.187902, 0.225297, 0.288655, 0.32755, 0.446103", \
+ "0.271378, 0.309285, 0.372234, 0.412365, 0.530283", \
+ "0.396693, 0.435959, 0.497742, 0.537539, 0.660354");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.030674, 0.030087, 0.035974, 0.030274, 0.044562", \
+ "0.051086, 0.046192, 0.048796, 0.048319, 0.053992", \
+ "0.0726, 0.0714, 0.075, 0.0762, 0.078", \
+ "0.189, 0.1884, 0.189, 0.1872, 0.189", \
+ "0.3654, 0.3666, 0.3648, 0.3654, 0.366");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.152679, 0.15852, 0.169659, 0.172068, 0.1628", \
+ "0.167175, 0.176611, 0.183469, 0.185952, 0.174854", \
+ "0.186688, 0.194728, 0.207833, 0.209996, 0.196142", \
+ "0.261489, 0.269263, 0.281771, 0.283352, 0.268541", \
+ "0.371628, 0.379829, 0.391784, 0.396291, 0.377902");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.033564, 0.036382, 0.028424, 0.032597, 0.0316", \
+ "0.043892, 0.044254, 0.042472, 0.043167, 0.044107", \
+ "0.0642, 0.0606, 0.0714, 0.0714, 0.0672", \
+ "0.1536, 0.1524, 0.15, 0.1506, 0.1542", \
+ "0.2904, 0.2916, 0.2904, 0.2898, 0.2898");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.142672, 0.185479, 0.237913, 0.273327, 0.380148", \
+ "0.15828, 0.200628, 0.25144, 0.286961, 0.396714", \
+ "0.180359, 0.222974, 0.273734, 0.308942, 0.414381", \
+ "0.265809, 0.307628, 0.357495, 0.398085, 0.495232", \
+ "0.398108, 0.433179, 0.483931, 0.523541, 0.62621");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.029969, 0.037745, 0.032326, 0.030433, 0.032778", \
+ "0.047823, 0.04903, 0.04912, 0.048363, 0.054818", \
+ "0.0726, 0.0732, 0.0756, 0.0744, 0.075", \
+ "0.1896, 0.1896, 0.1878, 0.1866, 0.1878", \
+ "0.3666, 0.3654, 0.366, 0.366, 0.366");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.148831, 0.160485, 0.184599, 0.192589, 0.200687", \
+ "0.163236, 0.176722, 0.199978, 0.204137, 0.213631", \
+ "0.182718, 0.193019, 0.220361, 0.225654, 0.232882", \
+ "0.257382, 0.268235, 0.292415, 0.298886, 0.307103", \
+ "0.367566, 0.378594, 0.401833, 0.41316, 0.417643");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032374, 0.037431, 0.032683, 0.031342, 0.037325", \
+ "0.044998, 0.044215, 0.050212, 0.04256, 0.045854", \
+ "0.0624, 0.0624, 0.0738, 0.0648, 0.0678", \
+ "0.153, 0.1506, 0.15, 0.15, 0.1542", \
+ "0.291, 0.2916, 0.2892, 0.2886, 0.2922");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.077084, 0.078004, 0.086945, 0.094421, 0.118606", \
+ "0.07744, 0.078311, 0.088214, 0.094018, 0.116461", \
+ "0.077756, 0.078449, 0.088388, 0.093451, 0.115465", \
+ "0.078677, 0.079201, 0.088598, 0.093644, 0.115553", \
+ "0.079144, 0.079244, 0.088865, 0.094032, 0.116101");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037026, 0.033786, 0.042761, 0.048825, 0.072809", \
+ "0.037638, 0.034849, 0.042862, 0.048604, 0.071392", \
+ "0.038414, 0.035234, 0.043727, 0.049392, 0.070211", \
+ "0.039016, 0.036021, 0.04298, 0.049002, 0.069506", \
+ "0.0393, 0.036454, 0.043253, 0.048934, 0.069391");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.06765, 0.070247, 0.075598, 0.081985, 0.106254", \
+ "0.067897, 0.069771, 0.075292, 0.081491, 0.104973", \
+ "0.068347, 0.069856, 0.076452, 0.081147, 0.104028", \
+ "0.068946, 0.070314, 0.07664, 0.082397, 0.102172", \
+ "0.068601, 0.070691, 0.076904, 0.082678, 0.102693");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.047187, 0.04301, 0.052467, 0.058987, 0.084861", \
+ "0.047188, 0.043824, 0.053109, 0.059138, 0.083706", \
+ "0.047529, 0.043539, 0.052945, 0.059775, 0.082777", \
+ "0.048555, 0.044674, 0.052352, 0.059345, 0.083031", \
+ "0.049041, 0.045208, 0.052753, 0.059207, 0.083092");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : INVX1 *
+ * -------------- */
+cell (INVX1) {
+ cell_footprint : inv;
+area : 16;
+ cell_leakage_power : 0.0221741;
+ pin(A) {
+ direction : input;
+ capacitance : 0.00932456;
+ rise_capacitance : 0.00932196;
+ fall_capacitance : 0.00932456;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.503808;
+ function : "(!A)";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.030906, 0.037434, 0.038584, 0.039088, 0.030318", \
+ "0.04464, 0.057551, 0.073142, 0.077841, 0.081003", \
+ "0.064368, 0.091076, 0.11557, 0.126352, 0.144944", \
+ "0.139135, 0.174422, 0.232659, 0.261317, 0.321043", \
+ "0.249412, 0.28434, 0.357694, 0.406534, 0.51187");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032269, 0.0648, 0.087, 0.1032, 0.1476", \
+ "0.036025, 0.0726, 0.1044, 0.1236, 0.183", \
+ "0.06, 0.0882, 0.1314, 0.1554, 0.2286", \
+ "0.1494, 0.1578, 0.2124, 0.2508, 0.3528", \
+ "0.288, 0.2892, 0.3192, 0.3576, 0.492");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037639, 0.056898, 0.083401, 0.104927, 0.156652", \
+ "0.05258, 0.083003, 0.119028, 0.141927, 0.207952", \
+ "0.07402, 0.112622, 0.162437, 0.191122, 0.271755", \
+ "0.15767, 0.201007, 0.284096, 0.331746, 0.452958", \
+ "0.285016, 0.326868, 0.415086, 0.481337, 0.653064");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.031447, 0.059488, 0.0846, 0.0918, 0.138", \
+ "0.047167, 0.0786, 0.1044, 0.1224, 0.1734", \
+ "0.072, 0.096, 0.1398, 0.1578, 0.222", \
+ "0.1866, 0.1914, 0.2358, 0.2748, 0.3696", \
+ "0.3648, 0.3648, 0.384, 0.4146, 0.5388");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.009213, 0.004772, 0.00823, 0.018532, 0.054083", \
+ "0.009047, 0.005677, 0.005713, 0.015244, 0.049453", \
+ "0.008669, 0.006332, 0.002998, 0.01159, 0.04368", \
+ "0.007879, 0.007243, 0.001451, 0.004701, 0.030385", \
+ "0.007605, 0.007297, 0.003652, 0.000737, 0.020842");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.023555, 0.029044, 0.041387, 0.051684, 0.087278", \
+ "0.023165, 0.028621, 0.039211, 0.048916, 0.083039", \
+ "0.023574, 0.02752, 0.036904, 0.045723, 0.077971", \
+ "0.024479, 0.025247, 0.032268, 0.039242, 0.066587", \
+ "0.024942, 0.025187, 0.029612, 0.034835, 0.057524");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : INVX2 *
+ * -------------- */
+cell (INVX2) {
+ cell_footprint : inv;
+area : 16;
+ cell_leakage_power : 0.0367509;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0186567;
+ rise_capacitance : 0.0186461;
+ fall_capacitance : 0.0186567;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.984408;
+ function : "(!A)";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032632, 0.040337, 0.044681, 0.046667, 0.042356", \
+ "0.047211, 0.061414, 0.078874, 0.0856, 0.094405", \
+ "0.069131, 0.094604, 0.12277, 0.135433, 0.160039", \
+ "0.148168, 0.183302, 0.244679, 0.274903, 0.341248", \
+ "0.266972, 0.301575, 0.374804, 0.425712, 0.538987");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032323, 0.0648, 0.0852, 0.102, 0.144", \
+ "0.036499, 0.0744, 0.1074, 0.1254, 0.189", \
+ "0.0636, 0.0924, 0.1332, 0.1566, 0.2328", \
+ "0.1608, 0.1686, 0.2196, 0.2592, 0.3624", \
+ "0.3114, 0.3108, 0.3372, 0.3738, 0.5076");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038051, 0.057734, 0.082403, 0.102222, 0.150603", \
+ "0.0533, 0.083516, 0.118618, 0.140573, 0.203618", \
+ "0.075541, 0.113686, 0.162856, 0.190874, 0.268952", \
+ "0.161729, 0.204229, 0.286885, 0.334269, 0.453778", \
+ "0.292363, 0.333831, 0.421093, 0.486676, 0.657729");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.031721, 0.0672, 0.0858, 0.0948, 0.138", \
+ "0.04837, 0.0798, 0.1062, 0.1248, 0.1764", \
+ "0.0744, 0.0978, 0.1422, 0.1608, 0.2268", \
+ "0.1926, 0.1974, 0.24, 0.2802, 0.3768", \
+ "0.3744, 0.375, 0.3936, 0.4236, 0.5496");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.018859, 0.010481, 0.014322, 0.033889, 0.10178", \
+ "0.018371, 0.012213, 0.009374, 0.027508, 0.092642", \
+ "0.017216, 0.013581, 0.004141, 0.020413, 0.081386", \
+ "0.015819, 0.01485, 0.0042, 0.007301, 0.055731", \
+ "0.01524, 0.014813, 0.00823, 0.000114, 0.03752");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.046998, 0.056527, 0.081025, 0.100533, 0.168537", \
+ "0.046437, 0.05647, 0.076599, 0.095106, 0.160317", \
+ "0.047242, 0.054342, 0.072097, 0.088869, 0.150394", \
+ "0.049072, 0.050295, 0.063214, 0.076296, 0.128133", \
+ "0.049968, 0.050297, 0.05833, 0.067964, 0.110555");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : INVX4 *
+ * -------------- */
+cell (INVX4) {
+ cell_footprint : inv;
+area : 24;
+ cell_leakage_power : 0.0735019;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0373134;
+ rise_capacitance : 0.0372921;
+ fall_capacitance : 0.0373134;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 1.96882;
+ function : "(!A)";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032632, 0.040337, 0.044681, 0.046667, 0.042356", \
+ "0.047211, 0.061414, 0.078874, 0.0856, 0.094405", \
+ "0.069131, 0.094604, 0.12277, 0.135433, 0.160039", \
+ "0.148168, 0.183302, 0.244679, 0.274903, 0.341248", \
+ "0.266972, 0.301575, 0.374804, 0.425712, 0.538987");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032323, 0.0648, 0.0852, 0.102, 0.144", \
+ "0.036499, 0.0744, 0.1074, 0.1254, 0.189", \
+ "0.0636, 0.0924, 0.1332, 0.1566, 0.2328", \
+ "0.1608, 0.1686, 0.2196, 0.2592, 0.3624", \
+ "0.3114, 0.3108, 0.3372, 0.3738, 0.5076");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038051, 0.057734, 0.082403, 0.102222, 0.150603", \
+ "0.0533, 0.083516, 0.118618, 0.140573, 0.203618", \
+ "0.075541, 0.113686, 0.162856, 0.190874, 0.268952", \
+ "0.161729, 0.204229, 0.286885, 0.334269, 0.453778", \
+ "0.292363, 0.333831, 0.421093, 0.486676, 0.657729");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.031721, 0.0672, 0.0858, 0.0948, 0.138", \
+ "0.04837, 0.0798, 0.1062, 0.1248, 0.1764", \
+ "0.0744, 0.0978, 0.1422, 0.1608, 0.2268", \
+ "0.1926, 0.1974, 0.24, 0.2802, 0.3768", \
+ "0.3744, 0.375, 0.3936, 0.4236, 0.5496");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037717, 0.020962, 0.028643, 0.067778, 0.20356", \
+ "0.036742, 0.024427, 0.018748, 0.055015, 0.185284", \
+ "0.034433, 0.027162, 0.008282, 0.040826, 0.162772", \
+ "0.031638, 0.0297, 0.0084, 0.014602, 0.111461", \
+ "0.030481, 0.029626, 0.016461, 0.000227, 0.075041");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.02, 0.05, 0.1, 0.3, 0.6");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.093996, 0.113054, 0.16205, 0.201065, 0.337073", \
+ "0.092874, 0.11294, 0.153197, 0.190211, 0.320633", \
+ "0.094485, 0.108685, 0.144194, 0.177737, 0.300787", \
+ "0.098145, 0.10059, 0.126429, 0.152592, 0.256266", \
+ "0.099936, 0.100595, 0.116661, 0.135929, 0.221109");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : INVX8 *
+ * -------------- */
+cell (INVX8) {
+ cell_footprint : inv;
+area : 40;
+ cell_leakage_power : 0.147006;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0746269;
+ rise_capacitance : 0.0745842;
+ fall_capacitance : 0.0746269;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 3.93763;
+ function : "(!A)";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.04, 0.1, 0.2, 0.6, 1.2");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032632, 0.040337, 0.044681, 0.046667, 0.042356", \
+ "0.047211, 0.061414, 0.078874, 0.0856, 0.094405", \
+ "0.069131, 0.094604, 0.12277, 0.135433, 0.160039", \
+ "0.148168, 0.183302, 0.244679, 0.274903, 0.341248", \
+ "0.266972, 0.301575, 0.374804, 0.425712, 0.538987");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.04, 0.1, 0.2, 0.6, 1.2");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032323, 0.0648, 0.0852, 0.102, 0.144", \
+ "0.036499, 0.0744, 0.1074, 0.1254, 0.189", \
+ "0.0636, 0.0924, 0.1332, 0.1566, 0.2328", \
+ "0.1608, 0.1686, 0.2196, 0.2592, 0.3624", \
+ "0.3114, 0.3108, 0.3372, 0.3738, 0.5076");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.04, 0.1, 0.2, 0.6, 1.2");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038051, 0.057734, 0.082403, 0.102222, 0.150603", \
+ "0.0533, 0.083516, 0.118618, 0.140573, 0.203618", \
+ "0.075541, 0.113686, 0.162856, 0.190874, 0.268952", \
+ "0.161729, 0.204229, 0.286885, 0.334269, 0.453778", \
+ "0.292363, 0.333831, 0.421093, 0.486676, 0.657729");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.04, 0.1, 0.2, 0.6, 1.2");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.031721, 0.0672, 0.0858, 0.0948, 0.138", \
+ "0.04837, 0.0798, 0.1062, 0.1248, 0.1764", \
+ "0.0744, 0.0978, 0.1422, 0.1608, 0.2268", \
+ "0.1926, 0.1974, 0.24, 0.2802, 0.3768", \
+ "0.3744, 0.375, 0.3936, 0.4236, 0.5496");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.04, 0.1, 0.2, 0.6, 1.2");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.075435, 0.041924, 0.057286, 0.135557, 0.40712", \
+ "0.073484, 0.048853, 0.037496, 0.110031, 0.370568", \
+ "0.068865, 0.054324, 0.016565, 0.081653, 0.325545", \
+ "0.063277, 0.0594, 0.0168, 0.029205, 0.222922", \
+ "0.060961, 0.059253, 0.032921, 0.000455, 0.150081");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.04, 0.1, 0.2, 0.6, 1.2");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.187992, 0.226109, 0.3241, 0.402131, 0.674147", \
+ "0.185747, 0.22588, 0.306395, 0.380423, 0.641267", \
+ "0.18897, 0.21737, 0.288388, 0.355474, 0.601575", \
+ "0.196289, 0.201179, 0.252858, 0.305184, 0.512532", \
+ "0.199872, 0.201189, 0.233321, 0.271857, 0.442219");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : LATCH *
+ * -------------- */
+cell (LATCH) {
+area : 0;
+ cell_leakage_power : 0.103166;
+ latch (DS0000,P0000) {
+ data_in : "D";
+ enable : "CLK";
+ }
+ pin(CLK) {
+ direction : input;
+ capacitance : 0.0222524;
+ rise_capacitance : 0.0222524;
+ fall_capacitance : 0.0222519;
+ clock : true;
+ internal_power() {
+ rise_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.010031, 0.006536, 0.033284, 0.079262, 0.115653, 0.184439");
+ }
+ fall_power(passive_energy_template_6x1) {
+ index_1 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ("0.060818, 0.076387, 0.102454, 0.1481, 0.183716, 0.25319");
+ }
+ }
+ min_pulse_width_high : 0.149322;
+ }
+ pin(D) {
+ direction : input;
+ capacitance : 0.00873537;
+ rise_capacitance : 0.00866992;
+ fall_capacitance : 0.00873537;
+ timing() {
+ related_pin : "CLK";
+ timing_type : hold_falling;
+ rise_constraint(hold_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "-0.09375, -0.13125, -0.11875, -0.14375, -0.175, -0.14375", \
+ "-0.10625, -0.14375, -0.13125, -0.15625, -0.1875, -0.15625", \
+ "-0.16875, -0.20625, -0.19375, -0.21875, -0.25, -0.21875");
+ }
+ fall_constraint(hold_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "-0.09375, -0.13125, -0.11875, -0.14375, -0.26875, -0.33125", \
+ "-0.0125, -0.05, -0.13125, -0.15625, -0.1875, -0.25", \
+ "0.01875, -0.01875, -0.1, -0.125, -0.15625, -0.3125");
+ }
+ }
+ timing() {
+ related_pin : "CLK";
+ timing_type : setup_falling;
+ rise_constraint(setup_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.1875, 0.225, 0.2125, 0.2375, 0.26875, 0.51875", \
+ "0.29375, 0.33125, 0.31875, 0.34375, 0.375, 0.71875", \
+ "0.45, 0.58125, 0.56875, 0.40625, 0.4375, 0.96875");
+ }
+ fall_constraint(setup_template_3x6) {
+ index_1 ("0.06, 0.3, 0.6");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.1875, 0.225, 0.30625, 0.33125, 0.3625, 0.51875", \
+ "0.2, 0.2375, 0.4125, 0.34375, 0.375, 0.4375", \
+ "0.16875, 0.20625, 0.2875, 0.3125, 0.34375, 0.40625");
+ }
+ }
+ }
+ pin(Q) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.973513;
+ function : "DS0000";
+ timing() {
+ related_pin : "CLK";
+ timing_sense : non_unate;
+ timing_type : rising_edge;
+ cell_rise(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.18909, 0.218413, 0.23187, 0.233755, 0.226597, 0.200201", \
+ "0.536777, 0.565286, 0.578688, 0.580569, 0.573314, 0.549413", \
+ "1.14096, 1.16975, 1.18342, 1.18477, 1.17804, 1.15432", \
+ "2.69477, 2.72325, 2.73707, 2.73941, 2.73171, 2.70708", \
+ "3.55791, 3.58635, 3.59991, 3.6027, 3.5952, 3.57163", \
+ "4.42163, 4.44975, 4.46196, 4.46488, 4.45845, 4.43438");
+ }
+ rise_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.1458, 0.1488, 0.1566, 0.165, 0.1686, 0.18", \
+ "0.633, 0.6324, 0.6336, 0.6354, 0.6366, 0.6408", \
+ "1.4934, 1.4928, 1.4922, 1.4928, 1.494, 1.497", \
+ "3.705, 3.705, 3.7044, 3.7068, 3.7062, 3.7038", \
+ "4.9338, 4.9332, 4.9356, 4.9338, 4.935, 4.9344", \
+ "6.165, 6.165, 6.165, 6.1638, 6.1638, 6.1632");
+ }
+ cell_fall(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.246125, 0.260752, 0.272064, 0.280557, 0.277834, 0.276812", \
+ "0.568379, 0.581956, 0.592678, 0.602286, 0.59883, 0.600004", \
+ "1.12243, 1.13602, 1.14693, 1.15599, 1.15224, 1.15283", \
+ "2.5462, 2.55973, 2.57084, 2.58001, 2.57619, 2.5754", \
+ "3.3372, 3.35076, 3.36199, 3.37103, 3.36612, 3.36578", \
+ "4.12779, 4.14172, 4.1528, 4.16223, 4.15678, 4.15809");
+ }
+ fall_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.1344, 0.1326, 0.1326, 0.135, 0.1338, 0.1326", \
+ "0.528, 0.528, 0.528, 0.5274, 0.528, 0.5286", \
+ "1.2384, 1.2378, 1.2378, 1.2384, 1.2366, 1.236", \
+ "3.0672, 3.0666, 3.0684, 3.0678, 3.0672, 3.0648", \
+ "4.0842, 4.0842, 4.0842, 4.0848, 4.0812, 4.0824", \
+ "5.1006, 5.1006, 5.1006, 5.1, 5.0976, 5.0964");
+ }
+ }
+ timing() {
+ related_pin : "D";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.210937, 0.237525, 0.263286, 0.292353, 0.303925, 0.321076", \
+ "0.557971, 0.585911, 0.611315, 0.638968, 0.652981, 0.673186", \
+ "1.16296, 1.19063, 1.2161, 1.2441, 1.25749, 1.27842", \
+ "2.71705, 2.7443, 2.76952, 2.79832, 2.81197, 2.83233", \
+ "3.57852, 3.60631, 3.63229, 3.66172, 3.67576, 3.69607", \
+ "4.4416, 4.47023, 4.49494, 4.52491, 4.5389, 4.55871");
+ }
+ rise_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.1476, 0.1494, 0.1506, 0.1584, 0.1596, 0.1716", \
+ "0.6324, 0.6318, 0.633, 0.6342, 0.6354, 0.6402", \
+ "1.4928, 1.4928, 1.4922, 1.494, 1.4928, 1.4946", \
+ "3.7062, 3.7038, 3.7044, 3.7074, 3.7056, 3.7074", \
+ "4.9344, 4.9338, 4.935, 4.9326, 4.9332, 4.9332", \
+ "6.1644, 6.1644, 6.1644, 6.1638, 6.1638, 6.162");
+ }
+ cell_fall(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.244037, 0.281305, 0.320272, 0.387479, 0.430721, 0.509293", \
+ "0.564118, 0.601547, 0.642835, 0.711297, 0.754387, 0.837102", \
+ "1.11784, 1.15563, 1.19662, 1.26524, 1.30888, 1.391", \
+ "2.54141, 2.57949, 2.62027, 2.68836, 2.73272, 2.81466", \
+ "3.33236, 3.36895, 3.41105, 3.4799, 3.52322, 3.60448", \
+ "4.12332, 4.16064, 4.20241, 4.27068, 4.31274, 4.39483");
+ }
+ fall_transition(delay_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.1326, 0.1326, 0.1368, 0.1464, 0.1494, 0.1596", \
+ "0.528, 0.5274, 0.5286, 0.531, 0.5316, 0.5352", \
+ "1.2372, 1.2372, 1.2372, 1.2396, 1.2396, 1.2402", \
+ "3.0678, 3.0678, 3.0672, 3.0666, 3.0654, 3.0678", \
+ "4.0842, 4.0818, 4.0824, 4.0806, 4.0812, 4.0824", \
+ "5.1006, 5.0988, 5.1006, 5.0964, 5.0988, 5.0982");
+ }
+ }
+ internal_power() {
+ related_pin : "CLK";
+ rise_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.038408, 0.057367, 0.089036, 0.15147, 0.193, 0.278585", \
+ "0.040739, 0.058496, 0.089776, 0.148617, 0.191407, 0.279096", \
+ "0.041182, 0.059146, 0.090506, 0.149199, 0.191888, 0.27847", \
+ "0.041362, 0.059391, 0.090869, 0.149687, 0.192335, 0.278863", \
+ "0.041312, 0.059343, 0.090857, 0.149704, 0.192434, 0.278866", \
+ "0.041312, 0.059323, 0.090902, 0.149735, 0.192502, 0.279014");
+ }
+ fall_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.06354, 0.075317, 0.100798, 0.151019, 0.186273, 0.257456", \
+ "0.063927, 0.076894, 0.103062, 0.151788, 0.186149, 0.25675", \
+ "0.064656, 0.077581, 0.103802, 0.152681, 0.186584, 0.25713", \
+ "0.064959, 0.077968, 0.104174, 0.153068, 0.186931, 0.25752", \
+ "0.065018, 0.078043, 0.104238, 0.153221, 0.186986, 0.257588", \
+ "0.064996, 0.078001, 0.104263, 0.153232, 0.18705, 0.257639");
+ }
+ }
+ internal_power() {
+ related_pin : "D";
+ rise_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.047217, 0.052308, 0.061774, 0.0816, 0.096724, 0.130191", \
+ "0.050227, 0.053368, 0.061075, 0.080069, 0.094248, 0.124788", \
+ "0.050887, 0.053854, 0.061829, 0.080544, 0.094615, 0.124458", \
+ "0.051097, 0.054029, 0.062242, 0.080966, 0.095056, 0.124728", \
+ "0.051069, 0.054041, 0.062245, 0.081016, 0.095081, 0.124789", \
+ "0.051137, 0.054041, 0.062266, 0.081062, 0.095215, 0.124888");
+ }
+ fall_power(energy_template_6x6) {
+ index_1 ("0.1, 0.5, 1.2, 3, 4, 5");
+ index_2 ("0.06, 0.24, 0.48, 0.9, 1.2, 1.8");
+ values ( \
+ "0.098675, 0.100019, 0.108217, 0.128369, 0.144286, 0.17707", \
+ "0.09899, 0.100602, 0.108735, 0.128095, 0.142828, 0.173275", \
+ "0.098898, 0.101152, 0.109334, 0.128556, 0.143306, 0.173336", \
+ "0.099044, 0.101398, 0.109702, 0.128973, 0.143726, 0.173639", \
+ "0.099079, 0.101443, 0.109769, 0.129053, 0.143888, 0.17369", \
+ "0.099072, 0.101448, 0.109865, 0.129071, 0.143883, 0.17368");
+ }
+ }
+ }
+}
+
+/* --------------- *
+ * Design : MUX2X1 *
+ * --------------- */
+cell (MUX2X1) {
+area : 48;
+ cell_leakage_power : 0.0870033;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0173455;
+ rise_capacitance : 0.0170984;
+ fall_capacitance : 0.0173455;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0173537;
+ rise_capacitance : 0.0170875;
+ fall_capacitance : 0.0173537;
+ }
+ pin(S) {
+ direction : input;
+ capacitance : 0.0204132;
+ rise_capacitance : 0.0203919;
+ fall_capacitance : 0.0204132;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.488958;
+ function : "(!((S A) + (!S B)))";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.049841, 0.062439, 0.070817, 0.074619, 0.075764", \
+ "0.06038, 0.076407, 0.087308, 0.09453, 0.10352", \
+ "0.077941, 0.096048, 0.113817, 0.124416, 0.139745", \
+ "0.14017, 0.162075, 0.195951, 0.214682, 0.257299", \
+ "0.232475, 0.254972, 0.296829, 0.323596, 0.39058");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.039692, 0.066, 0.0984, 0.1206, 0.18", \
+ "0.056615, 0.0756, 0.1122, 0.1332, 0.2004", \
+ "0.0714, 0.0918, 0.1272, 0.1488, 0.2238", \
+ "0.1506, 0.1566, 0.1926, 0.2196, 0.306", \
+ "0.2712, 0.2718, 0.294, 0.3186, 0.4092");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.072351, 0.086817, 0.114778, 0.134772, 0.193395", \
+ "0.086412, 0.103969, 0.133, 0.154627, 0.220414", \
+ "0.107326, 0.128553, 0.161634, 0.186654, 0.259106", \
+ "0.19325, 0.214026, 0.261158, 0.291116, 0.382551", \
+ "0.320216, 0.341082, 0.391527, 0.428828, 0.53531");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.052306, 0.0762, 0.0984, 0.1164, 0.168", \
+ "0.075, 0.0882, 0.1194, 0.1338, 0.1878", \
+ "0.1002, 0.1158, 0.1422, 0.1638, 0.2208", \
+ "0.219, 0.2232, 0.2478, 0.27, 0.336", \
+ "0.396, 0.396, 0.4104, 0.4272, 0.4998");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.054662, 0.063511, 0.071265, 0.074915, 0.075865", \
+ "0.065546, 0.078306, 0.08765, 0.094949, 0.104013", \
+ "0.082423, 0.097893, 0.114535, 0.125138, 0.140125", \
+ "0.146105, 0.164949, 0.197303, 0.215761, 0.257086", \
+ "0.2385, 0.258003, 0.298933, 0.325026, 0.391418");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.04514, 0.0648, 0.0966, 0.1182, 0.1776", \
+ "0.058413, 0.0756, 0.1104, 0.1314, 0.1986", \
+ "0.0786, 0.0924, 0.1266, 0.1476, 0.2226", \
+ "0.1536, 0.159, 0.1938, 0.2202, 0.303", \
+ "0.2742, 0.2742, 0.2964, 0.321, 0.4092");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.066015, 0.08492, 0.11281, 0.132989, 0.191892", \
+ "0.081067, 0.100589, 0.131696, 0.153589, 0.219376", \
+ "0.102628, 0.125139, 0.16009, 0.185256, 0.258795", \
+ "0.189337, 0.211033, 0.259234, 0.289464, 0.381313", \
+ "0.316367, 0.338345, 0.389351, 0.427169, 0.534114");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.053671, 0.072, 0.1002, 0.1182, 0.1668", \
+ "0.0702, 0.0888, 0.1206, 0.135, 0.1884", \
+ "0.0984, 0.1128, 0.1428, 0.1644, 0.2208", \
+ "0.2178, 0.222, 0.2472, 0.2694, 0.3342", \
+ "0.3942, 0.3942, 0.4086, 0.426, 0.4998");
+ }
+ }
+ timing() {
+ related_pin : "S";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.100427, 0.115951, 0.142823, 0.157884, 0.17571", \
+ "0.113348, 0.128794, 0.159753, 0.171618, 0.192833", \
+ "0.13471, 0.151395, 0.180934, 0.194907, 0.216615", \
+ "0.215914, 0.238688, 0.26376, 0.275954, 0.299918", \
+ "0.34018, 0.36622, 0.388128, 0.399598, 0.424692");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.05407, 0.05147, 0.05628, 0.0678, 0.072", \
+ "0.0696, 0.0666, 0.0816, 0.0804, 0.0924", \
+ "0.1008, 0.0996, 0.1014, 0.1044, 0.1134", \
+ "0.2184, 0.219, 0.2112, 0.2106, 0.2154", \
+ "0.3954, 0.396, 0.3906, 0.3888, 0.39");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.099458, 0.130249, 0.180656, 0.211869, 0.29018", \
+ "0.109448, 0.140076, 0.191393, 0.223325, 0.301373", \
+ "0.125309, 0.156202, 0.210391, 0.24179, 0.319929", \
+ "0.18479, 0.217556, 0.271307, 0.302384, 0.386655", \
+ "0.274707, 0.307295, 0.359763, 0.393482, 0.477327");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.045961, 0.044488, 0.046733, 0.0684, 0.0726", \
+ "0.057213, 0.056881, 0.058283, 0.0702, 0.078", \
+ "0.078, 0.0786, 0.0852, 0.0864, 0.0912", \
+ "0.1548, 0.1548, 0.1506, 0.1536, 0.1584", \
+ "0.2742, 0.2736, 0.27, 0.2694, 0.2712");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.01907, 0.014997, 0.002981, 0.018697, 0.075579", \
+ "0.018751, 0.014696, 0.000905, 0.01617, 0.07148", \
+ "0.018262, 0.014954, 0.001323, 0.01254, 0.065647", \
+ "0.017453, 0.016036, 0.006445, 0.00428, 0.049438", \
+ "0.017013, 0.016548, 0.009485, 0.001448, 0.035417");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.095161, 0.097884, 0.115213, 0.131187, 0.18897", \
+ "0.095544, 0.097404, 0.113725, 0.12853, 0.185696", \
+ "0.09578, 0.097049, 0.110996, 0.12527, 0.180604", \
+ "0.096304, 0.095756, 0.10667, 0.118, 0.16602", \
+ "0.096814, 0.096191, 0.103844, 0.112461, 0.15306");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.004462, 0.007633, 0.026336, 0.042227, 0.098755", \
+ "0.004829, 0.008638, 0.024477, 0.039507, 0.09467", \
+ "0.005725, 0.008503, 0.02219, 0.035927, 0.088849", \
+ "0.006188, 0.007371, 0.01687, 0.027553, 0.072835", \
+ "0.006544, 0.006814, 0.01381, 0.021918, 0.058831");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.072685, 0.075745, 0.093126, 0.109042, 0.167212", \
+ "0.072538, 0.075094, 0.091529, 0.106543, 0.163512", \
+ "0.072993, 0.074866, 0.08859, 0.103206, 0.158549", \
+ "0.073629, 0.072972, 0.084054, 0.09549, 0.143675", \
+ "0.07412, 0.073345, 0.081069, 0.089851, 0.130439");
+ }
+ }
+ internal_power() {
+ related_pin : "S";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.056455, 0.05297, 0.066123, 0.077991, 0.117024", \
+ "0.056071, 0.05269, 0.066661, 0.07747, 0.114947", \
+ "0.05456, 0.053053, 0.065867, 0.076629, 0.111982", \
+ "0.051875, 0.054102, 0.065763, 0.074375, 0.109935", \
+ "0.049442, 0.052849, 0.065156, 0.074353, 0.109384");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.091443, 0.091747, 0.105716, 0.115072, 0.15201", \
+ "0.090143, 0.091197, 0.10563, 0.115065, 0.150487", \
+ "0.088359, 0.090468, 0.104825, 0.114881, 0.149389", \
+ "0.084078, 0.087722, 0.102949, 0.113106, 0.148234", \
+ "0.081489, 0.085188, 0.100644, 0.11098, 0.146933");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : NAND2X1 *
+ * ---------------- */
+cell (NAND2X1) {
+area : 24;
+ cell_leakage_power : 0.0393659;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0125;
+ rise_capacitance : 0.0125;
+ fall_capacitance : 0.0122726;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0129035;
+ rise_capacitance : 0.0129005;
+ fall_capacitance : 0.0129035;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.499794;
+ function : "(!(A B))";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032849, 0.032709, 0.02129, 0.009771, -0.035525", \
+ "0.046123, 0.052511, 0.044962, 0.037843, 0.002168", \
+ "0.059313, 0.074012, 0.077906, 0.076127, 0.052445", \
+ "0.121841, 0.143174, 0.169505, 0.18173, 0.193629", \
+ "0.212833, 0.235422, 0.274283, 0.296982, 0.343816");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.025252, 0.049961, 0.081, 0.096, 0.1536", \
+ "0.037379, 0.0648, 0.0948, 0.117, 0.1728", \
+ "0.057307, 0.0822, 0.1146, 0.1368, 0.2046", \
+ "0.1332, 0.144, 0.1788, 0.2058, 0.2928", \
+ "0.252, 0.2556, 0.279, 0.3072, 0.4002");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.053827, 0.090888, 0.133161, 0.166997, 0.264866", \
+ "0.067464, 0.10657, 0.161276, 0.195685, 0.302267", \
+ "0.089222, 0.133733, 0.196269, 0.235206, 0.35182", \
+ "0.174217, 0.217849, 0.306733, 0.361281, 0.50781", \
+ "0.300777, 0.343074, 0.433282, 0.502219, 0.692285");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038295, 0.0738, 0.0972, 0.1008, 0.1476", \
+ "0.05811, 0.0834, 0.1116, 0.1308, 0.174", \
+ "0.0864, 0.102, 0.1446, 0.1656, 0.2214", \
+ "0.2022, 0.207, 0.2448, 0.279, 0.3666", \
+ "0.3792, 0.3786, 0.3942, 0.4224, 0.5364");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.030722, 0.034691, 0.027547, 0.022497, -0.007891", \
+ "0.04353, 0.052352, 0.058464, 0.056301, 0.034194", \
+ "0.060204, 0.08031, 0.09353, 0.097676, 0.089812", \
+ "0.123247, 0.154435, 0.197787, 0.216233, 0.247288", \
+ "0.214218, 0.245642, 0.31052, 0.346173, 0.417032");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.03134, 0.0672, 0.0882, 0.1032, 0.1488", \
+ "0.038445, 0.0696, 0.0984, 0.1206, 0.1824", \
+ "0.05896, 0.0882, 0.1254, 0.1482, 0.222", \
+ "0.1332, 0.15, 0.201, 0.2346, 0.3294", \
+ "0.252, 0.2562, 0.2928, 0.3342, 0.453");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.045793, 0.070459, 0.110903, 0.134724, 0.213257", \
+ "0.058061, 0.09551, 0.138201, 0.168916, 0.257647", \
+ "0.0816, 0.122132, 0.178125, 0.213621, 0.314956", \
+ "0.166583, 0.208768, 0.294841, 0.346518, 0.483296", \
+ "0.294084, 0.335175, 0.424091, 0.492226, 0.67506");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.033941, 0.0678, 0.084, 0.1026, 0.1422", \
+ "0.051455, 0.0798, 0.1092, 0.1218, 0.1722", \
+ "0.078, 0.096, 0.1368, 0.1608, 0.2172", \
+ "0.1926, 0.1974, 0.237, 0.2736, 0.3624", \
+ "0.369, 0.3696, 0.387, 0.4146, 0.5334");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.010032, 0.006113, 0.007211, 0.019388, 0.061254", \
+ "0.009375, 0.006717, 0.005324, 0.016391, 0.056772", \
+ "0.009041, 0.007682, 0.003309, 0.013056, 0.05095", \
+ "0.008135, 0.007795, 0.000701, 0.006495, 0.037106", \
+ "0.007774, 0.007571, 0.002795, 0.002532, 0.026865");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.044515, 0.051923, 0.065621, 0.078039, 0.12025", \
+ "0.045446, 0.0506, 0.064109, 0.075644, 0.117275", \
+ "0.045658, 0.049805, 0.061891, 0.072736, 0.11295", \
+ "0.04651, 0.047725, 0.056845, 0.066045, 0.101402", \
+ "0.046968, 0.047565, 0.053711, 0.060733, 0.090902");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.009782, 0.004814, 0.009821, 0.021834, 0.062952", \
+ "0.009413, 0.005752, 0.007389, 0.018537, 0.058347", \
+ "0.008958, 0.006344, 0.004695, 0.014766, 0.05239", \
+ "0.008019, 0.007148, 0.000149, 0.00726, 0.037972", \
+ "0.00768, 0.00724, 0.002621, 0.002774, 0.027187");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.03356, 0.040104, 0.053535, 0.065719, 0.106691", \
+ "0.033477, 0.039273, 0.051799, 0.062943, 0.102839", \
+ "0.034205, 0.038195, 0.049476, 0.059868, 0.098022", \
+ "0.036401, 0.036373, 0.044702, 0.053256, 0.086446", \
+ "0.037565, 0.037037, 0.042043, 0.048458, 0.076596");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : NAND3X1 *
+ * ---------------- */
+cell (NAND3X1) {
+area : 36;
+ cell_leakage_power : 0.0560872;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0158812;
+ rise_capacitance : 0.0158812;
+ fall_capacitance : 0.0154645;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0159247;
+ rise_capacitance : 0.0159247;
+ fall_capacitance : 0.0155495;
+ }
+ pin(C) {
+ direction : input;
+ capacitance : 0.0164926;
+ rise_capacitance : 0.0164758;
+ fall_capacitance : 0.0164926;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.490658;
+ function : "(!((A B) C))";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.04116, 0.040614, 0.023919, 0.003135, -0.064874", \
+ "0.049935, 0.052803, 0.04061, 0.0249, -0.035024", \
+ "0.065293, 0.074215, 0.066043, 0.056796, 0.007393", \
+ "0.124514, 0.134562, 0.144799, 0.145727, 0.128775", \
+ "0.208279, 0.220458, 0.239093, 0.247928, 0.259065");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.02816, 0.050762, 0.0792, 0.1002, 0.1632", \
+ "0.03958, 0.0606, 0.087, 0.1092, 0.177", \
+ "0.055365, 0.0738, 0.1062, 0.1296, 0.195", \
+ "0.1314, 0.138, 0.1674, 0.1914, 0.2688", \
+ "0.2448, 0.246, 0.2676, 0.288, 0.366");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.077, 0.119013, 0.180545, 0.222936, 0.354109", \
+ "0.090156, 0.136337, 0.20562, 0.249079, 0.37915", \
+ "0.1133, 0.158718, 0.234505, 0.282237, 0.421754", \
+ "0.199333, 0.243004, 0.335391, 0.396853, 0.563156", \
+ "0.326751, 0.369094, 0.459816, 0.530231, 0.735888");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.059051, 0.078, 0.1158, 0.129, 0.1692", \
+ "0.081, 0.0942, 0.1332, 0.1488, 0.195", \
+ "0.1062, 0.1188, 0.1614, 0.1842, 0.2406", \
+ "0.2256, 0.2274, 0.2568, 0.2922, 0.3798", \
+ "0.4026, 0.4026, 0.4152, 0.4386, 0.5466");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038822, 0.040187, 0.027228, 0.013603, -0.036291", \
+ "0.0494, 0.054505, 0.049118, 0.040383, -0.001952", \
+ "0.064463, 0.078196, 0.079944, 0.075989, 0.04532", \
+ "0.122908, 0.142917, 0.168173, 0.17767, 0.182216", \
+ "0.208718, 0.228463, 0.268061, 0.289581, 0.329475");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.029743, 0.053801, 0.0918, 0.1074, 0.168", \
+ "0.042422, 0.0696, 0.0984, 0.123, 0.1872", \
+ "0.058678, 0.081, 0.1194, 0.1416, 0.2142", \
+ "0.132, 0.1434, 0.1812, 0.2112, 0.2964", \
+ "0.2442, 0.2484, 0.276, 0.3066, 0.4002");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.066118, 0.104122, 0.160287, 0.196007, 0.307907", \
+ "0.080033, 0.121617, 0.180486, 0.220316, 0.338661", \
+ "0.101665, 0.146495, 0.215252, 0.259065, 0.385102", \
+ "0.188061, 0.230673, 0.320771, 0.378484, 0.534861", \
+ "0.315536, 0.356535, 0.446461, 0.516294, 0.714324");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.052328, 0.0756, 0.0984, 0.1188, 0.153", \
+ "0.063, 0.0834, 0.123, 0.141, 0.1854", \
+ "0.0936, 0.1086, 0.1542, 0.1716, 0.2262", \
+ "0.213, 0.216, 0.2496, 0.2826, 0.3708", \
+ "0.39, 0.3894, 0.4026, 0.4284, 0.5388");
+ }
+ }
+ timing() {
+ related_pin : "C";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032603, 0.036382, 0.026123, 0.018569, -0.022063", \
+ "0.044522, 0.052032, 0.053463, 0.047809, 0.016461", \
+ "0.059652, 0.07628, 0.085372, 0.085773, 0.067297", \
+ "0.118645, 0.14708, 0.183081, 0.19771, 0.215072", \
+ "0.202474, 0.232142, 0.290379, 0.320385, 0.375619");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.034546, 0.0696, 0.0912, 0.105, 0.1602", \
+ "0.041983, 0.072, 0.1032, 0.1242, 0.1848", \
+ "0.06, 0.087, 0.1266, 0.1476, 0.2214", \
+ "0.1326, 0.1488, 0.1974, 0.228, 0.3228", \
+ "0.2454, 0.249, 0.2898, 0.3288, 0.4398");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.051521, 0.085749, 0.126629, 0.157693, 0.248486", \
+ "0.064751, 0.104177, 0.154098, 0.186653, 0.288056", \
+ "0.088648, 0.130864, 0.190543, 0.229086, 0.342298", \
+ "0.175149, 0.216689, 0.304292, 0.358342, 0.504462", \
+ "0.303176, 0.343349, 0.432222, 0.500994, 0.691157");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037306, 0.0714, 0.0918, 0.099, 0.1446", \
+ "0.053744, 0.081, 0.108, 0.1272, 0.1764", \
+ "0.0822, 0.0984, 0.1398, 0.1608, 0.219", \
+ "0.198, 0.2022, 0.2406, 0.2748, 0.3612", \
+ "0.3756, 0.3744, 0.3894, 0.417, 0.531");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.010223, 0.007778, 0.004387, 0.015797, 0.060932", \
+ "0.009631, 0.007971, 0.003056, 0.013509, 0.057066", \
+ "0.008955, 0.008071, 0.000958, 0.011261, 0.052029", \
+ "0.008113, 0.007956, 0.001637, 0.006035, 0.039606", \
+ "0.007727, 0.007726, 0.003233, 0.002633, 0.029842");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.078173, 0.0838, 0.098208, 0.112082, 0.158646", \
+ "0.078445, 0.083496, 0.09757, 0.110399, 0.156182", \
+ "0.07885, 0.082611, 0.096067, 0.107872, 0.152181", \
+ "0.08051, 0.081852, 0.091836, 0.101879, 0.141566", \
+ "0.081202, 0.082003, 0.088784, 0.096782, 0.131078");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.009754, 0.006571, 0.005699, 0.018144, 0.061969", \
+ "0.009288, 0.006691, 0.004204, 0.015552, 0.057728", \
+ "0.008783, 0.006458, 0.002528, 0.01268, 0.052145", \
+ "0.00802, 0.00686, 0.000893, 0.006527, 0.038603", \
+ "0.007622, 0.007098, 0.002825, 0.002708, 0.028343");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.062656, 0.067136, 0.082427, 0.094475, 0.139019", \
+ "0.062127, 0.06667, 0.080442, 0.09237, 0.136319", \
+ "0.063336, 0.066255, 0.078446, 0.090276, 0.132354", \
+ "0.06511, 0.065218, 0.07431, 0.083944, 0.121697", \
+ "0.066163, 0.065839, 0.071643, 0.079074, 0.111649");
+ }
+ }
+ internal_power() {
+ related_pin : "C";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.010951, 0.005335, 0.009988, 0.022814, 0.066842", \
+ "0.009889, 0.006175, 0.007602, 0.019637, 0.062399", \
+ "0.00932, 0.006698, 0.005089, 0.015884, 0.056505", \
+ "0.008196, 0.007286, 0.000252, 0.00831, 0.041775", \
+ "0.007777, 0.007328, 0.002254, 0.00367, 0.030458");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.042867, 0.050017, 0.064505, 0.076887, 0.121021", \
+ "0.043975, 0.049037, 0.062676, 0.074655, 0.117504", \
+ "0.044988, 0.048248, 0.060394, 0.071801, 0.112996", \
+ "0.048348, 0.04748, 0.056002, 0.065379, 0.101725", \
+ "0.050303, 0.048868, 0.053668, 0.060673, 0.091712");
+ }
+ }
+ }
+}
+
+/* --------------- *
+ * Design : NOR2X1 *
+ * --------------- */
+cell (NOR2X1) {
+area : 24;
+ cell_leakage_power : 0.035234;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0144193;
+ rise_capacitance : 0.0139227;
+ fall_capacitance : 0.0144193;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0150643;
+ rise_capacitance : 0.0150469;
+ fall_capacitance : 0.0150643;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.499994;
+ function : "(!(A+B))";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.052024, 0.072786, 0.102719, 0.116867, 0.162886", \
+ "0.063687, 0.092509, 0.123179, 0.144568, 0.197323", \
+ "0.082815, 0.115218, 0.159103, 0.181266, 0.244335", \
+ "0.158166, 0.194702, 0.262053, 0.298892, 0.389987", \
+ "0.269742, 0.305373, 0.380148, 0.433551, 0.561665");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.036399, 0.0738, 0.1002, 0.1128, 0.1722", \
+ "0.05475, 0.081, 0.1146, 0.135, 0.201", \
+ "0.0756, 0.0948, 0.138, 0.1656, 0.2394", \
+ "0.165, 0.1704, 0.2184, 0.255, 0.3552", \
+ "0.3054, 0.3054, 0.3306, 0.3654, 0.492");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.048757, 0.062084, 0.070199, 0.073994, 0.084854", \
+ "0.062221, 0.079679, 0.092833, 0.102291, 0.123883", \
+ "0.086501, 0.104512, 0.127895, 0.141506, 0.175016", \
+ "0.170492, 0.192451, 0.23367, 0.257634, 0.32148", \
+ "0.29667, 0.318563, 0.367261, 0.400499, 0.488101");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.032304, 0.059129, 0.0888, 0.1104, 0.1554", \
+ "0.049568, 0.075, 0.1026, 0.126, 0.1812", \
+ "0.0816, 0.0948, 0.1284, 0.1518, 0.2148", \
+ "0.1962, 0.1998, 0.2292, 0.2544, 0.3288", \
+ "0.3732, 0.3738, 0.39, 0.411, 0.4908");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038401, 0.051255, 0.067423, 0.073413, 0.087652", \
+ "0.05399, 0.073396, 0.095386, 0.108254, 0.132269", \
+ "0.074059, 0.102031, 0.133828, 0.151972, 0.190359", \
+ "0.148582, 0.184191, 0.24634, 0.278312, 0.355503", \
+ "0.261225, 0.295056, 0.368683, 0.419628, 0.537104");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.028747, 0.057397, 0.0822, 0.1038, 0.1494", \
+ "0.043383, 0.075, 0.105, 0.1242, 0.1842", \
+ "0.059564, 0.087, 0.129, 0.1548, 0.2262", \
+ "0.1536, 0.1602, 0.2112, 0.2484, 0.345", \
+ "0.2934, 0.2928, 0.3198, 0.357, 0.4842");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.044051, 0.061971, 0.08092, 0.095749, 0.131115", \
+ "0.058156, 0.083838, 0.112761, 0.129467, 0.17689", \
+ "0.081817, 0.112785, 0.15217, 0.174951, 0.236316", \
+ "0.166398, 0.201667, 0.271342, 0.309874, 0.406624", \
+ "0.293225, 0.328511, 0.404142, 0.460926, 0.599617");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037234, 0.072, 0.0924, 0.1056, 0.147", \
+ "0.055595, 0.0846, 0.1068, 0.1278, 0.1806", \
+ "0.0816, 0.105, 0.144, 0.1626, 0.225", \
+ "0.1962, 0.2016, 0.246, 0.2802, 0.3648", \
+ "0.3726, 0.3738, 0.3954, 0.4266, 0.5394");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.018356, 0.0131, 0.001603, 0.014903, 0.06085", \
+ "0.018158, 0.013817, 0.000223, 0.01217, 0.057082", \
+ "0.01762, 0.014309, 0.002784, 0.00876, 0.051711", \
+ "0.017041, 0.01611, 0.008021, 0.000741, 0.037068", \
+ "0.016886, 0.016278, 0.011013, 0.004623, 0.024639");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.066001, 0.069582, 0.082161, 0.09472, 0.141145", \
+ "0.065447, 0.06803, 0.080177, 0.091723, 0.136925", \
+ "0.066374, 0.067808, 0.078361, 0.088556, 0.131286", \
+ "0.067107, 0.067859, 0.074216, 0.082288, 0.117562", \
+ "0.067494, 0.066515, 0.072152, 0.078228, 0.107165");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.018437, 0.013232, 0.001761, 0.013882, 0.056136", \
+ "0.017733, 0.013814, 0.000637, 0.010912, 0.051918", \
+ "0.016174, 0.014633, 0.003143, 0.007407, 0.046348", \
+ "0.013581, 0.01386, 0.007313, 0.000341, 0.03265", \
+ "0.012265, 0.012835, 0.009099, 0.003692, 0.02204");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.042481, 0.049241, 0.064378, 0.076077, 0.118202", \
+ "0.043117, 0.048688, 0.062041, 0.073351, 0.113998", \
+ "0.042961, 0.047646, 0.059, 0.069816, 0.108553", \
+ "0.044725, 0.045628, 0.054048, 0.062479, 0.095792", \
+ "0.045588, 0.045761, 0.051097, 0.057527, 0.085382");
+ }
+ }
+ }
+}
+
+/* --------------- *
+ * Design : NOR3X1 *
+ * --------------- */
+cell (NOR3X1) {
+area : 64;
+ cell_leakage_power : 0.0544821;
+ pin(A) {
+ direction : input;
+ capacitance : 0.019824;
+ rise_capacitance : 0.018966;
+ fall_capacitance : 0.019824;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.019861;
+ rise_capacitance : 0.0191157;
+ fall_capacitance : 0.019861;
+ }
+ pin(C) {
+ direction : input;
+ capacitance : 0.0207948;
+ rise_capacitance : 0.0207948;
+ fall_capacitance : 0.020788;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.496256;
+ function : "(!((A+B)+C))";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.076871, 0.10606, 0.158872, 0.183447, 0.266465", \
+ "0.088527, 0.125424, 0.174443, 0.208561, 0.294195", \
+ "0.111325, 0.148061, 0.206591, 0.238597, 0.331966", \
+ "0.189341, 0.225103, 0.29955, 0.34401, 0.460418", \
+ "0.302144, 0.337536, 0.412874, 0.4702, 0.618393");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.058223, 0.081, 0.1194, 0.144, 0.207", \
+ "0.0774, 0.09, 0.1374, 0.1578, 0.2298", \
+ "0.0984, 0.111, 0.159, 0.186, 0.2628", \
+ "0.1926, 0.1968, 0.2334, 0.2718, 0.3708", \
+ "0.3324, 0.3318, 0.3528, 0.3828, 0.5046");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.069909, 0.073929, 0.08023, 0.076139, 0.052404", \
+ "0.085164, 0.09309, 0.099796, 0.096392, 0.083598", \
+ "0.104666, 0.115656, 0.125517, 0.129858, 0.12765", \
+ "0.187664, 0.200206, 0.223859, 0.234315, 0.259507", \
+ "0.312311, 0.329068, 0.354596, 0.371168, 0.413719");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.045431, 0.063, 0.0876, 0.1122, 0.183", \
+ "0.0648, 0.0744, 0.1056, 0.1236, 0.1968", \
+ "0.0912, 0.1008, 0.1278, 0.1458, 0.2226", \
+ "0.2052, 0.2088, 0.231, 0.2508, 0.3216", \
+ "0.3798, 0.3798, 0.3936, 0.4098, 0.4764");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.068849, 0.095688, 0.127268, 0.154714, 0.210724", \
+ "0.079996, 0.108585, 0.153332, 0.17427, 0.240398", \
+ "0.100051, 0.135085, 0.181355, 0.210878, 0.284047", \
+ "0.176406, 0.211894, 0.281169, 0.321477, 0.423449", \
+ "0.289198, 0.323504, 0.397401, 0.453334, 0.589861");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.049642, 0.0732, 0.1068, 0.1236, 0.183", \
+ "0.058798, 0.081, 0.1206, 0.1452, 0.2052", \
+ "0.084, 0.0972, 0.1446, 0.1704, 0.2454", \
+ "0.1758, 0.1788, 0.2214, 0.2604, 0.357", \
+ "0.3144, 0.3156, 0.3366, 0.3696, 0.492");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.064655, 0.079822, 0.083453, 0.086884, 0.097565", \
+ "0.082182, 0.093537, 0.105767, 0.114885, 0.134595", \
+ "0.1018, 0.120256, 0.140036, 0.152587, 0.184222", \
+ "0.185832, 0.205941, 0.246301, 0.269893, 0.331185", \
+ "0.310591, 0.331576, 0.379585, 0.412394, 0.498942");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.046543, 0.0708, 0.1026, 0.1218, 0.1818", \
+ "0.0642, 0.0834, 0.1134, 0.138, 0.2046", \
+ "0.0918, 0.1092, 0.1416, 0.1662, 0.2334", \
+ "0.2052, 0.2118, 0.2436, 0.2676, 0.3438", \
+ "0.3798, 0.3798, 0.3972, 0.42, 0.5022");
+ }
+ }
+ timing() {
+ related_pin : "C";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.049253, 0.065453, 0.085113, 0.09859, 0.126765", \
+ "0.061801, 0.089237, 0.113584, 0.128372, 0.167715", \
+ "0.083005, 0.113224, 0.149947, 0.170137, 0.221808", \
+ "0.159204, 0.193903, 0.258385, 0.292894, 0.379522", \
+ "0.272977, 0.30599, 0.378974, 0.431398, 0.556954");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.028055, 0.0648, 0.0918, 0.1056, 0.1566", \
+ "0.047042, 0.0744, 0.1002, 0.1254, 0.1842", \
+ "0.0672, 0.0882, 0.129, 0.1554, 0.2268", \
+ "0.1572, 0.1644, 0.2094, 0.2454, 0.3444", \
+ "0.2976, 0.297, 0.3216, 0.3558, 0.4812");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.048038, 0.060277, 0.081576, 0.094022, 0.121654", \
+ "0.061349, 0.083504, 0.110641, 0.124847, 0.163462", \
+ "0.084246, 0.111371, 0.146871, 0.167459, 0.218769", \
+ "0.168268, 0.200077, 0.262494, 0.296121, 0.38056", \
+ "0.294847, 0.325559, 0.394508, 0.445322, 0.567066");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.047776, 0.0684, 0.1008, 0.114, 0.1614", \
+ "0.0612, 0.0882, 0.1146, 0.1338, 0.1878", \
+ "0.0906, 0.1116, 0.1494, 0.1686, 0.2322", \
+ "0.2052, 0.2112, 0.2556, 0.2856, 0.3654", \
+ "0.3798, 0.3798, 0.402, 0.4338, 0.5394");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.025205, 0.02152, 0.006799, 0.007184, 0.058865", \
+ "0.024991, 0.022186, 0.008507, 0.005074, 0.055661", \
+ "0.024643, 0.022794, 0.010657, 0.002115, 0.050769", \
+ "0.024847, 0.023754, 0.015317, 0.005432, 0.036517", \
+ "0.024637, 0.02407, 0.018302, 0.010944, 0.023455");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.129942, 0.128505, 0.139221, 0.151344, 0.201205", \
+ "0.129007, 0.129143, 0.137979, 0.149512, 0.197738", \
+ "0.130109, 0.129464, 0.136986, 0.147122, 0.192639", \
+ "0.129762, 0.129999, 0.133531, 0.141899, 0.180073", \
+ "0.130143, 0.128216, 0.132427, 0.138908, 0.170323");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.025223, 0.020958, 0.007024, 0.006114, 0.053913", \
+ "0.024242, 0.021517, 0.00862, 0.004159, 0.050783", \
+ "0.023324, 0.02192, 0.010464, 0.001305, 0.046197", \
+ "0.021475, 0.021725, 0.014491, 0.005407, 0.033118", \
+ "0.020745, 0.020975, 0.01653, 0.009965, 0.021452");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.098522, 0.098636, 0.110707, 0.123703, 0.171273", \
+ "0.097781, 0.098547, 0.109313, 0.121495, 0.167171", \
+ "0.098846, 0.098619, 0.107854, 0.118412, 0.1618", \
+ "0.09919, 0.09854, 0.104673, 0.112699, 0.148701", \
+ "0.09958, 0.098941, 0.102927, 0.10903, 0.138547");
+ }
+ }
+ internal_power() {
+ related_pin : "C";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.027552, 0.020566, 0.006692, 0.006538, 0.05257", \
+ "0.025623, 0.021375, 0.008487, 0.003916, 0.048747", \
+ "0.023652, 0.022761, 0.010481, 0.000852, 0.043534", \
+ "0.019502, 0.020434, 0.014151, 0.005826, 0.030195", \
+ "0.01708, 0.018356, 0.015231, 0.009413, 0.019481");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.061416, 0.068335, 0.085477, 0.098636, 0.144568", \
+ "0.062746, 0.067937, 0.08286, 0.095599, 0.140434", \
+ "0.063382, 0.066171, 0.080249, 0.092331, 0.135239", \
+ "0.065345, 0.065867, 0.075162, 0.08445, 0.121518", \
+ "0.066193, 0.066184, 0.07213, 0.079278, 0.11033");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : OAI21X1 *
+ * ---------------- */
+cell (OAI21X1) {
+area : 23;
+ cell_leakage_power : 0.0480948;
+ pin(A) {
+ direction : input;
+ capacitance : 0.017346;
+ rise_capacitance : 0.0170613;
+ fall_capacitance : 0.017346;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0182038;
+ rise_capacitance : 0.0182038;
+ fall_capacitance : 0.0180091;
+ }
+ pin(C) {
+ direction : input;
+ capacitance : 0.0129138;
+ rise_capacitance : 0.0129026;
+ fall_capacitance : 0.0129138;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.494927;
+ function : "(!((A+B) C))";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.050325, 0.057085, 0.066352, 0.068086, 0.066582", \
+ "0.060667, 0.071919, 0.082473, 0.088237, 0.094215", \
+ "0.078659, 0.093795, 0.11004, 0.119249, 0.133857", \
+ "0.139451, 0.160094, 0.193758, 0.21236, 0.252028", \
+ "0.233183, 0.251846, 0.294996, 0.321324, 0.387541");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.035583, 0.0624, 0.09, 0.111, 0.171", \
+ "0.053443, 0.075, 0.1068, 0.1272, 0.1914", \
+ "0.066, 0.087, 0.123, 0.1476, 0.2196", \
+ "0.1452, 0.153, 0.186, 0.213, 0.2988", \
+ "0.2658, 0.2676, 0.2892, 0.3144, 0.4044");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.06636, 0.082462, 0.109861, 0.129336, 0.185817", \
+ "0.079896, 0.098822, 0.128611, 0.15018, 0.214932", \
+ "0.101528, 0.123397, 0.157357, 0.182618, 0.25519", \
+ "0.187502, 0.2091, 0.25695, 0.28718, 0.378424", \
+ "0.314294, 0.336292, 0.387248, 0.424793, 0.531463");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.047893, 0.0708, 0.0936, 0.1122, 0.1578", \
+ "0.0684, 0.0846, 0.1152, 0.129, 0.1812", \
+ "0.0924, 0.1068, 0.1374, 0.1566, 0.2148", \
+ "0.2124, 0.2166, 0.2418, 0.2646, 0.3288", \
+ "0.3894, 0.3882, 0.4026, 0.4212, 0.4944");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.040373, 0.047321, 0.038756, 0.033316, 0.00663", \
+ "0.05186, 0.059625, 0.063447, 0.059755, 0.041286", \
+ "0.06988, 0.083375, 0.091961, 0.095018, 0.087812", \
+ "0.132425, 0.151768, 0.181549, 0.195974, 0.221793", \
+ "0.225913, 0.244307, 0.284934, 0.309451, 0.36621");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.025325, 0.0537, 0.0852, 0.1068, 0.1518", \
+ "0.039169, 0.0654, 0.0924, 0.1188, 0.1758", \
+ "0.058635, 0.0804, 0.114, 0.135, 0.2028", \
+ "0.1344, 0.1458, 0.1788, 0.2064, 0.2916", \
+ "0.2556, 0.2574, 0.2808, 0.3048, 0.3972");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.061377, 0.093315, 0.129089, 0.160577, 0.243063", \
+ "0.076361, 0.108471, 0.155686, 0.183668, 0.274717", \
+ "0.097182, 0.134979, 0.187382, 0.221318, 0.321338", \
+ "0.183636, 0.21995, 0.295982, 0.342008, 0.46732", \
+ "0.310652, 0.346271, 0.424503, 0.484776, 0.644796");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.052219, 0.0798, 0.1026, 0.1104, 0.153", \
+ "0.0636, 0.0912, 0.1188, 0.135, 0.1824", \
+ "0.0936, 0.1116, 0.1476, 0.1698, 0.2244", \
+ "0.2124, 0.2166, 0.2544, 0.2868, 0.363", \
+ "0.3894, 0.3888, 0.4068, 0.4338, 0.5382");
+ }
+ }
+ timing() {
+ related_pin : "C";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.037624, 0.043049, 0.044183, 0.040205, 0.013363", \
+ "0.048078, 0.061126, 0.067591, 0.067291, 0.048412", \
+ "0.063468, 0.08402, 0.100195, 0.104135, 0.097648", \
+ "0.11881, 0.151859, 0.195555, 0.213795, 0.242847", \
+ "0.202257, 0.234917, 0.299596, 0.334852, 0.402116");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.033797, 0.0651, 0.0882, 0.1038, 0.1638", \
+ "0.044453, 0.0747, 0.1071, 0.1269, 0.1881", \
+ "0.059372, 0.0882, 0.1284, 0.1518, 0.2259", \
+ "0.1263, 0.1419, 0.1938, 0.2286, 0.3258", \
+ "0.234, 0.2373, 0.279, 0.3204, 0.4395");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.048662, 0.078567, 0.117933, 0.144234, 0.227348", \
+ "0.06066, 0.098848, 0.144445, 0.176018, 0.269238", \
+ "0.083527, 0.125211, 0.183347, 0.219699, 0.324741", \
+ "0.169097, 0.211738, 0.298397, 0.350866, 0.490398", \
+ "0.297295, 0.338311, 0.427365, 0.49554, 0.680418");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.044344, 0.0792, 0.105, 0.1224, 0.1719", \
+ "0.06228, 0.0912, 0.1248, 0.1425, 0.1989", \
+ "0.0903, 0.1077, 0.1518, 0.1782, 0.2391", \
+ "0.2058, 0.2112, 0.2499, 0.2853, 0.3777", \
+ "0.3831, 0.3834, 0.4002, 0.4284, 0.5454");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.018723, 0.014238, 0.001983, 0.018123, 0.07526", \
+ "0.018122, 0.014881, 0.000135, 0.015197, 0.070956", \
+ "0.017686, 0.015479, 0.002313, 0.011625, 0.064988", \
+ "0.016929, 0.015839, 0.007254, 0.003499, 0.048592", \
+ "0.016853, 0.016207, 0.010085, 0.002104, 0.034591");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.089044, 0.09085, 0.108868, 0.125145, 0.183339", \
+ "0.088461, 0.090928, 0.107231, 0.122356, 0.179741", \
+ "0.089179, 0.090498, 0.104539, 0.119015, 0.174668", \
+ "0.089631, 0.088873, 0.099997, 0.111464, 0.159659", \
+ "0.090342, 0.089451, 0.097192, 0.106057, 0.146696");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.019052, 0.014394, 0.000774, 0.015232, 0.066066", \
+ "0.017746, 0.014642, 0.000829, 0.012586, 0.06178", \
+ "0.016049, 0.014626, 0.003057, 0.009235, 0.056008", \
+ "0.01347, 0.014441, 0.006801, 0.002407, 0.041314", \
+ "0.012413, 0.013303, 0.008302, 0.001594, 0.029812");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.066762, 0.072538, 0.090248, 0.104895, 0.15546", \
+ "0.065332, 0.07199, 0.088088, 0.10237, 0.15216", \
+ "0.066238, 0.070774, 0.085574, 0.098853, 0.147574", \
+ "0.06737, 0.068716, 0.07991, 0.091097, 0.13453", \
+ "0.068412, 0.068914, 0.076394, 0.085061, 0.12233");
+ }
+ }
+ internal_power() {
+ related_pin : "C";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.008486, 0.004525, 0.009596, 0.021217, 0.062131", \
+ "0.008129, 0.005131, 0.00757, 0.018451, 0.05811", \
+ "0.007702, 0.00548, 0.005134, 0.015205, 0.052773", \
+ "0.007117, 0.006209, 0.00069, 0.00793, 0.039352", \
+ "0.006723, 0.006292, 0.001795, 0.003483, 0.028537");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.04756, 0.054784, 0.06802, 0.079563, 0.120585", \
+ "0.048287, 0.05366, 0.066094, 0.077303, 0.116962", \
+ "0.048478, 0.052817, 0.063736, 0.074433, 0.112426", \
+ "0.050771, 0.050991, 0.059436, 0.068012, 0.101195", \
+ "0.052018, 0.051602, 0.05697, 0.063407, 0.09142");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : OAI22X1 *
+ * ---------------- */
+cell (OAI22X1) {
+area : 40;
+ cell_leakage_power : 0.0603119;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0173495;
+ rise_capacitance : 0.0170835;
+ fall_capacitance : 0.0173495;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0182258;
+ rise_capacitance : 0.0182258;
+ fall_capacitance : 0.0180022;
+ }
+ pin(C) {
+ direction : input;
+ capacitance : 0.0179862;
+ rise_capacitance : 0.0175055;
+ fall_capacitance : 0.0179862;
+ }
+ pin(D) {
+ direction : input;
+ capacitance : 0.0186431;
+ rise_capacitance : 0.0186431;
+ fall_capacitance : 0.0186325;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.485105;
+ function : "(!((A+B) (C+D)))";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.06016, 0.073032, 0.084423, 0.088825, 0.095558", \
+ "0.069165, 0.086162, 0.100108, 0.108628, 0.118443", \
+ "0.083119, 0.102253, 0.126173, 0.135763, 0.154182", \
+ "0.139063, 0.163394, 0.202734, 0.223668, 0.266586", \
+ "0.220012, 0.245088, 0.296496, 0.326863, 0.397378");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.045128, 0.0705, 0.1002, 0.1218, 0.1881", \
+ "0.053045, 0.078, 0.1122, 0.1341, 0.2043", \
+ "0.068801, 0.0912, 0.1257, 0.1542, 0.2283", \
+ "0.1386, 0.1482, 0.1875, 0.2157, 0.3045", \
+ "0.2445, 0.2484, 0.2748, 0.3051, 0.4032");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.077733, 0.095387, 0.125319, 0.146992, 0.211626", \
+ "0.090794, 0.111725, 0.14383, 0.167047, 0.236529", \
+ "0.11225, 0.13473, 0.171245, 0.19712, 0.273778", \
+ "0.198101, 0.220017, 0.268744, 0.299981, 0.394127", \
+ "0.32536, 0.346952, 0.397934, 0.436406, 0.545596");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.065334, 0.0852, 0.1182, 0.1323, 0.186", \
+ "0.087, 0.1008, 0.1332, 0.1497, 0.2085", \
+ "0.1131, 0.1254, 0.1575, 0.1794, 0.2379", \
+ "0.2319, 0.2352, 0.2604, 0.2832, 0.3498", \
+ "0.4092, 0.4095, 0.4236, 0.4407, 0.5142");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.05151, 0.060465, 0.063048, 0.061274, 0.042453", \
+ "0.061943, 0.074237, 0.082147, 0.082626, 0.07071", \
+ "0.076815, 0.094316, 0.108959, 0.114803, 0.112485", \
+ "0.132159, 0.155919, 0.191293, 0.208379, 0.238377", \
+ "0.213665, 0.238067, 0.287659, 0.315888, 0.37701");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.036093, 0.061975, 0.0915, 0.1128, 0.1704", \
+ "0.046244, 0.0702, 0.1026, 0.1242, 0.1884", \
+ "0.062251, 0.0858, 0.12, 0.1422, 0.2157", \
+ "0.1308, 0.1395, 0.1812, 0.2097, 0.2982", \
+ "0.2352, 0.2379, 0.2673, 0.2979, 0.396");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.073247, 0.105332, 0.151373, 0.179464, 0.270525", \
+ "0.086142, 0.121936, 0.171264, 0.20496, 0.301166", \
+ "0.107653, 0.146587, 0.204129, 0.239319, 0.344187", \
+ "0.194237, 0.230621, 0.308492, 0.356446, 0.485377", \
+ "0.321779, 0.35694, 0.435344, 0.49608, 0.660458");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.067236, 0.0966, 0.1254, 0.138, 0.1899", \
+ "0.0852, 0.1068, 0.1431, 0.1599, 0.2142", \
+ "0.1128, 0.1293, 0.1713, 0.1941, 0.2514", \
+ "0.2313, 0.2352, 0.2721, 0.3045, 0.3867", \
+ "0.4098, 0.4092, 0.4254, 0.4539, 0.5586");
+ }
+ }
+ timing() {
+ related_pin : "C";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.05398, 0.07243, 0.092176, 0.099839, 0.122773", \
+ "0.06352, 0.085993, 0.108984, 0.123743, 0.147693", \
+ "0.077727, 0.106334, 0.137729, 0.151751, 0.186886", \
+ "0.134309, 0.168377, 0.221736, 0.247548, 0.307417", \
+ "0.217388, 0.251301, 0.319304, 0.359668, 0.44986");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.041495, 0.0732, 0.1023, 0.1275, 0.1899", \
+ "0.053381, 0.0834, 0.1194, 0.1398, 0.2118", \
+ "0.072, 0.0948, 0.1371, 0.1641, 0.2397", \
+ "0.1401, 0.1506, 0.2013, 0.2367, 0.3324", \
+ "0.2466, 0.2508, 0.2865, 0.3255, 0.4416");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.059449, 0.075272, 0.094237, 0.111085, 0.154366", \
+ "0.074351, 0.090094, 0.11758, 0.13541, 0.185901", \
+ "0.096161, 0.117012, 0.147609, 0.168548, 0.229845", \
+ "0.182886, 0.204011, 0.249368, 0.27744, 0.362175", \
+ "0.310322, 0.33117, 0.381313, 0.417547, 0.519562");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.053455, 0.0759, 0.1062, 0.1299, 0.1845", \
+ "0.0705, 0.0888, 0.1227, 0.1431, 0.2034", \
+ "0.099, 0.1128, 0.147, 0.168, 0.2313", \
+ "0.2163, 0.222, 0.2487, 0.2727, 0.3414", \
+ "0.3951, 0.3948, 0.4095, 0.4287, 0.5037");
+ }
+ }
+ timing() {
+ related_pin : "D";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.04673, 0.058194, 0.06633, 0.069168, 0.063403", \
+ "0.055969, 0.073908, 0.089203, 0.093486, 0.094877", \
+ "0.0714, 0.096729, 0.118099, 0.128717, 0.140128", \
+ "0.12742, 0.160859, 0.20843, 0.23155, 0.275782", \
+ "0.211177, 0.244102, 0.310118, 0.347777, 0.427534");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038192, 0.063, 0.0969, 0.1149, 0.1716", \
+ "0.04292, 0.0765, 0.1071, 0.1314, 0.1932", \
+ "0.064449, 0.0891, 0.1275, 0.1521, 0.228", \
+ "0.1317, 0.1422, 0.1959, 0.2277, 0.3231", \
+ "0.2385, 0.2415, 0.2787, 0.3186, 0.4344");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.055444, 0.082719, 0.116205, 0.138642, 0.208765", \
+ "0.069406, 0.101469, 0.139643, 0.167417, 0.245163", \
+ "0.09181, 0.127057, 0.175951, 0.207243, 0.295839", \
+ "0.178669, 0.214068, 0.288041, 0.331864, 0.450015", \
+ "0.306614, 0.341553, 0.418676, 0.47777, 0.632508");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.05714, 0.0876, 0.1119, 0.1308, 0.183", \
+ "0.071635, 0.1014, 0.1317, 0.1494, 0.2067", \
+ "0.0996, 0.1194, 0.1596, 0.1815, 0.2433", \
+ "0.2166, 0.222, 0.261, 0.2955, 0.3756", \
+ "0.3948, 0.3945, 0.414, 0.4416, 0.5484");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.017562, 0.014759, 0.000335, 0.015012, 0.070477", \
+ "0.017111, 0.015126, 0.001669, 0.012611, 0.066817", \
+ "0.016697, 0.015541, 0.003658, 0.009814, 0.061505", \
+ "0.016252, 0.015715, 0.007546, 0.002529, 0.046659", \
+ "0.015931, 0.015886, 0.009905, 0.002384, 0.033457");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.112422, 0.113974, 0.13104, 0.146958, 0.205294", \
+ "0.112574, 0.114271, 0.12979, 0.144487, 0.201913", \
+ "0.113257, 0.114203, 0.127288, 0.141996, 0.19699", \
+ "0.113691, 0.112943, 0.123627, 0.135019, 0.182798", \
+ "0.114525, 0.113647, 0.121258, 0.130044, 0.170212");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.017144, 0.014619, 0.001271, 0.012193, 0.061306", \
+ "0.016197, 0.014525, 0.002611, 0.010221, 0.057711", \
+ "0.014629, 0.014265, 0.004191, 0.007549, 0.052747", \
+ "0.012586, 0.013349, 0.006915, 0.001708, 0.039693", \
+ "0.011452, 0.01241, 0.007994, 0.001671, 0.028757");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.089981, 0.096048, 0.11241, 0.12728, 0.177386", \
+ "0.089727, 0.094778, 0.110532, 0.124845, 0.174326", \
+ "0.090205, 0.094819, 0.108963, 0.121594, 0.169905", \
+ "0.091397, 0.092843, 0.103634, 0.114649, 0.157667", \
+ "0.092604, 0.093016, 0.100361, 0.108956, 0.145889");
+ }
+ }
+ internal_power() {
+ related_pin : "C";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.017478, 0.012462, 0.004997, 0.020509, 0.075758", \
+ "0.017135, 0.012897, 0.003169, 0.017899, 0.072007", \
+ "0.016892, 0.013031, 0.000911, 0.01465, 0.066586", \
+ "0.016253, 0.014443, 0.005125, 0.005913, 0.051036", \
+ "0.015931, 0.015161, 0.008589, 0.000735, 0.03691");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.093156, 0.095361, 0.111723, 0.127152, 0.182382", \
+ "0.092831, 0.095022, 0.110357, 0.124792, 0.178611", \
+ "0.093798, 0.095787, 0.108621, 0.121669, 0.173221", \
+ "0.096133, 0.095927, 0.104496, 0.11501, 0.158922", \
+ "0.09738, 0.095435, 0.102503, 0.110385, 0.147241");
+ }
+ }
+ internal_power() {
+ related_pin : "D";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.016831, 0.012249, 0.004293, 0.018126, 0.067473", \
+ "0.015778, 0.012371, 0.002509, 0.015742, 0.063722", \
+ "0.014726, 0.012727, 0.00071, 0.012528, 0.058456", \
+ "0.012623, 0.01242, 0.004521, 0.005026, 0.044403", \
+ "0.011431, 0.011595, 0.006595, 0.000886, 0.032474");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.069807, 0.077626, 0.093855, 0.107715, 0.156254", \
+ "0.069992, 0.077089, 0.091752, 0.105239, 0.152541", \
+ "0.07069, 0.076043, 0.089621, 0.10225, 0.147737", \
+ "0.07366, 0.074231, 0.084359, 0.094964, 0.135221", \
+ "0.075428, 0.07496, 0.081679, 0.089612, 0.12401");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : OR2X1 *
+ * -------------- */
+cell (OR2X1) {
+area : 32;
+ cell_leakage_power : 0.0748155;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0150616;
+ rise_capacitance : 0.0150616;
+ fall_capacitance : 0.0150113;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0144258;
+ rise_capacitance : 0.0139523;
+ fall_capacitance : 0.0144258;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.496203;
+ function : "(A+B)";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.074088, 0.088543, 0.114376, 0.128922, 0.160855", \
+ "0.087117, 0.103311, 0.131779, 0.14954, 0.180326", \
+ "0.108726, 0.125541, 0.16074, 0.174611, 0.206457", \
+ "0.194003, 0.212138, 0.244354, 0.255317, 0.293178", \
+ "0.319717, 0.338201, 0.370455, 0.38497, 0.420931");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.0246, 0.031921, 0.039648, 0.052834, 0.059059", \
+ "0.041267, 0.047301, 0.059193, 0.0606, 0.0756", \
+ "0.0726, 0.0714, 0.0822, 0.0864, 0.0948", \
+ "0.1878, 0.1884, 0.1878, 0.1914, 0.1968", \
+ "0.3666, 0.366, 0.3672, 0.3678, 0.3708");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.076098, 0.093906, 0.122996, 0.138911, 0.191344", \
+ "0.093089, 0.112754, 0.143254, 0.161889, 0.206502", \
+ "0.111772, 0.135006, 0.166691, 0.18567, 0.234", \
+ "0.1872, 0.2083, 0.240171, 0.262003, 0.315947", \
+ "0.297543, 0.318547, 0.352616, 0.37448, 0.42893");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.027491, 0.035329, 0.047022, 0.053044, 0.0636", \
+ "0.044071, 0.051605, 0.05612, 0.059508, 0.069", \
+ "0.0672, 0.0672, 0.0756, 0.0786, 0.0888", \
+ "0.1506, 0.1542, 0.1578, 0.1572, 0.1644", \
+ "0.2916, 0.291, 0.294, 0.2952, 0.2994");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.086234, 0.112975, 0.148468, 0.168584, 0.226102", \
+ "0.100057, 0.127593, 0.169077, 0.188679, 0.248868", \
+ "0.122236, 0.149125, 0.191451, 0.212179, 0.2719", \
+ "0.207921, 0.234475, 0.273261, 0.298511, 0.359211", \
+ "0.335749, 0.368066, 0.400532, 0.424288, 0.485293");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.027031, 0.032091, 0.046796, 0.046293, 0.056707", \
+ "0.04331, 0.044407, 0.058669, 0.0606, 0.0708", \
+ "0.075, 0.075, 0.0858, 0.0876, 0.0888", \
+ "0.189, 0.189, 0.1896, 0.1908, 0.195", \
+ "0.3654, 0.3666, 0.3666, 0.3678, 0.3696");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.080548, 0.09117, 0.112416, 0.114419, 0.140167", \
+ "0.098565, 0.111047, 0.127873, 0.139055, 0.157277", \
+ "0.117853, 0.13063, 0.151745, 0.16073, 0.187337", \
+ "0.193063, 0.20683, 0.230881, 0.243181, 0.274411", \
+ "0.303476, 0.324185, 0.34253, 0.35438, 0.389078");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.033557, 0.03517, 0.050033, 0.053557, 0.0636", \
+ "0.042412, 0.052454, 0.0648, 0.066, 0.0714", \
+ "0.0678, 0.0636, 0.0744, 0.0816, 0.0924", \
+ "0.1506, 0.1536, 0.1554, 0.1572, 0.1692", \
+ "0.2916, 0.2916, 0.2928, 0.2928, 0.3012");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.004755, 0.008056, 0.024782, 0.03847, 0.084138", \
+ "0.005505, 0.007831, 0.024786, 0.03784, 0.082816", \
+ "0.005661, 0.008241, 0.024988, 0.037645, 0.081888", \
+ "0.006986, 0.011904, 0.024903, 0.037263, 0.080331", \
+ "0.007316, 0.012522, 0.025505, 0.038129, 0.079708");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.062057, 0.066892, 0.084137, 0.097042, 0.142031", \
+ "0.063442, 0.069887, 0.08367, 0.097934, 0.140457", \
+ "0.06445, 0.070032, 0.08388, 0.097493, 0.139831", \
+ "0.065119, 0.071216, 0.085353, 0.097511, 0.138904", \
+ "0.065286, 0.071412, 0.085769, 0.097685, 0.138986");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.004733, 0.01101, 0.026233, 0.039317, 0.088493", \
+ "0.005232, 0.010867, 0.0258, 0.038812, 0.086891", \
+ "0.005494, 0.010867, 0.02575, 0.038564, 0.08606", \
+ "0.006589, 0.011051, 0.02548, 0.038324, 0.084742", \
+ "0.006416, 0.011798, 0.026405, 0.038696, 0.084448");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.08415, 0.087001, 0.103508, 0.116397, 0.164914", \
+ "0.086183, 0.088562, 0.103184, 0.1157, 0.163291", \
+ "0.08758, 0.089603, 0.102913, 0.115221, 0.162843", \
+ "0.088158, 0.090514, 0.103925, 0.115995, 0.162004", \
+ "0.088394, 0.090653, 0.104301, 0.116544, 0.162066");
+ }
+ }
+ }
+}
+
+/* -------------- *
+ * Design : OR2X2 *
+ * -------------- */
+cell (OR2X2) {
+area : 32;
+ cell_leakage_power : 0.0895797;
+ pin(A) {
+ direction : input;
+ capacitance : 0.015065;
+ rise_capacitance : 0.015065;
+ fall_capacitance : 0.0150152;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0143643;
+ rise_capacitance : 0.0139823;
+ fall_capacitance : 0.0143643;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.966451;
+ function : "(A+B)";
+ timing() {
+ related_pin : "A";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.092748, 0.11534, 0.147044, 0.170377, 0.209236", \
+ "0.105163, 0.131964, 0.168501, 0.188932, 0.229679", \
+ "0.127873, 0.154473, 0.192015, 0.212224, 0.256945", \
+ "0.215635, 0.243019, 0.279405, 0.299185, 0.347166", \
+ "0.348599, 0.377045, 0.40953, 0.42806, 0.47578");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.036098, 0.03661, 0.052655, 0.055718, 0.0708", \
+ "0.048273, 0.050006, 0.0636, 0.0732, 0.078", \
+ "0.0774, 0.078, 0.0906, 0.0918, 0.1062", \
+ "0.195, 0.1932, 0.1968, 0.1986, 0.2046", \
+ "0.3774, 0.378, 0.3792, 0.3792, 0.3822");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.094395, 0.121405, 0.162844, 0.183048, 0.241838", \
+ "0.110629, 0.139466, 0.179953, 0.200199, 0.259153", \
+ "0.134446, 0.165239, 0.203714, 0.225755, 0.288823", \
+ "0.217269, 0.247281, 0.287395, 0.311905, 0.375816", \
+ "0.337989, 0.369425, 0.408627, 0.431979, 0.495641");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.03261, 0.036977, 0.054118, 0.0648, 0.0684", \
+ "0.055949, 0.04937, 0.0696, 0.066, 0.0816", \
+ "0.075, 0.0768, 0.0864, 0.0852, 0.0942", \
+ "0.1668, 0.1662, 0.1716, 0.1734, 0.1794", \
+ "0.3156, 0.315, 0.3186, 0.3192, 0.3222");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : positive_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.100325, 0.136854, 0.175223, 0.201311, 0.270082", \
+ "0.116601, 0.155024, 0.196406, 0.222548, 0.290586", \
+ "0.14118, 0.178808, 0.219855, 0.246222, 0.315043", \
+ "0.228893, 0.262516, 0.308898, 0.333366, 0.403605", \
+ "0.361227, 0.39236, 0.438202, 0.461073, 0.532183");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.042962, 0.04223, 0.05303, 0.056197, 0.0606", \
+ "0.055203, 0.0612, 0.063, 0.0654, 0.0786", \
+ "0.0804, 0.084, 0.09, 0.0924, 0.1008", \
+ "0.1956, 0.1962, 0.1968, 0.1974, 0.2022", \
+ "0.378, 0.3774, 0.378, 0.3798, 0.381");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.099191, 0.112322, 0.139636, 0.148957, 0.184156", \
+ "0.11846, 0.134406, 0.157571, 0.171043, 0.202547", \
+ "0.139498, 0.158523, 0.181649, 0.196023, 0.233489", \
+ "0.223423, 0.241205, 0.266009, 0.284006, 0.325223", \
+ "0.342801, 0.360178, 0.387822, 0.403561, 0.446859");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.045354, 0.034645, 0.05259, 0.063, 0.069", \
+ "0.050227, 0.054125, 0.0684, 0.0678, 0.0792", \
+ "0.0738, 0.0744, 0.0804, 0.0852, 0.0942", \
+ "0.165, 0.1674, 0.168, 0.1734, 0.183", \
+ "0.315, 0.3162, 0.3162, 0.3186, 0.324");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.028268, 0.036539, 0.051709, 0.065795, 0.112807", \
+ "0.029479, 0.035527, 0.05, 0.063866, 0.108982", \
+ "0.030782, 0.035705, 0.049051, 0.062111, 0.106378", \
+ "0.032939, 0.035902, 0.048567, 0.059235, 0.1018", \
+ "0.03234, 0.036435, 0.048527, 0.059887, 0.101074");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.082522, 0.094224, 0.109379, 0.120218, 0.16859", \
+ "0.084899, 0.090599, 0.107506, 0.116691, 0.16386", \
+ "0.085614, 0.091836, 0.105569, 0.115473, 0.160612", \
+ "0.088428, 0.093183, 0.105805, 0.117227, 0.157955", \
+ "0.087152, 0.093443, 0.106217, 0.117485, 0.157884");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.026845, 0.035611, 0.05086, 0.066854, 0.118216", \
+ "0.027091, 0.035137, 0.049317, 0.064078, 0.114832", \
+ "0.028048, 0.034239, 0.048794, 0.063426, 0.111912", \
+ "0.030188, 0.034382, 0.048649, 0.061691, 0.10665", \
+ "0.031509, 0.035609, 0.049233, 0.06168, 0.105996");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.01, 0.025, 0.05, 0.15, 0.3");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.101072, 0.099311, 0.124491, 0.138346, 0.190263", \
+ "0.106213, 0.105045, 0.123271, 0.135463, 0.185861", \
+ "0.108396, 0.107939, 0.124352, 0.134467, 0.182935", \
+ "0.109445, 0.113301, 0.124705, 0.136106, 0.180962", \
+ "0.110309, 0.113879, 0.124997, 0.136365, 0.180642");
+ }
+ }
+ }
+}
+
+/* --------------- *
+ * Design : TBUFX1 *
+ * --------------- */
+cell (TBUFX1) {
+area : 40;
+ cell_leakage_power : 0.0466889;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0173531;
+ rise_capacitance : 0.0170972;
+ fall_capacitance : 0.0173531;
+ }
+ pin(EN) {
+ direction : input;
+ capacitance : 0.0137604;
+ rise_capacitance : 0.0135189;
+ fall_capacitance : 0.0137604;
+ internal_power() {
+ rise_power(passive_energy_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0, 0, 0, 0, 0");
+ }
+ fall_power(passive_energy_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.031447, 0.037009, 0.050629, 0.060911, 0.096281");
+ }
+ }
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0.00453706;
+ rise_capacitance : 0.0045197;
+ fall_capacitance : 0.00453706;
+ max_capacitance : 0.498495;
+ function : "(!A)";
+ three_state : "(!EN)";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.00953706, 0.0170371, 0.0295371, 0.0795371, 0.154537");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.043176, 0.05518, 0.060921, 0.062454, 0.060269", \
+ "0.054804, 0.067387, 0.077411, 0.084234, 0.086866", \
+ "0.072569, 0.089938, 0.106777, 0.113667, 0.126816", \
+ "0.134726, 0.15668, 0.18973, 0.207478, 0.247926", \
+ "0.227061, 0.249623, 0.291187, 0.317493, 0.383277");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.00953706, 0.0170371, 0.0295371, 0.0795371, 0.154537");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.033122, 0.063, 0.0888, 0.1068, 0.1638", \
+ "0.047344, 0.0732, 0.105, 0.1236, 0.1866", \
+ "0.0642, 0.0864, 0.1194, 0.1416, 0.2148", \
+ "0.1434, 0.1506, 0.1854, 0.2118, 0.2988", \
+ "0.2634, 0.2658, 0.288, 0.3138, 0.402");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.0095197, 0.0170197, 0.0295197, 0.0795197, 0.15452");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.062271, 0.077788, 0.100334, 0.118909, 0.175323", \
+ "0.07723, 0.093371, 0.122319, 0.143131, 0.204215", \
+ "0.099178, 0.119908, 0.152326, 0.175597, 0.245967", \
+ "0.185036, 0.205418, 0.252499, 0.28202, 0.37234", \
+ "0.311685, 0.332857, 0.383618, 0.420732, 0.526388");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.0095197, 0.0170197, 0.0295197, 0.0795197, 0.15452");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.045342, 0.0618, 0.0894, 0.1098, 0.1506", \
+ "0.058523, 0.081, 0.1062, 0.1212, 0.1752", \
+ "0.0924, 0.1056, 0.1338, 0.1518, 0.207", \
+ "0.2082, 0.2124, 0.2376, 0.261, 0.3246", \
+ "0.3846, 0.384, 0.399, 0.4182, 0.489");
+ }
+ }
+ timing() {
+ related_pin : "EN";
+ timing_sense : positive_unate;
+ timing_type : three_state_enable;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.0095197, 0.0170197, 0.0295197, 0.0795197, 0.15452");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.064314, 0.075634, 0.088454, 0.091437, 0.095397", \
+ "0.077397, 0.090966, 0.107025, 0.113114, 0.117077", \
+ "0.099421, 0.119163, 0.132762, 0.137814, 0.147518", \
+ "0.185263, 0.202177, 0.218933, 0.22496, 0.236135", \
+ "0.311767, 0.327156, 0.34382, 0.351651, 0.363551");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.0095197, 0.0170197, 0.0295197, 0.0795197, 0.15452");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.050547, 0.048832, 0.05962, 0.0624, 0.0828", \
+ "0.0606, 0.0612, 0.0684, 0.0732, 0.093", \
+ "0.0888, 0.0924, 0.0978, 0.0966, 0.111", \
+ "0.2076, 0.2046, 0.2004, 0.2028, 0.2094", \
+ "0.3846, 0.3846, 0.3798, 0.3792, 0.381");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.00953706, 0.0170371, 0.0295371, 0.0795371, 0.154537");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.021064, 0.015498, -0.019901, -0.055757, -0.191401", \
+ "0.032761, 0.034951, 0.012881, -0.013632, -0.126721", \
+ "0.049862, 0.060812, 0.053914, 0.036454, -0.04865", \
+ "0.108674, 0.137861, 0.169017, 0.174161, 0.1442", \
+ "0.199976, 0.230503, 0.291584, 0.319131, 0.349211");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.00953706, 0.0170371, 0.0295371, 0.0795371, 0.154537");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.022631, 0.054736, 0.0756, 0.0906, 0.1446", \
+ "0.03673, 0.0714, 0.0888, 0.114, 0.1746", \
+ "0.053948, 0.0852, 0.12, 0.141, 0.2142", \
+ "0.1374, 0.1566, 0.2124, 0.2478, 0.3432", \
+ "0.2634, 0.2694, 0.3186, 0.366, 0.4902");
+ }
+ }
+ timing() {
+ related_pin : "EN";
+ timing_type : three_state_disable;
+ timing_sense : negative_unate;
+ cell_rise(delay_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.044417, 0.074028, 0.13325, 0.177667, 0.325722");
+ }
+ rise_transition(delay_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.044417, 0.074028, 0.13325, 0.177667, 0.325722");
+ }
+ cell_fall(delay_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.058908, 0.097486, 0.140526, 0.16786, 0.242557");
+ }
+ fall_transition(delay_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.058908, 0.097486, 0.140526, 0.16786, 0.242557");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.00953706, 0.0170371, 0.0295371, 0.0795371, 0.154537");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.019351, 0.014825, 0.003997, 0.020433, 0.078322", \
+ "0.018837, 0.015273, 0.001933, 0.017405, 0.07378", \
+ "0.018469, 0.014849, 0.000845, 0.013604, 0.067528", \
+ "0.017526, 0.016039, 0.006211, 0.004735, 0.050506", \
+ "0.017053, 0.016587, 0.009417, 0.001248, 0.036027");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.0095197, 0.0170197, 0.0295197, 0.0795197, 0.15452");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.081639, 0.083922, 0.101537, 0.118189, 0.176864", \
+ "0.080072, 0.083431, 0.099818, 0.115188, 0.172995", \
+ "0.081234, 0.082681, 0.097459, 0.111718, 0.167725", \
+ "0.081747, 0.081121, 0.092339, 0.103912, 0.152468", \
+ "0.082336, 0.081605, 0.089401, 0.098251, 0.139201");
+ }
+ }
+ internal_power() {
+ related_pin : "EN";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.0095197, 0.0170197, 0.0295197, 0.0795197, 0.15452");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.028687, 0.030603, 0.045048, 0.054651, 0.090733", \
+ "0.028319, 0.03161, 0.045186, 0.055485, 0.090639", \
+ "0.028929, 0.033082, 0.045696, 0.055971, 0.09119", \
+ "0.029286, 0.033243, 0.045698, 0.056076, 0.091671", \
+ "0.029608, 0.033829, 0.046152, 0.056419, 0.091818");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.00953706, 0.0170371, 0.0295371, 0.0795371, 0.154537");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.00698, 0.000216, 0.014399, 0.025998, 0.064783", \
+ "0.00622, 0.001328, 0.012957, 0.024394, 0.06269", \
+ "0.006376, 0.001583, 0.012128, 0.023177, 0.060675", \
+ "0.006415, 0.001927, 0.011265, 0.022, 0.058368", \
+ "0.006522, 0.00224, 0.0112, 0.021529, 0.057516");
+ }
+ }
+ }
+}
+
+/* --------------- *
+ * Design : TBUFX2 *
+ * --------------- */
+cell (TBUFX2) {
+area : 56;
+ cell_leakage_power : 0.0853032;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0347058;
+ rise_capacitance : 0.0341954;
+ fall_capacitance : 0.0347058;
+ }
+ pin(EN) {
+ direction : input;
+ capacitance : 0.0275005;
+ rise_capacitance : 0.027043;
+ fall_capacitance : 0.0275005;
+ internal_power() {
+ rise_power(passive_energy_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0, 0, 0, 0, 0");
+ }
+ fall_power(passive_energy_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.062739, 0.073294, 0.098928, 0.119047, 0.186594");
+ }
+ }
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0.00906655;
+ rise_capacitance : 0.00901605;
+ fall_capacitance : 0.00906655;
+ max_capacitance : 0.997443;
+ function : "(!A)";
+ three_state : "(!EN)";
+ timing() {
+ related_pin : "A";
+ timing_sense : negative_unate;
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.0190665, 0.0340666, 0.0590665, 0.159067, 0.309067");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.04457, 0.055083, 0.060858, 0.062407, 0.060244", \
+ "0.054697, 0.06733, 0.077377, 0.084191, 0.086853", \
+ "0.072464, 0.089869, 0.106729, 0.113639, 0.126801", \
+ "0.134688, 0.156645, 0.189702, 0.207454, 0.247911", \
+ "0.22704, 0.249605, 0.29117, 0.317427, 0.383264");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.0190665, 0.0340666, 0.0590665, 0.159067, 0.309067");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.033796, 0.0636, 0.0888, 0.1074, 0.1638", \
+ "0.0474, 0.0732, 0.1056, 0.1236, 0.1866", \
+ "0.0648, 0.0864, 0.12, 0.1416, 0.2148", \
+ "0.1434, 0.1512, 0.1854, 0.2118, 0.2988", \
+ "0.2634, 0.2658, 0.288, 0.3138, 0.402");
+ }
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.019016, 0.034016, 0.0590161, 0.159016, 0.309016");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.06247, 0.077821, 0.100341, 0.118895, 0.175315", \
+ "0.078889, 0.093447, 0.122337, 0.14314, 0.204216", \
+ "0.099451, 0.119999, 0.152375, 0.175636, 0.245983", \
+ "0.18532, 0.20559, 0.25259, 0.282085, 0.372382", \
+ "0.311985, 0.333031, 0.38374, 0.420831, 0.526453");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.019016, 0.034016, 0.0590161, 0.159016, 0.309016");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.045431, 0.0618, 0.0894, 0.1098, 0.1506", \
+ "0.059153, 0.081, 0.1062, 0.1212, 0.1746", \
+ "0.0924, 0.1056, 0.1338, 0.1518, 0.207", \
+ "0.2082, 0.2124, 0.2376, 0.261, 0.3246", \
+ "0.3852, 0.384, 0.399, 0.4182, 0.4896");
+ }
+ }
+ timing() {
+ related_pin : "EN";
+ timing_sense : positive_unate;
+ timing_type : three_state_enable;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.019016, 0.034016, 0.0590161, 0.159016, 0.309016");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.066588, 0.080398, 0.094432, 0.100823, 0.106736", \
+ "0.079877, 0.097954, 0.1125, 0.120284, 0.13082", \
+ "0.102207, 0.119803, 0.137962, 0.147594, 0.158875", \
+ "0.187132, 0.203404, 0.222751, 0.232505, 0.249202", \
+ "0.313694, 0.330805, 0.349255, 0.358947, 0.376056");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.019016, 0.034016, 0.0590161, 0.159016, 0.309016");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.052406, 0.050364, 0.05533, 0.058774, 0.084", \
+ "0.063, 0.0708, 0.0714, 0.075, 0.0906", \
+ "0.0882, 0.0876, 0.0948, 0.099, 0.1134", \
+ "0.2076, 0.2052, 0.2016, 0.2034, 0.2076", \
+ "0.3846, 0.3846, 0.3804, 0.3798, 0.381");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.0190665, 0.0340666, 0.0590665, 0.159067, 0.309067");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.021354, 0.015834, -0.019419, -0.055411, -0.191188", \
+ "0.033098, 0.035485, 0.013371, -0.013026, -0.126362", \
+ "0.050079, 0.061022, 0.054814, 0.037301, -0.047837", \
+ "0.108148, 0.138809, 0.169548, 0.174168, 0.14517", \
+ "0.200483, 0.229963, 0.29106, 0.319072, 0.349126");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.0190665, 0.0340666, 0.0590665, 0.159067, 0.309067");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.022651, 0.054683, 0.0762, 0.0912, 0.1446", \
+ "0.036458, 0.0714, 0.0888, 0.1146, 0.1752", \
+ "0.053472, 0.0846, 0.1194, 0.141, 0.2148", \
+ "0.1362, 0.1566, 0.2112, 0.2466, 0.3426", \
+ "0.2634, 0.2694, 0.318, 0.3648, 0.4872");
+ }
+ }
+ timing() {
+ related_pin : "EN";
+ timing_type : three_state_disable;
+ timing_sense : negative_unate;
+ cell_rise(delay_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.044417, 0.074028, 0.13325, 0.177667, 0.325722");
+ }
+ rise_transition(delay_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.044417, 0.074028, 0.13325, 0.177667, 0.325722");
+ }
+ cell_fall(delay_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.059734, 0.09796, 0.140369, 0.166485, 0.239306");
+ }
+ fall_transition(delay_template_5x1) {
+ index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ("0.059734, 0.09796, 0.140369, 0.166485, 0.239306");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ fall_power(energy_template_5x5) {
+ index_1 ("0.0190665, 0.0340666, 0.0590665, 0.159067, 0.309067");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038244, 0.029621, 0.008064, 0.040933, 0.156704", \
+ "0.037693, 0.030513, 0.003916, 0.034866, 0.147679", \
+ "0.036945, 0.02967, 0.001652, 0.02725, 0.135151", \
+ "0.035059, 0.032067, 0.012407, 0.009487, 0.101033", \
+ "0.034108, 0.033171, 0.018826, 0.002481, 0.072067");
+ }
+ rise_power(energy_template_5x5) {
+ index_1 ("0.019016, 0.034016, 0.0590161, 0.159016, 0.309016");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.163232, 0.167827, 0.20305, 0.236356, 0.353708", \
+ "0.160526, 0.166881, 0.199619, 0.230353, 0.345985", \
+ "0.162813, 0.165372, 0.1949, 0.223452, 0.335436", \
+ "0.163482, 0.162264, 0.184678, 0.207814, 0.304926", \
+ "0.164667, 0.16323, 0.178799, 0.1965, 0.278394");
+ }
+ }
+ internal_power() {
+ related_pin : "EN";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.019016, 0.034016, 0.0590161, 0.159016, 0.309016");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.056886, 0.060621, 0.088211, 0.105801, 0.173874", \
+ "0.057098, 0.06319, 0.088306, 0.107701, 0.1749", \
+ "0.058831, 0.065433, 0.088894, 0.107365, 0.175218", \
+ "0.058212, 0.065873, 0.088645, 0.109154, 0.176158", \
+ "0.05872, 0.066891, 0.089925, 0.109705, 0.176717");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.0190665, 0.0340666, 0.0590665, 0.159067, 0.309067");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.014255, 0.000418, 0.026879, 0.049231, 0.123502", \
+ "0.012904, 0.003527, 0.023934, 0.04587, 0.119437", \
+ "0.013059, 0.004035, 0.022247, 0.043362, 0.115328", \
+ "0.013488, 0.004551, 0.020922, 0.040849, 0.110477", \
+ "0.013268, 0.005206, 0.020131, 0.040127, 0.108755");
+ }
+ }
+ }
+}
+
+/* ---------------- *
+ * Design : XNOR2X1 *
+ * ---------------- */
+cell (XNOR2X1) {
+area : 56;
+ cell_leakage_power : 0.160592;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0296656;
+ rise_capacitance : 0.0296531;
+ fall_capacitance : 0.0296656;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0342715;
+ rise_capacitance : 0.0339946;
+ fall_capacitance : 0.0342715;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.484641;
+ function : "(!(A^B))";
+ timing() {
+ related_pin : "A";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.084544, 0.100187, 0.114213, 0.123541, 0.136185", \
+ "0.097758, 0.113674, 0.126363, 0.138852, 0.150601", \
+ "0.119347, 0.133769, 0.150698, 0.160444, 0.175328", \
+ "0.200286, 0.209259, 0.234451, 0.245612, 0.260619", \
+ "0.324789, 0.342562, 0.359971, 0.370257, 0.387423");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.052523, 0.057076, 0.053423, 0.0618, 0.0738", \
+ "0.0714, 0.069, 0.0708, 0.081, 0.0828", \
+ "0.102, 0.099, 0.0972, 0.1014, 0.1062", \
+ "0.2178, 0.2148, 0.207, 0.2094, 0.213", \
+ "0.3948, 0.3954, 0.3894, 0.387, 0.3894");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.080598, 0.104814, 0.14407, 0.16646, 0.230823", \
+ "0.090007, 0.114398, 0.158715, 0.18125, 0.244904", \
+ "0.105009, 0.129684, 0.174764, 0.197639, 0.261251", \
+ "0.164452, 0.191059, 0.235757, 0.25945, 0.326304", \
+ "0.254746, 0.281259, 0.324243, 0.349894, 0.419368");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.04529, 0.040774, 0.050768, 0.044716, 0.0696", \
+ "0.053465, 0.052244, 0.0624, 0.063, 0.0738", \
+ "0.0756, 0.069, 0.0774, 0.0792, 0.084", \
+ "0.1512, 0.1512, 0.1482, 0.1488, 0.1536", \
+ "0.2724, 0.273, 0.2682, 0.2652, 0.27");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.10043, 0.112224, 0.127373, 0.134943, 0.151", \
+ "0.114693, 0.125678, 0.141086, 0.148733, 0.165698", \
+ "0.134581, 0.147375, 0.163947, 0.172141, 0.187238", \
+ "0.219625, 0.233512, 0.248511, 0.256184, 0.272455", \
+ "0.34583, 0.360056, 0.375552, 0.389966, 0.399734");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.057964, 0.053126, 0.056893, 0.057661, 0.0684", \
+ "0.0702, 0.0684, 0.0708, 0.075, 0.084", \
+ "0.0996, 0.0978, 0.1014, 0.1038, 0.111", \
+ "0.2184, 0.2184, 0.2172, 0.219, 0.2214", \
+ "0.3948, 0.3954, 0.3948, 0.3954, 0.3966");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.088851, 0.113426, 0.147155, 0.170376, 0.234997", \
+ "0.099159, 0.123811, 0.160163, 0.180288, 0.246878", \
+ "0.11593, 0.140664, 0.175175, 0.198865, 0.265918", \
+ "0.178962, 0.203622, 0.239327, 0.262263, 0.328548", \
+ "0.270984, 0.295933, 0.331436, 0.354428, 0.421444");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038498, 0.040763, 0.053891, 0.049019, 0.0624", \
+ "0.051011, 0.050726, 0.0624, 0.059128, 0.0684", \
+ "0.0708, 0.0738, 0.0786, 0.078, 0.0876", \
+ "0.15, 0.1524, 0.1512, 0.1536, 0.1566", \
+ "0.2712, 0.2712, 0.2718, 0.2706, 0.273");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.04347, 0.047419, 0.069645, 0.092194, 0.168622", \
+ "0.043836, 0.046995, 0.070428, 0.091803, 0.165958", \
+ "0.042241, 0.046473, 0.070214, 0.091468, 0.162393", \
+ "0.039645, 0.047232, 0.070839, 0.092026, 0.158857", \
+ "0.037719, 0.046566, 0.071058, 0.091224, 0.158921");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.109542, 0.118976, 0.14587, 0.165122, 0.23287", \
+ "0.108958, 0.118223, 0.145165, 0.165146, 0.232197", \
+ "0.108499, 0.117602, 0.144445, 0.164886, 0.231277", \
+ "0.103556, 0.114346, 0.142765, 0.163112, 0.230403", \
+ "0.101638, 0.111971, 0.14061, 0.160075, 0.229342");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.051682, 0.059125, 0.082205, 0.101964, 0.173332", \
+ "0.050197, 0.059498, 0.08273, 0.102347, 0.172834", \
+ "0.050515, 0.060544, 0.082443, 0.101904, 0.172822", \
+ "0.050393, 0.061573, 0.083208, 0.102791, 0.171525", \
+ "0.050581, 0.062061, 0.083892, 0.102759, 0.171009");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.110748, 0.120302, 0.144257, 0.164108, 0.234096", \
+ "0.111537, 0.120649, 0.14374, 0.164163, 0.233653", \
+ "0.11211, 0.121157, 0.144867, 0.163574, 0.233201", \
+ "0.112552, 0.122391, 0.145428, 0.164597, 0.232813", \
+ "0.112929, 0.122933, 0.146023, 0.165021, 0.23239");
+ }
+ }
+ }
+}
+
+/* --------------- *
+ * Design : XOR2X1 *
+ * --------------- */
+cell (XOR2X1) {
+area : 56;
+ cell_leakage_power : 0.161354;
+ pin(A) {
+ direction : input;
+ capacitance : 0.0296528;
+ rise_capacitance : 0.029651;
+ fall_capacitance : 0.0296528;
+ }
+ pin(B) {
+ direction : input;
+ capacitance : 0.0342661;
+ rise_capacitance : 0.0339918;
+ fall_capacitance : 0.0342661;
+ }
+ pin(Y) {
+ direction : output;
+ capacitance : 0;
+ rise_capacitance : 0;
+ fall_capacitance : 0;
+ max_capacitance : 0.484395;
+ function : "(A^B)";
+ timing() {
+ related_pin : "A";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.084668, 0.100252, 0.11425, 0.123569, 0.136197", \
+ "0.097915, 0.113723, 0.126398, 0.138879, 0.150616", \
+ "0.119426, 0.133803, 0.150727, 0.160469, 0.175347", \
+ "0.200291, 0.21109, 0.234434, 0.245604, 0.260628", \
+ "0.324762, 0.343132, 0.359931, 0.370218, 0.387403");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.052475, 0.0571, 0.053443, 0.0618, 0.0738", \
+ "0.0714, 0.069, 0.0708, 0.081, 0.0828", \
+ "0.102, 0.0984, 0.0972, 0.1014, 0.1062", \
+ "0.2178, 0.2148, 0.2064, 0.2094, 0.213", \
+ "0.3942, 0.3948, 0.3894, 0.387, 0.3894");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.080217, 0.104741, 0.14405, 0.166439, 0.230805", \
+ "0.089887, 0.114359, 0.158704, 0.181241, 0.244897", \
+ "0.104894, 0.129666, 0.174768, 0.197644, 0.261257", \
+ "0.164496, 0.19114, 0.235815, 0.259502, 0.326338", \
+ "0.254884, 0.281399, 0.324471, 0.350019, 0.419374");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.041331, 0.040781, 0.050767, 0.044749, 0.0696", \
+ "0.053453, 0.052285, 0.0624, 0.063, 0.0738", \
+ "0.0756, 0.069, 0.078, 0.0792, 0.084", \
+ "0.1518, 0.1512, 0.1482, 0.1488, 0.1536", \
+ "0.273, 0.273, 0.2682, 0.2652, 0.27");
+ }
+ }
+ timing() {
+ related_pin : "B";
+ timing_sense : non_unate;
+ cell_rise(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.095856, 0.109639, 0.124914, 0.132649, 0.149393", \
+ "0.112134, 0.122918, 0.138721, 0.14656, 0.164175", \
+ "0.132565, 0.144856, 0.161456, 0.170028, 0.185654", \
+ "0.217554, 0.231394, 0.246536, 0.255419, 0.27072", \
+ "0.343798, 0.357936, 0.373613, 0.388316, 0.398061");
+ }
+ rise_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.058266, 0.053422, 0.056738, 0.058408, 0.0684", \
+ "0.0696, 0.0684, 0.0714, 0.0756, 0.0846", \
+ "0.0996, 0.0984, 0.1008, 0.1026, 0.111", \
+ "0.2178, 0.2184, 0.216, 0.2184, 0.2208", \
+ "0.3942, 0.3942, 0.3942, 0.3942, 0.3954");
+ }
+ cell_fall(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.090864, 0.115106, 0.148564, 0.176005, 0.236451", \
+ "0.101631, 0.126046, 0.162396, 0.186432, 0.247857", \
+ "0.118398, 0.142704, 0.177128, 0.20129, 0.267362", \
+ "0.181148, 0.206, 0.241266, 0.265038, 0.330296", \
+ "0.273354, 0.298267, 0.333521, 0.3571, 0.42352");
+ }
+ fall_transition(delay_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.038733, 0.04056, 0.054628, 0.057339, 0.0624", \
+ "0.051463, 0.051355, 0.063, 0.0618, 0.0684", \
+ "0.0732, 0.0744, 0.0792, 0.0774, 0.0882", \
+ "0.1524, 0.1542, 0.1518, 0.1542, 0.1584", \
+ "0.2724, 0.2724, 0.2736, 0.2724, 0.2748");
+ }
+ }
+ internal_power() {
+ related_pin : "A";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.039147, 0.043066, 0.065269, 0.087649, 0.161009", \
+ "0.039465, 0.042689, 0.06602, 0.087383, 0.159416", \
+ "0.037848, 0.042114, 0.065867, 0.087082, 0.157005", \
+ "0.035203, 0.043327, 0.066417, 0.087567, 0.154421", \
+ "0.033256, 0.041973, 0.066668, 0.086833, 0.154458");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.115486, 0.124065, 0.150891, 0.17016, 0.238191", \
+ "0.11447, 0.12322, 0.150245, 0.170238, 0.237468", \
+ "0.113772, 0.122815, 0.149439, 0.170003, 0.236493", \
+ "0.108866, 0.119919, 0.148098, 0.168247, 0.235659", \
+ "0.107123, 0.117629, 0.146091, 0.165491, 0.234547");
+ }
+ }
+ internal_power() {
+ related_pin : "B";
+ rise_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.026559, 0.03559, 0.058419, 0.078185, 0.149262", \
+ "0.025608, 0.036149, 0.058793, 0.078541, 0.148897", \
+ "0.026126, 0.037049, 0.058739, 0.078407, 0.148412", \
+ "0.026155, 0.037809, 0.059428, 0.078443, 0.14767", \
+ "0.026354, 0.038386, 0.060015, 0.078495, 0.146955");
+ }
+ fall_power(energy_template_5x5) {
+ index_1 ("0.005, 0.0125, 0.025, 0.075, 0.15");
+ index_2 ("0.06, 0.18, 0.42, 0.6, 1.2");
+ values ( \
+ "0.135123, 0.144361, 0.167778, 0.18777, 0.258031", \
+ "0.135422, 0.144299, 0.167404, 0.187571, 0.257476", \
+ "0.135526, 0.145303, 0.167795, 0.187325, 0.256994", \
+ "0.135659, 0.146275, 0.168727, 0.18804, 0.256332", \
+ "0.135952, 0.146808, 0.169391, 0.1885, 0.255797");
+ }
+ }
+ }
+}
+
+}
diff --git a/tech/osu018/osu018_stdcells.sp b/tech/osu018/osu018_stdcells.sp
new file mode 100755
index 0000000..902493a
--- /dev/null
+++ b/tech/osu018/osu018_stdcells.sp
@@ -0,0 +1,803 @@
+
+.subckt AND2X1 Y B vdd gnd A
+M0 a_2_6# A vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd B a_2_6# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y a_2_6# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_9_6# A a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 gnd B a_9_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 Y a_2_6# gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends AND2X1
+
+.subckt AND2X2 vdd gnd A B Y
+M0 a_2_6# A vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd B a_2_6# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y a_2_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_9_6# A a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 gnd B a_9_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 Y a_2_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends AND2X2
+
+.subckt AOI21X1 gnd vdd A B Y C
+M0 vdd A a_2_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_2_54# B vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y C a_2_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_12_6# A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 Y B a_12_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 gnd C Y Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends AOI21X1
+
+.subckt AOI22X1 gnd vdd C D Y A B
+M0 vdd A a_2_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_2_54# B vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y D a_2_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_2_54# C Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_11_6# A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 Y B a_11_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 a_28_6# D Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 gnd C a_28_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends AOI22X1
+
+.subckt BUFX2 vdd gnd A Y
+M0 vdd A a_2_6# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 Y a_2_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 gnd A a_2_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 Y a_2_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends BUFX2
+
+.subckt BUFX4 vdd gnd A Y
+M0 vdd A a_2_6# vdd pfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 Y a_2_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 vdd a_2_6# Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 gnd A a_2_6# Gnd nfet w=1.5u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 Y a_2_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 gnd a_2_6# Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends BUFX4
+
+.subckt CLKBUF1 A vdd gnd Y
+M0 a_9_6# A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd A a_9_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_25_6# a_9_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 vdd a_9_6# a_25_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_41_6# a_25_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 vdd a_25_6# a_41_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 Y a_41_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 vdd a_41_6# Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_9_6# A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 gnd A a_9_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 a_25_6# a_9_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 gnd a_9_6# a_25_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M12 a_41_6# a_25_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M13 gnd a_25_6# a_41_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M14 Y a_41_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M15 gnd a_41_6# Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends CLKBUF1
+
+.subckt CLKBUF2 vdd gnd A Y
+M0 a_9_6# A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd A a_9_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_25_6# a_9_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 vdd a_9_6# a_25_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_41_6# a_25_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 vdd a_25_6# a_41_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 a_57_6# a_41_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 vdd a_41_6# a_57_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_73_6# a_57_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 vdd a_57_6# a_73_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 Y a_73_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 vdd a_73_6# Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M12 a_9_6# A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M13 gnd A a_9_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M14 a_25_6# a_9_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M15 gnd a_9_6# a_25_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M16 a_41_6# a_25_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M17 gnd a_25_6# a_41_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M18 a_57_6# a_41_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M19 gnd a_41_6# a_57_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M20 a_73_6# a_57_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M21 gnd a_57_6# a_73_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M22 Y a_73_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M23 gnd a_73_6# Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends CLKBUF2
+
+.subckt CLKBUF3 gnd vdd A Y
+M0 a_9_6# A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd A a_9_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_25_6# a_9_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 vdd a_9_6# a_25_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_41_6# a_25_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 vdd a_25_6# a_41_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 a_57_6# a_41_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 vdd a_41_6# a_57_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_73_6# a_57_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 vdd a_57_6# a_73_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 a_89_6# a_73_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 vdd a_73_6# a_89_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M12 a_105_6# a_89_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M13 vdd a_89_6# a_105_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M14 Y a_105_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M15 vdd a_105_6# Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M16 a_9_6# A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M17 gnd A a_9_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M18 a_25_6# a_9_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M19 gnd a_9_6# a_25_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M20 a_41_6# a_25_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M21 gnd a_25_6# a_41_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M22 a_57_6# a_41_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M23 gnd a_41_6# a_57_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M24 a_73_6# a_57_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M25 gnd a_57_6# a_73_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M26 a_89_6# a_73_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M27 gnd a_73_6# a_89_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M28 a_105_6# a_89_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M29 gnd a_89_6# a_105_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M30 Y a_105_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M31 gnd a_105_6# Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends CLKBUF3
+
+.subckt DFFNEGX1 CLK vdd D gnd Q
+M0 vdd CLK a_2_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_17_74# D vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_23_6# a_2_6# a_17_74# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_31_74# CLK a_23_6# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 vdd a_34_4# a_31_74# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 a_34_4# a_23_6# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 a_61_74# a_34_4# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 a_66_6# CLK a_61_74# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_76_84# a_2_6# a_66_6# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 vdd Q a_76_84# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 gnd CLK a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 Q a_66_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M12 a_17_6# D gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M13 a_23_6# CLK a_17_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M14 a_31_6# a_2_6# a_23_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M15 gnd a_34_4# a_31_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M16 a_34_4# a_23_6# gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M17 a_61_6# a_34_4# gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M18 a_66_6# a_2_6# a_61_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M19 a_76_6# CLK a_66_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M20 gnd Q a_76_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M21 Q a_66_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends DFFNEGX1
+
+.subckt DFFPOSX1 vdd D gnd Q CLK
+M0 vdd CLK a_2_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_17_74# D vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_22_6# CLK a_17_74# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_31_74# a_2_6# a_22_6# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 vdd a_34_4# a_31_74# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 a_34_4# a_22_6# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 a_61_74# a_34_4# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 a_66_6# a_2_6# a_61_74# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_76_84# CLK a_66_6# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 vdd Q a_76_84# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 gnd CLK a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 Q a_66_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M12 a_17_6# D gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M13 a_22_6# a_2_6# a_17_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M14 a_31_6# CLK a_22_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M15 gnd a_34_4# a_31_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M16 a_34_4# a_22_6# gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M17 a_61_6# a_34_4# gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M18 a_66_6# CLK a_61_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M19 a_76_6# a_2_6# a_66_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M20 gnd Q a_76_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M21 Q a_66_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends DFFPOSX1
+
+.subckt DFFSR gnd vdd D S R Q CLK
+M0 a_2_6# R vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd a_10_61# a_2_6# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_10_61# a_23_27# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 vdd S a_10_61# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_23_27# a_47_71# a_2_6# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 a_57_6# a_47_4# a_23_27# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 vdd D a_57_6# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 vdd a_47_71# a_47_4# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_47_71# CLK vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 a_105_6# a_47_71# a_10_61# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 a_113_6# a_47_4# a_105_6# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 a_122_6# a_105_6# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M12 vdd R a_122_6# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M13 a_113_6# a_122_6# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M14 vdd S a_113_6# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M15 vdd a_122_6# Q vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M16 a_10_6# R a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M17 gnd a_10_61# a_10_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M18 a_26_6# a_23_27# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M19 a_10_61# S a_26_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M20 a_23_27# a_47_4# a_2_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M21 a_57_6# a_47_71# a_23_27# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M22 gnd D a_57_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M23 gnd a_47_71# a_47_4# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M24 a_47_71# CLK gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M25 a_105_6# a_47_4# a_10_61# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M26 a_113_6# a_47_71# a_105_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M27 a_130_6# a_105_6# a_122_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M28 gnd R a_130_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M29 a_146_6# a_122_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M30 a_113_6# S a_146_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M31 gnd a_122_6# Q Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends DFFSR
+
+.subckt FAX1 gnd vdd A B C YC YS
+M0 vdd A a_2_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_2_54# B vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_25_6# C a_2_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_33_54# B a_25_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 vdd A a_33_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 a_46_54# A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 vdd B a_46_54# vdd pfet w=3.6u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 a_46_54# C vdd vdd pfet w=3.6u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_70_6# a_25_6# a_46_54# vdd pfet w=3.6u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 a_79_46# C a_70_6# vdd pfet w=4.8u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 a_84_46# B a_79_46# vdd pfet w=4.8u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 vdd A a_84_46# vdd pfet w=4.8u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M12 YS a_70_6# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M13 YC a_25_6# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M14 gnd A a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M15 a_2_6# B gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M16 a_25_6# C a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M17 a_33_6# B a_25_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M18 gnd A a_33_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M19 a_46_6# A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M20 gnd B a_46_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M21 a_46_6# C gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M22 a_70_6# a_25_6# a_46_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M23 a_79_6# C a_70_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M24 a_84_6# B a_79_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M25 gnd A a_84_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M26 YS a_70_6# gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M27 YC a_25_6# gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends FAX1
+
+.subckt HAX1 vdd gnd YC A B YS
+M0 vdd A a_2_74# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_2_74# B vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 vdd a_2_74# YC vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_41_74# a_2_74# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_49_54# B a_41_74# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 vdd A a_49_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 YS a_41_74# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 a_9_6# A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_2_74# B a_9_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 gnd a_2_74# YC Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 a_38_6# a_2_74# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 a_41_74# B a_38_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M12 a_38_6# A a_41_74# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M13 YS a_41_74# gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends HAX1
+
+.subckt INVX1 A Y vdd gnd
+M0 Y A vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 Y A gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends INVX1
+
+.subckt INVX2 vdd gnd Y A
+M0 Y A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 Y A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends INVX2
+
+.subckt INVX4 vdd gnd Y A
+M0 Y A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd A Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 gnd A Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends INVX4
+
+.subckt INVX8 vdd gnd A Y
+M0 Y A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd A Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 vdd A Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 Y A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 gnd A Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 Y A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 gnd A Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends INVX8
+
+.subckt LATCH D Q gnd vdd CLK
+M0 vdd CLK a_2_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_18_74# D vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_23_6# a_2_6# a_18_74# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_35_84# CLK a_23_6# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 vdd Q a_35_84# vdd pfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 gnd CLK a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 Q a_23_6# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 a_18_6# D gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_23_6# CLK a_18_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 a_35_6# a_2_6# a_23_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 gnd Q a_35_6# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 Q a_23_6# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends LATCH
+
+.subckt MUX2X1 S vdd gnd Y A B
+M0 vdd S a_2_10# vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_17_50# B vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y S a_17_50# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_30_54# a_2_10# Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 vdd A a_30_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 gnd S a_2_10# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 a_17_10# B gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 Y a_2_10# a_17_10# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 a_30_10# S Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 gnd A a_30_10# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends MUX2X1
+
+.subckt NAND2X1 vdd Y gnd A B
+M0 Y A vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd B Y vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_9_6# A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 Y B a_9_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends NAND2X1
+
+.subckt NAND3X1 B vdd gnd A C Y
+M0 Y A vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd B Y vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y C vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_9_6# A gnd Gnd nfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_14_6# B a_9_6# Gnd nfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 Y C a_14_6# Gnd nfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends NAND3X1
+
+.subckt NOR2X1 vdd B gnd Y A
+M0 a_9_54# A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 Y B a_9_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y A gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 gnd B Y Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends NOR2X1
+
+.subckt NOR3X1 vdd gnd B C A Y
+M0 vdd A a_2_64# vdd pfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_2_64# A vdd vdd pfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_25_64# B a_2_64# vdd pfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_2_64# B a_25_64# vdd pfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 Y C a_25_64# vdd pfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 a_25_64# C Y vdd pfet w=3u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 Y A gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 gnd B Y Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 Y C gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends NOR3X1
+
+.subckt OAI21X1 gnd vdd A B Y C
+M0 a_9_54# A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 Y B a_9_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 vdd C Y vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 gnd A a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_2_6# B gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 Y C a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends OAI21X1
+
+.subckt OAI22X1 gnd vdd D C A B Y
+M0 a_9_54# A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 Y B a_9_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_28_54# D Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 vdd C a_28_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 gnd A a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 a_2_6# B gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 Y D a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 a_2_6# C Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends OAI22X1
+
+.subckt OR2X1 Y B vdd gnd A
+M0 a_9_54# A a_2_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd B a_9_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y a_2_54# vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_2_54# A gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 gnd B a_2_54# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 Y a_2_54# gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends OR2X1
+
+.subckt OR2X2 Y B vdd gnd A
+M0 a_9_54# A a_2_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 vdd B a_9_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y a_2_54# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_2_54# A gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 gnd B a_2_54# Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 Y a_2_54# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends OR2X2
+
+.subckt TBUFX1 vdd gnd EN A Y
+M0 a_9_6# EN vdd vdd pfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_26_54# a_9_6# Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 vdd A a_26_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_9_6# EN gnd Gnd nfet w=1u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_26_6# EN Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 gnd A a_26_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends TBUFX1
+
+.subckt TBUFX2 vdd gnd A EN Y
+M0 a_9_6# EN vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 Y a_9_6# a_18_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 a_18_54# a_9_6# Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 vdd A a_18_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 a_18_54# A vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 a_9_6# EN gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 Y EN a_18_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 a_18_6# EN Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 gnd A a_18_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 a_18_6# A gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends TBUFX2
+
+.subckt XNOR2X1 A B gnd vdd Y
+M0 vdd A a_2_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_18_54# a_12_41# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y a_2_6# a_18_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_35_54# A Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 vdd B a_35_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 a_12_41# B vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 gnd A a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 a_18_6# a_12_41# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 Y A a_18_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 a_35_6# a_2_6# Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 gnd B a_35_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 a_12_41# B gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends XNOR2X1
+
+.subckt XOR2X1 Y vdd B A gnd
+M0 vdd A a_2_6# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M1 a_18_54# a_13_43# vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M2 Y A a_18_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M3 a_35_54# a_2_6# Y vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M4 vdd B a_35_54# vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M5 a_13_43# B vdd vdd pfet w=4u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M6 gnd A a_2_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M7 a_18_6# a_13_43# gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M8 Y a_2_6# a_18_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M9 a_35_6# A Y Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M10 gnd B a_35_6# Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+M11 a_13_43# B gnd Gnd nfet w=2u l=0.2u
++ ad=0p pd=0u as=0p ps=0u
+.ends XOR2X1
+
diff --git a/tech/osu018/osu018_stdcells.v b/tech/osu018/osu018_stdcells.v
new file mode 100755
index 0000000..7824fe3
--- /dev/null
+++ b/tech/osu018/osu018_stdcells.v
@@ -0,0 +1,1050 @@
+`timescale 1ns/10ps
+`celldefine
+module AND2X1 (A, B, Y);
+input A ;
+input B ;
+output Y ;
+
+ and (Y, A, B);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$B$Y = 0.065:0.065:0.065,
+ tphhl$B$Y = 0.086:0.086:0.086,
+ tpllh$A$Y = 0.064:0.064:0.064,
+ tphhl$A$Y = 0.076:0.076:0.076;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tphhl$A$Y);
+ (B *> Y) = (tpllh$B$Y, tphhl$B$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module AND2X2 (A, B, Y);
+input A ;
+input B ;
+output Y ;
+
+ and (Y, A, B);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$A$Y = 0.079:0.079:0.079,
+ tphhl$A$Y = 0.094:0.094:0.094,
+ tpllh$B$Y = 0.082:0.082:0.082,
+ tphhl$B$Y = 0.1:0.1:0.1;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tphhl$A$Y);
+ (B *> Y) = (tpllh$B$Y, tphhl$B$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module AOI21X1 (A, B, C, Y);
+input A ;
+input B ;
+input C ;
+output Y ;
+
+ and (I0_out, A, B);
+ or (I1_out, I0_out, C);
+ not (Y, I1_out);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$A$Y = 0.048:0.048:0.048,
+ tphlh$A$Y = 0.065:0.065:0.065,
+ tplhl$B$Y = 0.049:0.049:0.049,
+ tphlh$B$Y = 0.055:0.055:0.055,
+ tplhl$C$Y = 0.039:0.041:0.043,
+ tphlh$C$Y = 0.039:0.048:0.056;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tphlh$B$Y, tplhl$B$Y);
+ (C *> Y) = (tphlh$C$Y, tplhl$C$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module AOI22X1 (A, B, C, D, Y);
+input A ;
+input B ;
+input C ;
+input D ;
+output Y ;
+
+ and (I0_out, A, B);
+ and (I1_out, C, D);
+ or (I2_out, I0_out, I1_out);
+ not (Y, I2_out);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$C$Y = 0.042:0.043:0.045,
+ tphlh$C$Y = 0.054:0.064:0.073,
+ tplhl$D$Y = 0.041:0.043:0.044,
+ tphlh$D$Y = 0.047:0.055:0.064,
+ tplhl$A$Y = 0.055:0.06:0.064,
+ tphlh$A$Y = 0.068:0.077:0.086,
+ tplhl$B$Y = 0.056:0.06:0.065,
+ tphlh$B$Y = 0.06:0.069:0.079;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tphlh$B$Y, tplhl$B$Y);
+ (C *> Y) = (tphlh$C$Y, tplhl$C$Y);
+ (D *> Y) = (tphlh$D$Y, tplhl$D$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module BUFX2 (A, Y);
+input A ;
+output Y ;
+
+ buf (Y, A);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$A$Y = 0.08:0.08:0.08,
+ tphhl$A$Y = 0.09:0.09:0.09;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tphhl$A$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module BUFX4 (A, Y);
+input A ;
+output Y ;
+
+ buf (Y, A);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$A$Y = 0.094:0.094:0.094,
+ tphhl$A$Y = 0.097:0.097:0.097;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tphhl$A$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module CLKBUF1 (A, Y);
+input A ;
+output Y ;
+
+ buf (Y, A);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$A$Y = 0.17:0.17:0.17,
+ tphhl$A$Y = 0.17:0.17:0.17;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tphhl$A$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module CLKBUF2 (A, Y);
+input A ;
+output Y ;
+
+ buf (Y, A);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$A$Y = 0.23:0.23:0.23,
+ tphhl$A$Y = 0.24:0.24:0.24;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tphhl$A$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module CLKBUF3 (A, Y);
+input A ;
+output Y ;
+
+ buf (Y, A);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$A$Y = 0.29:0.29:0.29,
+ tphhl$A$Y = 0.3:0.3:0.3;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tphhl$A$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module DFFNEGX1 (CLK, D, Q);
+input CLK ;
+input D ;
+output Q ;
+reg NOTIFIER ;
+
+ not (I0_CLOCK, CLK);
+ udp_dff (DS0000, D, I0_CLOCK, 1'B0, 1'B0, NOTIFIER);
+ not (P0002, DS0000);
+ buf (Q, DS0000);
+
+ specify
+ // delay parameters
+ specparam
+ tphlh$CLK$Q = 0.13:0.13:0.13,
+ tphhl$CLK$Q = 0.12:0.12:0.12,
+ tminpwh$CLK = 0.043:0.094:0.14,
+ tminpwl$CLK = 0.082:0.1:0.13,
+ tsetup_negedge$D$CLK = 0.19:0.19:0.19,
+ thold_negedge$D$CLK = 0.000000061:0.000000061:0.000000061,
+ tsetup_posedge$D$CLK = 0.19:0.19:0.19,
+ thold_posedge$D$CLK = 0.000000062:0.000000062:0.000000062;
+
+ // path delays
+ (CLK *> Q) = (tphlh$CLK$Q, tphhl$CLK$Q);
+ $setup(negedge D, negedge CLK, tsetup_negedge$D$CLK, NOTIFIER);
+ $hold (negedge D, negedge CLK, thold_negedge$D$CLK, NOTIFIER);
+ $setup(posedge D, negedge CLK, tsetup_posedge$D$CLK, NOTIFIER);
+ $hold (posedge D, negedge CLK, thold_posedge$D$CLK, NOTIFIER);
+ $width(posedge CLK, tminpwh$CLK, 0, NOTIFIER);
+ $width(negedge CLK, tminpwl$CLK, 0, NOTIFIER);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module DFFPOSX1 (CLK, D, Q);
+input CLK ;
+input D ;
+output Q ;
+reg NOTIFIER ;
+
+ udp_dff (DS0000, D, CLK, 1'B0, 1'B0, NOTIFIER);
+ not (P0002, DS0000);
+ buf (Q, DS0000);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$CLK$Q = 0.094:0.094:0.094,
+ tplhl$CLK$Q = 0.16:0.16:0.16,
+ tminpwh$CLK = 0.054:0.11:0.16,
+ tminpwl$CLK = 0.057:0.099:0.14,
+ tsetup_negedge$D$CLK = 0.19:0.19:0.19,
+ thold_negedge$D$CLK = -0.094:-0.094:-0.094,
+ tsetup_posedge$D$CLK = 0.19:0.19:0.19,
+ thold_posedge$D$CLK = 0.00000006:0.00000006:0.00000006;
+
+ // path delays
+ (CLK *> Q) = (tpllh$CLK$Q, tplhl$CLK$Q);
+ $setup(negedge D, posedge CLK, tsetup_negedge$D$CLK, NOTIFIER);
+ $hold (negedge D, posedge CLK, thold_negedge$D$CLK, NOTIFIER);
+ $setup(posedge D, posedge CLK, tsetup_posedge$D$CLK, NOTIFIER);
+ $hold (posedge D, posedge CLK, thold_posedge$D$CLK, NOTIFIER);
+ $width(posedge CLK, tminpwh$CLK, 0, NOTIFIER);
+ $width(negedge CLK, tminpwl$CLK, 0, NOTIFIER);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module DFFSR (CLK, D, R, S, Q);
+input CLK ;
+input D ;
+input R ;
+input S ;
+output Q ;
+reg NOTIFIER ;
+
+ not (I0_CLEAR, R);
+ not (I0_SET, S);
+ udp_dff (P0003, D_, CLK, I0_SET, I0_CLEAR, NOTIFIER);
+ not (D_, D);
+ not (P0002, P0003);
+ buf (Q, P0002);
+ and (\D&S , D, S);
+ not (I7_out, D);
+ and (\~D&R , I7_out, R);
+ and (\S&R , S, R);
+
+ specify
+ // delay parameters
+ specparam
+ tphlh$S$Q = 0.34:0.34:0.35,
+ tpllh$R$Q = 0.26:0.26:0.26,
+ tphhl$R$Q = 0.26:0.26:0.27,
+ tpllh$CLK$Q = 0.39:0.39:0.39,
+ tplhl$CLK$Q = 0.38:0.38:0.38,
+ tminpwl$S = 0.053:0.2:0.35,
+ tminpwl$R = 0.037:0.15:0.27,
+ tminpwh$CLK = 0.18:0.28:0.39,
+ tminpwl$CLK = 0.18:0.21:0.24,
+ tsetup_negedge$D$CLK = 0.094:0.094:0.094,
+ thold_negedge$D$CLK = 0.000000058:0.000000058:0.000000058,
+ tsetup_posedge$D$CLK = 0.094:0.094:0.094,
+ thold_posedge$D$CLK = 0.00000006:0.00000006:0.00000006,
+ trec$R$CLK = -0.094:-0.094:-0.094,
+ trem$R$CLK = 0.19:0.19:0.19,
+ trec$R$S = 0.00000006:0.00000006:0.00000006,
+ trec$S$CLK = 0:0:0,
+ trem$S$CLK = 0.094:0.094:0.094,
+ trec$S$R = 0.094:0.094:0.094;
+
+ // path delays
+ (CLK *> Q) = (tpllh$CLK$Q, tplhl$CLK$Q);
+ (R *> Q) = (tpllh$R$Q, tphhl$R$Q);
+ (S *> Q) = (tphlh$S$Q, 0);
+ $setup(negedge D, posedge CLK &&& \S&R , tsetup_negedge$D$CLK, NOTIFIER);
+ $hold (negedge D, posedge CLK &&& \S&R , thold_negedge$D$CLK, NOTIFIER);
+ $setup(posedge D, posedge CLK &&& \S&R , tsetup_posedge$D$CLK, NOTIFIER);
+ $hold (posedge D, posedge CLK &&& \S&R , thold_posedge$D$CLK, NOTIFIER);
+ $recovery(posedge R, posedge CLK &&& \D&S , trec$R$CLK, NOTIFIER);
+ $removal (posedge R, posedge CLK &&& \D&S , trem$R$CLK, NOTIFIER);
+ $recovery(posedge R, posedge S, trec$R$S, NOTIFIER);
+ $recovery(posedge S, posedge CLK &&& \~D&R , trec$S$CLK, NOTIFIER);
+ $removal (posedge S, posedge CLK &&& \~D&R , trem$S$CLK, NOTIFIER);
+ $recovery(posedge S, posedge R, trec$S$R, NOTIFIER);
+ $width(negedge S, tminpwl$S, 0, NOTIFIER);
+ $width(negedge R, tminpwl$R, 0, NOTIFIER);
+ $width(posedge CLK, tminpwh$CLK, 0, NOTIFIER);
+ $width(negedge CLK, tminpwl$CLK, 0, NOTIFIER);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module FAX1 (A, B, C, YC, YS);
+input A ;
+input B ;
+input C ;
+output YC ;
+output YS ;
+
+ and (I0_out, A, B);
+ and (I1_out, B, C);
+ and (I3_out, C, A);
+ or (YC, I0_out, I1_out, I3_out);
+ xor (I5_out, A, B);
+ xor (YS, I5_out, C);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$A$YS = 0.19:0.2:0.2,
+ tplhl$A$YS = 0.18:0.18:0.18,
+ tpllh$A$YC = 0.11:0.11:0.11,
+ tphhl$A$YC = 0.13:0.13:0.13,
+ tpllh$B$YS = 0.19:0.2:0.21,
+ tplhl$B$YS = 0.19:0.19:0.19,
+ tpllh$B$YC = 0.11:0.11:0.12,
+ tphhl$B$YC = 0.13:0.13:0.14,
+ tpllh$C$YS = 0.19:0.2:0.2,
+ tplhl$C$YS = 0.18:0.18:0.18,
+ tpllh$C$YC = 0.1:0.11:0.12,
+ tphhl$C$YC = 0.12:0.12:0.13;
+
+ // path delays
+ (A *> YC) = (tpllh$A$YC, tphhl$A$YC);
+ (A *> YS) = (tpllh$A$YS, tplhl$A$YS);
+ (B *> YC) = (tpllh$B$YC, tphhl$B$YC);
+ (B *> YS) = (tpllh$B$YS, tplhl$B$YS);
+ (C *> YC) = (tpllh$C$YC, tphhl$C$YC);
+ (C *> YS) = (tpllh$C$YS, tplhl$C$YS);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module HAX1 (A, B, YC, YS);
+input A ;
+input B ;
+output YC ;
+output YS ;
+
+ and (YC, A, B);
+ xor (YS, A, B);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$A$YS = 0.15:0.15:0.15,
+ tplhl$A$YS = 0.15:0.15:0.15,
+ tpllh$A$YC = 0.085:0.085:0.085,
+ tphhl$A$YC = 0.11:0.11:0.11,
+ tpllh$B$YS = 0.14:0.14:0.14,
+ tplhl$B$YS = 0.15:0.15:0.15,
+ tpllh$B$YC = 0.083:0.083:0.083,
+ tphhl$B$YC = 0.097:0.097:0.097;
+
+ // path delays
+ (A *> YC) = (tpllh$A$YC, tphhl$A$YC);
+ (A *> YS) = (tpllh$A$YS, tplhl$A$YS);
+ (B *> YC) = (tpllh$B$YC, tphhl$B$YC);
+ (B *> YS) = (tpllh$B$YS, tplhl$B$YS);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module INVX1 (A, Y);
+input A ;
+output Y ;
+
+ not (Y, A);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$A$Y = 0.031:0.031:0.031,
+ tphlh$A$Y = 0.038:0.038:0.038;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module INVX2 (A, Y);
+input A ;
+output Y ;
+
+ not (Y, A);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$A$Y = 0.033:0.033:0.033,
+ tphlh$A$Y = 0.038:0.038:0.038;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module INVX4 (A, Y);
+input A ;
+output Y ;
+
+ not (Y, A);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$A$Y = 0.033:0.033:0.033,
+ tphlh$A$Y = 0.038:0.038:0.038;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module INVX8 (A, Y);
+input A ;
+output Y ;
+
+ not (Y, A);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$A$Y = 0.033:0.033:0.033,
+ tphlh$A$Y = 0.038:0.038:0.038;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module LATCH (CLK, D, Q);
+input CLK ;
+input D ;
+output Q ;
+reg NOTIFIER ;
+
+ udp_tlat (DS0000, D, CLK, 1'B0, 1'B0, NOTIFIER);
+ not (P0000, DS0000);
+ buf (Q, DS0000);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$D$Q = 0.21:0.21:0.21,
+ tphhl$D$Q = 0.24:0.24:0.24,
+ tpllh$CLK$Q = 0.19:0.19:0.19,
+ tplhl$CLK$Q = 0.25:0.25:0.25,
+ tminpwh$CLK = 0.053:0.15:0.25,
+ tsetup_negedge$D$CLK = 0.19:0.19:0.19,
+ thold_negedge$D$CLK = -0.094:-0.094:-0.094,
+ tsetup_posedge$D$CLK = 0.19:0.19:0.19,
+ thold_posedge$D$CLK = -0.094:-0.094:-0.094;
+
+ // path delays
+ (CLK *> Q) = (tpllh$CLK$Q, tplhl$CLK$Q);
+ (D *> Q) = (tpllh$D$Q, tphhl$D$Q);
+ $setup(negedge D, negedge CLK, tsetup_negedge$D$CLK, NOTIFIER);
+ $hold (negedge D, negedge CLK, thold_negedge$D$CLK, NOTIFIER);
+ $setup(posedge D, negedge CLK, tsetup_posedge$D$CLK, NOTIFIER);
+ $hold (posedge D, negedge CLK, thold_posedge$D$CLK, NOTIFIER);
+ $width(posedge CLK, tminpwh$CLK, 0, NOTIFIER);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module MUX2X1 (A, B, S, Y);
+input A ;
+input B ;
+input S ;
+output Y ;
+
+ udp_mux2 (I0_out, B, A, S);
+ not (Y, I0_out);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$S$Y = 0.1:0.1:0.1,
+ tplhl$S$Y = 0.099:0.099:0.099,
+ tplhl$A$Y = 0.05:0.05:0.05,
+ tphlh$A$Y = 0.072:0.072:0.072,
+ tplhl$B$Y = 0.055:0.055:0.055,
+ tphlh$B$Y = 0.066:0.066:0.066;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tphlh$B$Y, tplhl$B$Y);
+ (S *> Y) = (tpllh$S$Y, tplhl$S$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module NAND2X1 (A, B, Y);
+input A ;
+input B ;
+output Y ;
+
+ and (I0_out, A, B);
+ not (Y, I0_out);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$A$Y = 0.033:0.033:0.033,
+ tphlh$A$Y = 0.054:0.054:0.054,
+ tplhl$B$Y = 0.031:0.031:0.031,
+ tphlh$B$Y = 0.046:0.046:0.046;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tphlh$B$Y, tplhl$B$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module NAND3X1 (A, B, C, Y);
+input A ;
+input B ;
+input C ;
+output Y ;
+
+ and (I1_out, A, B, C);
+ not (Y, I1_out);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$B$Y = 0.039:0.039:0.039,
+ tphlh$B$Y = 0.066:0.066:0.066,
+ tplhl$A$Y = 0.041:0.041:0.041,
+ tphlh$A$Y = 0.077:0.077:0.077,
+ tplhl$C$Y = 0.033:0.033:0.033,
+ tphlh$C$Y = 0.052:0.052:0.052;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tphlh$B$Y, tplhl$B$Y);
+ (C *> Y) = (tphlh$C$Y, tplhl$C$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module NOR2X1 (A, B, Y);
+input A ;
+input B ;
+output Y ;
+
+ or (I0_out, A, B);
+ not (Y, I0_out);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$B$Y = 0.038:0.038:0.038,
+ tphlh$B$Y = 0.044:0.044:0.044,
+ tplhl$A$Y = 0.052:0.052:0.052,
+ tphlh$A$Y = 0.049:0.049:0.049;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tphlh$B$Y, tplhl$B$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module NOR3X1 (A, B, C, Y);
+input A ;
+input B ;
+input C ;
+output Y ;
+
+ or (I1_out, A, B, C);
+ not (Y, I1_out);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$B$Y = 0.069:0.069:0.069,
+ tphlh$B$Y = 0.065:0.065:0.065,
+ tplhl$C$Y = 0.049:0.049:0.049,
+ tphlh$C$Y = 0.048:0.048:0.048,
+ tplhl$A$Y = 0.077:0.077:0.077,
+ tphlh$A$Y = 0.07:0.07:0.07;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tphlh$B$Y, tplhl$B$Y);
+ (C *> Y) = (tphlh$C$Y, tplhl$C$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module OAI21X1 (A, B, C, Y);
+input A ;
+input B ;
+input C ;
+output Y ;
+
+ or (I0_out, A, B);
+ and (I1_out, I0_out, C);
+ not (Y, I1_out);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$A$Y = 0.05:0.05:0.05,
+ tphlh$A$Y = 0.066:0.066:0.066,
+ tplhl$B$Y = 0.04:0.04:0.04,
+ tphlh$B$Y = 0.061:0.061:0.061,
+ tplhl$C$Y = 0.03:0.038:0.046,
+ tphlh$C$Y = 0.048:0.049:0.05;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tphlh$B$Y, tplhl$B$Y);
+ (C *> Y) = (tphlh$C$Y, tplhl$C$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module OAI22X1 (A, B, C, D, Y);
+input A ;
+input B ;
+input C ;
+input D ;
+output Y ;
+
+ or (I0_out, A, B);
+ or (I1_out, C, D);
+ and (I2_out, I0_out, I1_out);
+ not (Y, I2_out);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$D$Y = 0.038:0.047:0.055,
+ tphlh$D$Y = 0.055:0.055:0.056,
+ tplhl$C$Y = 0.044:0.054:0.064,
+ tphlh$C$Y = 0.059:0.059:0.06,
+ tplhl$A$Y = 0.051:0.06:0.07,
+ tphlh$A$Y = 0.075:0.078:0.081,
+ tplhl$B$Y = 0.044:0.052:0.059,
+ tphlh$B$Y = 0.071:0.073:0.076;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tphlh$B$Y, tplhl$B$Y);
+ (C *> Y) = (tphlh$C$Y, tplhl$C$Y);
+ (D *> Y) = (tphlh$D$Y, tplhl$D$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module OR2X1 (A, B, Y);
+input A ;
+input B ;
+output Y ;
+
+ or (Y, A, B);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$B$Y = 0.086:0.086:0.086,
+ tphhl$B$Y = 0.081:0.081:0.081,
+ tpllh$A$Y = 0.074:0.074:0.074,
+ tphhl$A$Y = 0.076:0.076:0.076;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tphhl$A$Y);
+ (B *> Y) = (tpllh$B$Y, tphhl$B$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module OR2X2 (A, B, Y);
+input A ;
+input B ;
+output Y ;
+
+ or (Y, A, B);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$B$Y = 0.1:0.1:0.1,
+ tphhl$B$Y = 0.099:0.099:0.099,
+ tpllh$A$Y = 0.093:0.093:0.093,
+ tphhl$A$Y = 0.094:0.094:0.094;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tphhl$A$Y);
+ (B *> Y) = (tpllh$B$Y, tphhl$B$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module TBUFX1 (A, EN, Y);
+input A ;
+input EN ;
+output Y ;
+
+ not (I0_out, A);
+ bufif1 (Y, I0_out, EN);
+
+ specify
+ // delay parameters
+ specparam
+ tpzh$EN$Y = 0.064:0.064:0.064,
+ tpzl$EN$Y = 0.021:0.021:0.021,
+ tplz$EN$Y = 0.044:0.044:0.044,
+ tphz$EN$Y = 0.059:0.059:0.059,
+ tplhl$A$Y = 0.043:0.043:0.043,
+ tphlh$A$Y = 0.062:0.062:0.062;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (EN *> Y) = (0, 0, tplz$EN$Y, tpzh$EN$Y, tphz$EN$Y, tpzl$EN$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module TBUFX2 (A, EN, Y);
+input A ;
+input EN ;
+output Y ;
+
+ not (I0_out, A);
+ bufif1 (Y, I0_out, EN);
+
+ specify
+ // delay parameters
+ specparam
+ tplhl$A$Y = 0.045:0.045:0.045,
+ tphlh$A$Y = 0.062:0.062:0.062,
+ tpzh$EN$Y = 0.067:0.067:0.067,
+ tpzl$EN$Y = 0.021:0.021:0.021,
+ tplz$EN$Y = 0.044:0.044:0.044,
+ tphz$EN$Y = 0.06:0.06:0.06;
+
+ // path delays
+ (A *> Y) = (tphlh$A$Y, tplhl$A$Y);
+ (EN *> Y) = (0, 0, tplz$EN$Y, tpzh$EN$Y, tphz$EN$Y, tpzl$EN$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module XNOR2X1 (A, B, Y);
+input A ;
+input B ;
+output Y ;
+
+ xor (I0_out, A, B);
+ not (Y, I0_out);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$A$Y = 0.085:0.085:0.085,
+ tplhl$A$Y = 0.081:0.081:0.081,
+ tpllh$B$Y = 0.1:0.1:0.1,
+ tplhl$B$Y = 0.089:0.089:0.089;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tpllh$B$Y, tplhl$B$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+`timescale 1ns/10ps
+`celldefine
+module XOR2X1 (A, B, Y);
+input A ;
+input B ;
+output Y ;
+
+ xor (Y, A, B);
+
+ specify
+ // delay parameters
+ specparam
+ tpllh$B$Y = 0.096:0.096:0.096,
+ tplhl$B$Y = 0.091:0.091:0.091,
+ tpllh$A$Y = 0.085:0.085:0.085,
+ tplhl$A$Y = 0.08:0.08:0.08;
+
+ // path delays
+ (A *> Y) = (tpllh$A$Y, tplhl$A$Y);
+ (B *> Y) = (tpllh$B$Y, tplhl$B$Y);
+
+ endspecify
+
+endmodule
+`endcelldefine
+
+primitive udp_dff (out, in, clk, clr, set, NOTIFIER);
+ output out;
+ input in, clk, clr, set, NOTIFIER;
+ reg out;
+
+ table
+
+// in clk clr set NOT : Qt : Qt+1
+//
+ 0 r ? 0 ? : ? : 0 ; // clock in 0
+ 1 r 0 ? ? : ? : 1 ; // clock in 1
+ 1 * 0 ? ? : 1 : 1 ; // reduce pessimism
+ 0 * ? 0 ? : 0 : 0 ; // reduce pessimism
+ ? f ? ? ? : ? : - ; // no changes on negedge clk
+ * b ? ? ? : ? : - ; // no changes when in switches
+ ? ? ? 1 ? : ? : 1 ; // set output
+ ? b 0 * ? : 1 : 1 ; // cover all transistions on set
+ 1 x 0 * ? : 1 : 1 ; // cover all transistions on set
+ ? ? 1 0 ? : ? : 0 ; // reset output
+ ? b * 0 ? : 0 : 0 ; // cover all transistions on clr
+ 0 x * 0 ? : 0 : 0 ; // cover all transistions on clr
+ ? ? ? ? * : ? : x ; // any notifier changed
+
+ endtable
+endprimitive // udp_dff
+
+primitive udp_tlat (out, in, enable, clr, set, NOTIFIER);
+
+ output out;
+ input in, enable, clr, set, NOTIFIER;
+ reg out;
+
+ table
+
+// in enable clr set NOT : Qt : Qt+1
+//
+ 1 1 0 ? ? : ? : 1 ; //
+ 0 1 ? 0 ? : ? : 0 ; //
+ 1 * 0 ? ? : 1 : 1 ; // reduce pessimism
+ 0 * ? 0 ? : 0 : 0 ; // reduce pessimism
+ * 0 ? ? ? : ? : - ; // no changes when in switches
+ ? ? ? 1 ? : ? : 1 ; // set output
+ ? 0 0 * ? : 1 : 1 ; // cover all transistions on set
+ 1 ? 0 * ? : 1 : 1 ; // cover all transistions on set
+ ? ? 1 0 ? : ? : 0 ; // reset output
+ ? 0 * 0 ? : 0 : 0 ; // cover all transistions on clr
+ 0 ? * 0 ? : 0 : 0 ; // cover all transistions on clr
+ ? ? ? ? * : ? : x ; // any notifier changed
+
+ endtable
+endprimitive // udp_tlat
+
+primitive udp_rslat (out, clr, set, NOTIFIER);
+
+ output out;
+ input clr, set, NOTIFIER;
+ reg out;
+
+ table
+
+// clr set NOT : Qt : Qt+1
+//
+ ? 1 ? : ? : 1 ; // set output
+ 0 * ? : 1 : 1 ; // cover all transistions on set
+ 1 0 ? : ? : 0 ; // reset output
+ * 0 ? : 0 : 0 ; // cover all transistions on clr
+ ? ? * : ? : x ; // any notifier changed
+
+ endtable
+endprimitive // udp_tlat
+
+primitive udp_mux2 (out, in0, in1, sel);
+ output out;
+ input in0, in1, sel;
+
+ table
+
+// in0 in1 sel : out
+//
+ 1 ? 0 : 1 ;
+ 0 ? 0 : 0 ;
+ ? 1 1 : 1 ;
+ ? 0 1 : 0 ;
+ 0 0 x : 0 ;
+ 1 1 x : 1 ;
+
+ endtable
+endprimitive // udp_mux2
+
diff --git a/tech/osu035/osu035_stdcells.lef b/tech/osu035/osu035_stdcells.lef
index 37a3516..c7a9186 100644
--- a/tech/osu035/osu035_stdcells.lef
+++ b/tech/osu035/osu035_stdcells.lef
@@ -47,7 +47,6 @@ LAYER metal1
PITCH 2 ;
WIDTH 0.6 ;
SPACING 0.6 ;
- OFFSET 1 ;
RESISTANCE RPERSQ 0.07 ;
CAPACITANCE CPERSQDIST 3e-05 ;
END metal1
@@ -63,7 +62,6 @@ LAYER metal2
PITCH 1.6 ;
WIDTH 0.6 ;
SPACING 0.6 ;
- OFFSET 0.8 ;
RESISTANCE RPERSQ 0.07 ;
CAPACITANCE CPERSQDIST 1.7e-05 ;
END metal2
@@ -79,7 +77,6 @@ LAYER metal3
PITCH 2 ;
WIDTH 0.6 ;
SPACING 0.6 ;
- OFFSET 1 ;
RESISTANCE RPERSQ 0.07 ;
CAPACITANCE CPERSQDIST 7e-06 ;
END metal3
@@ -95,7 +92,6 @@ LAYER metal4
PITCH 3.2 ;
WIDTH 1.2 ;
SPACING 1.2 ;
- OFFSET 1.6 ;
RESISTANCE RPERSQ 0.04 ;
CAPACITANCE CPERSQDIST 4e-06 ;
END metal4
diff --git a/tech/osu050/osu050_stdcells.lef b/tech/osu050/osu050_stdcells.lef
index 418046d..293fa53 100644
--- a/tech/osu050/osu050_stdcells.lef
+++ b/tech/osu050/osu050_stdcells.lef
@@ -47,7 +47,6 @@ LAYER metal1
PITCH 3 ;
WIDTH 0.9 ;
SPACING 0.9 ;
- OFFSET 1.5 ;
RESISTANCE RPERSQ 0.09 ;
CAPACITANCE CPERSQDIST 3.2e-05 ;
END metal1
@@ -63,7 +62,6 @@ LAYER metal2
PITCH 2.4 ;
WIDTH 0.9 ;
SPACING 0.9 ;
- OFFSET 1.2 ;
RESISTANCE RPERSQ 0.09 ;
CAPACITANCE CPERSQDIST 1.6e-05 ;
END metal2
@@ -79,7 +77,6 @@ LAYER metal3
PITCH 3 ;
WIDTH 1.5 ;
SPACING 0.9 ;
- OFFSET 1.5 ;
RESISTANCE RPERSQ 0.05 ;
CAPACITANCE CPERSQDIST 1e-05 ;
END metal3
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/qflow.git
More information about the debian-science-commits
mailing list