[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