unwanted file deleted
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c4985e9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+precheck_results
+*/tmp
+*/*/tmp
+*.vcd
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d97988b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,177 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+CARAVEL_ROOT?=$(PWD)/caravel
+PRECHECK_ROOT?=${HOME}/mpw_precheck
+SIM ?= RTL
+
+# Install lite version of caravel, (1): caravel-lite, (0): caravel
+CARAVEL_LITE?=1
+
+ifeq ($(CARAVEL_LITE),1)
+ CARAVEL_NAME := caravel-lite
+ CARAVEL_REPO := https://github.com/efabless/caravel-lite
+ CARAVEL_BRANCH := main
+else
+ CARAVEL_NAME := caravel
+ CARAVEL_REPO := https://github.com/efabless/caravel
+ CARAVEL_BRANCH := master
+endif
+
+# Install caravel as submodule, (1): submodule, (0): clone
+SUBMODULE?=1
+
+# Include Caravel Makefile Targets
+.PHONY: % : check-caravel
+%:
+ export CARAVEL_ROOT=$(CARAVEL_ROOT) && $(MAKE) -f $(CARAVEL_ROOT)/Makefile $@
+
+# Verify Target for running simulations
+.PHONY: verify
+verify:
+ cd ./verilog/dv/ && \
+ export SIM=${SIM} && \
+ $(MAKE) -j$(THREADS)
+
+# Install DV setup
+.PHONY: simenv
+simenv:
+ docker pull efabless/dv_setup:latest
+
+PATTERNS=$(shell cd verilog/dv && find * -maxdepth 0 -type d)
+DV_PATTERNS = $(foreach dv, $(PATTERNS), verify-$(dv))
+TARGET_PATH=$(shell pwd)
+VERIFY_COMMAND="cd ${TARGET_PATH}/verilog/dv/$* && export SIM=${SIM} && make"
+$(DV_PATTERNS): verify-% : ./verilog/dv/%
+ docker run -v ${TARGET_PATH}:${TARGET_PATH} -v ${PDK_ROOT}:${PDK_ROOT} \
+ -v ${CARAVEL_ROOT}:${CARAVEL_ROOT} \
+ -e TARGET_PATH=${TARGET_PATH} -e PDK_ROOT=${PDK_ROOT} \
+ -e CARAVEL_ROOT=${CARAVEL_ROOT} \
+ -u $(id -u $$USER):$(id -g $$USER) efabless/dv_setup:latest \
+ sh -c $(VERIFY_COMMAND)
+
+# Openlane Makefile Targets
+BLOCKS = $(shell cd openlane && find * -maxdepth 0 -type d)
+.PHONY: $(BLOCKS)
+$(BLOCKS): %:
+ cd openlane && $(MAKE) $*
+
+# Install caravel
+.PHONY: install
+install:
+ifeq ($(SUBMODULE),1)
+ @echo "Installing $(CARAVEL_NAME) as a submodule.."
+# Convert CARAVEL_ROOT to relative path because .gitmodules doesn't accept '/'
+ $(eval CARAVEL_PATH := $(shell realpath --relative-to=$(shell pwd) $(CARAVEL_ROOT)))
+ @if [ ! -d $(CARAVEL_ROOT) ]; then git submodule add --name $(CARAVEL_NAME) $(CARAVEL_REPO) $(CARAVEL_PATH); fi
+ @git submodule update --init
+ @cd $(CARAVEL_ROOT); git checkout $(CARAVEL_BRANCH)
+ $(MAKE) simlink
+else
+ @echo "Installing $(CARAVEL_NAME).."
+ @git clone $(CARAVEL_REPO) $(CARAVEL_ROOT)
+ @cd $(CARAVEL_ROOT); git checkout $(CARAVEL_BRANCH)
+endif
+
+# Create symbolic links to caravel's main files
+.PHONY: simlink
+simlink: check-caravel
+### Symbolic links relative path to $CARAVEL_ROOT
+ $(eval MAKEFILE_PATH := $(shell realpath --relative-to=openlane $(CARAVEL_ROOT)/openlane/Makefile))
+ mkdir -p openlane
+ cd openlane &&\
+ ln -sf $(MAKEFILE_PATH) Makefile
+
+# Update Caravel
+.PHONY: update_caravel
+update_caravel: check-caravel
+ifeq ($(SUBMODULE),1)
+ @git submodule update --init --recursive
+ cd $(CARAVEL_ROOT) && \
+ git checkout $(CARAVEL_BRANCH) && \
+ git pull
+else
+ cd $(CARAVEL_ROOT)/ && \
+ git checkout $(CARAVEL_BRANCH) && \
+ git pull
+endif
+
+# Uninstall Caravel
+.PHONY: uninstall
+uninstall:
+ifeq ($(SUBMODULE),1)
+ git config -f .gitmodules --remove-section "submodule.$(CARAVEL_NAME)"
+ git add .gitmodules
+ git submodule deinit -f $(CARAVEL_ROOT)
+ git rm --cached $(CARAVEL_ROOT)
+ rm -rf .git/modules/$(CARAVEL_NAME)
+ rm -rf $(CARAVEL_ROOT)
+else
+ rm -rf $(CARAVEL_ROOT)
+endif
+
+# Install Openlane
+.PHONY: openlane
+openlane:
+ cd openlane && $(MAKE) openlane
+
+# Install Pre-check
+# Default installs to the user home directory, override by "export PRECHECK_ROOT=<precheck-installation-path>"
+.PHONY: precheck
+precheck:
+ @git clone https://github.com/efabless/mpw_precheck.git --depth=1 $(PRECHECK_ROOT)
+ @docker pull efabless/mpw_precheck:latest
+
+.PHONY: run-precheck
+run-precheck: check-precheck check-pdk check-caravel
+ $(eval INPUT_DIRECTORY := $(shell pwd))
+ cd $(PRECHECK_ROOT) && \
+ docker run -e INPUT_DIRECTORY=$(INPUT_DIRECTORY) -e PDK_ROOT=$(PDK_ROOT) -e CARAVEL_ROOT=$(CARAVEL_ROOT) -v $(PRECHECK_ROOT):$(PRECHECK_ROOT) -v $(INPUT_DIRECTORY):$(INPUT_DIRECTORY) -v $(PDK_ROOT):$(PDK_ROOT) -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \
+ -u $(shell id -u $(USER)):$(shell id -g $(USER)) efabless/mpw_precheck:latest bash -c "cd $(PRECHECK_ROOT) ; python3 mpw_precheck.py --pdk_root $(PDK_ROOT) --input_directory $(INPUT_DIRECTORY) --caravel_root $(CARAVEL_ROOT)"
+
+# Install PDK using OL's Docker Image
+.PHONY: pdk-nonnative
+pdk-nonnative: skywater-pdk skywater-library skywater-timing open_pdks
+ docker run --rm -v $(PDK_ROOT):$(PDK_ROOT) -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) -e CARAVEL_ROOT=$(CARAVEL_ROOT) -e PDK_ROOT=$(PDK_ROOT) -u $(shell id -u $(USER)):$(shell id -g $(USER)) efabless/openlane:current sh -c "cd $(CARAVEL_ROOT); make build-pdk; make gen-sources"
+
+# Clean
+.PHONY: clean
+clean:
+ cd ./verilog/dv/ && \
+ $(MAKE) -j$(THREADS) clean
+
+check-caravel:
+ @if [ ! -d "$(CARAVEL_ROOT)" ]; then \
+ echo "Caravel Root: "$(CARAVEL_ROOT)" doesn't exists, please export the correct path before running make. "; \
+ exit 1; \
+ fi
+
+check-precheck:
+ @if [ ! -d "$(PRECHECK_ROOT)" ]; then \
+ echo "Pre-check Root: "$(PRECHECK_ROOT)" doesn't exists, please export the correct path before running make. "; \
+ exit 1; \
+ fi
+
+check-pdk:
+ @if [ ! -d "$(PDK_ROOT)" ]; then \
+ echo "PDK Root: "$(PDK_ROOT)" doesn't exists, please export the correct path before running make. "; \
+ exit 1; \
+ fi
+
+.PHONY: help
+help:
+ cd $(CARAVEL_ROOT) && $(MAKE) help
+ @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
diff --git a/README.md b/README.md
index ea75bbf..d834db6 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,159 @@
-# caravel_avsdopamp_3v3_sky130_v2
-OPAMP project with caravel wrapper
+# Caravel Analog User
+![license](https://img.shields.io/github/license/MadhuriKadam9/avsdopamp_3v3_sky130_v2?color=red)
+
+# Two Stage CMOS OPAMP with Frequency Compensation
+CMOS OPAMP is Basic building block of analog and Mixed signal circuits. It is used in many applications such as ADC, DAC and Instrumentation Amplifier.
+It basically amplifies the difference between two input signals.
+# Instumentation Amplifier: An Application Of CMOS OPAMP
+<img width="661" alt="Instru-Amp" src="https://user-images.githubusercontent.com/88900482/130283601-f840c5fe-f285-4f46-92b2-f93b9e5e9480.PNG">
+
+# Performance parameters of Bandgap Reference IP
+<img width="515" alt="Perfor-para" src="https://user-images.githubusercontent.com/88900482/130284019-6360918c-f9c1-4a17-8416-c410cce3271c.PNG">
+
+# Block Diagram of CMOS OPAMP IP
+<img width="345" alt="OPAMP-Block Dig" src="https://user-images.githubusercontent.com/88900482/130284202-28dce16c-5f7b-45a7-916d-11d1ce77082a.PNG">
+
+# Downloading the files on your System
+The files from this repository can be downloaded and used by the following commands :-
+
+sudo apt install -y git
+
+git clone https://github.com/MadhuriKadam9/Cmosopamp.git
+
+
+# Pre-Layout Simulation of CMOS OPAMP IP
+## 1. Schematic of CMOS OPAMP IP designd in eSim
+Install the eSim tool using this https://esim.fossee.in/downloads
+Note: You can also refer to the eSim Spoken Tutorialwebsite https://spoken-tutorial.org/tutorial-search/?search_foss=eSim
+
+<img width="573" alt="Combined_ckt" src="https://user-images.githubusercontent.com/88900482/130285141-6a033032-0108-4130-aff0-3394034cd5aa.png">
+
+## 2. Ngspice Simulation Results
+Ngspice is an open source mixed-signal circuit simulator. To install Ngspice on Ubuntu, open terminal window and type :-
+
+sudo apt-get install -y ngspice
+
+After successful installation, to invoke Ngspice type the following command on the terminal window.
+
+ngspice "circuit file to be simulated"
+
+### A) Transient Response of Two stage OPAMP
+To get the transient response of two stage OPAMP run the following file in ngspice: Opamp_TRAN.cir.out
+
+<img width="921" alt="Vin-tran" src="https://user-images.githubusercontent.com/88900482/130285858-8b30650b-a886-4e35-972b-5ece61a7e057.PNG">
+
+
+<img width="945" alt="Vout-tran" src="https://user-images.githubusercontent.com/88900482/130286285-eb1cbb5c-641b-47d3-a2c8-aef8183c81c9.PNG">
+
+### B) AC Response of Two stage OPAMP
+To get the transient response of two stage OPAMP run the following file in ngspice: Opamp_AC.cir.out
+
+Magnitude Response Vout-dB i.e. ADM
+<img width="937" alt="vout-ac-magres" src="https://user-images.githubusercontent.com/88900482/130286370-f3c78ccf-c60a-47b1-aaed-abaa6ee4a8da.PNG">
+
+Phase Response Vout-Ph
+<img width="930" alt="vout-ac-phres" src="https://user-images.githubusercontent.com/88900482/130286446-a1fc6d44-0ce5-4ee9-9e3a-4a0a2d990779.PNG">
+
+Phase Margin Plot of Vout
+<img width="930" alt="vout-ac-pm (2)" src="https://user-images.githubusercontent.com/88900482/130286501-edc307f8-15bb-4a09-b437-c6735b6a2be5.PNG">
+
+# Layout with Magic Tool
+## MAGIC Tool installation:
+The Layout for the circuit was done using Magic Layout editor tool. To observe the layout, install magic using the following commands :-
+
+sudo wget "http://opencircuitdesign.com/magic/archive/magic-8.3.122.tgz"
+
+tar -xvzf magic-8.3.122.tgz
+
+cd magic-8.3.122
+
+sudo ./configure
+
+sudo make
+
+sudo make install
+
+
+## Resistor
+After successful installation, To open Resistor layout in magic type following in terminal window:-
+
+cd Cmosopamp/OPAMP_Layout_Files/
+
+magic -T ../libs/sky130A.tech res.mag
+
+
+<img width="258" alt="Resistor" src="https://user-images.githubusercontent.com/88900482/130286663-1837abf3-2aca-4d53-a730-280819ec12bf.PNG">
+
+## Capacitor
+To see capacitor layout give command magic -T ../libs/sky130A.tech mimcapt.mag
+
+<img width="277" alt="Mimcap" src="https://user-images.githubusercontent.com/88900482/130286698-14e366b5-dc1c-45ad-94a3-79a59edd8f5d.PNG">
+
+
+## Single stage OPAMP
+To see opamp1 layout give command magic -T ../libs/sky130A.tech opamp1.mag
+<img width="553" alt="OPAMP1" src="https://user-images.githubusercontent.com/88900482/130286722-b432a8a2-be15-4cbd-bd4b-abca911322af.PNG">
+
+## Dual Stage OPAMP
+To see opamp2 layout give command magic -T ../libs/sky130A.tech opamp2.mag
+<img width="730" alt="Opamp2" src="https://user-images.githubusercontent.com/88900482/130286739-103c6a5f-bd6a-4d54-ab49-cc80a09e2f53.PNG">
+
+
+# Post-Layout Simulation of CMOS OPAMP IP
+## Single Stage OPAMP
+### Transient Response
+Run the following file in ngspice: opamp1_tran.spice
+
+1) Vinp, Vinm Waveforms
+<img width="868" alt="Vin-tran" src="https://user-images.githubusercontent.com/88900482/130287209-24711fbb-40fe-4797-a4ff-fcc74efb5505.PNG">
+
+2) Vo waveform
+<img width="875" alt="Vo-trans" src="https://user-images.githubusercontent.com/88900482/130287239-f1b2c2e3-7a19-42c9-8544-f86af1b419c6.PNG">
+
+### AC Response
+Run the following file in ngspice: opamp1_ac.spice
+
+1) Magnitude Response i.e. VodB
+<img width="878" alt="VOdb-AC" src="https://user-images.githubusercontent.com/88900482/130287350-8175c75a-4065-4f4d-ab6b-f6c3e8ab263d.PNG">
+
+2) Phase Response i.e Vo-ph
+<img width="876" alt="VOph-AC" src="https://user-images.githubusercontent.com/88900482/130287374-d6f46cc4-0f6e-4399-a0eb-017c5a781fe3.PNG">
+
+3) All AC Response of OPAMP1
+<img width="878" alt="opamp1-AC-Resp" src="https://user-images.githubusercontent.com/88900482/130287970-b1949a3f-873d-4ea8-90af-07356268da8b.PNG">
+
+## Dual Stage OPAMP
+### Transient Response
+Run the following file in ngspice: opamp2_tran.spice
+
+1) Vinp, Vinm Waveforms
+<img width="868" alt="Vin-tran" src="https://user-images.githubusercontent.com/88900482/130287567-9cfc3728-4d51-4f84-a56c-f71e3167649c.PNG">
+
+2) Vout waveform
+<img width="878" alt="Vout-tran" src="https://user-images.githubusercontent.com/88900482/130287597-8f22aa3b-eda8-46aa-95bb-41b2ed678176.PNG">
+
+### AC Response
+Run the following file in ngspice: opamp2_ac.spice
+
+1) Magnitude Response i.e. VodB
+<img width="876" alt="opamp2_AC-mag_res" src="https://user-images.githubusercontent.com/88900482/130287719-117cb295-2d9b-4cad-82f7-2fb370f8bbc7.PNG">
+
+2) Phase Response Vout-ph
+<img width="875" alt="opamp2-AC-Ph-Res" src="https://user-images.githubusercontent.com/88900482/130287767-eff4a4db-afab-443c-a475-ad30fdbd437d.PNG">
+
+3) Phase Margin Plot Vout-PM
+<img width="877" alt="opamp2-AC-PM" src="https://user-images.githubusercontent.com/88900482/130287784-ea5c4ec1-8b6e-4697-9691-99effbd20cf7.PNG">
+
+4) All AC Response
+<img width="914" alt="Opamp2_AC_Res" src="https://user-images.githubusercontent.com/88900482/130287875-db3e9379-5af6-4ca3-85f8-f5bfe4da26e4.PNG">
+
+# Further Work
+From the postlayout transient response of Two stage opamp it can be obsereved that the negative peak of vout is flattened. This results in reduction of overall voltage swing at the output. So with proper design this problem can be solved.
+
+# Contributors
+1) Mrs. Madhuri H. Kadam, Assistant Professor, Shree L. R. Tiwari college of Engineering, Mira Rd (E) - madhurib.saksham@gmail.com
+2) Kunal Ghosh, Co-Founder of VLSI System Design (VSD) Corp. Pvt. Ltd. - kunalpghosh@gmail.com
+
+# Acknowledgements
+Kunal Ghosh, Co-Founder of VLSI System Design (VSD) Corp. Pvt. Ltd. - kunalpghosh@gmail.com
+
diff --git a/caravel/LICENSE b/caravel/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/caravel/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/caravel/Makefile b/caravel/Makefile
new file mode 100644
index 0000000..f5b7702
--- /dev/null
+++ b/caravel/Makefile
@@ -0,0 +1,675 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# cannot commit files larger than 100 MB to GitHub
+FILE_SIZE_LIMIT_MB = 100
+
+# Commands to be used to compress/uncompress files
+# they must operate **in place** (otherwise, modify the target to delete the
+# intermediate file/archive)
+COMPRESS ?= gzip -n --best
+UNCOMPRESS ?= gzip -d
+ARCHIVE_EXT ?= gz
+
+# The following variables are to build static pattern rules
+
+# Needed to rebuild archives that were previously split
+SPLIT_FILES := $(shell find . -type f -name "*.$(ARCHIVE_EXT).00.split")
+SPLIT_FILES_SOURCES := $(basename $(basename $(basename $(SPLIT_FILES))))
+
+# Needed to uncompress the existing archives
+ARCHIVES := $(shell find . -type f -name "*.$(ARCHIVE_EXT)")
+ARCHIVE_SOURCES := $(basename $(ARCHIVES))
+
+# Needed to compress and split files/archives that are too large
+LARGE_FILES := $(shell find ./gds -type f -name "*.gds")
+LARGE_FILES += $(shell find . -type f -size +$(FILE_SIZE_LIMIT_MB)M -not -path "./.git/*" -not -path "./gds/*" -not -path "./openlane/*")
+LARGE_FILES_GZ := $(addsuffix .$(ARCHIVE_EXT), $(LARGE_FILES))
+LARGE_FILES_GZ_SPLIT := $(addsuffix .$(ARCHIVE_EXT).00.split, $(LARGE_FILES))
+# consider splitting existing archives
+LARGE_FILES_GZ_SPLIT += $(addsuffix .00.split, $(ARCHIVES))
+
+# Caravel Root (Default: pwd)
+# Need to be overwritten if running the makefile from UPRJ_ROOT,
+# If caravel is sub-moduled in the user project, run export CARAVEL_ROOT=$(pwd)/caravel
+CARAVEL_ROOT ?= $(shell pwd)
+
+# User project root
+UPRJ_ROOT ?= $(shell pwd)
+
+# Build tasks such as make ship, make generate_fill, make set_user_id, make final run in the foreground (1) or background (0)
+FOREGROUND ?= 1
+
+# PDK setup configs
+THREADS ?= $(shell nproc)
+STD_CELL_LIBRARY ?= sky130_fd_sc_hd
+SPECIAL_VOLTAGE_LIBRARY ?= sky130_fd_sc_hvl
+IO_LIBRARY ?= sky130_fd_io
+PRIMITIVES_LIBRARY ?= sky130_fd_pr
+SKYWATER_COMMIT ?= c094b6e83a4f9298e47f696ec5a7fd53535ec5eb
+OPEN_PDKS_COMMIT ?= 6c05bc48dc88784f9d98b89d6791cdfd91526676
+INSTALL_SRAM ?= disabled
+
+.DEFAULT_GOAL := ship
+# We need portable GDS_FILE pointers...
+.PHONY: ship
+ship: check-env uncompress uncompress-caravel
+ifeq ($(FOREGROUND),1)
+ @echo "Running make ship in the foreground..."
+ $(MAKE) -f $(CARAVEL_ROOT)/Makefile __ship
+ @echo "Make ship completed." 2>&1 | tee -a ./signoff/build/make_ship.out
+else
+ @echo "Running make ship in the background..."
+ nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __ship >/dev/null 2>&1 &
+ tail -f signoff/build/make_ship.out
+ @echo "Make ship completed." 2>&1 | tee -a ./signoff/build/make_ship.out
+endif
+
+__ship:
+ @echo "###############################################"
+ @echo "Generating Caravel GDS (sources are in the 'gds' directory)"
+ @sleep 1
+#### Runs from the CARAVEL_ROOT mag directory
+ @echo "\
+ random seed `$(CARAVEL_ROOT)/scripts/set_user_id.py -report`; \
+ drc off; \
+ crashbackups stop; \
+ gds readonly true; \
+ gds rescale false; \
+ cif *hier write disable; \
+ cif *array write disable; \
+ gds read $(UPRJ_ROOT)/gds/user_project_wrapper.gds; \
+ load caravel -dereference;\
+ cellname list filepath user_id_programming $(UPRJ_ROOT)/mag;\
+ cellname list filepath user_id_textblock $(UPRJ_ROOT)/mag;\
+ flush user_id_programming;\
+ flush user_id_textblock;\
+ select top cell;\
+ gds write $(UPRJ_ROOT)/gds/caravel.gds; \
+ exit;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl
+### Runs from CARAVEL_ROOT
+ @mkdir -p ./signoff/build
+ @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/sky130A magic -noc -dnull $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out
+### @rm $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl
+
+truck: check-env uncompress uncompress-caravel
+ifeq ($(FOREGROUND),1)
+ @echo "Running make truck in the foreground..."
+ mkdir -p ./signoff
+ mkdir -p ./build
+ $(MAKE) -f $(CARAVEL_ROOT)/Makefile __truck
+ @echo "Make truck completed." 2>&1 | tee -a ./signoff/build/make_truck.out
+else
+ @echo "Running make truck in the background..."
+ mkdir -p ./signoff
+ mkdir -p ./build
+ nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __truck >/dev/null 2>&1 &
+ tail -f signoff/build/make_truck.out
+ @echo "Make truck completed." 2>&1 | tee -a ./signoff/build/make_truck.out
+endif
+
+__truck:
+ @echo "###############################################"
+ @echo "Generating Caravan GDS (sources are in the 'gds' directory)"
+ @sleep 1
+#### Runs from the CARAVEL_ROOT mag directory
+ @echo "\
+ random seed `$(CARAVEL_ROOT)/scripts/set_user_id.py -report`; \
+ drc off; \
+ crashbackups stop; \
+ gds readonly true; \
+ gds rescale false; \
+ cif *hier write disable; \
+ cif *array write disable; \
+ gds read $(UPRJ_ROOT)/gds/user_analog_project_wrapper.gds; \
+ load caravan -dereference;\
+ cellname list filepath user_id_programming $(UPRJ_ROOT)/mag;\
+ cellname list filepath user_id_textblock $(UPRJ_ROOT)/mag;\
+ flush user_id_programming;\
+ flush user_id_textblock;\
+ select top cell;\
+ gds write $(UPRJ_ROOT)/gds/caravan.gds; \
+ exit;" > $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl
+### Runs from CARAVEL_ROOT
+ @mkdir -p ./signoff/build
+ @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/sky130A magic -noc -dnull $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_truck.out
+### @rm $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl
+
+.PHONY: clean
+clean:
+ cd $(CARAVEL_ROOT)/verilog/dv/caravel/mgmt_soc/ && \
+ $(MAKE) -j$(THREADS) clean
+ cd $(CARAVEL_ROOT)/verilog/dv/wb_utests/ && \
+ $(MAKE) -j$(THREADS) clean
+
+
+.PHONY: verify
+verify:
+ cd $(CARAVEL_ROOT)/verilog/dv/caravel/mgmt_soc/ && \
+ $(MAKE) -j$(THREADS) all
+ cd $(CARAVEL_ROOT)/verilog/dv/wb_utests/ && \
+ $(MAKE) -j$(THREADS) all
+
+
+
+#####
+$(LARGE_FILES_GZ): %.$(ARCHIVE_EXT): %
+ @if ! [ $(suffix $<) = ".$(ARCHIVE_EXT)" ]; then\
+ $(COMPRESS) $< > /dev/null &&\
+ echo "$< -> $@";\
+ fi
+
+$(LARGE_FILES_GZ_SPLIT): %.$(ARCHIVE_EXT).00.split: %.$(ARCHIVE_EXT)
+ @if [ -n "$$(find "$<" -prune -size +$(FILE_SIZE_LIMIT_MB)M)" ]; then\
+ split $< -b $(FILE_SIZE_LIMIT_MB)M $<. -d &&\
+ rm $< &&\
+ for file in $$(ls $<.*); do mv "$$file" "$$file.split"; done &&\
+ echo -n "$< -> $$(ls $<.*.split)" | tr '\n' ' ' && echo "";\
+ fi
+
+# This target compresses all files larger than $(FILE_SIZE_LIMIT_MB) MB
+.PHONY: compress
+compress: $(LARGE_FILES_GZ) $(LARGE_FILES_GZ_SPLIT)
+ @echo "Files larger than $(FILE_SIZE_LIMIT_MB) MBytes are compressed!"
+
+
+
+#####
+$(ARCHIVE_SOURCES): %: %.$(ARCHIVE_EXT)
+ @$(UNCOMPRESS) $<
+ @echo "$< -> $@"
+
+.SECONDEXPANSION:
+$(SPLIT_FILES_SOURCES): %: $$(sort $$(wildcard %.$(ARCHIVE_EXT).*.split))
+ @cat $? > $@.$(ARCHIVE_EXT)
+ @rm $?
+ @echo "$? -> $@.$(ARCHIVE_EXT)"
+ @$(UNCOMPRESS) $@.$(ARCHIVE_EXT)
+ @echo "$@.$(ARCHIVE_EXT) -> $@"
+
+
+.PHONY: uncompress
+uncompress: $(SPLIT_FILES_SOURCES) $(ARCHIVE_SOURCES)
+ @echo "All files are uncompressed!"
+
+# Needed for targets that are run from UPRJ_ROOT for which caravel isn't submoduled.
+.PHONY: uncompress-caravel
+uncompress-caravel:
+ cd $(CARAVEL_ROOT) && \
+ $(MAKE) uncompress
+
+# Digital Wrapper
+# verify that the wrapper was respected
+xor-wrapper: uncompress uncompress-caravel
+### first erase the user's user_project_wrapper.gds
+ sh $(CARAVEL_ROOT)/utils/erase_box.sh gds/user_project_wrapper.gds 0 0 2920 3520
+### do the same for the empty wrapper
+ sh $(CARAVEL_ROOT)/utils/erase_box.sh $(CARAVEL_ROOT)/gds/user_project_wrapper_empty.gds 0 0 2920 3520
+ mkdir -p signoff/user_project_wrapper_xor
+### XOR the two resulting layouts
+ sh $(CARAVEL_ROOT)/utils/xor.sh \
+ $(CARAVEL_ROOT)/gds/user_project_wrapper_empty_erased.gds gds/user_project_wrapper_erased.gds \
+ user_project_wrapper user_project_wrapper.xor.xml
+ sh $(CARAVEL_ROOT)/utils/xor.sh \
+ $(CARAVEL_ROOT)/gds/user_project_wrapper_empty_erased.gds gds/user_project_wrapper_erased.gds \
+ user_project_wrapper gds/user_project_wrapper.xor.gds > signoff/user_project_wrapper_xor/xor.log
+ rm $(CARAVEL_ROOT)/gds/user_project_wrapper_empty_erased.gds gds/user_project_wrapper_erased.gds
+ mv gds/user_project_wrapper.xor.gds gds/user_project_wrapper.xor.xml signoff/user_project_wrapper_xor
+ python $(CARAVEL_ROOT)/utils/parse_klayout_xor_log.py \
+ -l signoff/user_project_wrapper_xor/xor.log \
+ -o signoff/user_project_wrapper_xor/total.txt
+### screenshot the result for convenience
+ sh $(CARAVEL_ROOT)/utils/scrotLayout.sh \
+ $(PDK_ROOT)/sky130A/libs.tech/klayout/sky130A.lyt \
+ signoff/user_project_wrapper_xor/user_project_wrapper.xor.gds
+ @cat signoff/user_project_wrapper_xor/total.txt
+
+# Analog Wrapper
+# verify that the wrapper was respected
+xor-analog-wrapper: uncompress uncompress-caravel
+### first erase the user's user_project_wrapper.gds
+ sh $(CARAVEL_ROOT)/utils/erase_box.sh gds/user_analog_project_wrapper.gds 0 0 2920 3520 -8 -8
+### do the same for the empty wrapper
+ sh $(CARAVEL_ROOT)/utils/erase_box.sh $(CARAVEL_ROOT)/gds/user_analog_project_wrapper_empty.gds 0 0 2920 3520 -8 -8
+ mkdir -p signoff/user_analog_project_wrapper_xor
+### XOR the two resulting layouts
+ sh $(CARAVEL_ROOT)/utils/xor.sh \
+ $(CARAVEL_ROOT)/gds/user_analog_project_wrapper_empty_erased.gds gds/user_analog_project_wrapper_erased.gds \
+ user_analog_project_wrapper user_analog_project_wrapper.xor.xml
+ sh $(CARAVEL_ROOT)/utils/xor.sh \
+ $(CARAVEL_ROOT)/gds/user_analog_project_wrapper_empty_erased.gds gds/user_analog_project_wrapper_erased.gds \
+ user_analog_project_wrapper gds/user_analog_project_wrapper.xor.gds > signoff/user_analog_project_wrapper_xor/xor.log
+ rm $(CARAVEL_ROOT)/gds/user_analog_project_wrapper_empty_erased.gds gds/user_analog_project_wrapper_erased.gds
+ mv gds/user_analog_project_wrapper.xor.gds gds/user_analog_project_wrapper.xor.xml signoff/user_analog_project_wrapper_xor
+ python $(CARAVEL_ROOT)/utils/parse_klayout_xor_log.py \
+ -l signoff/user_analog_project_wrapper_xor/xor.log \
+ -o signoff/user_analog_project_wrapper_xor/total.txt
+### screenshot the result for convenience
+ sh $(CARAVEL_ROOT)/utils/scrotLayout.sh \
+ $(PDK_ROOT)/sky130A/libs.tech/klayout/sky130A.lyt \
+ signoff/user_analog_project_wrapper_xor/user_analog_project_wrapper.xor.gds
+ @cat signoff/user_analog_project_wrapper_xor/total.txt
+
+# LVS
+BLOCKS = $(shell cd openlane && find * -maxdepth 0 -type d)
+LVS_BLOCKS = $(foreach block, $(BLOCKS), lvs-$(block))
+$(LVS_BLOCKS): lvs-% : ./mag/%.mag ./verilog/gl/%.v
+ echo "Extracting $*"
+ mkdir -p ./mag/tmp
+ echo "addpath $(CARAVEL_ROOT)/mag/hexdigits;\
+ addpath $(CARAVEL_ROOT)/subcells/simple_por/mag;\
+ addpath \$$PDKPATH/libs.ref/sky130_ml_xx_hd/mag;\
+ load $* -dereference;\
+ select top cell;\
+ foreach cell [cellname list children] {\
+ load \$$cell -dereference;\
+ property LEFview TRUE;\
+ };\
+ load $* -dereference;\
+ select top cell;\
+ extract no all;\
+ extract do local;\
+ extract unique;\
+ extract;\
+ ext2spice lvs;\
+ ext2spice $*.ext;\
+ feedback save extract_$*.log;\
+ exit;" > ./mag/extract_$*.tcl
+ cd mag && \
+ export MAGTYPE=maglef; \
+ magic -rcfile ${PDK_ROOT}/sky130A/libs.tech/magic/sky130A.magicrc -noc -dnull extract_$*.tcl < /dev/null
+ mv ./mag/$*.spice ./spi/lvs
+ rm ./mag/*.ext
+ mv -f ./mag/extract_$*.tcl ./mag/tmp
+ mv -f ./mag/extract_$*.log ./mag/tmp
+ ####
+ mkdir -p ./spi/lvs/tmp
+ sh $(CARAVEL_ROOT)/spi/lvs/run_lvs.sh ./spi/lvs/$*.spice ./verilog/gl/$*.v $*
+ @echo ""
+ python3 $(CARAVEL_ROOT)/scripts/count_lvs.py -f ./verilog/gl/$*.v_comp.json | tee ./spi/lvs/tmp/$*.lvs.summary.log
+ mv -f ./verilog/gl/*.out ./spi/lvs/tmp 2> /dev/null || true
+ mv -f ./verilog/gl/*.json ./spi/lvs/tmp 2> /dev/null || true
+ mv -f ./verilog/gl/*.log ./spi/lvs/tmp 2> /dev/null || true
+ @echo ""
+ @echo "LVS: ./spi/lvs/$*.spice vs. ./verilog/gl/$*.v"
+ @echo "Comparison result: ./spi/lvs/tmp/$*.v_comp.out"
+ @awk '/^NET mismatches/,0' ./spi/lvs/tmp/$*.v_comp.out
+
+
+LVS_GDS_BLOCKS = $(foreach block, $(BLOCKS), lvs-gds-$(block))
+$(LVS_GDS_BLOCKS): lvs-gds-% : ./gds/%.gds ./verilog/gl/%.v
+ echo "Extracting $*"
+ mkdir -p ./gds/tmp
+ echo "gds read ./$*.gds;\
+ load $* -dereference;\
+ select top cell;\
+ extract no all;\
+ extract do local;\
+ extract unique;\
+ extract;\
+ ext2spice lvs;\
+ ext2spice $*.ext;\
+ feedback save extract_$*.log;\
+ exit;" > ./gds/extract_$*.tcl
+ cd gds && \
+ magic -rcfile ${PDK_ROOT}/sky130A/libs.tech/magic/sky130A.magicrc -noc -dnull extract_$*.tcl < /dev/null
+ mv ./gds/$*.spice ./spi/lvs
+ rm ./gds/*.ext
+ mv -f ./gds/extract_$*.tcl ./gds/tmp
+ mv -f ./gds/extract_$*.log ./gds/tmp
+ ####
+ mkdir -p ./spi/lvs/tmp
+ MAGIC_EXT_USE_GDS=1 sh $(CARAVEL_ROOT)/spi/lvs/run_lvs.sh ./spi/lvs/$*.spice ./verilog/gl/$*.v $*
+ @echo ""
+ python3 $(CARAVEL_ROOT)/scripts/count_lvs.py -f ./verilog/gl/$*.v_comp.json | tee ./spi/lvs/tmp/$*.lvs.summary.log
+ mv -f ./verilog/gl/*.out ./spi/lvs/tmp 2> /dev/null || true
+ mv -f ./verilog/gl/*.json ./spi/lvs/tmp 2> /dev/null || true
+ mv -f ./verilog/gl/*.log ./spi/lvs/tmp 2> /dev/null || true
+ @echo ""
+ @echo "LVS: ./spi/lvs/$*.spice vs. ./verilog/gl/$*.v"
+ @echo "Comparison result: ./spi/lvs/tmp/$*.v_comp.out"
+ @awk '/^NET mismatches/,0' ./spi/lvs/tmp/$*.v_comp.out
+
+
+# connect-by-label is enabled here!
+LVS_MAGLEF_BLOCKS = $(foreach block, $(BLOCKS), lvs-maglef-$(block))
+$(LVS_MAGLEF_BLOCKS): lvs-maglef-% : ./mag/%.mag ./verilog/gl/%.v
+ echo "Extracting $*"
+ mkdir -p ./maglef/tmp
+ echo "load $* -dereference;\
+ select top cell;\
+ foreach cell [cellname list children] {\
+ load \$$cell -dereference;\
+ property LEFview TRUE;\
+ };\
+ load $* -dereference;\
+ select top cell;\
+ extract no all;\
+ extract do local;\
+ extract;\
+ ext2spice lvs;\
+ ext2spice $*.ext;\
+ feedback save extract_$*.log;\
+ exit;" > ./mag/extract_$*.tcl
+ cd mag && export MAGTYPE=maglef; magic -noc -dnull extract_$*.tcl < /dev/null
+ mv ./mag/$*.spice ./spi/lvs
+ rm ./maglef/*.ext
+ mv -f ./mag/extract_$*.tcl ./maglef/tmp
+ mv -f ./mag/extract_$*.log ./maglef/tmp
+ ####
+ mkdir -p ./spi/lvs/tmp
+ sh $(CARAVEL_ROOT)/spi/lvs/run_lvs.sh ./spi/lvs/$*.spice ./verilog/gl/$*.v $*
+ @echo ""
+ python3 $(CARAVEL_ROOT)/scripts/count_lvs.py -f ./verilog/gl/$*.v_comp.json | tee ./spi/lvs/tmp/$*.maglef.lvs.summary.log
+ mv -f ./verilog/gl/*.out ./spi/lvs/tmp 2> /dev/null || true
+ mv -f ./verilog/gl/*.json ./spi/lvs/tmp 2> /dev/null || true
+ mv -f ./verilog/gl/*.log ./spi/lvs/tmp 2> /dev/null || true
+ @echo ""
+ @echo "LVS: ./spi/lvs/$*.spice vs. ./verilog/gl/$*.v"
+ @echo "Comparison result: ./spi/lvs/tmp/$*.v_comp.out"
+ @awk '/^NET mismatches/,0' ./spi/lvs/tmp/$*.v_comp.out
+
+# DRC
+BLOCKS = $(shell cd openlane && find * -maxdepth 0 -type d)
+DRC_BLOCKS = $(foreach block, $(BLOCKS), drc-$(block))
+$(DRC_BLOCKS): drc-% : ./gds/%.gds
+ echo "Running DRC on $*"
+ mkdir -p ./gds/tmp
+ cd gds && export DESIGN_IN_DRC=$* && export MAGTYPE=mag; magic -rcfile ${PDK_ROOT}/sky130A/libs.tech/magic/sky130A.magicrc -noc -dnull $(CARAVEL_ROOT)/gds/drc_on_gds.tcl < /dev/null
+ @echo "DRC result: ./gds/tmp/$*.drc"
+
+# Antenna
+BLOCKS = $(shell cd openlane && find * -maxdepth 0 -type d)
+ANTENNA_BLOCKS = $(foreach block, $(BLOCKS), antenna-$(block))
+$(ANTENNA_BLOCKS): antenna-% : ./gds/%.gds
+ echo "Running Antenna Checks on $*"
+ mkdir -p ./gds/tmp
+ cd gds && export DESIGN_IN_ANTENNA=$* && export MAGTYPE=mag; magic -rcfile ${PDK_ROOT}/sky130A/libs.tech/magic/sky130A.magicrc -noc -dnull $(CARAVEL_ROOT)/gds/antenna_on_gds.tcl < /dev/null 2>&1 | tee ./tmp/$*.antenna
+ mv -f ./gds/*.ext ./gds/tmp/
+ @echo "Antenna result: ./gds/tmp/$*.antenna"
+
+# MAG2GDS
+BLOCKS = $(shell cd openlane && find * -maxdepth 0 -type d)
+MAG_BLOCKS = $(foreach block, $(BLOCKS), mag2gds-$(block))
+$(MAG_BLOCKS): mag2gds-% : ./mag/%.mag uncompress
+ echo "Converting mag file $* to GDS..."
+ echo "addpath $(CARAVEL_ROOT)/mag/hexdigits;\
+ addpath ${PDKPATH}/libs.ref/sky130_ml_xx_hd/mag;\
+ addpath ${CARAVEL_ROOT}/subcells/simple_por/mag;\
+ drc off;\
+ gds rescale false;\
+ load $* -dereference;\
+ select top cell;\
+ expand;\
+ cif *hier write disable;\
+ gds write $*.gds;\
+ exit;" > ./mag/mag2gds_$*.tcl
+ cd ./mag && magic -rcfile ${PDK_ROOT}/sky130A/libs.tech/magic/sky130A.magicrc -noc -dnull mag2gds_$*.tcl < /dev/null
+ rm ./mag/mag2gds_$*.tcl
+ mv -f ./mag/$*.gds ./gds/
+
+.PHONY: help
+help:
+ @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
+
+# RCX Extraction
+BLOCKS = $(shell cd openlane && find * -maxdepth 0 -type d)
+RCX_BLOCKS = $(foreach block, $(BLOCKS), rcx-$(block))
+OPENLANE_IMAGE_NAME=efabless/openlane:2021.09.16_03.28.21
+$(RCX_BLOCKS): rcx-% : ./def/%.def
+ echo "Running RC Extraction on $*"
+ mkdir -p ./def/tmp
+ # merge techlef and standard cell lef files
+ python3 $(OPENLANE_ROOT)/scripts/mergeLef.py -i $(PDK_ROOT)/sky130A/libs.ref/$(STD_CELL_LIBRARY)/techlef/$(STD_CELL_LIBRARY).tlef $(PDK_ROOT)/sky130A/libs.ref/$(STD_CELL_LIBRARY)/lef/*.lef -o ./def/tmp/merged.lef
+ echo "\
+ read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(STD_CELL_LIBRARY)/lib/$(STD_CELL_LIBRARY)__tt_025C_1v80.lib;\
+ read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(SPECIAL_VOLTAGE_LIBRARY)/lib/$(SPECIAL_VOLTAGE_LIBRARY)__tt_025C_3v30.lib;\
+ set std_cell_lef ./def/tmp/merged.lef;\
+ if {[catch {read_lef \$$std_cell_lef} errmsg]} {\
+ puts stderr \$$errmsg;\
+ exit 1;\
+ };\
+ foreach lef_file [glob ./lef/*.lef] {\
+ if {[catch {read_lef \$$lef_file} errmsg]} {\
+ puts stderr \$$errmsg;\
+ exit 1;\
+ }\
+ };\
+ if {[catch {read_def -order_wires ./def/$*.def} errmsg]} {\
+ puts stderr \$$errmsg;\
+ exit 1;\
+ };\
+ read_sdc ./openlane/$*/base.sdc;\
+ set_propagated_clock [all_clocks];\
+ set rc_values \"mcon 9.249146E-3,via 4.5E-3,via2 3.368786E-3,via3 0.376635E-3,via4 0.00580E-3\";\
+ set vias_rc [split \$$rc_values ","];\
+ foreach via_rc \$$vias_rc {\
+ set layer_name [lindex \$$via_rc 0];\
+ set resistance [lindex \$$via_rc 1];\
+ set_layer_rc -via \$$layer_name -resistance \$$resistance;\
+ };\
+ set_wire_rc -signal -layer met2;\
+ set_wire_rc -clock -layer met5;\
+ define_process_corner -ext_model_index 0 X;\
+ extract_parasitics -ext_model_file ${PDK_ROOT}/sky130A/libs.tech/openlane/rcx_rules.info -corner_cnt 1 -max_res 50 -coupling_threshold 0.1 -cc_model 10 -context_depth 5;\
+ write_spef ./def/tmp/$*.spef" > ./def/tmp/or_rcx_$*.tcl
+## Generate Spef file
+ docker run -it -v $(OPENLANE_ROOT):/openLANE_flow -v $(PDK_ROOT):$(PDK_ROOT) -v $(PWD):/caravel -e PDK_ROOT=$(PDK_ROOT) -u $(shell id -u $(USER)):$(shell id -g $(USER)) $(OPENLANE_IMAGE_NAME) \
+ sh -c " cd /caravel; openroad -exit ./def/tmp/or_rcx_$*.tcl |& tee ./def/tmp/or_rcx_$*.log"
+## Run OpenSTA
+ echo "\
+ set std_cell_lef ./def/tmp/merged.lef;\
+ if {[catch {read_lef \$$std_cell_lef} errmsg]} {\
+ puts stderr \$$errmsg;\
+ exit 1;\
+ };\
+ foreach lef_file [glob ./lef/*.lef] {\
+ if {[catch {read_lef \$$lef_file} errmsg]} {\
+ puts stderr \$$errmsg;\
+ exit 1;\
+ }\
+ };\
+ set_cmd_units -time ns -capacitance pF -current mA -voltage V -resistance kOhm -distance um;\
+ read_liberty -min ${PDK_ROOT}/sky130A/libs.ref/${STD_CELL_LIBRARY}/lib/${STD_CELL_LIBRARY}__ff_n40C_1v95.lib;\
+ read_liberty -max ${PDK_ROOT}/sky130A/libs.ref/${STD_CELL_LIBRARY}/lib/${STD_CELL_LIBRARY}__ss_100C_1v60.lib;\
+ read_verilog ./verilog/gl/$*.v;\
+ link_design $*;\
+ read_spef ./def/tmp/$*.spef;\
+ read_sdc -echo ./openlane/$*/base.sdc;\
+ report_checks -fields {capacitance slew input_pins nets fanout} -path_delay min_max;\
+ " > ./def/tmp/or_sta_$*.tcl
+ docker run -it -v $(OPENLANE_ROOT):/openLANE_flow -v $(PDK_ROOT):$(PDK_ROOT) -v $(PWD):/caravel -e PDK_ROOT=$(PDK_ROOT) -u $(shell id -u $(USER)):$(shell id -g $(USER)) $(OPENLANE_IMAGE_NAME) \
+ sh -c "cd /caravel; openroad -exit ./def/tmp/or_sta_$*.tcl |& tee ./def/tmp/or_sta_$*.log"
+
+###########################################################################
+.PHONY: generate_fill
+generate_fill: check-env check-uid check-project uncompress
+ifeq ($(FOREGROUND),1)
+ @echo "Running generate_fill in the foreground..."
+ $(MAKE) -f $(CARAVEL_ROOT)/Makefile __generate_fill
+ @echo "Generate fill completed." 2>&1 | tee -a ./signoff/build/generate_fill.out
+else
+ @echo "Running generate_fill in the background..."
+ @nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __generate_fill >/dev/null 2>&1 &
+ tail -f signoff/build/generate_fill.out
+ @echo "Generate fill completed." | tee -a signoff/build/generate_fill.out
+endif
+
+__generate_fill:
+ @mkdir -p ./signoff/build
+ @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag
+ python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out
+ #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out
+
+
+.PHONY: final
+final: check-env check-uid check-project uncompress uncompress-caravel
+ifeq ($(FOREGROUND),1)
+ $(MAKE) -f $(CARAVEL_ROOT)/Makefile __final
+ @echo "Final build completed." 2>&1 | tee -a ./signoff/build/final_build.out
+else
+ $(MAKE) -f $(CARAVEL_ROOT)/Makefile __final >/dev/null 2>&1 &
+ tail -f signoff/build/final_build.out
+ @echo "Final build completed." 2>&1 | tee -a ./signoff/build/final_build.out
+endif
+
+__final:
+ python3 $(CARAVEL_ROOT)/scripts/compositor.py $(USER_ID) $(PROJECT) $(shell pwd) $(CARAVEL_ROOT)/mag $(shell pwd)/gds -keep
+ #mv $(CARAVEL_ROOT)/mag/caravel_$(USER_ID).mag ./mag/
+ @rm -rf ./mag/tmp
+
+.PHONY: set_user_id
+set_user_id: check-env check-uid uncompress uncompress-caravel
+ifeq ($(FOREGROUND),1)
+ $(MAKE) -f $(CARAVEL_ROOT)/Makefile __set_user_id
+ @echo "Set user ID completed." 2>&1 | tee -a ./signoff/build/set_user_id.out
+else
+ $(MAKE) -f $(CARAVEL_ROOT)/Makefile __set_user_id >/dev/null 2>&1 &
+ tail -f signoff/build/set_user_id.out
+ @echo "Set user ID completed." 2>&1 | tee -a ./signoff/build/set_user_id.out
+endif
+
+__set_user_id:
+ mkdir -p ./signoff/build
+ # Update info.yaml
+ # sed -r "s/^(\s*project_id\s*:\s*).*/\1${USER_ID}/" -i info.yaml
+ cp $(CARAVEL_ROOT)/gds/user_id_programming.gds ./gds/user_id_programming.gds
+ cp $(CARAVEL_ROOT)/mag/user_id_programming.mag ./mag/user_id_programming.mag
+ cp $(CARAVEL_ROOT)/mag/user_id_textblock.mag ./mag/user_id_textblock.mag
+ cp $(CARAVEL_ROOT)/verilog/rtl/caravel.v ./verilog/rtl/caravel.v
+ python3 $(CARAVEL_ROOT)/scripts/set_user_id.py $(USER_ID) $(shell pwd) 2>&1 | tee ./signoff/build/set_user_id.out
+
+.PHONY: update_caravel
+update_caravel:
+ cd caravel/ && \
+ git checkout master && \
+ git pull
+
+###########################################################################
+.PHONY: pdk
+pdk: skywater-pdk skywater-library skywater-timing open_pdks build-pdk gen-sources
+
+$(PDK_ROOT)/skywater-pdk:
+ git clone https://github.com/google/skywater-pdk.git $(PDK_ROOT)/skywater-pdk
+
+.PHONY: skywater-pdk
+skywater-pdk: check-env $(PDK_ROOT)/skywater-pdk
+ cd $(PDK_ROOT)/skywater-pdk && \
+ git checkout main && git pull && \
+ git checkout -qf $(SKYWATER_COMMIT)
+
+.PHONY: skywater-library
+skywater-library: check-env $(PDK_ROOT)/skywater-pdk
+ cd $(PDK_ROOT)/skywater-pdk && \
+ git submodule update --init libraries/$(STD_CELL_LIBRARY)/latest && \
+ git submodule update --init libraries/$(IO_LIBRARY)/latest && \
+ git submodule update --init libraries/$(SPECIAL_VOLTAGE_LIBRARY)/latest && \
+ git submodule update --init libraries/$(PRIMITIVES_LIBRARY)/latest
+
+gen-sources: $(PDK_ROOT)/sky130A
+ touch $(PDK_ROOT)/sky130A/SOURCES
+ echo -ne "skywater-pdk " >> $(PDK_ROOT)/sky130A/SOURCES
+ cd $(PDK_ROOT)/skywater-pdk && git rev-parse HEAD >> $(PDK_ROOT)/sky130A/SOURCES
+ echo -ne "open_pdks " >> $(PDK_ROOT)/sky130A/SOURCES
+ cd $(PDK_ROOT)/open_pdks && git rev-parse HEAD >> $(PDK_ROOT)/sky130A/SOURCES
+
+skywater-timing: check-env $(PDK_ROOT)/skywater-pdk
+ cd $(PDK_ROOT)/skywater-pdk && \
+ $(MAKE) timing
+### OPEN_PDKS
+$(PDK_ROOT)/open_pdks:
+ git clone git://opencircuitdesign.com/open_pdks $(PDK_ROOT)/open_pdks
+
+.PHONY: open_pdks
+open_pdks: check-env $(PDK_ROOT)/open_pdks
+ cd $(PDK_ROOT)/open_pdks && \
+ git checkout master && git pull && \
+ git checkout -qf $(OPEN_PDKS_COMMIT)
+
+.PHONY: build-pdk
+build-pdk: check-env $(PDK_ROOT)/open_pdks $(PDK_ROOT)/skywater-pdk
+ [ -d $(PDK_ROOT)/sky130A ] && \
+ (echo "Warning: A sky130A build already exists under $(PDK_ROOT). It will be deleted first!" && \
+ sleep 5 && \
+ rm -rf $(PDK_ROOT)/sky130A) || \
+ true
+ cd $(PDK_ROOT)/open_pdks && \
+ ./configure --enable-sky130-pdk=$(PDK_ROOT)/skywater-pdk/libraries --with-sky130-local-path=$(PDK_ROOT) --enable-sram-sky130=$(INSTALL_SRAM) && \
+ cd sky130 && \
+ $(MAKE) veryclean && \
+ $(MAKE) && \
+ make SHARED_PDKS_PATH=$(PDK_ROOT) install && \
+ $(MAKE) clean
+
+.RECIPE: manifest
+manifest: mag/ maglef/ verilog/rtl/ Makefile
+ touch manifest && \
+ find verilog/rtl/* -type f ! -name "caravel_netlists.v" ! -name "user_*.v" ! -name "README" ! -name "defines.v" -exec shasum {} \; > manifest && \
+ shasum scripts/set_user_id.py scripts/generate_fill.py scripts/compositor.py >> manifest
+# shasum lef/user_project_wrapper_empty.lef >> manifest
+# find maglef/*.mag -type f ! -name "user_project_wrapper.mag" -exec shasum {} \; >> manifest && \
+# shasum mag/caravel.mag mag/.magicrc >> manifest
+
+.RECIPE: master_manifest
+master_manifest:
+ find verilog/rtl/* -type f -exec shasum {} \; > master_manifest && \
+ find verilog/gl/* -type f -exec shasum {} \; >> master_manifest && \
+ shasum scripts/set_user_id.py scripts/generate_fill.py scripts/compositor.py >> master_manifest && \
+ find lef/*.lef -type f -exec shasum {} \; >> master_manifest && \
+ find def/*.def -type f -exec shasum {} \; >> master_manifest && \
+ find mag/*.mag -type f -exec shasum {} \; >> master_manifest && \
+ find maglef/*.mag -type f -exec shasum {} \; >> master_manifest && \
+ find spi/lvs/*.spice -type f -exec shasum {} \; >> master_manifest && \
+ find gds/*.gds -type f -exec shasum {} \; >> master_manifest
+
+check-env:
+ifndef PDK_ROOT
+ $(error PDK_ROOT is undefined, please export it before running make)
+endif
+
+check-uid:
+ifndef USER_ID
+ $(error USER_ID is undefined, please export it before running make set_user_id)
+else
+ @echo USER_ID is set to $(USER_ID)
+endif
+
+check-project:
+ifndef PROJECT
+ $(error PROJECT is undefined, please export it before running make generate_fill or make final)
+else
+ @echo PROJECT is set to $(PROJECT)
+endif
+
+# Make README.rst
+README.rst: README.src.rst docs/source/getting-started.rst docs/source/tool-versioning.rst openlane/README.src.rst docs/source/caravel-with-openlane.rst Makefile
+ pip -q install rst_include && \
+ rm -f README.rst && \
+ rst_include include README.src.rst - | \
+ sed \
+ -e's@\.\/\_static@\/docs\/source\/\_static@g' \
+ -e's@:doc:`tool-versioning`@`tool-versioning.rst <./docs/source/tool-versioning.rst>`__@g' \
+ -e's@.. note::@**NOTE:**@g' \
+ -e's@.. warning::@**WARNING:**@g' \
+ > README.rst && \
+ rst_include include openlane/README.src.rst - | \
+ sed \
+ -e's@https://github.com/efabless/caravel/blob/master/verilog@../verilog@g' \
+ -e's@:ref:`getting-started`@`README.rst <../README.rst>`__@g' \
+ -e's@https://github.com/efabless/caravel/blob/master/openlane/@./@g' \
+ -e's@.. note::@**NOTE:**@g' \
+ -e's@.. warning::@**WARNING:**@g' \
+ > openlane/README.rst
diff --git a/caravel/gds/antenna_on_gds.tcl b/caravel/gds/antenna_on_gds.tcl
new file mode 100644
index 0000000..5f379c6
--- /dev/null
+++ b/caravel/gds/antenna_on_gds.tcl
@@ -0,0 +1,28 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+gds read $::env(DESIGN_IN_ANTENNA).gds
+select top cell
+extract do local
+extract no capacitance
+extract no coupling
+extract no resistance
+extract no adjust
+extract unique
+# extract warn all
+extract
+feedback save ./tmp/$::env(DESIGN_IN_ANTENNA)_ext2spice.antenna.feedback.txt
+antennacheck debug
+antennacheck
diff --git a/caravel/gds/drc_on_gds.tcl b/caravel/gds/drc_on_gds.tcl
new file mode 100644
index 0000000..8bb3035
--- /dev/null
+++ b/caravel/gds/drc_on_gds.tcl
@@ -0,0 +1,61 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+gds read $::env(DESIGN_IN_DRC).gds
+set fout [open ./tmp/$::env(DESIGN_IN_DRC).drc w]
+set oscale [cif scale out]
+set cell_name $::env(DESIGN_IN_DRC)
+magic::suspendall
+puts stdout "\[INFO\]: Loading $::env(DESIGN_IN_DRC)\n"
+flush stdout
+load $::env(DESIGN_IN_DRC)
+select top cell
+drc euclidean on
+drc style drc(full)
+drc check
+set drcresult [drc listall why]
+set count 0
+puts $fout "$::env(DESIGN_IN_DRC)"
+puts $fout "----------------------------------------"
+foreach {errtype coordlist} $drcresult {
+ puts $fout $errtype
+ puts $fout "----------------------------------------"
+ foreach coord $coordlist {
+ set bllx [expr {$oscale * [lindex $coord 0]}]
+ set blly [expr {$oscale * [lindex $coord 1]}]
+ set burx [expr {$oscale * [lindex $coord 2]}]
+ set bury [expr {$oscale * [lindex $coord 3]}]
+ set coords [format " %.3f %.3f %.3f %.3f" $bllx $blly $burx $bury]
+ puts $fout "$coords"
+ set count [expr {$count + 1} ]
+ }
+ puts $fout "----------------------------------------"
+}
+
+puts $fout "\[INFO\]: COUNT: $count"
+puts $fout "\[INFO\]: Should be divided by 3 or 4"
+
+puts $fout ""
+close $fout
+
+puts stdout "\[INFO\]: COUNT: $count"
+puts stdout "\[INFO\]: Should be divided by 3 or 4"
+puts stdout "\[INFO\]: DRC Checking DONE (./tmp/$::env(DESIGN_IN_DRC).drc)"
+flush stdout
+
+puts stdout "\[INFO\]: Saving mag view with DRC errors(./tmp/$::env(DESIGN_IN_DRC).drc.mag)"
+# WARNING: changes the name of the cell; keep as last step
+save ./tmp/$::env(DESIGN_IN_DRC).drc.drc.mag
+puts stdout "\[INFO\]: Saved"
diff --git a/caravel/gds/gds2mag-all.sh b/caravel/gds/gds2mag-all.sh
new file mode 100755
index 0000000..b9ca6f2
--- /dev/null
+++ b/caravel/gds/gds2mag-all.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+
+
+gunzip *.gz
+mv sram_1rw1r_32_256_8_sky130_lp1.gds sram_1rw1r_32_256_8_sky130.gds
+
+o-gds2mag-mag.sh simple_por.gds
+o-gds2mag-mag.sh gpio_control_block.gds
+o-gds2mag-mag.sh digital_pll.gds
+o-gds2mag-mag.sh storage.gds
+o-gds2mag-mag.sh mgmt_core.gds
+o-gds2mag-mag.sh chip_io.gds
+o-gds2mag-mag.sh sram_1rw1r_32_256_8_sky130.gds
+
+mv -f *.mag ../mag
+
+gzip -9 storage.gds mgmt_core.gds chip_io.gds
+
+
diff --git a/caravel/gds/user_analog_project_wrapper_empty.gds b/caravel/gds/user_analog_project_wrapper_empty.gds
new file mode 100644
index 0000000..6bb65fc
--- /dev/null
+++ b/caravel/gds/user_analog_project_wrapper_empty.gds
Binary files differ
diff --git a/caravel/gds/user_project_wrapper_empty.gds b/caravel/gds/user_project_wrapper_empty.gds
new file mode 100644
index 0000000..83ec0b4
--- /dev/null
+++ b/caravel/gds/user_project_wrapper_empty.gds
Binary files differ
diff --git a/caravel/info.yaml b/caravel/info.yaml
new file mode 100644
index 0000000..06b19bf
--- /dev/null
+++ b/caravel/info.yaml
@@ -0,0 +1,18 @@
+project:
+ description: "Two Stage CMOS OPAMP with Frequency Compensation"
+ foundry: "SkyWater"
+ git_url: https://github.com/MadhuriKadam9/avsdopamp_3v3_sky130_v2.git"
+ organization: "VSD Corp. Pvt. Ltd."
+ organization_url: "https://www.vlsisystemdesign.com/"
+ owner: "Madhuri Kadam"
+ process: "SKY130"
+ project_name: "CMOS OPAMP"
+ project_id: "00000000"
+ tags:
+ - "Open MPW"
+ - "Test Harness"
+ category: "Test Harness"
+ top_level_netlist: "caravel/spi/lvs/caravan.spice"
+ user_level_netlist: "netgen/user_analog_project_wrapper.spice"
+ version: "1.00"
+ cover_image: "docs/source/_static/caravel_harness.png"
diff --git a/caravel/lef/user_analog_project_wrapper_empty.lef b/caravel/lef/user_analog_project_wrapper_empty.lef
new file mode 100644
index 0000000..ea34f13
--- /dev/null
+++ b/caravel/lef/user_analog_project_wrapper_empty.lef
@@ -0,0 +1,5436 @@
+VERSION 5.7 ;
+ NOWIREEXTENSIONATPIN ON ;
+ DIVIDERCHAR "/" ;
+ BUSBITCHARS "[]" ;
+MACRO user_analog_project_wrapper
+ CLASS BLOCK ;
+ FOREIGN user_analog_project_wrapper ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 2920.000 BY 3520.000 ;
+ PIN gpio_analog[0]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1346.150 2924.000 1346.710 ;
+ END
+ END gpio_analog[0]
+ PIN gpio_analog[10]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1909.320 2.400 1909.880 ;
+ END
+ END gpio_analog[10]
+ PIN gpio_analog[11]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1693.210 2.400 1693.770 ;
+ END
+ END gpio_analog[11]
+ PIN gpio_analog[12]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1477.100 2.400 1477.660 ;
+ END
+ END gpio_analog[12]
+ PIN gpio_analog[13]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1261.990 2.400 1262.550 ;
+ END
+ END gpio_analog[13]
+ PIN gpio_analog[14]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 623.880 2.400 624.440 ;
+ END
+ END gpio_analog[14]
+ PIN gpio_analog[15]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 407.770 2.400 408.330 ;
+ END
+ END gpio_analog[15]
+ PIN gpio_analog[16]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 191.660 2.400 192.220 ;
+ END
+ END gpio_analog[16]
+ PIN gpio_analog[17]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 84.550 2.400 85.110 ;
+ END
+ END gpio_analog[17]
+ PIN gpio_analog[1]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1568.260 2924.000 1568.820 ;
+ END
+ END gpio_analog[1]
+ PIN gpio_analog[2]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1794.370 2924.000 1794.930 ;
+ END
+ END gpio_analog[2]
+ PIN gpio_analog[3]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2026.480 2924.000 2027.040 ;
+ END
+ END gpio_analog[3]
+ PIN gpio_analog[4]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2248.590 2924.000 2249.150 ;
+ END
+ END gpio_analog[4]
+ PIN gpio_analog[5]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2470.700 2924.000 2471.260 ;
+ END
+ END gpio_analog[5]
+ PIN gpio_analog[6]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2917.810 2924.000 2918.370 ;
+ END
+ END gpio_analog[6]
+ PIN gpio_analog[7]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2557.650 2.400 2558.210 ;
+ END
+ END gpio_analog[7]
+ PIN gpio_analog[8]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2341.540 2.400 2342.100 ;
+ END
+ END gpio_analog[8]
+ PIN gpio_analog[9]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2125.430 2.400 2125.990 ;
+ END
+ END gpio_analog[9]
+ PIN gpio_noesd[0]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1352.060 2924.000 1352.620 ;
+ END
+ END gpio_noesd[0]
+ PIN gpio_noesd[10]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1903.410 2.400 1903.970 ;
+ END
+ END gpio_noesd[10]
+ PIN gpio_noesd[11]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1687.300 2.400 1687.860 ;
+ END
+ END gpio_noesd[11]
+ PIN gpio_noesd[12]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1471.190 2.400 1471.750 ;
+ END
+ END gpio_noesd[12]
+ PIN gpio_noesd[13]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1256.080 2.400 1256.640 ;
+ END
+ END gpio_noesd[13]
+ PIN gpio_noesd[14]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 617.970 2.400 618.530 ;
+ END
+ END gpio_noesd[14]
+ PIN gpio_noesd[15]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 401.860 2.400 402.420 ;
+ END
+ END gpio_noesd[15]
+ PIN gpio_noesd[16]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 185.750 2.400 186.310 ;
+ END
+ END gpio_noesd[16]
+ PIN gpio_noesd[17]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 78.640 2.400 79.200 ;
+ END
+ END gpio_noesd[17]
+ PIN gpio_noesd[1]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1574.170 2924.000 1574.730 ;
+ END
+ END gpio_noesd[1]
+ PIN gpio_noesd[2]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1800.280 2924.000 1800.840 ;
+ END
+ END gpio_noesd[2]
+ PIN gpio_noesd[3]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2032.390 2924.000 2032.950 ;
+ END
+ END gpio_noesd[3]
+ PIN gpio_noesd[4]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2254.500 2924.000 2255.060 ;
+ END
+ END gpio_noesd[4]
+ PIN gpio_noesd[5]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2476.610 2924.000 2477.170 ;
+ END
+ END gpio_noesd[5]
+ PIN gpio_noesd[6]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2923.720 2924.000 2924.280 ;
+ END
+ END gpio_noesd[6]
+ PIN gpio_noesd[7]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2551.740 2.400 2552.300 ;
+ END
+ END gpio_noesd[7]
+ PIN gpio_noesd[8]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2335.630 2.400 2336.190 ;
+ END
+ END gpio_noesd[8]
+ PIN gpio_noesd[9]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2119.520 2.400 2120.080 ;
+ END
+ END gpio_noesd[9]
+ PIN io_analog[0]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.500 3389.920 2920.000 3414.920 ;
+ END
+ END io_analog[0]
+ PIN io_analog[10]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 3401.210 8.500 3426.210 ;
+ END
+ END io_analog[10]
+ PIN io_analog[1]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2832.970 3511.500 2857.970 3520.000 ;
+ END
+ END io_analog[1]
+ PIN io_analog[2]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2326.970 3511.500 2351.970 3520.000 ;
+ END
+ END io_analog[2]
+ PIN io_analog[3]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2066.970 3511.500 2091.970 3520.000 ;
+ END
+ END io_analog[3]
+ PIN io_analog[4]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 1646.470 3511.500 1671.470 3520.000 ;
+ END
+ END io_analog[4]
+ PIN io_analog[5]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 1137.970 3511.500 1162.970 3520.000 ;
+ END
+ END io_analog[5]
+ PIN io_analog[6]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 879.470 3511.500 904.470 3520.000 ;
+ END
+ END io_analog[6]
+ PIN io_analog[7]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 600.970 3511.500 625.970 3520.000 ;
+ END
+ END io_analog[7]
+ PIN io_analog[8]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 340.970 3511.500 365.970 3520.000 ;
+ END
+ END io_analog[8]
+ PIN io_analog[9]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 80.970 3511.500 105.970 3520.000 ;
+ END
+ END io_analog[9]
+ PIN io_analog[4]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 1594.970 3511.500 1619.970 3520.000 ;
+ END
+ END io_analog[4]
+ PIN io_analog[5]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 1086.470 3511.500 1111.470 3520.000 ;
+ END
+ END io_analog[5]
+ PIN io_analog[6]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 827.970 3511.500 852.970 3520.000 ;
+ END
+ END io_analog[6]
+ PIN io_clamp_high[0]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 1633.970 3511.500 1644.970 3520.000 ;
+ END
+ END io_clamp_high[0]
+ PIN io_clamp_high[1]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 1125.470 3511.500 1136.470 3520.000 ;
+ END
+ END io_clamp_high[1]
+ PIN io_clamp_high[2]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 866.970 3511.500 877.970 3520.000 ;
+ END
+ END io_clamp_high[2]
+ PIN io_clamp_low[0]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 1621.470 3511.500 1632.470 3520.000 ;
+ END
+ END io_clamp_low[0]
+ PIN io_clamp_low[1]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 1112.970 3511.500 1123.970 3520.000 ;
+ END
+ END io_clamp_low[1]
+ PIN io_clamp_low[2]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 854.470 3511.500 865.470 3520.000 ;
+ END
+ END io_clamp_low[2]
+ PIN io_in[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 13.630 2924.000 14.190 ;
+ END
+ END io_in[0]
+ PIN io_in[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2044.210 2924.000 2044.770 ;
+ END
+ END io_in[10]
+ PIN io_in[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2266.320 2924.000 2266.880 ;
+ END
+ END io_in[11]
+ PIN io_in[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2488.430 2924.000 2488.990 ;
+ END
+ END io_in[12]
+ PIN io_in[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2935.540 2924.000 2936.100 ;
+ END
+ END io_in[13]
+ PIN io_in[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2539.920 2.400 2540.480 ;
+ END
+ END io_in[14]
+ PIN io_in[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2323.810 2.400 2324.370 ;
+ END
+ END io_in[15]
+ PIN io_in[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2107.700 2.400 2108.260 ;
+ END
+ END io_in[16]
+ PIN io_in[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1891.590 2.400 1892.150 ;
+ END
+ END io_in[17]
+ PIN io_in[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1675.480 2.400 1676.040 ;
+ END
+ END io_in[18]
+ PIN io_in[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1459.370 2.400 1459.930 ;
+ END
+ END io_in[19]
+ PIN io_in[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 37.270 2924.000 37.830 ;
+ END
+ END io_in[1]
+ PIN io_in[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1244.260 2.400 1244.820 ;
+ END
+ END io_in[20]
+ PIN io_in[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 606.150 2.400 606.710 ;
+ END
+ END io_in[21]
+ PIN io_in[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 390.040 2.400 390.600 ;
+ END
+ END io_in[22]
+ PIN io_in[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 173.930 2.400 174.490 ;
+ END
+ END io_in[23]
+ PIN io_in[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 66.820 2.400 67.380 ;
+ END
+ END io_in[24]
+ PIN io_in[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 43.180 2.400 43.740 ;
+ END
+ END io_in[25]
+ PIN io_in[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 19.540 2.400 20.100 ;
+ END
+ END io_in[26]
+ PIN io_in[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 60.910 2924.000 61.470 ;
+ END
+ END io_in[2]
+ PIN io_in[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 84.550 2924.000 85.110 ;
+ END
+ END io_in[3]
+ PIN io_in[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 108.190 2924.000 108.750 ;
+ END
+ END io_in[4]
+ PIN io_in[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 240.480 2924.000 241.040 ;
+ END
+ END io_in[5]
+ PIN io_in[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 463.770 2924.000 464.330 ;
+ END
+ END io_in[6]
+ PIN io_in[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1363.880 2924.000 1364.440 ;
+ END
+ END io_in[7]
+ PIN io_in[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1585.990 2924.000 1586.550 ;
+ END
+ END io_in[8]
+ PIN io_in[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1812.100 2924.000 1812.660 ;
+ END
+ END io_in[9]
+ PIN io_in_3v3[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 7.720 2924.000 8.280 ;
+ END
+ END io_in_3v3[0]
+ PIN io_in_3v3[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2038.300 2924.000 2038.860 ;
+ END
+ END io_in_3v3[10]
+ PIN io_in_3v3[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2260.410 2924.000 2260.970 ;
+ END
+ END io_in_3v3[11]
+ PIN io_in_3v3[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2482.520 2924.000 2483.080 ;
+ END
+ END io_in_3v3[12]
+ PIN io_in_3v3[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2929.630 2924.000 2930.190 ;
+ END
+ END io_in_3v3[13]
+ PIN io_in_3v3[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2545.830 2.400 2546.390 ;
+ END
+ END io_in_3v3[14]
+ PIN io_in_3v3[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2329.720 2.400 2330.280 ;
+ END
+ END io_in_3v3[15]
+ PIN io_in_3v3[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2113.610 2.400 2114.170 ;
+ END
+ END io_in_3v3[16]
+ PIN io_in_3v3[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1897.500 2.400 1898.060 ;
+ END
+ END io_in_3v3[17]
+ PIN io_in_3v3[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1681.390 2.400 1681.950 ;
+ END
+ END io_in_3v3[18]
+ PIN io_in_3v3[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1465.280 2.400 1465.840 ;
+ END
+ END io_in_3v3[19]
+ PIN io_in_3v3[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 31.360 2924.000 31.920 ;
+ END
+ END io_in_3v3[1]
+ PIN io_in_3v3[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1250.170 2.400 1250.730 ;
+ END
+ END io_in_3v3[20]
+ PIN io_in_3v3[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 612.060 2.400 612.620 ;
+ END
+ END io_in_3v3[21]
+ PIN io_in_3v3[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 395.950 2.400 396.510 ;
+ END
+ END io_in_3v3[22]
+ PIN io_in_3v3[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 179.840 2.400 180.400 ;
+ END
+ END io_in_3v3[23]
+ PIN io_in_3v3[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 72.730 2.400 73.290 ;
+ END
+ END io_in_3v3[24]
+ PIN io_in_3v3[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 49.090 2.400 49.650 ;
+ END
+ END io_in_3v3[25]
+ PIN io_in_3v3[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 25.450 2.400 26.010 ;
+ END
+ END io_in_3v3[26]
+ PIN io_in_3v3[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 55.000 2924.000 55.560 ;
+ END
+ END io_in_3v3[2]
+ PIN io_in_3v3[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 78.640 2924.000 79.200 ;
+ END
+ END io_in_3v3[3]
+ PIN io_in_3v3[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 102.280 2924.000 102.840 ;
+ END
+ END io_in_3v3[4]
+ PIN io_in_3v3[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 234.570 2924.000 235.130 ;
+ END
+ END io_in_3v3[5]
+ PIN io_in_3v3[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 457.860 2924.000 458.420 ;
+ END
+ END io_in_3v3[6]
+ PIN io_in_3v3[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1357.970 2924.000 1358.530 ;
+ END
+ END io_in_3v3[7]
+ PIN io_in_3v3[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1580.080 2924.000 1580.640 ;
+ END
+ END io_in_3v3[8]
+ PIN io_in_3v3[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1806.190 2924.000 1806.750 ;
+ END
+ END io_in_3v3[9]
+ PIN io_oeb[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 25.450 2924.000 26.010 ;
+ END
+ END io_oeb[0]
+ PIN io_oeb[10]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2056.030 2924.000 2056.590 ;
+ END
+ END io_oeb[10]
+ PIN io_oeb[11]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2278.140 2924.000 2278.700 ;
+ END
+ END io_oeb[11]
+ PIN io_oeb[12]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2500.250 2924.000 2500.810 ;
+ END
+ END io_oeb[12]
+ PIN io_oeb[13]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2947.360 2924.000 2947.920 ;
+ END
+ END io_oeb[13]
+ PIN io_oeb[14]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2528.100 2.400 2528.660 ;
+ END
+ END io_oeb[14]
+ PIN io_oeb[15]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2311.990 2.400 2312.550 ;
+ END
+ END io_oeb[15]
+ PIN io_oeb[16]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2095.880 2.400 2096.440 ;
+ END
+ END io_oeb[16]
+ PIN io_oeb[17]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1879.770 2.400 1880.330 ;
+ END
+ END io_oeb[17]
+ PIN io_oeb[18]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1663.660 2.400 1664.220 ;
+ END
+ END io_oeb[18]
+ PIN io_oeb[19]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1447.550 2.400 1448.110 ;
+ END
+ END io_oeb[19]
+ PIN io_oeb[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 49.090 2924.000 49.650 ;
+ END
+ END io_oeb[1]
+ PIN io_oeb[20]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1232.440 2.400 1233.000 ;
+ END
+ END io_oeb[20]
+ PIN io_oeb[21]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 594.330 2.400 594.890 ;
+ END
+ END io_oeb[21]
+ PIN io_oeb[22]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 378.220 2.400 378.780 ;
+ END
+ END io_oeb[22]
+ PIN io_oeb[23]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 162.110 2.400 162.670 ;
+ END
+ END io_oeb[23]
+ PIN io_oeb[24]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 55.000 2.400 55.560 ;
+ END
+ END io_oeb[24]
+ PIN io_oeb[25]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 31.360 2.400 31.920 ;
+ END
+ END io_oeb[25]
+ PIN io_oeb[26]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 7.720 2.400 8.280 ;
+ END
+ END io_oeb[26]
+ PIN io_oeb[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 72.730 2924.000 73.290 ;
+ END
+ END io_oeb[2]
+ PIN io_oeb[3]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 96.370 2924.000 96.930 ;
+ END
+ END io_oeb[3]
+ PIN io_oeb[4]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 120.010 2924.000 120.570 ;
+ END
+ END io_oeb[4]
+ PIN io_oeb[5]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 252.300 2924.000 252.860 ;
+ END
+ END io_oeb[5]
+ PIN io_oeb[6]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 475.590 2924.000 476.150 ;
+ END
+ END io_oeb[6]
+ PIN io_oeb[7]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1375.700 2924.000 1376.260 ;
+ END
+ END io_oeb[7]
+ PIN io_oeb[8]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1597.810 2924.000 1598.370 ;
+ END
+ END io_oeb[8]
+ PIN io_oeb[9]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1823.920 2924.000 1824.480 ;
+ END
+ END io_oeb[9]
+ PIN io_out[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 19.540 2924.000 20.100 ;
+ END
+ END io_out[0]
+ PIN io_out[10]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2050.120 2924.000 2050.680 ;
+ END
+ END io_out[10]
+ PIN io_out[11]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2272.230 2924.000 2272.790 ;
+ END
+ END io_out[11]
+ PIN io_out[12]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2494.340 2924.000 2494.900 ;
+ END
+ END io_out[12]
+ PIN io_out[13]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2941.450 2924.000 2942.010 ;
+ END
+ END io_out[13]
+ PIN io_out[14]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2534.010 2.400 2534.570 ;
+ END
+ END io_out[14]
+ PIN io_out[15]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2317.900 2.400 2318.460 ;
+ END
+ END io_out[15]
+ PIN io_out[16]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 2101.790 2.400 2102.350 ;
+ END
+ END io_out[16]
+ PIN io_out[17]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1885.680 2.400 1886.240 ;
+ END
+ END io_out[17]
+ PIN io_out[18]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1669.570 2.400 1670.130 ;
+ END
+ END io_out[18]
+ PIN io_out[19]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1453.460 2.400 1454.020 ;
+ END
+ END io_out[19]
+ PIN io_out[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 43.180 2924.000 43.740 ;
+ END
+ END io_out[1]
+ PIN io_out[20]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 1238.350 2.400 1238.910 ;
+ END
+ END io_out[20]
+ PIN io_out[21]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 600.240 2.400 600.800 ;
+ END
+ END io_out[21]
+ PIN io_out[22]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 384.130 2.400 384.690 ;
+ END
+ END io_out[22]
+ PIN io_out[23]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 168.020 2.400 168.580 ;
+ END
+ END io_out[23]
+ PIN io_out[24]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 60.910 2.400 61.470 ;
+ END
+ END io_out[24]
+ PIN io_out[25]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 37.270 2.400 37.830 ;
+ END
+ END io_out[25]
+ PIN io_out[26]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.000 13.630 2.400 14.190 ;
+ END
+ END io_out[26]
+ PIN io_out[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 66.820 2924.000 67.380 ;
+ END
+ END io_out[2]
+ PIN io_out[3]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 90.460 2924.000 91.020 ;
+ END
+ END io_out[3]
+ PIN io_out[4]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 114.100 2924.000 114.660 ;
+ END
+ END io_out[4]
+ PIN io_out[5]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 246.390 2924.000 246.950 ;
+ END
+ END io_out[5]
+ PIN io_out[6]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 469.680 2924.000 470.240 ;
+ END
+ END io_out[6]
+ PIN io_out[7]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1369.790 2924.000 1370.350 ;
+ END
+ END io_out[7]
+ PIN io_out[8]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1591.900 2924.000 1592.460 ;
+ END
+ END io_out[8]
+ PIN io_out[9]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1818.010 2924.000 1818.570 ;
+ END
+ END io_out[9]
+ PIN la_data_in[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 629.080 -4.000 629.640 2.400 ;
+ END
+ END la_data_in[0]
+ PIN la_data_in[100]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2402.080 -4.000 2402.640 2.400 ;
+ END
+ END la_data_in[100]
+ PIN la_data_in[101]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2419.810 -4.000 2420.370 2.400 ;
+ END
+ END la_data_in[101]
+ PIN la_data_in[102]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2437.540 -4.000 2438.100 2.400 ;
+ END
+ END la_data_in[102]
+ PIN la_data_in[103]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2455.270 -4.000 2455.830 2.400 ;
+ END
+ END la_data_in[103]
+ PIN la_data_in[104]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2473.000 -4.000 2473.560 2.400 ;
+ END
+ END la_data_in[104]
+ PIN la_data_in[105]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2490.730 -4.000 2491.290 2.400 ;
+ END
+ END la_data_in[105]
+ PIN la_data_in[106]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2508.460 -4.000 2509.020 2.400 ;
+ END
+ END la_data_in[106]
+ PIN la_data_in[107]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2526.190 -4.000 2526.750 2.400 ;
+ END
+ END la_data_in[107]
+ PIN la_data_in[108]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2543.920 -4.000 2544.480 2.400 ;
+ END
+ END la_data_in[108]
+ PIN la_data_in[109]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2561.650 -4.000 2562.210 2.400 ;
+ END
+ END la_data_in[109]
+ PIN la_data_in[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 806.380 -4.000 806.940 2.400 ;
+ END
+ END la_data_in[10]
+ PIN la_data_in[110]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2579.380 -4.000 2579.940 2.400 ;
+ END
+ END la_data_in[110]
+ PIN la_data_in[111]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2597.110 -4.000 2597.670 2.400 ;
+ END
+ END la_data_in[111]
+ PIN la_data_in[112]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2614.840 -4.000 2615.400 2.400 ;
+ END
+ END la_data_in[112]
+ PIN la_data_in[113]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2632.570 -4.000 2633.130 2.400 ;
+ END
+ END la_data_in[113]
+ PIN la_data_in[114]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2650.300 -4.000 2650.860 2.400 ;
+ END
+ END la_data_in[114]
+ PIN la_data_in[115]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2668.030 -4.000 2668.590 2.400 ;
+ END
+ END la_data_in[115]
+ PIN la_data_in[116]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2685.760 -4.000 2686.320 2.400 ;
+ END
+ END la_data_in[116]
+ PIN la_data_in[117]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2703.490 -4.000 2704.050 2.400 ;
+ END
+ END la_data_in[117]
+ PIN la_data_in[118]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2721.220 -4.000 2721.780 2.400 ;
+ END
+ END la_data_in[118]
+ PIN la_data_in[119]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2738.950 -4.000 2739.510 2.400 ;
+ END
+ END la_data_in[119]
+ PIN la_data_in[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 824.110 -4.000 824.670 2.400 ;
+ END
+ END la_data_in[11]
+ PIN la_data_in[120]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2756.680 -4.000 2757.240 2.400 ;
+ END
+ END la_data_in[120]
+ PIN la_data_in[121]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2774.410 -4.000 2774.970 2.400 ;
+ END
+ END la_data_in[121]
+ PIN la_data_in[122]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2792.140 -4.000 2792.700 2.400 ;
+ END
+ END la_data_in[122]
+ PIN la_data_in[123]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2809.870 -4.000 2810.430 2.400 ;
+ END
+ END la_data_in[123]
+ PIN la_data_in[124]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2827.600 -4.000 2828.160 2.400 ;
+ END
+ END la_data_in[124]
+ PIN la_data_in[125]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2845.330 -4.000 2845.890 2.400 ;
+ END
+ END la_data_in[125]
+ PIN la_data_in[126]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2863.060 -4.000 2863.620 2.400 ;
+ END
+ END la_data_in[126]
+ PIN la_data_in[127]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2880.790 -4.000 2881.350 2.400 ;
+ END
+ END la_data_in[127]
+ PIN la_data_in[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 841.840 -4.000 842.400 2.400 ;
+ END
+ END la_data_in[12]
+ PIN la_data_in[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 859.570 -4.000 860.130 2.400 ;
+ END
+ END la_data_in[13]
+ PIN la_data_in[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 877.300 -4.000 877.860 2.400 ;
+ END
+ END la_data_in[14]
+ PIN la_data_in[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 895.030 -4.000 895.590 2.400 ;
+ END
+ END la_data_in[15]
+ PIN la_data_in[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 912.760 -4.000 913.320 2.400 ;
+ END
+ END la_data_in[16]
+ PIN la_data_in[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 930.490 -4.000 931.050 2.400 ;
+ END
+ END la_data_in[17]
+ PIN la_data_in[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 948.220 -4.000 948.780 2.400 ;
+ END
+ END la_data_in[18]
+ PIN la_data_in[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 965.950 -4.000 966.510 2.400 ;
+ END
+ END la_data_in[19]
+ PIN la_data_in[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 646.810 -4.000 647.370 2.400 ;
+ END
+ END la_data_in[1]
+ PIN la_data_in[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 983.680 -4.000 984.240 2.400 ;
+ END
+ END la_data_in[20]
+ PIN la_data_in[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1001.410 -4.000 1001.970 2.400 ;
+ END
+ END la_data_in[21]
+ PIN la_data_in[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1019.140 -4.000 1019.700 2.400 ;
+ END
+ END la_data_in[22]
+ PIN la_data_in[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1036.870 -4.000 1037.430 2.400 ;
+ END
+ END la_data_in[23]
+ PIN la_data_in[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1054.600 -4.000 1055.160 2.400 ;
+ END
+ END la_data_in[24]
+ PIN la_data_in[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1072.330 -4.000 1072.890 2.400 ;
+ END
+ END la_data_in[25]
+ PIN la_data_in[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1090.060 -4.000 1090.620 2.400 ;
+ END
+ END la_data_in[26]
+ PIN la_data_in[27]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1107.790 -4.000 1108.350 2.400 ;
+ END
+ END la_data_in[27]
+ PIN la_data_in[28]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1125.520 -4.000 1126.080 2.400 ;
+ END
+ END la_data_in[28]
+ PIN la_data_in[29]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1143.250 -4.000 1143.810 2.400 ;
+ END
+ END la_data_in[29]
+ PIN la_data_in[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 664.540 -4.000 665.100 2.400 ;
+ END
+ END la_data_in[2]
+ PIN la_data_in[30]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1160.980 -4.000 1161.540 2.400 ;
+ END
+ END la_data_in[30]
+ PIN la_data_in[31]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1178.710 -4.000 1179.270 2.400 ;
+ END
+ END la_data_in[31]
+ PIN la_data_in[32]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1196.440 -4.000 1197.000 2.400 ;
+ END
+ END la_data_in[32]
+ PIN la_data_in[33]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1214.170 -4.000 1214.730 2.400 ;
+ END
+ END la_data_in[33]
+ PIN la_data_in[34]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1231.900 -4.000 1232.460 2.400 ;
+ END
+ END la_data_in[34]
+ PIN la_data_in[35]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1249.630 -4.000 1250.190 2.400 ;
+ END
+ END la_data_in[35]
+ PIN la_data_in[36]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1267.360 -4.000 1267.920 2.400 ;
+ END
+ END la_data_in[36]
+ PIN la_data_in[37]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1285.090 -4.000 1285.650 2.400 ;
+ END
+ END la_data_in[37]
+ PIN la_data_in[38]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1302.820 -4.000 1303.380 2.400 ;
+ END
+ END la_data_in[38]
+ PIN la_data_in[39]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1320.550 -4.000 1321.110 2.400 ;
+ END
+ END la_data_in[39]
+ PIN la_data_in[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 682.270 -4.000 682.830 2.400 ;
+ END
+ END la_data_in[3]
+ PIN la_data_in[40]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1338.280 -4.000 1338.840 2.400 ;
+ END
+ END la_data_in[40]
+ PIN la_data_in[41]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1356.010 -4.000 1356.570 2.400 ;
+ END
+ END la_data_in[41]
+ PIN la_data_in[42]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1373.740 -4.000 1374.300 2.400 ;
+ END
+ END la_data_in[42]
+ PIN la_data_in[43]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1391.470 -4.000 1392.030 2.400 ;
+ END
+ END la_data_in[43]
+ PIN la_data_in[44]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1409.200 -4.000 1409.760 2.400 ;
+ END
+ END la_data_in[44]
+ PIN la_data_in[45]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1426.930 -4.000 1427.490 2.400 ;
+ END
+ END la_data_in[45]
+ PIN la_data_in[46]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1444.660 -4.000 1445.220 2.400 ;
+ END
+ END la_data_in[46]
+ PIN la_data_in[47]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1462.390 -4.000 1462.950 2.400 ;
+ END
+ END la_data_in[47]
+ PIN la_data_in[48]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1480.120 -4.000 1480.680 2.400 ;
+ END
+ END la_data_in[48]
+ PIN la_data_in[49]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1497.850 -4.000 1498.410 2.400 ;
+ END
+ END la_data_in[49]
+ PIN la_data_in[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 700.000 -4.000 700.560 2.400 ;
+ END
+ END la_data_in[4]
+ PIN la_data_in[50]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1515.580 -4.000 1516.140 2.400 ;
+ END
+ END la_data_in[50]
+ PIN la_data_in[51]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1533.310 -4.000 1533.870 2.400 ;
+ END
+ END la_data_in[51]
+ PIN la_data_in[52]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1551.040 -4.000 1551.600 2.400 ;
+ END
+ END la_data_in[52]
+ PIN la_data_in[53]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1568.770 -4.000 1569.330 2.400 ;
+ END
+ END la_data_in[53]
+ PIN la_data_in[54]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1586.500 -4.000 1587.060 2.400 ;
+ END
+ END la_data_in[54]
+ PIN la_data_in[55]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1604.230 -4.000 1604.790 2.400 ;
+ END
+ END la_data_in[55]
+ PIN la_data_in[56]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1621.960 -4.000 1622.520 2.400 ;
+ END
+ END la_data_in[56]
+ PIN la_data_in[57]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1639.690 -4.000 1640.250 2.400 ;
+ END
+ END la_data_in[57]
+ PIN la_data_in[58]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1657.420 -4.000 1657.980 2.400 ;
+ END
+ END la_data_in[58]
+ PIN la_data_in[59]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1675.150 -4.000 1675.710 2.400 ;
+ END
+ END la_data_in[59]
+ PIN la_data_in[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 717.730 -4.000 718.290 2.400 ;
+ END
+ END la_data_in[5]
+ PIN la_data_in[60]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1692.880 -4.000 1693.440 2.400 ;
+ END
+ END la_data_in[60]
+ PIN la_data_in[61]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1710.610 -4.000 1711.170 2.400 ;
+ END
+ END la_data_in[61]
+ PIN la_data_in[62]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1728.340 -4.000 1728.900 2.400 ;
+ END
+ END la_data_in[62]
+ PIN la_data_in[63]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1746.070 -4.000 1746.630 2.400 ;
+ END
+ END la_data_in[63]
+ PIN la_data_in[64]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1763.800 -4.000 1764.360 2.400 ;
+ END
+ END la_data_in[64]
+ PIN la_data_in[65]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1781.530 -4.000 1782.090 2.400 ;
+ END
+ END la_data_in[65]
+ PIN la_data_in[66]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1799.260 -4.000 1799.820 2.400 ;
+ END
+ END la_data_in[66]
+ PIN la_data_in[67]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1816.990 -4.000 1817.550 2.400 ;
+ END
+ END la_data_in[67]
+ PIN la_data_in[68]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1834.720 -4.000 1835.280 2.400 ;
+ END
+ END la_data_in[68]
+ PIN la_data_in[69]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1852.450 -4.000 1853.010 2.400 ;
+ END
+ END la_data_in[69]
+ PIN la_data_in[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 735.460 -4.000 736.020 2.400 ;
+ END
+ END la_data_in[6]
+ PIN la_data_in[70]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1870.180 -4.000 1870.740 2.400 ;
+ END
+ END la_data_in[70]
+ PIN la_data_in[71]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1887.910 -4.000 1888.470 2.400 ;
+ END
+ END la_data_in[71]
+ PIN la_data_in[72]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1905.640 -4.000 1906.200 2.400 ;
+ END
+ END la_data_in[72]
+ PIN la_data_in[73]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1923.370 -4.000 1923.930 2.400 ;
+ END
+ END la_data_in[73]
+ PIN la_data_in[74]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1941.100 -4.000 1941.660 2.400 ;
+ END
+ END la_data_in[74]
+ PIN la_data_in[75]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1958.830 -4.000 1959.390 2.400 ;
+ END
+ END la_data_in[75]
+ PIN la_data_in[76]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1976.560 -4.000 1977.120 2.400 ;
+ END
+ END la_data_in[76]
+ PIN la_data_in[77]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1994.290 -4.000 1994.850 2.400 ;
+ END
+ END la_data_in[77]
+ PIN la_data_in[78]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2012.020 -4.000 2012.580 2.400 ;
+ END
+ END la_data_in[78]
+ PIN la_data_in[79]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2029.750 -4.000 2030.310 2.400 ;
+ END
+ END la_data_in[79]
+ PIN la_data_in[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 753.190 -4.000 753.750 2.400 ;
+ END
+ END la_data_in[7]
+ PIN la_data_in[80]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2047.480 -4.000 2048.040 2.400 ;
+ END
+ END la_data_in[80]
+ PIN la_data_in[81]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2065.210 -4.000 2065.770 2.400 ;
+ END
+ END la_data_in[81]
+ PIN la_data_in[82]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2082.940 -4.000 2083.500 2.400 ;
+ END
+ END la_data_in[82]
+ PIN la_data_in[83]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2100.670 -4.000 2101.230 2.400 ;
+ END
+ END la_data_in[83]
+ PIN la_data_in[84]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2118.400 -4.000 2118.960 2.400 ;
+ END
+ END la_data_in[84]
+ PIN la_data_in[85]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2136.130 -4.000 2136.690 2.400 ;
+ END
+ END la_data_in[85]
+ PIN la_data_in[86]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2153.860 -4.000 2154.420 2.400 ;
+ END
+ END la_data_in[86]
+ PIN la_data_in[87]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2171.590 -4.000 2172.150 2.400 ;
+ END
+ END la_data_in[87]
+ PIN la_data_in[88]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2189.320 -4.000 2189.880 2.400 ;
+ END
+ END la_data_in[88]
+ PIN la_data_in[89]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2207.050 -4.000 2207.610 2.400 ;
+ END
+ END la_data_in[89]
+ PIN la_data_in[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 770.920 -4.000 771.480 2.400 ;
+ END
+ END la_data_in[8]
+ PIN la_data_in[90]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2224.780 -4.000 2225.340 2.400 ;
+ END
+ END la_data_in[90]
+ PIN la_data_in[91]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2242.510 -4.000 2243.070 2.400 ;
+ END
+ END la_data_in[91]
+ PIN la_data_in[92]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2260.240 -4.000 2260.800 2.400 ;
+ END
+ END la_data_in[92]
+ PIN la_data_in[93]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2277.970 -4.000 2278.530 2.400 ;
+ END
+ END la_data_in[93]
+ PIN la_data_in[94]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2295.700 -4.000 2296.260 2.400 ;
+ END
+ END la_data_in[94]
+ PIN la_data_in[95]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2313.430 -4.000 2313.990 2.400 ;
+ END
+ END la_data_in[95]
+ PIN la_data_in[96]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2331.160 -4.000 2331.720 2.400 ;
+ END
+ END la_data_in[96]
+ PIN la_data_in[97]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2348.890 -4.000 2349.450 2.400 ;
+ END
+ END la_data_in[97]
+ PIN la_data_in[98]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2366.620 -4.000 2367.180 2.400 ;
+ END
+ END la_data_in[98]
+ PIN la_data_in[99]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2384.350 -4.000 2384.910 2.400 ;
+ END
+ END la_data_in[99]
+ PIN la_data_in[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 788.650 -4.000 789.210 2.400 ;
+ END
+ END la_data_in[9]
+ PIN la_data_out[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 634.990 -4.000 635.550 2.400 ;
+ END
+ END la_data_out[0]
+ PIN la_data_out[100]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2407.990 -4.000 2408.550 2.400 ;
+ END
+ END la_data_out[100]
+ PIN la_data_out[101]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2425.720 -4.000 2426.280 2.400 ;
+ END
+ END la_data_out[101]
+ PIN la_data_out[102]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2443.450 -4.000 2444.010 2.400 ;
+ END
+ END la_data_out[102]
+ PIN la_data_out[103]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2461.180 -4.000 2461.740 2.400 ;
+ END
+ END la_data_out[103]
+ PIN la_data_out[104]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2478.910 -4.000 2479.470 2.400 ;
+ END
+ END la_data_out[104]
+ PIN la_data_out[105]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2496.640 -4.000 2497.200 2.400 ;
+ END
+ END la_data_out[105]
+ PIN la_data_out[106]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2514.370 -4.000 2514.930 2.400 ;
+ END
+ END la_data_out[106]
+ PIN la_data_out[107]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2532.100 -4.000 2532.660 2.400 ;
+ END
+ END la_data_out[107]
+ PIN la_data_out[108]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2549.830 -4.000 2550.390 2.400 ;
+ END
+ END la_data_out[108]
+ PIN la_data_out[109]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2567.560 -4.000 2568.120 2.400 ;
+ END
+ END la_data_out[109]
+ PIN la_data_out[10]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 812.290 -4.000 812.850 2.400 ;
+ END
+ END la_data_out[10]
+ PIN la_data_out[110]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2585.290 -4.000 2585.850 2.400 ;
+ END
+ END la_data_out[110]
+ PIN la_data_out[111]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2603.020 -4.000 2603.580 2.400 ;
+ END
+ END la_data_out[111]
+ PIN la_data_out[112]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2620.750 -4.000 2621.310 2.400 ;
+ END
+ END la_data_out[112]
+ PIN la_data_out[113]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2638.480 -4.000 2639.040 2.400 ;
+ END
+ END la_data_out[113]
+ PIN la_data_out[114]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2656.210 -4.000 2656.770 2.400 ;
+ END
+ END la_data_out[114]
+ PIN la_data_out[115]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2673.940 -4.000 2674.500 2.400 ;
+ END
+ END la_data_out[115]
+ PIN la_data_out[116]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2691.670 -4.000 2692.230 2.400 ;
+ END
+ END la_data_out[116]
+ PIN la_data_out[117]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2709.400 -4.000 2709.960 2.400 ;
+ END
+ END la_data_out[117]
+ PIN la_data_out[118]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2727.130 -4.000 2727.690 2.400 ;
+ END
+ END la_data_out[118]
+ PIN la_data_out[119]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2744.860 -4.000 2745.420 2.400 ;
+ END
+ END la_data_out[119]
+ PIN la_data_out[11]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 830.020 -4.000 830.580 2.400 ;
+ END
+ END la_data_out[11]
+ PIN la_data_out[120]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2762.590 -4.000 2763.150 2.400 ;
+ END
+ END la_data_out[120]
+ PIN la_data_out[121]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2780.320 -4.000 2780.880 2.400 ;
+ END
+ END la_data_out[121]
+ PIN la_data_out[122]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2798.050 -4.000 2798.610 2.400 ;
+ END
+ END la_data_out[122]
+ PIN la_data_out[123]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2815.780 -4.000 2816.340 2.400 ;
+ END
+ END la_data_out[123]
+ PIN la_data_out[124]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2833.510 -4.000 2834.070 2.400 ;
+ END
+ END la_data_out[124]
+ PIN la_data_out[125]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2851.240 -4.000 2851.800 2.400 ;
+ END
+ END la_data_out[125]
+ PIN la_data_out[126]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2868.970 -4.000 2869.530 2.400 ;
+ END
+ END la_data_out[126]
+ PIN la_data_out[127]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2886.700 -4.000 2887.260 2.400 ;
+ END
+ END la_data_out[127]
+ PIN la_data_out[12]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 847.750 -4.000 848.310 2.400 ;
+ END
+ END la_data_out[12]
+ PIN la_data_out[13]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 865.480 -4.000 866.040 2.400 ;
+ END
+ END la_data_out[13]
+ PIN la_data_out[14]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 883.210 -4.000 883.770 2.400 ;
+ END
+ END la_data_out[14]
+ PIN la_data_out[15]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 900.940 -4.000 901.500 2.400 ;
+ END
+ END la_data_out[15]
+ PIN la_data_out[16]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 918.670 -4.000 919.230 2.400 ;
+ END
+ END la_data_out[16]
+ PIN la_data_out[17]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 936.400 -4.000 936.960 2.400 ;
+ END
+ END la_data_out[17]
+ PIN la_data_out[18]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 954.130 -4.000 954.690 2.400 ;
+ END
+ END la_data_out[18]
+ PIN la_data_out[19]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 971.860 -4.000 972.420 2.400 ;
+ END
+ END la_data_out[19]
+ PIN la_data_out[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 652.720 -4.000 653.280 2.400 ;
+ END
+ END la_data_out[1]
+ PIN la_data_out[20]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 989.590 -4.000 990.150 2.400 ;
+ END
+ END la_data_out[20]
+ PIN la_data_out[21]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1007.320 -4.000 1007.880 2.400 ;
+ END
+ END la_data_out[21]
+ PIN la_data_out[22]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1025.050 -4.000 1025.610 2.400 ;
+ END
+ END la_data_out[22]
+ PIN la_data_out[23]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1042.780 -4.000 1043.340 2.400 ;
+ END
+ END la_data_out[23]
+ PIN la_data_out[24]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1060.510 -4.000 1061.070 2.400 ;
+ END
+ END la_data_out[24]
+ PIN la_data_out[25]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1078.240 -4.000 1078.800 2.400 ;
+ END
+ END la_data_out[25]
+ PIN la_data_out[26]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1095.970 -4.000 1096.530 2.400 ;
+ END
+ END la_data_out[26]
+ PIN la_data_out[27]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1113.700 -4.000 1114.260 2.400 ;
+ END
+ END la_data_out[27]
+ PIN la_data_out[28]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1131.430 -4.000 1131.990 2.400 ;
+ END
+ END la_data_out[28]
+ PIN la_data_out[29]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1149.160 -4.000 1149.720 2.400 ;
+ END
+ END la_data_out[29]
+ PIN la_data_out[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 670.450 -4.000 671.010 2.400 ;
+ END
+ END la_data_out[2]
+ PIN la_data_out[30]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1166.890 -4.000 1167.450 2.400 ;
+ END
+ END la_data_out[30]
+ PIN la_data_out[31]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1184.620 -4.000 1185.180 2.400 ;
+ END
+ END la_data_out[31]
+ PIN la_data_out[32]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1202.350 -4.000 1202.910 2.400 ;
+ END
+ END la_data_out[32]
+ PIN la_data_out[33]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1220.080 -4.000 1220.640 2.400 ;
+ END
+ END la_data_out[33]
+ PIN la_data_out[34]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1237.810 -4.000 1238.370 2.400 ;
+ END
+ END la_data_out[34]
+ PIN la_data_out[35]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1255.540 -4.000 1256.100 2.400 ;
+ END
+ END la_data_out[35]
+ PIN la_data_out[36]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1273.270 -4.000 1273.830 2.400 ;
+ END
+ END la_data_out[36]
+ PIN la_data_out[37]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1291.000 -4.000 1291.560 2.400 ;
+ END
+ END la_data_out[37]
+ PIN la_data_out[38]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1308.730 -4.000 1309.290 2.400 ;
+ END
+ END la_data_out[38]
+ PIN la_data_out[39]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1326.460 -4.000 1327.020 2.400 ;
+ END
+ END la_data_out[39]
+ PIN la_data_out[3]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 688.180 -4.000 688.740 2.400 ;
+ END
+ END la_data_out[3]
+ PIN la_data_out[40]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1344.190 -4.000 1344.750 2.400 ;
+ END
+ END la_data_out[40]
+ PIN la_data_out[41]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1361.920 -4.000 1362.480 2.400 ;
+ END
+ END la_data_out[41]
+ PIN la_data_out[42]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1379.650 -4.000 1380.210 2.400 ;
+ END
+ END la_data_out[42]
+ PIN la_data_out[43]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1397.380 -4.000 1397.940 2.400 ;
+ END
+ END la_data_out[43]
+ PIN la_data_out[44]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1415.110 -4.000 1415.670 2.400 ;
+ END
+ END la_data_out[44]
+ PIN la_data_out[45]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1432.840 -4.000 1433.400 2.400 ;
+ END
+ END la_data_out[45]
+ PIN la_data_out[46]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1450.570 -4.000 1451.130 2.400 ;
+ END
+ END la_data_out[46]
+ PIN la_data_out[47]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1468.300 -4.000 1468.860 2.400 ;
+ END
+ END la_data_out[47]
+ PIN la_data_out[48]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1486.030 -4.000 1486.590 2.400 ;
+ END
+ END la_data_out[48]
+ PIN la_data_out[49]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1503.760 -4.000 1504.320 2.400 ;
+ END
+ END la_data_out[49]
+ PIN la_data_out[4]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 705.910 -4.000 706.470 2.400 ;
+ END
+ END la_data_out[4]
+ PIN la_data_out[50]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1521.490 -4.000 1522.050 2.400 ;
+ END
+ END la_data_out[50]
+ PIN la_data_out[51]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1539.220 -4.000 1539.780 2.400 ;
+ END
+ END la_data_out[51]
+ PIN la_data_out[52]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1556.950 -4.000 1557.510 2.400 ;
+ END
+ END la_data_out[52]
+ PIN la_data_out[53]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1574.680 -4.000 1575.240 2.400 ;
+ END
+ END la_data_out[53]
+ PIN la_data_out[54]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1592.410 -4.000 1592.970 2.400 ;
+ END
+ END la_data_out[54]
+ PIN la_data_out[55]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1610.140 -4.000 1610.700 2.400 ;
+ END
+ END la_data_out[55]
+ PIN la_data_out[56]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1627.870 -4.000 1628.430 2.400 ;
+ END
+ END la_data_out[56]
+ PIN la_data_out[57]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1645.600 -4.000 1646.160 2.400 ;
+ END
+ END la_data_out[57]
+ PIN la_data_out[58]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1663.330 -4.000 1663.890 2.400 ;
+ END
+ END la_data_out[58]
+ PIN la_data_out[59]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1681.060 -4.000 1681.620 2.400 ;
+ END
+ END la_data_out[59]
+ PIN la_data_out[5]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 723.640 -4.000 724.200 2.400 ;
+ END
+ END la_data_out[5]
+ PIN la_data_out[60]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1698.790 -4.000 1699.350 2.400 ;
+ END
+ END la_data_out[60]
+ PIN la_data_out[61]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1716.520 -4.000 1717.080 2.400 ;
+ END
+ END la_data_out[61]
+ PIN la_data_out[62]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1734.250 -4.000 1734.810 2.400 ;
+ END
+ END la_data_out[62]
+ PIN la_data_out[63]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1751.980 -4.000 1752.540 2.400 ;
+ END
+ END la_data_out[63]
+ PIN la_data_out[64]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1769.710 -4.000 1770.270 2.400 ;
+ END
+ END la_data_out[64]
+ PIN la_data_out[65]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1787.440 -4.000 1788.000 2.400 ;
+ END
+ END la_data_out[65]
+ PIN la_data_out[66]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1805.170 -4.000 1805.730 2.400 ;
+ END
+ END la_data_out[66]
+ PIN la_data_out[67]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1822.900 -4.000 1823.460 2.400 ;
+ END
+ END la_data_out[67]
+ PIN la_data_out[68]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1840.630 -4.000 1841.190 2.400 ;
+ END
+ END la_data_out[68]
+ PIN la_data_out[69]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1858.360 -4.000 1858.920 2.400 ;
+ END
+ END la_data_out[69]
+ PIN la_data_out[6]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 741.370 -4.000 741.930 2.400 ;
+ END
+ END la_data_out[6]
+ PIN la_data_out[70]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1876.090 -4.000 1876.650 2.400 ;
+ END
+ END la_data_out[70]
+ PIN la_data_out[71]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1893.820 -4.000 1894.380 2.400 ;
+ END
+ END la_data_out[71]
+ PIN la_data_out[72]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1911.550 -4.000 1912.110 2.400 ;
+ END
+ END la_data_out[72]
+ PIN la_data_out[73]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1929.280 -4.000 1929.840 2.400 ;
+ END
+ END la_data_out[73]
+ PIN la_data_out[74]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1947.010 -4.000 1947.570 2.400 ;
+ END
+ END la_data_out[74]
+ PIN la_data_out[75]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1964.740 -4.000 1965.300 2.400 ;
+ END
+ END la_data_out[75]
+ PIN la_data_out[76]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1982.470 -4.000 1983.030 2.400 ;
+ END
+ END la_data_out[76]
+ PIN la_data_out[77]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2000.200 -4.000 2000.760 2.400 ;
+ END
+ END la_data_out[77]
+ PIN la_data_out[78]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2017.930 -4.000 2018.490 2.400 ;
+ END
+ END la_data_out[78]
+ PIN la_data_out[79]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2035.660 -4.000 2036.220 2.400 ;
+ END
+ END la_data_out[79]
+ PIN la_data_out[7]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 759.100 -4.000 759.660 2.400 ;
+ END
+ END la_data_out[7]
+ PIN la_data_out[80]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2053.390 -4.000 2053.950 2.400 ;
+ END
+ END la_data_out[80]
+ PIN la_data_out[81]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2071.120 -4.000 2071.680 2.400 ;
+ END
+ END la_data_out[81]
+ PIN la_data_out[82]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2088.850 -4.000 2089.410 2.400 ;
+ END
+ END la_data_out[82]
+ PIN la_data_out[83]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2106.580 -4.000 2107.140 2.400 ;
+ END
+ END la_data_out[83]
+ PIN la_data_out[84]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2124.310 -4.000 2124.870 2.400 ;
+ END
+ END la_data_out[84]
+ PIN la_data_out[85]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2142.040 -4.000 2142.600 2.400 ;
+ END
+ END la_data_out[85]
+ PIN la_data_out[86]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2159.770 -4.000 2160.330 2.400 ;
+ END
+ END la_data_out[86]
+ PIN la_data_out[87]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2177.500 -4.000 2178.060 2.400 ;
+ END
+ END la_data_out[87]
+ PIN la_data_out[88]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2195.230 -4.000 2195.790 2.400 ;
+ END
+ END la_data_out[88]
+ PIN la_data_out[89]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2212.960 -4.000 2213.520 2.400 ;
+ END
+ END la_data_out[89]
+ PIN la_data_out[8]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 776.830 -4.000 777.390 2.400 ;
+ END
+ END la_data_out[8]
+ PIN la_data_out[90]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2230.690 -4.000 2231.250 2.400 ;
+ END
+ END la_data_out[90]
+ PIN la_data_out[91]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2248.420 -4.000 2248.980 2.400 ;
+ END
+ END la_data_out[91]
+ PIN la_data_out[92]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2266.150 -4.000 2266.710 2.400 ;
+ END
+ END la_data_out[92]
+ PIN la_data_out[93]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2283.880 -4.000 2284.440 2.400 ;
+ END
+ END la_data_out[93]
+ PIN la_data_out[94]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2301.610 -4.000 2302.170 2.400 ;
+ END
+ END la_data_out[94]
+ PIN la_data_out[95]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2319.340 -4.000 2319.900 2.400 ;
+ END
+ END la_data_out[95]
+ PIN la_data_out[96]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2337.070 -4.000 2337.630 2.400 ;
+ END
+ END la_data_out[96]
+ PIN la_data_out[97]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2354.800 -4.000 2355.360 2.400 ;
+ END
+ END la_data_out[97]
+ PIN la_data_out[98]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2372.530 -4.000 2373.090 2.400 ;
+ END
+ END la_data_out[98]
+ PIN la_data_out[99]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2390.260 -4.000 2390.820 2.400 ;
+ END
+ END la_data_out[99]
+ PIN la_data_out[9]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 794.560 -4.000 795.120 2.400 ;
+ END
+ END la_data_out[9]
+ PIN la_oenb[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 640.900 -4.000 641.460 2.400 ;
+ END
+ END la_oenb[0]
+ PIN la_oenb[100]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2413.900 -4.000 2414.460 2.400 ;
+ END
+ END la_oenb[100]
+ PIN la_oenb[101]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2431.630 -4.000 2432.190 2.400 ;
+ END
+ END la_oenb[101]
+ PIN la_oenb[102]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2449.360 -4.000 2449.920 2.400 ;
+ END
+ END la_oenb[102]
+ PIN la_oenb[103]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2467.090 -4.000 2467.650 2.400 ;
+ END
+ END la_oenb[103]
+ PIN la_oenb[104]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2484.820 -4.000 2485.380 2.400 ;
+ END
+ END la_oenb[104]
+ PIN la_oenb[105]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2502.550 -4.000 2503.110 2.400 ;
+ END
+ END la_oenb[105]
+ PIN la_oenb[106]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2520.280 -4.000 2520.840 2.400 ;
+ END
+ END la_oenb[106]
+ PIN la_oenb[107]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2538.010 -4.000 2538.570 2.400 ;
+ END
+ END la_oenb[107]
+ PIN la_oenb[108]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2555.740 -4.000 2556.300 2.400 ;
+ END
+ END la_oenb[108]
+ PIN la_oenb[109]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2573.470 -4.000 2574.030 2.400 ;
+ END
+ END la_oenb[109]
+ PIN la_oenb[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 818.200 -4.000 818.760 2.400 ;
+ END
+ END la_oenb[10]
+ PIN la_oenb[110]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2591.200 -4.000 2591.760 2.400 ;
+ END
+ END la_oenb[110]
+ PIN la_oenb[111]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2608.930 -4.000 2609.490 2.400 ;
+ END
+ END la_oenb[111]
+ PIN la_oenb[112]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2626.660 -4.000 2627.220 2.400 ;
+ END
+ END la_oenb[112]
+ PIN la_oenb[113]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2644.390 -4.000 2644.950 2.400 ;
+ END
+ END la_oenb[113]
+ PIN la_oenb[114]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2662.120 -4.000 2662.680 2.400 ;
+ END
+ END la_oenb[114]
+ PIN la_oenb[115]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2679.850 -4.000 2680.410 2.400 ;
+ END
+ END la_oenb[115]
+ PIN la_oenb[116]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2697.580 -4.000 2698.140 2.400 ;
+ END
+ END la_oenb[116]
+ PIN la_oenb[117]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2715.310 -4.000 2715.870 2.400 ;
+ END
+ END la_oenb[117]
+ PIN la_oenb[118]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2733.040 -4.000 2733.600 2.400 ;
+ END
+ END la_oenb[118]
+ PIN la_oenb[119]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2750.770 -4.000 2751.330 2.400 ;
+ END
+ END la_oenb[119]
+ PIN la_oenb[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 835.930 -4.000 836.490 2.400 ;
+ END
+ END la_oenb[11]
+ PIN la_oenb[120]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2768.500 -4.000 2769.060 2.400 ;
+ END
+ END la_oenb[120]
+ PIN la_oenb[121]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2786.230 -4.000 2786.790 2.400 ;
+ END
+ END la_oenb[121]
+ PIN la_oenb[122]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2803.960 -4.000 2804.520 2.400 ;
+ END
+ END la_oenb[122]
+ PIN la_oenb[123]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2821.690 -4.000 2822.250 2.400 ;
+ END
+ END la_oenb[123]
+ PIN la_oenb[124]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2839.420 -4.000 2839.980 2.400 ;
+ END
+ END la_oenb[124]
+ PIN la_oenb[125]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2857.150 -4.000 2857.710 2.400 ;
+ END
+ END la_oenb[125]
+ PIN la_oenb[126]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2874.880 -4.000 2875.440 2.400 ;
+ END
+ END la_oenb[126]
+ PIN la_oenb[127]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2892.610 -4.000 2893.170 2.400 ;
+ END
+ END la_oenb[127]
+ PIN la_oenb[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 853.660 -4.000 854.220 2.400 ;
+ END
+ END la_oenb[12]
+ PIN la_oenb[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 871.390 -4.000 871.950 2.400 ;
+ END
+ END la_oenb[13]
+ PIN la_oenb[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 889.120 -4.000 889.680 2.400 ;
+ END
+ END la_oenb[14]
+ PIN la_oenb[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 906.850 -4.000 907.410 2.400 ;
+ END
+ END la_oenb[15]
+ PIN la_oenb[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 924.580 -4.000 925.140 2.400 ;
+ END
+ END la_oenb[16]
+ PIN la_oenb[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 942.310 -4.000 942.870 2.400 ;
+ END
+ END la_oenb[17]
+ PIN la_oenb[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 960.040 -4.000 960.600 2.400 ;
+ END
+ END la_oenb[18]
+ PIN la_oenb[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 977.770 -4.000 978.330 2.400 ;
+ END
+ END la_oenb[19]
+ PIN la_oenb[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 658.630 -4.000 659.190 2.400 ;
+ END
+ END la_oenb[1]
+ PIN la_oenb[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 995.500 -4.000 996.060 2.400 ;
+ END
+ END la_oenb[20]
+ PIN la_oenb[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1013.230 -4.000 1013.790 2.400 ;
+ END
+ END la_oenb[21]
+ PIN la_oenb[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1030.960 -4.000 1031.520 2.400 ;
+ END
+ END la_oenb[22]
+ PIN la_oenb[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1048.690 -4.000 1049.250 2.400 ;
+ END
+ END la_oenb[23]
+ PIN la_oenb[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1066.420 -4.000 1066.980 2.400 ;
+ END
+ END la_oenb[24]
+ PIN la_oenb[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1084.150 -4.000 1084.710 2.400 ;
+ END
+ END la_oenb[25]
+ PIN la_oenb[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1101.880 -4.000 1102.440 2.400 ;
+ END
+ END la_oenb[26]
+ PIN la_oenb[27]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1119.610 -4.000 1120.170 2.400 ;
+ END
+ END la_oenb[27]
+ PIN la_oenb[28]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1137.340 -4.000 1137.900 2.400 ;
+ END
+ END la_oenb[28]
+ PIN la_oenb[29]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1155.070 -4.000 1155.630 2.400 ;
+ END
+ END la_oenb[29]
+ PIN la_oenb[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 676.360 -4.000 676.920 2.400 ;
+ END
+ END la_oenb[2]
+ PIN la_oenb[30]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1172.800 -4.000 1173.360 2.400 ;
+ END
+ END la_oenb[30]
+ PIN la_oenb[31]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1190.530 -4.000 1191.090 2.400 ;
+ END
+ END la_oenb[31]
+ PIN la_oenb[32]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1208.260 -4.000 1208.820 2.400 ;
+ END
+ END la_oenb[32]
+ PIN la_oenb[33]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1225.990 -4.000 1226.550 2.400 ;
+ END
+ END la_oenb[33]
+ PIN la_oenb[34]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1243.720 -4.000 1244.280 2.400 ;
+ END
+ END la_oenb[34]
+ PIN la_oenb[35]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1261.450 -4.000 1262.010 2.400 ;
+ END
+ END la_oenb[35]
+ PIN la_oenb[36]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1279.180 -4.000 1279.740 2.400 ;
+ END
+ END la_oenb[36]
+ PIN la_oenb[37]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1296.910 -4.000 1297.470 2.400 ;
+ END
+ END la_oenb[37]
+ PIN la_oenb[38]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1314.640 -4.000 1315.200 2.400 ;
+ END
+ END la_oenb[38]
+ PIN la_oenb[39]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1332.370 -4.000 1332.930 2.400 ;
+ END
+ END la_oenb[39]
+ PIN la_oenb[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 694.090 -4.000 694.650 2.400 ;
+ END
+ END la_oenb[3]
+ PIN la_oenb[40]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1350.100 -4.000 1350.660 2.400 ;
+ END
+ END la_oenb[40]
+ PIN la_oenb[41]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1367.830 -4.000 1368.390 2.400 ;
+ END
+ END la_oenb[41]
+ PIN la_oenb[42]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1385.560 -4.000 1386.120 2.400 ;
+ END
+ END la_oenb[42]
+ PIN la_oenb[43]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1403.290 -4.000 1403.850 2.400 ;
+ END
+ END la_oenb[43]
+ PIN la_oenb[44]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1421.020 -4.000 1421.580 2.400 ;
+ END
+ END la_oenb[44]
+ PIN la_oenb[45]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1438.750 -4.000 1439.310 2.400 ;
+ END
+ END la_oenb[45]
+ PIN la_oenb[46]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1456.480 -4.000 1457.040 2.400 ;
+ END
+ END la_oenb[46]
+ PIN la_oenb[47]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1474.210 -4.000 1474.770 2.400 ;
+ END
+ END la_oenb[47]
+ PIN la_oenb[48]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1491.940 -4.000 1492.500 2.400 ;
+ END
+ END la_oenb[48]
+ PIN la_oenb[49]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1509.670 -4.000 1510.230 2.400 ;
+ END
+ END la_oenb[49]
+ PIN la_oenb[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 711.820 -4.000 712.380 2.400 ;
+ END
+ END la_oenb[4]
+ PIN la_oenb[50]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1527.400 -4.000 1527.960 2.400 ;
+ END
+ END la_oenb[50]
+ PIN la_oenb[51]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1545.130 -4.000 1545.690 2.400 ;
+ END
+ END la_oenb[51]
+ PIN la_oenb[52]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1562.860 -4.000 1563.420 2.400 ;
+ END
+ END la_oenb[52]
+ PIN la_oenb[53]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1580.590 -4.000 1581.150 2.400 ;
+ END
+ END la_oenb[53]
+ PIN la_oenb[54]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1598.320 -4.000 1598.880 2.400 ;
+ END
+ END la_oenb[54]
+ PIN la_oenb[55]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1616.050 -4.000 1616.610 2.400 ;
+ END
+ END la_oenb[55]
+ PIN la_oenb[56]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1633.780 -4.000 1634.340 2.400 ;
+ END
+ END la_oenb[56]
+ PIN la_oenb[57]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1651.510 -4.000 1652.070 2.400 ;
+ END
+ END la_oenb[57]
+ PIN la_oenb[58]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1669.240 -4.000 1669.800 2.400 ;
+ END
+ END la_oenb[58]
+ PIN la_oenb[59]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1686.970 -4.000 1687.530 2.400 ;
+ END
+ END la_oenb[59]
+ PIN la_oenb[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 729.550 -4.000 730.110 2.400 ;
+ END
+ END la_oenb[5]
+ PIN la_oenb[60]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1704.700 -4.000 1705.260 2.400 ;
+ END
+ END la_oenb[60]
+ PIN la_oenb[61]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1722.430 -4.000 1722.990 2.400 ;
+ END
+ END la_oenb[61]
+ PIN la_oenb[62]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1740.160 -4.000 1740.720 2.400 ;
+ END
+ END la_oenb[62]
+ PIN la_oenb[63]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1757.890 -4.000 1758.450 2.400 ;
+ END
+ END la_oenb[63]
+ PIN la_oenb[64]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1775.620 -4.000 1776.180 2.400 ;
+ END
+ END la_oenb[64]
+ PIN la_oenb[65]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1793.350 -4.000 1793.910 2.400 ;
+ END
+ END la_oenb[65]
+ PIN la_oenb[66]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1811.080 -4.000 1811.640 2.400 ;
+ END
+ END la_oenb[66]
+ PIN la_oenb[67]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1828.810 -4.000 1829.370 2.400 ;
+ END
+ END la_oenb[67]
+ PIN la_oenb[68]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1846.540 -4.000 1847.100 2.400 ;
+ END
+ END la_oenb[68]
+ PIN la_oenb[69]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1864.270 -4.000 1864.830 2.400 ;
+ END
+ END la_oenb[69]
+ PIN la_oenb[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 747.280 -4.000 747.840 2.400 ;
+ END
+ END la_oenb[6]
+ PIN la_oenb[70]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1882.000 -4.000 1882.560 2.400 ;
+ END
+ END la_oenb[70]
+ PIN la_oenb[71]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1899.730 -4.000 1900.290 2.400 ;
+ END
+ END la_oenb[71]
+ PIN la_oenb[72]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1917.460 -4.000 1918.020 2.400 ;
+ END
+ END la_oenb[72]
+ PIN la_oenb[73]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1935.190 -4.000 1935.750 2.400 ;
+ END
+ END la_oenb[73]
+ PIN la_oenb[74]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1952.920 -4.000 1953.480 2.400 ;
+ END
+ END la_oenb[74]
+ PIN la_oenb[75]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1970.650 -4.000 1971.210 2.400 ;
+ END
+ END la_oenb[75]
+ PIN la_oenb[76]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1988.380 -4.000 1988.940 2.400 ;
+ END
+ END la_oenb[76]
+ PIN la_oenb[77]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2006.110 -4.000 2006.670 2.400 ;
+ END
+ END la_oenb[77]
+ PIN la_oenb[78]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2023.840 -4.000 2024.400 2.400 ;
+ END
+ END la_oenb[78]
+ PIN la_oenb[79]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2041.570 -4.000 2042.130 2.400 ;
+ END
+ END la_oenb[79]
+ PIN la_oenb[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 765.010 -4.000 765.570 2.400 ;
+ END
+ END la_oenb[7]
+ PIN la_oenb[80]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2059.300 -4.000 2059.860 2.400 ;
+ END
+ END la_oenb[80]
+ PIN la_oenb[81]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2077.030 -4.000 2077.590 2.400 ;
+ END
+ END la_oenb[81]
+ PIN la_oenb[82]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2094.760 -4.000 2095.320 2.400 ;
+ END
+ END la_oenb[82]
+ PIN la_oenb[83]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2112.490 -4.000 2113.050 2.400 ;
+ END
+ END la_oenb[83]
+ PIN la_oenb[84]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2130.220 -4.000 2130.780 2.400 ;
+ END
+ END la_oenb[84]
+ PIN la_oenb[85]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2147.950 -4.000 2148.510 2.400 ;
+ END
+ END la_oenb[85]
+ PIN la_oenb[86]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2165.680 -4.000 2166.240 2.400 ;
+ END
+ END la_oenb[86]
+ PIN la_oenb[87]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2183.410 -4.000 2183.970 2.400 ;
+ END
+ END la_oenb[87]
+ PIN la_oenb[88]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2201.140 -4.000 2201.700 2.400 ;
+ END
+ END la_oenb[88]
+ PIN la_oenb[89]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2218.870 -4.000 2219.430 2.400 ;
+ END
+ END la_oenb[89]
+ PIN la_oenb[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 782.740 -4.000 783.300 2.400 ;
+ END
+ END la_oenb[8]
+ PIN la_oenb[90]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2236.600 -4.000 2237.160 2.400 ;
+ END
+ END la_oenb[90]
+ PIN la_oenb[91]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2254.330 -4.000 2254.890 2.400 ;
+ END
+ END la_oenb[91]
+ PIN la_oenb[92]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2272.060 -4.000 2272.620 2.400 ;
+ END
+ END la_oenb[92]
+ PIN la_oenb[93]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2289.790 -4.000 2290.350 2.400 ;
+ END
+ END la_oenb[93]
+ PIN la_oenb[94]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2307.520 -4.000 2308.080 2.400 ;
+ END
+ END la_oenb[94]
+ PIN la_oenb[95]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2325.250 -4.000 2325.810 2.400 ;
+ END
+ END la_oenb[95]
+ PIN la_oenb[96]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2342.980 -4.000 2343.540 2.400 ;
+ END
+ END la_oenb[96]
+ PIN la_oenb[97]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2360.710 -4.000 2361.270 2.400 ;
+ END
+ END la_oenb[97]
+ PIN la_oenb[98]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2378.440 -4.000 2379.000 2.400 ;
+ END
+ END la_oenb[98]
+ PIN la_oenb[99]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2396.170 -4.000 2396.730 2.400 ;
+ END
+ END la_oenb[99]
+ PIN la_oenb[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 800.470 -4.000 801.030 2.400 ;
+ END
+ END la_oenb[9]
+ PIN user_clock2
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2898.520 -4.000 2899.080 2.400 ;
+ END
+ END user_clock2
+ PIN user_irq[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2904.430 -4.000 2904.990 2.400 ;
+ END
+ END user_irq[0]
+ PIN user_irq[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2910.340 -4.000 2910.900 2.400 ;
+ END
+ END user_irq[1]
+ PIN user_irq[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2916.250 -4.000 2916.810 2.400 ;
+ END
+ END user_irq[2]
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 3198.920 2920.000 3222.920 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 3148.920 2920.000 3172.920 ;
+ END
+ END vccd1
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 3219.210 8.300 3243.210 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 3169.210 8.300 3193.210 ;
+ END
+ END vccd2
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 2702.810 2920.000 2726.810 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 2752.810 2920.000 2776.810 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 1176.150 2920.000 1200.150 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 1126.150 2920.000 1150.150 ;
+ END
+ END vdda1
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 1024.440 8.300 1048.440 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 1074.440 8.300 1098.440 ;
+ END
+ END vdda2
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2602.970 3511.700 2626.970 3520.000 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2552.970 3511.700 2576.970 3520.000 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 734.150 2920.000 758.150 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 684.150 2920.000 708.150 ;
+ END
+ END vssa1
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 2797.210 8.300 2821.210 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 2747.210 8.300 2771.210 ;
+ END
+ END vssa2
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 957.150 2920.000 981.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2911.700 907.150 2920.000 931.150 ;
+ END
+ END vssd1
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 864.440 8.300 888.440 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 814.440 8.300 838.440 ;
+ END
+ END vssd2
+ PIN wb_clk_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2.620 -4.000 3.180 2.400 ;
+ END
+ END wb_clk_i
+ PIN wb_rst_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 8.530 -4.000 9.090 2.400 ;
+ END
+ END wb_rst_i
+ PIN wbs_ack_o
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 14.440 -4.000 15.000 2.400 ;
+ END
+ END wbs_ack_o
+ PIN wbs_adr_i[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 38.080 -4.000 38.640 2.400 ;
+ END
+ END wbs_adr_i[0]
+ PIN wbs_adr_i[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 239.020 -4.000 239.580 2.400 ;
+ END
+ END wbs_adr_i[10]
+ PIN wbs_adr_i[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 256.750 -4.000 257.310 2.400 ;
+ END
+ END wbs_adr_i[11]
+ PIN wbs_adr_i[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 274.480 -4.000 275.040 2.400 ;
+ END
+ END wbs_adr_i[12]
+ PIN wbs_adr_i[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 292.210 -4.000 292.770 2.400 ;
+ END
+ END wbs_adr_i[13]
+ PIN wbs_adr_i[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 309.940 -4.000 310.500 2.400 ;
+ END
+ END wbs_adr_i[14]
+ PIN wbs_adr_i[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 327.670 -4.000 328.230 2.400 ;
+ END
+ END wbs_adr_i[15]
+ PIN wbs_adr_i[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 345.400 -4.000 345.960 2.400 ;
+ END
+ END wbs_adr_i[16]
+ PIN wbs_adr_i[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 363.130 -4.000 363.690 2.400 ;
+ END
+ END wbs_adr_i[17]
+ PIN wbs_adr_i[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 380.860 -4.000 381.420 2.400 ;
+ END
+ END wbs_adr_i[18]
+ PIN wbs_adr_i[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 398.590 -4.000 399.150 2.400 ;
+ END
+ END wbs_adr_i[19]
+ PIN wbs_adr_i[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 61.720 -4.000 62.280 2.400 ;
+ END
+ END wbs_adr_i[1]
+ PIN wbs_adr_i[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 416.320 -4.000 416.880 2.400 ;
+ END
+ END wbs_adr_i[20]
+ PIN wbs_adr_i[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 434.050 -4.000 434.610 2.400 ;
+ END
+ END wbs_adr_i[21]
+ PIN wbs_adr_i[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 451.780 -4.000 452.340 2.400 ;
+ END
+ END wbs_adr_i[22]
+ PIN wbs_adr_i[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 469.510 -4.000 470.070 2.400 ;
+ END
+ END wbs_adr_i[23]
+ PIN wbs_adr_i[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 487.240 -4.000 487.800 2.400 ;
+ END
+ END wbs_adr_i[24]
+ PIN wbs_adr_i[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 504.970 -4.000 505.530 2.400 ;
+ END
+ END wbs_adr_i[25]
+ PIN wbs_adr_i[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 522.700 -4.000 523.260 2.400 ;
+ END
+ END wbs_adr_i[26]
+ PIN wbs_adr_i[27]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 540.430 -4.000 540.990 2.400 ;
+ END
+ END wbs_adr_i[27]
+ PIN wbs_adr_i[28]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 558.160 -4.000 558.720 2.400 ;
+ END
+ END wbs_adr_i[28]
+ PIN wbs_adr_i[29]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 575.890 -4.000 576.450 2.400 ;
+ END
+ END wbs_adr_i[29]
+ PIN wbs_adr_i[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 85.360 -4.000 85.920 2.400 ;
+ END
+ END wbs_adr_i[2]
+ PIN wbs_adr_i[30]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 593.620 -4.000 594.180 2.400 ;
+ END
+ END wbs_adr_i[30]
+ PIN wbs_adr_i[31]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 611.350 -4.000 611.910 2.400 ;
+ END
+ END wbs_adr_i[31]
+ PIN wbs_adr_i[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 109.000 -4.000 109.560 2.400 ;
+ END
+ END wbs_adr_i[3]
+ PIN wbs_adr_i[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 132.640 -4.000 133.200 2.400 ;
+ END
+ END wbs_adr_i[4]
+ PIN wbs_adr_i[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 150.370 -4.000 150.930 2.400 ;
+ END
+ END wbs_adr_i[5]
+ PIN wbs_adr_i[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 168.100 -4.000 168.660 2.400 ;
+ END
+ END wbs_adr_i[6]
+ PIN wbs_adr_i[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 185.830 -4.000 186.390 2.400 ;
+ END
+ END wbs_adr_i[7]
+ PIN wbs_adr_i[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 203.560 -4.000 204.120 2.400 ;
+ END
+ END wbs_adr_i[8]
+ PIN wbs_adr_i[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 221.290 -4.000 221.850 2.400 ;
+ END
+ END wbs_adr_i[9]
+ PIN wbs_cyc_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 20.350 -4.000 20.910 2.400 ;
+ END
+ END wbs_cyc_i
+ PIN wbs_dat_i[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 43.990 -4.000 44.550 2.400 ;
+ END
+ END wbs_dat_i[0]
+ PIN wbs_dat_i[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 244.930 -4.000 245.490 2.400 ;
+ END
+ END wbs_dat_i[10]
+ PIN wbs_dat_i[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 262.660 -4.000 263.220 2.400 ;
+ END
+ END wbs_dat_i[11]
+ PIN wbs_dat_i[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 280.390 -4.000 280.950 2.400 ;
+ END
+ END wbs_dat_i[12]
+ PIN wbs_dat_i[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 298.120 -4.000 298.680 2.400 ;
+ END
+ END wbs_dat_i[13]
+ PIN wbs_dat_i[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 315.850 -4.000 316.410 2.400 ;
+ END
+ END wbs_dat_i[14]
+ PIN wbs_dat_i[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 333.580 -4.000 334.140 2.400 ;
+ END
+ END wbs_dat_i[15]
+ PIN wbs_dat_i[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 351.310 -4.000 351.870 2.400 ;
+ END
+ END wbs_dat_i[16]
+ PIN wbs_dat_i[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 369.040 -4.000 369.600 2.400 ;
+ END
+ END wbs_dat_i[17]
+ PIN wbs_dat_i[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 386.770 -4.000 387.330 2.400 ;
+ END
+ END wbs_dat_i[18]
+ PIN wbs_dat_i[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 404.500 -4.000 405.060 2.400 ;
+ END
+ END wbs_dat_i[19]
+ PIN wbs_dat_i[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 67.630 -4.000 68.190 2.400 ;
+ END
+ END wbs_dat_i[1]
+ PIN wbs_dat_i[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 422.230 -4.000 422.790 2.400 ;
+ END
+ END wbs_dat_i[20]
+ PIN wbs_dat_i[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 439.960 -4.000 440.520 2.400 ;
+ END
+ END wbs_dat_i[21]
+ PIN wbs_dat_i[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 457.690 -4.000 458.250 2.400 ;
+ END
+ END wbs_dat_i[22]
+ PIN wbs_dat_i[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 475.420 -4.000 475.980 2.400 ;
+ END
+ END wbs_dat_i[23]
+ PIN wbs_dat_i[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 493.150 -4.000 493.710 2.400 ;
+ END
+ END wbs_dat_i[24]
+ PIN wbs_dat_i[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 510.880 -4.000 511.440 2.400 ;
+ END
+ END wbs_dat_i[25]
+ PIN wbs_dat_i[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 528.610 -4.000 529.170 2.400 ;
+ END
+ END wbs_dat_i[26]
+ PIN wbs_dat_i[27]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 546.340 -4.000 546.900 2.400 ;
+ END
+ END wbs_dat_i[27]
+ PIN wbs_dat_i[28]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 564.070 -4.000 564.630 2.400 ;
+ END
+ END wbs_dat_i[28]
+ PIN wbs_dat_i[29]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 581.800 -4.000 582.360 2.400 ;
+ END
+ END wbs_dat_i[29]
+ PIN wbs_dat_i[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 91.270 -4.000 91.830 2.400 ;
+ END
+ END wbs_dat_i[2]
+ PIN wbs_dat_i[30]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 599.530 -4.000 600.090 2.400 ;
+ END
+ END wbs_dat_i[30]
+ PIN wbs_dat_i[31]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 617.260 -4.000 617.820 2.400 ;
+ END
+ END wbs_dat_i[31]
+ PIN wbs_dat_i[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 114.910 -4.000 115.470 2.400 ;
+ END
+ END wbs_dat_i[3]
+ PIN wbs_dat_i[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 138.550 -4.000 139.110 2.400 ;
+ END
+ END wbs_dat_i[4]
+ PIN wbs_dat_i[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 156.280 -4.000 156.840 2.400 ;
+ END
+ END wbs_dat_i[5]
+ PIN wbs_dat_i[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 174.010 -4.000 174.570 2.400 ;
+ END
+ END wbs_dat_i[6]
+ PIN wbs_dat_i[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 191.740 -4.000 192.300 2.400 ;
+ END
+ END wbs_dat_i[7]
+ PIN wbs_dat_i[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 209.470 -4.000 210.030 2.400 ;
+ END
+ END wbs_dat_i[8]
+ PIN wbs_dat_i[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 227.200 -4.000 227.760 2.400 ;
+ END
+ END wbs_dat_i[9]
+ PIN wbs_dat_o[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 49.900 -4.000 50.460 2.400 ;
+ END
+ END wbs_dat_o[0]
+ PIN wbs_dat_o[10]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 250.840 -4.000 251.400 2.400 ;
+ END
+ END wbs_dat_o[10]
+ PIN wbs_dat_o[11]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 268.570 -4.000 269.130 2.400 ;
+ END
+ END wbs_dat_o[11]
+ PIN wbs_dat_o[12]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 286.300 -4.000 286.860 2.400 ;
+ END
+ END wbs_dat_o[12]
+ PIN wbs_dat_o[13]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 304.030 -4.000 304.590 2.400 ;
+ END
+ END wbs_dat_o[13]
+ PIN wbs_dat_o[14]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 321.760 -4.000 322.320 2.400 ;
+ END
+ END wbs_dat_o[14]
+ PIN wbs_dat_o[15]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 339.490 -4.000 340.050 2.400 ;
+ END
+ END wbs_dat_o[15]
+ PIN wbs_dat_o[16]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 357.220 -4.000 357.780 2.400 ;
+ END
+ END wbs_dat_o[16]
+ PIN wbs_dat_o[17]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 374.950 -4.000 375.510 2.400 ;
+ END
+ END wbs_dat_o[17]
+ PIN wbs_dat_o[18]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 392.680 -4.000 393.240 2.400 ;
+ END
+ END wbs_dat_o[18]
+ PIN wbs_dat_o[19]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 410.410 -4.000 410.970 2.400 ;
+ END
+ END wbs_dat_o[19]
+ PIN wbs_dat_o[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 73.540 -4.000 74.100 2.400 ;
+ END
+ END wbs_dat_o[1]
+ PIN wbs_dat_o[20]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 428.140 -4.000 428.700 2.400 ;
+ END
+ END wbs_dat_o[20]
+ PIN wbs_dat_o[21]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 445.870 -4.000 446.430 2.400 ;
+ END
+ END wbs_dat_o[21]
+ PIN wbs_dat_o[22]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 463.600 -4.000 464.160 2.400 ;
+ END
+ END wbs_dat_o[22]
+ PIN wbs_dat_o[23]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 481.330 -4.000 481.890 2.400 ;
+ END
+ END wbs_dat_o[23]
+ PIN wbs_dat_o[24]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 499.060 -4.000 499.620 2.400 ;
+ END
+ END wbs_dat_o[24]
+ PIN wbs_dat_o[25]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 516.790 -4.000 517.350 2.400 ;
+ END
+ END wbs_dat_o[25]
+ PIN wbs_dat_o[26]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 534.520 -4.000 535.080 2.400 ;
+ END
+ END wbs_dat_o[26]
+ PIN wbs_dat_o[27]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 552.250 -4.000 552.810 2.400 ;
+ END
+ END wbs_dat_o[27]
+ PIN wbs_dat_o[28]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 569.980 -4.000 570.540 2.400 ;
+ END
+ END wbs_dat_o[28]
+ PIN wbs_dat_o[29]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 587.710 -4.000 588.270 2.400 ;
+ END
+ END wbs_dat_o[29]
+ PIN wbs_dat_o[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 97.180 -4.000 97.740 2.400 ;
+ END
+ END wbs_dat_o[2]
+ PIN wbs_dat_o[30]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 605.440 -4.000 606.000 2.400 ;
+ END
+ END wbs_dat_o[30]
+ PIN wbs_dat_o[31]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 623.170 -4.000 623.730 2.400 ;
+ END
+ END wbs_dat_o[31]
+ PIN wbs_dat_o[3]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 120.820 -4.000 121.380 2.400 ;
+ END
+ END wbs_dat_o[3]
+ PIN wbs_dat_o[4]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 144.460 -4.000 145.020 2.400 ;
+ END
+ END wbs_dat_o[4]
+ PIN wbs_dat_o[5]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 162.190 -4.000 162.750 2.400 ;
+ END
+ END wbs_dat_o[5]
+ PIN wbs_dat_o[6]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 179.920 -4.000 180.480 2.400 ;
+ END
+ END wbs_dat_o[6]
+ PIN wbs_dat_o[7]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 197.650 -4.000 198.210 2.400 ;
+ END
+ END wbs_dat_o[7]
+ PIN wbs_dat_o[8]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 215.380 -4.000 215.940 2.400 ;
+ END
+ END wbs_dat_o[8]
+ PIN wbs_dat_o[9]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 233.110 -4.000 233.670 2.400 ;
+ END
+ END wbs_dat_o[9]
+ PIN wbs_sel_i[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 55.810 -4.000 56.370 2.400 ;
+ END
+ END wbs_sel_i[0]
+ PIN wbs_sel_i[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 79.450 -4.000 80.010 2.400 ;
+ END
+ END wbs_sel_i[1]
+ PIN wbs_sel_i[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 103.090 -4.000 103.650 2.400 ;
+ END
+ END wbs_sel_i[2]
+ PIN wbs_sel_i[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 126.730 -4.000 127.290 2.400 ;
+ END
+ END wbs_sel_i[3]
+ PIN wbs_stb_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 26.260 -4.000 26.820 2.400 ;
+ END
+ END wbs_stb_i
+ PIN wbs_we_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 32.170 -4.000 32.730 2.400 ;
+ END
+ END wbs_we_i
+END user_analog_project_wrapper
+END LIBRARY
+
diff --git a/caravel/lef/user_project_wrapper_empty.lef b/caravel/lef/user_project_wrapper_empty.lef
new file mode 100644
index 0000000..bd3a60f
--- /dev/null
+++ b/caravel/lef/user_project_wrapper_empty.lef
@@ -0,0 +1,7660 @@
+VERSION 5.7 ;
+ NOWIREEXTENSIONATPIN ON ;
+ DIVIDERCHAR "/" ;
+ BUSBITCHARS "[]" ;
+MACRO user_project_wrapper
+ CLASS BLOCK ;
+ FOREIGN user_project_wrapper ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 2920.000 BY 3520.000 ;
+ PIN analog_io[0]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1426.380 2924.800 1427.580 ;
+ END
+ END analog_io[0]
+ PIN analog_io[10]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2230.490 3517.600 2231.050 3524.800 ;
+ END
+ END analog_io[10]
+ PIN analog_io[11]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1905.730 3517.600 1906.290 3524.800 ;
+ END
+ END analog_io[11]
+ PIN analog_io[12]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1581.430 3517.600 1581.990 3524.800 ;
+ END
+ END analog_io[12]
+ PIN analog_io[13]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1257.130 3517.600 1257.690 3524.800 ;
+ END
+ END analog_io[13]
+ PIN analog_io[14]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 932.370 3517.600 932.930 3524.800 ;
+ END
+ END analog_io[14]
+ PIN analog_io[15]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 608.070 3517.600 608.630 3524.800 ;
+ END
+ END analog_io[15]
+ PIN analog_io[16]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 283.770 3517.600 284.330 3524.800 ;
+ END
+ END analog_io[16]
+ PIN analog_io[17]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 3486.100 2.400 3487.300 ;
+ END
+ END analog_io[17]
+ PIN analog_io[18]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 3224.980 2.400 3226.180 ;
+ END
+ END analog_io[18]
+ PIN analog_io[19]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2964.540 2.400 2965.740 ;
+ END
+ END analog_io[19]
+ PIN analog_io[1]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1692.260 2924.800 1693.460 ;
+ END
+ END analog_io[1]
+ PIN analog_io[20]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2703.420 2.400 2704.620 ;
+ END
+ END analog_io[20]
+ PIN analog_io[21]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2442.980 2.400 2444.180 ;
+ END
+ END analog_io[21]
+ PIN analog_io[22]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2182.540 2.400 2183.740 ;
+ END
+ END analog_io[22]
+ PIN analog_io[23]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1921.420 2.400 1922.620 ;
+ END
+ END analog_io[23]
+ PIN analog_io[24]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1660.980 2.400 1662.180 ;
+ END
+ END analog_io[24]
+ PIN analog_io[25]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1399.860 2.400 1401.060 ;
+ END
+ END analog_io[25]
+ PIN analog_io[26]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1139.420 2.400 1140.620 ;
+ END
+ END analog_io[26]
+ PIN analog_io[27]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 878.980 2.400 880.180 ;
+ END
+ END analog_io[27]
+ PIN analog_io[28]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 617.860 2.400 619.060 ;
+ END
+ END analog_io[28]
+ PIN analog_io[2]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1958.140 2924.800 1959.340 ;
+ END
+ END analog_io[2]
+ PIN analog_io[3]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2223.340 2924.800 2224.540 ;
+ END
+ END analog_io[3]
+ PIN analog_io[4]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2489.220 2924.800 2490.420 ;
+ END
+ END analog_io[4]
+ PIN analog_io[5]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2755.100 2924.800 2756.300 ;
+ END
+ END analog_io[5]
+ PIN analog_io[6]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 3020.300 2924.800 3021.500 ;
+ END
+ END analog_io[6]
+ PIN analog_io[7]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 3286.180 2924.800 3287.380 ;
+ END
+ END analog_io[7]
+ PIN analog_io[8]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2879.090 3517.600 2879.650 3524.800 ;
+ END
+ END analog_io[8]
+ PIN analog_io[9]
+ DIRECTION INOUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2554.790 3517.600 2555.350 3524.800 ;
+ END
+ END analog_io[9]
+ PIN io_in[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 32.380 2924.800 33.580 ;
+ END
+ END io_in[0]
+ PIN io_out[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 98.340 2924.800 99.540 ;
+ END
+ END io_out[0]
+ PIN io_in[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2289.980 2924.800 2291.180 ;
+ END
+ END io_in[10]
+ PIN io_out[10]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2356.620 2924.800 2357.820 ;
+ END
+ END io_out[10]
+ PIN io_in[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2555.860 2924.800 2557.060 ;
+ END
+ END io_in[11]
+ PIN io_out[11]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2621.820 2924.800 2623.020 ;
+ END
+ END io_out[11]
+ PIN io_in[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2821.060 2924.800 2822.260 ;
+ END
+ END io_in[12]
+ PIN io_out[12]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2887.700 2924.800 2888.900 ;
+ END
+ END io_out[12]
+ PIN io_in[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 3086.940 2924.800 3088.140 ;
+ END
+ END io_in[13]
+ PIN io_out[13]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 3153.580 2924.800 3154.780 ;
+ END
+ END io_out[13]
+ PIN io_in[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 3352.820 2924.800 3354.020 ;
+ END
+ END io_in[14]
+ PIN io_out[14]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 3418.780 2924.800 3419.980 ;
+ END
+ END io_out[14]
+ PIN io_in[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2798.130 3517.600 2798.690 3524.800 ;
+ END
+ END io_in[15]
+ PIN io_out[15]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2717.170 3517.600 2717.730 3524.800 ;
+ END
+ END io_out[15]
+ PIN io_in[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2473.830 3517.600 2474.390 3524.800 ;
+ END
+ END io_in[16]
+ PIN io_out[16]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2392.410 3517.600 2392.970 3524.800 ;
+ END
+ END io_out[16]
+ PIN io_in[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2149.070 3517.600 2149.630 3524.800 ;
+ END
+ END io_in[17]
+ PIN io_out[17]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2068.110 3517.600 2068.670 3524.800 ;
+ END
+ END io_out[17]
+ PIN io_in[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1824.770 3517.600 1825.330 3524.800 ;
+ END
+ END io_in[18]
+ PIN io_out[18]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1743.810 3517.600 1744.370 3524.800 ;
+ END
+ END io_out[18]
+ PIN io_in[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1500.470 3517.600 1501.030 3524.800 ;
+ END
+ END io_in[19]
+ PIN io_out[19]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1419.050 3517.600 1419.610 3524.800 ;
+ END
+ END io_out[19]
+ PIN io_in[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 230.940 2924.800 232.140 ;
+ END
+ END io_in[1]
+ PIN io_out[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 297.580 2924.800 298.780 ;
+ END
+ END io_out[1]
+ PIN io_in[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1175.710 3517.600 1176.270 3524.800 ;
+ END
+ END io_in[20]
+ PIN io_out[20]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1094.750 3517.600 1095.310 3524.800 ;
+ END
+ END io_out[20]
+ PIN io_in[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 851.410 3517.600 851.970 3524.800 ;
+ END
+ END io_in[21]
+ PIN io_out[21]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 770.450 3517.600 771.010 3524.800 ;
+ END
+ END io_out[21]
+ PIN io_in[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 527.110 3517.600 527.670 3524.800 ;
+ END
+ END io_in[22]
+ PIN io_out[22]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 445.690 3517.600 446.250 3524.800 ;
+ END
+ END io_out[22]
+ PIN io_in[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 202.350 3517.600 202.910 3524.800 ;
+ END
+ END io_in[23]
+ PIN io_out[23]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 121.390 3517.600 121.950 3524.800 ;
+ END
+ END io_out[23]
+ PIN io_in[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 3420.820 2.400 3422.020 ;
+ END
+ END io_in[24]
+ PIN io_out[24]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 3355.540 2.400 3356.740 ;
+ END
+ END io_out[24]
+ PIN io_in[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 3159.700 2.400 3160.900 ;
+ END
+ END io_in[25]
+ PIN io_out[25]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 3095.100 2.400 3096.300 ;
+ END
+ END io_out[25]
+ PIN io_in[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2899.260 2.400 2900.460 ;
+ END
+ END io_in[26]
+ PIN io_out[26]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2833.980 2.400 2835.180 ;
+ END
+ END io_out[26]
+ PIN io_in[27]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2638.820 2.400 2640.020 ;
+ END
+ END io_in[27]
+ PIN io_out[27]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2573.540 2.400 2574.740 ;
+ END
+ END io_out[27]
+ PIN io_in[28]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2377.700 2.400 2378.900 ;
+ END
+ END io_in[28]
+ PIN io_out[28]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2312.420 2.400 2313.620 ;
+ END
+ END io_out[28]
+ PIN io_in[29]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2117.260 2.400 2118.460 ;
+ END
+ END io_in[29]
+ PIN io_out[29]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2051.980 2.400 2053.180 ;
+ END
+ END io_out[29]
+ PIN io_in[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 430.180 2924.800 431.380 ;
+ END
+ END io_in[2]
+ PIN io_out[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 496.820 2924.800 498.020 ;
+ END
+ END io_out[2]
+ PIN io_in[30]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1856.140 2.400 1857.340 ;
+ END
+ END io_in[30]
+ PIN io_out[30]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1791.540 2.400 1792.740 ;
+ END
+ END io_out[30]
+ PIN io_in[31]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1595.700 2.400 1596.900 ;
+ END
+ END io_in[31]
+ PIN io_out[31]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1530.420 2.400 1531.620 ;
+ END
+ END io_out[31]
+ PIN io_in[32]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1335.260 2.400 1336.460 ;
+ END
+ END io_in[32]
+ PIN io_out[32]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1269.980 2.400 1271.180 ;
+ END
+ END io_out[32]
+ PIN io_in[33]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1074.140 2.400 1075.340 ;
+ END
+ END io_in[33]
+ PIN io_out[33]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1008.860 2.400 1010.060 ;
+ END
+ END io_out[33]
+ PIN io_in[34]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 813.700 2.400 814.900 ;
+ END
+ END io_in[34]
+ PIN io_out[34]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 748.420 2.400 749.620 ;
+ END
+ END io_out[34]
+ PIN io_in[35]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 552.580 2.400 553.780 ;
+ END
+ END io_in[35]
+ PIN io_out[35]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 487.300 2.400 488.500 ;
+ END
+ END io_out[35]
+ PIN io_in[36]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 357.420 2.400 358.620 ;
+ END
+ END io_in[36]
+ PIN io_out[36]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 292.140 2.400 293.340 ;
+ END
+ END io_out[36]
+ PIN io_in[37]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 161.580 2.400 162.780 ;
+ END
+ END io_in[37]
+ PIN io_out[37]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 96.300 2.400 97.500 ;
+ END
+ END io_out[37]
+ PIN io_in[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 629.420 2924.800 630.620 ;
+ END
+ END io_in[3]
+ PIN io_out[3]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 696.060 2924.800 697.260 ;
+ END
+ END io_out[3]
+ PIN io_in[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 828.660 2924.800 829.860 ;
+ END
+ END io_in[4]
+ PIN io_out[4]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 895.300 2924.800 896.500 ;
+ END
+ END io_out[4]
+ PIN io_in[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1027.900 2924.800 1029.100 ;
+ END
+ END io_in[5]
+ PIN io_out[5]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1094.540 2924.800 1095.740 ;
+ END
+ END io_out[5]
+ PIN io_in[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1227.140 2924.800 1228.340 ;
+ END
+ END io_in[6]
+ PIN io_out[6]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1293.780 2924.800 1294.980 ;
+ END
+ END io_out[6]
+ PIN io_in[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1493.020 2924.800 1494.220 ;
+ END
+ END io_in[7]
+ PIN io_out[7]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1559.660 2924.800 1560.860 ;
+ END
+ END io_out[7]
+ PIN io_in[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1758.900 2924.800 1760.100 ;
+ END
+ END io_in[8]
+ PIN io_out[8]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1824.860 2924.800 1826.060 ;
+ END
+ END io_out[8]
+ PIN io_in[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2024.100 2924.800 2025.300 ;
+ END
+ END io_in[9]
+ PIN io_out[9]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2090.740 2924.800 2091.940 ;
+ END
+ END io_out[9]
+ PIN io_oeb[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 164.980 2924.800 166.180 ;
+ END
+ END io_oeb[0]
+ PIN io_oeb[10]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2422.580 2924.800 2423.780 ;
+ END
+ END io_oeb[10]
+ PIN io_oeb[11]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2688.460 2924.800 2689.660 ;
+ END
+ END io_oeb[11]
+ PIN io_oeb[12]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2954.340 2924.800 2955.540 ;
+ END
+ END io_oeb[12]
+ PIN io_oeb[13]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 3219.540 2924.800 3220.740 ;
+ END
+ END io_oeb[13]
+ PIN io_oeb[14]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 3485.420 2924.800 3486.620 ;
+ END
+ END io_oeb[14]
+ PIN io_oeb[15]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2635.750 3517.600 2636.310 3524.800 ;
+ END
+ END io_oeb[15]
+ PIN io_oeb[16]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2311.450 3517.600 2312.010 3524.800 ;
+ END
+ END io_oeb[16]
+ PIN io_oeb[17]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1987.150 3517.600 1987.710 3524.800 ;
+ END
+ END io_oeb[17]
+ PIN io_oeb[18]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1662.390 3517.600 1662.950 3524.800 ;
+ END
+ END io_oeb[18]
+ PIN io_oeb[19]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1338.090 3517.600 1338.650 3524.800 ;
+ END
+ END io_oeb[19]
+ PIN io_oeb[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 364.220 2924.800 365.420 ;
+ END
+ END io_oeb[1]
+ PIN io_oeb[20]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1013.790 3517.600 1014.350 3524.800 ;
+ END
+ END io_oeb[20]
+ PIN io_oeb[21]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 689.030 3517.600 689.590 3524.800 ;
+ END
+ END io_oeb[21]
+ PIN io_oeb[22]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 364.730 3517.600 365.290 3524.800 ;
+ END
+ END io_oeb[22]
+ PIN io_oeb[23]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 40.430 3517.600 40.990 3524.800 ;
+ END
+ END io_oeb[23]
+ PIN io_oeb[24]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 3290.260 2.400 3291.460 ;
+ END
+ END io_oeb[24]
+ PIN io_oeb[25]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 3029.820 2.400 3031.020 ;
+ END
+ END io_oeb[25]
+ PIN io_oeb[26]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2768.700 2.400 2769.900 ;
+ END
+ END io_oeb[26]
+ PIN io_oeb[27]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2508.260 2.400 2509.460 ;
+ END
+ END io_oeb[27]
+ PIN io_oeb[28]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 2247.140 2.400 2248.340 ;
+ END
+ END io_oeb[28]
+ PIN io_oeb[29]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1986.700 2.400 1987.900 ;
+ END
+ END io_oeb[29]
+ PIN io_oeb[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 563.460 2924.800 564.660 ;
+ END
+ END io_oeb[2]
+ PIN io_oeb[30]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1726.260 2.400 1727.460 ;
+ END
+ END io_oeb[30]
+ PIN io_oeb[31]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1465.140 2.400 1466.340 ;
+ END
+ END io_oeb[31]
+ PIN io_oeb[32]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 1204.700 2.400 1205.900 ;
+ END
+ END io_oeb[32]
+ PIN io_oeb[33]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 943.580 2.400 944.780 ;
+ END
+ END io_oeb[33]
+ PIN io_oeb[34]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 683.140 2.400 684.340 ;
+ END
+ END io_oeb[34]
+ PIN io_oeb[35]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 422.700 2.400 423.900 ;
+ END
+ END io_oeb[35]
+ PIN io_oeb[36]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 226.860 2.400 228.060 ;
+ END
+ END io_oeb[36]
+ PIN io_oeb[37]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT -4.800 31.700 2.400 32.900 ;
+ END
+ END io_oeb[37]
+ PIN io_oeb[3]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 762.700 2924.800 763.900 ;
+ END
+ END io_oeb[3]
+ PIN io_oeb[4]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 961.940 2924.800 963.140 ;
+ END
+ END io_oeb[4]
+ PIN io_oeb[5]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1161.180 2924.800 1162.380 ;
+ END
+ END io_oeb[5]
+ PIN io_oeb[6]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1360.420 2924.800 1361.620 ;
+ END
+ END io_oeb[6]
+ PIN io_oeb[7]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1625.620 2924.800 1626.820 ;
+ END
+ END io_oeb[7]
+ PIN io_oeb[8]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 1891.500 2924.800 1892.700 ;
+ END
+ END io_oeb[8]
+ PIN io_oeb[9]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met3 ;
+ RECT 2917.600 2157.380 2924.800 2158.580 ;
+ END
+ END io_oeb[9]
+ PIN la_data_in[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 629.230 -4.800 629.790 2.400 ;
+ END
+ END la_data_in[0]
+ PIN la_data_in[100]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2402.530 -4.800 2403.090 2.400 ;
+ END
+ END la_data_in[100]
+ PIN la_data_in[101]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2420.010 -4.800 2420.570 2.400 ;
+ END
+ END la_data_in[101]
+ PIN la_data_in[102]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2437.950 -4.800 2438.510 2.400 ;
+ END
+ END la_data_in[102]
+ PIN la_data_in[103]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2455.430 -4.800 2455.990 2.400 ;
+ END
+ END la_data_in[103]
+ PIN la_data_in[104]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2473.370 -4.800 2473.930 2.400 ;
+ END
+ END la_data_in[104]
+ PIN la_data_in[105]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2490.850 -4.800 2491.410 2.400 ;
+ END
+ END la_data_in[105]
+ PIN la_data_in[106]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2508.790 -4.800 2509.350 2.400 ;
+ END
+ END la_data_in[106]
+ PIN la_data_in[107]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2526.730 -4.800 2527.290 2.400 ;
+ END
+ END la_data_in[107]
+ PIN la_data_in[108]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2544.210 -4.800 2544.770 2.400 ;
+ END
+ END la_data_in[108]
+ PIN la_data_in[109]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2562.150 -4.800 2562.710 2.400 ;
+ END
+ END la_data_in[109]
+ PIN la_data_in[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 806.330 -4.800 806.890 2.400 ;
+ END
+ END la_data_in[10]
+ PIN la_data_in[110]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2579.630 -4.800 2580.190 2.400 ;
+ END
+ END la_data_in[110]
+ PIN la_data_in[111]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2597.570 -4.800 2598.130 2.400 ;
+ END
+ END la_data_in[111]
+ PIN la_data_in[112]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2615.050 -4.800 2615.610 2.400 ;
+ END
+ END la_data_in[112]
+ PIN la_data_in[113]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2632.990 -4.800 2633.550 2.400 ;
+ END
+ END la_data_in[113]
+ PIN la_data_in[114]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2650.470 -4.800 2651.030 2.400 ;
+ END
+ END la_data_in[114]
+ PIN la_data_in[115]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2668.410 -4.800 2668.970 2.400 ;
+ END
+ END la_data_in[115]
+ PIN la_data_in[116]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2685.890 -4.800 2686.450 2.400 ;
+ END
+ END la_data_in[116]
+ PIN la_data_in[117]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2703.830 -4.800 2704.390 2.400 ;
+ END
+ END la_data_in[117]
+ PIN la_data_in[118]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2721.770 -4.800 2722.330 2.400 ;
+ END
+ END la_data_in[118]
+ PIN la_data_in[119]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2739.250 -4.800 2739.810 2.400 ;
+ END
+ END la_data_in[119]
+ PIN la_data_in[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 824.270 -4.800 824.830 2.400 ;
+ END
+ END la_data_in[11]
+ PIN la_data_in[120]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2757.190 -4.800 2757.750 2.400 ;
+ END
+ END la_data_in[120]
+ PIN la_data_in[121]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2774.670 -4.800 2775.230 2.400 ;
+ END
+ END la_data_in[121]
+ PIN la_data_in[122]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2792.610 -4.800 2793.170 2.400 ;
+ END
+ END la_data_in[122]
+ PIN la_data_in[123]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2810.090 -4.800 2810.650 2.400 ;
+ END
+ END la_data_in[123]
+ PIN la_data_in[124]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2828.030 -4.800 2828.590 2.400 ;
+ END
+ END la_data_in[124]
+ PIN la_data_in[125]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2845.510 -4.800 2846.070 2.400 ;
+ END
+ END la_data_in[125]
+ PIN la_data_in[126]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2863.450 -4.800 2864.010 2.400 ;
+ END
+ END la_data_in[126]
+ PIN la_data_in[127]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2881.390 -4.800 2881.950 2.400 ;
+ END
+ END la_data_in[127]
+ PIN la_data_in[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 841.750 -4.800 842.310 2.400 ;
+ END
+ END la_data_in[12]
+ PIN la_data_in[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 859.690 -4.800 860.250 2.400 ;
+ END
+ END la_data_in[13]
+ PIN la_data_in[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 877.170 -4.800 877.730 2.400 ;
+ END
+ END la_data_in[14]
+ PIN la_data_in[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 895.110 -4.800 895.670 2.400 ;
+ END
+ END la_data_in[15]
+ PIN la_data_in[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 912.590 -4.800 913.150 2.400 ;
+ END
+ END la_data_in[16]
+ PIN la_data_in[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 930.530 -4.800 931.090 2.400 ;
+ END
+ END la_data_in[17]
+ PIN la_data_in[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 948.470 -4.800 949.030 2.400 ;
+ END
+ END la_data_in[18]
+ PIN la_data_in[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 965.950 -4.800 966.510 2.400 ;
+ END
+ END la_data_in[19]
+ PIN la_data_in[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 646.710 -4.800 647.270 2.400 ;
+ END
+ END la_data_in[1]
+ PIN la_data_in[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 983.890 -4.800 984.450 2.400 ;
+ END
+ END la_data_in[20]
+ PIN la_data_in[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1001.370 -4.800 1001.930 2.400 ;
+ END
+ END la_data_in[21]
+ PIN la_data_in[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1019.310 -4.800 1019.870 2.400 ;
+ END
+ END la_data_in[22]
+ PIN la_data_in[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1036.790 -4.800 1037.350 2.400 ;
+ END
+ END la_data_in[23]
+ PIN la_data_in[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1054.730 -4.800 1055.290 2.400 ;
+ END
+ END la_data_in[24]
+ PIN la_data_in[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1072.210 -4.800 1072.770 2.400 ;
+ END
+ END la_data_in[25]
+ PIN la_data_in[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1090.150 -4.800 1090.710 2.400 ;
+ END
+ END la_data_in[26]
+ PIN la_data_in[27]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1107.630 -4.800 1108.190 2.400 ;
+ END
+ END la_data_in[27]
+ PIN la_data_in[28]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1125.570 -4.800 1126.130 2.400 ;
+ END
+ END la_data_in[28]
+ PIN la_data_in[29]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1143.510 -4.800 1144.070 2.400 ;
+ END
+ END la_data_in[29]
+ PIN la_data_in[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 664.650 -4.800 665.210 2.400 ;
+ END
+ END la_data_in[2]
+ PIN la_data_in[30]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1160.990 -4.800 1161.550 2.400 ;
+ END
+ END la_data_in[30]
+ PIN la_data_in[31]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1178.930 -4.800 1179.490 2.400 ;
+ END
+ END la_data_in[31]
+ PIN la_data_in[32]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1196.410 -4.800 1196.970 2.400 ;
+ END
+ END la_data_in[32]
+ PIN la_data_in[33]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1214.350 -4.800 1214.910 2.400 ;
+ END
+ END la_data_in[33]
+ PIN la_data_in[34]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1231.830 -4.800 1232.390 2.400 ;
+ END
+ END la_data_in[34]
+ PIN la_data_in[35]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1249.770 -4.800 1250.330 2.400 ;
+ END
+ END la_data_in[35]
+ PIN la_data_in[36]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1267.250 -4.800 1267.810 2.400 ;
+ END
+ END la_data_in[36]
+ PIN la_data_in[37]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1285.190 -4.800 1285.750 2.400 ;
+ END
+ END la_data_in[37]
+ PIN la_data_in[38]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1303.130 -4.800 1303.690 2.400 ;
+ END
+ END la_data_in[38]
+ PIN la_data_in[39]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1320.610 -4.800 1321.170 2.400 ;
+ END
+ END la_data_in[39]
+ PIN la_data_in[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 682.130 -4.800 682.690 2.400 ;
+ END
+ END la_data_in[3]
+ PIN la_data_in[40]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1338.550 -4.800 1339.110 2.400 ;
+ END
+ END la_data_in[40]
+ PIN la_data_in[41]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1356.030 -4.800 1356.590 2.400 ;
+ END
+ END la_data_in[41]
+ PIN la_data_in[42]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1373.970 -4.800 1374.530 2.400 ;
+ END
+ END la_data_in[42]
+ PIN la_data_in[43]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1391.450 -4.800 1392.010 2.400 ;
+ END
+ END la_data_in[43]
+ PIN la_data_in[44]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1409.390 -4.800 1409.950 2.400 ;
+ END
+ END la_data_in[44]
+ PIN la_data_in[45]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1426.870 -4.800 1427.430 2.400 ;
+ END
+ END la_data_in[45]
+ PIN la_data_in[46]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1444.810 -4.800 1445.370 2.400 ;
+ END
+ END la_data_in[46]
+ PIN la_data_in[47]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1462.750 -4.800 1463.310 2.400 ;
+ END
+ END la_data_in[47]
+ PIN la_data_in[48]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1480.230 -4.800 1480.790 2.400 ;
+ END
+ END la_data_in[48]
+ PIN la_data_in[49]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1498.170 -4.800 1498.730 2.400 ;
+ END
+ END la_data_in[49]
+ PIN la_data_in[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 700.070 -4.800 700.630 2.400 ;
+ END
+ END la_data_in[4]
+ PIN la_data_in[50]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1515.650 -4.800 1516.210 2.400 ;
+ END
+ END la_data_in[50]
+ PIN la_data_in[51]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1533.590 -4.800 1534.150 2.400 ;
+ END
+ END la_data_in[51]
+ PIN la_data_in[52]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1551.070 -4.800 1551.630 2.400 ;
+ END
+ END la_data_in[52]
+ PIN la_data_in[53]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1569.010 -4.800 1569.570 2.400 ;
+ END
+ END la_data_in[53]
+ PIN la_data_in[54]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1586.490 -4.800 1587.050 2.400 ;
+ END
+ END la_data_in[54]
+ PIN la_data_in[55]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1604.430 -4.800 1604.990 2.400 ;
+ END
+ END la_data_in[55]
+ PIN la_data_in[56]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1621.910 -4.800 1622.470 2.400 ;
+ END
+ END la_data_in[56]
+ PIN la_data_in[57]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1639.850 -4.800 1640.410 2.400 ;
+ END
+ END la_data_in[57]
+ PIN la_data_in[58]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1657.790 -4.800 1658.350 2.400 ;
+ END
+ END la_data_in[58]
+ PIN la_data_in[59]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1675.270 -4.800 1675.830 2.400 ;
+ END
+ END la_data_in[59]
+ PIN la_data_in[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 717.550 -4.800 718.110 2.400 ;
+ END
+ END la_data_in[5]
+ PIN la_data_in[60]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1693.210 -4.800 1693.770 2.400 ;
+ END
+ END la_data_in[60]
+ PIN la_data_in[61]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1710.690 -4.800 1711.250 2.400 ;
+ END
+ END la_data_in[61]
+ PIN la_data_in[62]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1728.630 -4.800 1729.190 2.400 ;
+ END
+ END la_data_in[62]
+ PIN la_data_in[63]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1746.110 -4.800 1746.670 2.400 ;
+ END
+ END la_data_in[63]
+ PIN la_data_in[64]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1764.050 -4.800 1764.610 2.400 ;
+ END
+ END la_data_in[64]
+ PIN la_data_in[65]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1781.530 -4.800 1782.090 2.400 ;
+ END
+ END la_data_in[65]
+ PIN la_data_in[66]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1799.470 -4.800 1800.030 2.400 ;
+ END
+ END la_data_in[66]
+ PIN la_data_in[67]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1817.410 -4.800 1817.970 2.400 ;
+ END
+ END la_data_in[67]
+ PIN la_data_in[68]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1834.890 -4.800 1835.450 2.400 ;
+ END
+ END la_data_in[68]
+ PIN la_data_in[69]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1852.830 -4.800 1853.390 2.400 ;
+ END
+ END la_data_in[69]
+ PIN la_data_in[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 735.490 -4.800 736.050 2.400 ;
+ END
+ END la_data_in[6]
+ PIN la_data_in[70]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1870.310 -4.800 1870.870 2.400 ;
+ END
+ END la_data_in[70]
+ PIN la_data_in[71]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1888.250 -4.800 1888.810 2.400 ;
+ END
+ END la_data_in[71]
+ PIN la_data_in[72]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1905.730 -4.800 1906.290 2.400 ;
+ END
+ END la_data_in[72]
+ PIN la_data_in[73]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1923.670 -4.800 1924.230 2.400 ;
+ END
+ END la_data_in[73]
+ PIN la_data_in[74]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1941.150 -4.800 1941.710 2.400 ;
+ END
+ END la_data_in[74]
+ PIN la_data_in[75]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1959.090 -4.800 1959.650 2.400 ;
+ END
+ END la_data_in[75]
+ PIN la_data_in[76]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1976.570 -4.800 1977.130 2.400 ;
+ END
+ END la_data_in[76]
+ PIN la_data_in[77]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1994.510 -4.800 1995.070 2.400 ;
+ END
+ END la_data_in[77]
+ PIN la_data_in[78]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2012.450 -4.800 2013.010 2.400 ;
+ END
+ END la_data_in[78]
+ PIN la_data_in[79]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2029.930 -4.800 2030.490 2.400 ;
+ END
+ END la_data_in[79]
+ PIN la_data_in[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 752.970 -4.800 753.530 2.400 ;
+ END
+ END la_data_in[7]
+ PIN la_data_in[80]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2047.870 -4.800 2048.430 2.400 ;
+ END
+ END la_data_in[80]
+ PIN la_data_in[81]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2065.350 -4.800 2065.910 2.400 ;
+ END
+ END la_data_in[81]
+ PIN la_data_in[82]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2083.290 -4.800 2083.850 2.400 ;
+ END
+ END la_data_in[82]
+ PIN la_data_in[83]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2100.770 -4.800 2101.330 2.400 ;
+ END
+ END la_data_in[83]
+ PIN la_data_in[84]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2118.710 -4.800 2119.270 2.400 ;
+ END
+ END la_data_in[84]
+ PIN la_data_in[85]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2136.190 -4.800 2136.750 2.400 ;
+ END
+ END la_data_in[85]
+ PIN la_data_in[86]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2154.130 -4.800 2154.690 2.400 ;
+ END
+ END la_data_in[86]
+ PIN la_data_in[87]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2172.070 -4.800 2172.630 2.400 ;
+ END
+ END la_data_in[87]
+ PIN la_data_in[88]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2189.550 -4.800 2190.110 2.400 ;
+ END
+ END la_data_in[88]
+ PIN la_data_in[89]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2207.490 -4.800 2208.050 2.400 ;
+ END
+ END la_data_in[89]
+ PIN la_data_in[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 770.910 -4.800 771.470 2.400 ;
+ END
+ END la_data_in[8]
+ PIN la_data_in[90]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2224.970 -4.800 2225.530 2.400 ;
+ END
+ END la_data_in[90]
+ PIN la_data_in[91]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2242.910 -4.800 2243.470 2.400 ;
+ END
+ END la_data_in[91]
+ PIN la_data_in[92]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2260.390 -4.800 2260.950 2.400 ;
+ END
+ END la_data_in[92]
+ PIN la_data_in[93]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2278.330 -4.800 2278.890 2.400 ;
+ END
+ END la_data_in[93]
+ PIN la_data_in[94]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2295.810 -4.800 2296.370 2.400 ;
+ END
+ END la_data_in[94]
+ PIN la_data_in[95]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2313.750 -4.800 2314.310 2.400 ;
+ END
+ END la_data_in[95]
+ PIN la_data_in[96]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2331.230 -4.800 2331.790 2.400 ;
+ END
+ END la_data_in[96]
+ PIN la_data_in[97]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2349.170 -4.800 2349.730 2.400 ;
+ END
+ END la_data_in[97]
+ PIN la_data_in[98]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2367.110 -4.800 2367.670 2.400 ;
+ END
+ END la_data_in[98]
+ PIN la_data_in[99]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2384.590 -4.800 2385.150 2.400 ;
+ END
+ END la_data_in[99]
+ PIN la_data_in[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 788.850 -4.800 789.410 2.400 ;
+ END
+ END la_data_in[9]
+ PIN la_data_out[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 634.750 -4.800 635.310 2.400 ;
+ END
+ END la_data_out[0]
+ PIN la_data_out[100]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2408.510 -4.800 2409.070 2.400 ;
+ END
+ END la_data_out[100]
+ PIN la_data_out[101]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2425.990 -4.800 2426.550 2.400 ;
+ END
+ END la_data_out[101]
+ PIN la_data_out[102]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2443.930 -4.800 2444.490 2.400 ;
+ END
+ END la_data_out[102]
+ PIN la_data_out[103]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2461.410 -4.800 2461.970 2.400 ;
+ END
+ END la_data_out[103]
+ PIN la_data_out[104]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2479.350 -4.800 2479.910 2.400 ;
+ END
+ END la_data_out[104]
+ PIN la_data_out[105]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2496.830 -4.800 2497.390 2.400 ;
+ END
+ END la_data_out[105]
+ PIN la_data_out[106]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2514.770 -4.800 2515.330 2.400 ;
+ END
+ END la_data_out[106]
+ PIN la_data_out[107]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2532.250 -4.800 2532.810 2.400 ;
+ END
+ END la_data_out[107]
+ PIN la_data_out[108]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2550.190 -4.800 2550.750 2.400 ;
+ END
+ END la_data_out[108]
+ PIN la_data_out[109]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2567.670 -4.800 2568.230 2.400 ;
+ END
+ END la_data_out[109]
+ PIN la_data_out[10]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 812.310 -4.800 812.870 2.400 ;
+ END
+ END la_data_out[10]
+ PIN la_data_out[110]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2585.610 -4.800 2586.170 2.400 ;
+ END
+ END la_data_out[110]
+ PIN la_data_out[111]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2603.550 -4.800 2604.110 2.400 ;
+ END
+ END la_data_out[111]
+ PIN la_data_out[112]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2621.030 -4.800 2621.590 2.400 ;
+ END
+ END la_data_out[112]
+ PIN la_data_out[113]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2638.970 -4.800 2639.530 2.400 ;
+ END
+ END la_data_out[113]
+ PIN la_data_out[114]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2656.450 -4.800 2657.010 2.400 ;
+ END
+ END la_data_out[114]
+ PIN la_data_out[115]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2674.390 -4.800 2674.950 2.400 ;
+ END
+ END la_data_out[115]
+ PIN la_data_out[116]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2691.870 -4.800 2692.430 2.400 ;
+ END
+ END la_data_out[116]
+ PIN la_data_out[117]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2709.810 -4.800 2710.370 2.400 ;
+ END
+ END la_data_out[117]
+ PIN la_data_out[118]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2727.290 -4.800 2727.850 2.400 ;
+ END
+ END la_data_out[118]
+ PIN la_data_out[119]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2745.230 -4.800 2745.790 2.400 ;
+ END
+ END la_data_out[119]
+ PIN la_data_out[11]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 830.250 -4.800 830.810 2.400 ;
+ END
+ END la_data_out[11]
+ PIN la_data_out[120]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2763.170 -4.800 2763.730 2.400 ;
+ END
+ END la_data_out[120]
+ PIN la_data_out[121]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2780.650 -4.800 2781.210 2.400 ;
+ END
+ END la_data_out[121]
+ PIN la_data_out[122]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2798.590 -4.800 2799.150 2.400 ;
+ END
+ END la_data_out[122]
+ PIN la_data_out[123]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2816.070 -4.800 2816.630 2.400 ;
+ END
+ END la_data_out[123]
+ PIN la_data_out[124]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2834.010 -4.800 2834.570 2.400 ;
+ END
+ END la_data_out[124]
+ PIN la_data_out[125]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2851.490 -4.800 2852.050 2.400 ;
+ END
+ END la_data_out[125]
+ PIN la_data_out[126]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2869.430 -4.800 2869.990 2.400 ;
+ END
+ END la_data_out[126]
+ PIN la_data_out[127]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2886.910 -4.800 2887.470 2.400 ;
+ END
+ END la_data_out[127]
+ PIN la_data_out[12]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 847.730 -4.800 848.290 2.400 ;
+ END
+ END la_data_out[12]
+ PIN la_data_out[13]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 865.670 -4.800 866.230 2.400 ;
+ END
+ END la_data_out[13]
+ PIN la_data_out[14]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 883.150 -4.800 883.710 2.400 ;
+ END
+ END la_data_out[14]
+ PIN la_data_out[15]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 901.090 -4.800 901.650 2.400 ;
+ END
+ END la_data_out[15]
+ PIN la_data_out[16]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 918.570 -4.800 919.130 2.400 ;
+ END
+ END la_data_out[16]
+ PIN la_data_out[17]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 936.510 -4.800 937.070 2.400 ;
+ END
+ END la_data_out[17]
+ PIN la_data_out[18]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 953.990 -4.800 954.550 2.400 ;
+ END
+ END la_data_out[18]
+ PIN la_data_out[19]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 971.930 -4.800 972.490 2.400 ;
+ END
+ END la_data_out[19]
+ PIN la_data_out[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 652.690 -4.800 653.250 2.400 ;
+ END
+ END la_data_out[1]
+ PIN la_data_out[20]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 989.410 -4.800 989.970 2.400 ;
+ END
+ END la_data_out[20]
+ PIN la_data_out[21]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1007.350 -4.800 1007.910 2.400 ;
+ END
+ END la_data_out[21]
+ PIN la_data_out[22]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1025.290 -4.800 1025.850 2.400 ;
+ END
+ END la_data_out[22]
+ PIN la_data_out[23]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1042.770 -4.800 1043.330 2.400 ;
+ END
+ END la_data_out[23]
+ PIN la_data_out[24]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1060.710 -4.800 1061.270 2.400 ;
+ END
+ END la_data_out[24]
+ PIN la_data_out[25]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1078.190 -4.800 1078.750 2.400 ;
+ END
+ END la_data_out[25]
+ PIN la_data_out[26]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1096.130 -4.800 1096.690 2.400 ;
+ END
+ END la_data_out[26]
+ PIN la_data_out[27]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1113.610 -4.800 1114.170 2.400 ;
+ END
+ END la_data_out[27]
+ PIN la_data_out[28]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1131.550 -4.800 1132.110 2.400 ;
+ END
+ END la_data_out[28]
+ PIN la_data_out[29]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1149.030 -4.800 1149.590 2.400 ;
+ END
+ END la_data_out[29]
+ PIN la_data_out[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 670.630 -4.800 671.190 2.400 ;
+ END
+ END la_data_out[2]
+ PIN la_data_out[30]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1166.970 -4.800 1167.530 2.400 ;
+ END
+ END la_data_out[30]
+ PIN la_data_out[31]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1184.910 -4.800 1185.470 2.400 ;
+ END
+ END la_data_out[31]
+ PIN la_data_out[32]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1202.390 -4.800 1202.950 2.400 ;
+ END
+ END la_data_out[32]
+ PIN la_data_out[33]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1220.330 -4.800 1220.890 2.400 ;
+ END
+ END la_data_out[33]
+ PIN la_data_out[34]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1237.810 -4.800 1238.370 2.400 ;
+ END
+ END la_data_out[34]
+ PIN la_data_out[35]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1255.750 -4.800 1256.310 2.400 ;
+ END
+ END la_data_out[35]
+ PIN la_data_out[36]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1273.230 -4.800 1273.790 2.400 ;
+ END
+ END la_data_out[36]
+ PIN la_data_out[37]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1291.170 -4.800 1291.730 2.400 ;
+ END
+ END la_data_out[37]
+ PIN la_data_out[38]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1308.650 -4.800 1309.210 2.400 ;
+ END
+ END la_data_out[38]
+ PIN la_data_out[39]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1326.590 -4.800 1327.150 2.400 ;
+ END
+ END la_data_out[39]
+ PIN la_data_out[3]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 688.110 -4.800 688.670 2.400 ;
+ END
+ END la_data_out[3]
+ PIN la_data_out[40]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1344.070 -4.800 1344.630 2.400 ;
+ END
+ END la_data_out[40]
+ PIN la_data_out[41]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1362.010 -4.800 1362.570 2.400 ;
+ END
+ END la_data_out[41]
+ PIN la_data_out[42]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1379.950 -4.800 1380.510 2.400 ;
+ END
+ END la_data_out[42]
+ PIN la_data_out[43]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1397.430 -4.800 1397.990 2.400 ;
+ END
+ END la_data_out[43]
+ PIN la_data_out[44]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1415.370 -4.800 1415.930 2.400 ;
+ END
+ END la_data_out[44]
+ PIN la_data_out[45]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1432.850 -4.800 1433.410 2.400 ;
+ END
+ END la_data_out[45]
+ PIN la_data_out[46]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1450.790 -4.800 1451.350 2.400 ;
+ END
+ END la_data_out[46]
+ PIN la_data_out[47]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1468.270 -4.800 1468.830 2.400 ;
+ END
+ END la_data_out[47]
+ PIN la_data_out[48]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1486.210 -4.800 1486.770 2.400 ;
+ END
+ END la_data_out[48]
+ PIN la_data_out[49]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1503.690 -4.800 1504.250 2.400 ;
+ END
+ END la_data_out[49]
+ PIN la_data_out[4]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 706.050 -4.800 706.610 2.400 ;
+ END
+ END la_data_out[4]
+ PIN la_data_out[50]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1521.630 -4.800 1522.190 2.400 ;
+ END
+ END la_data_out[50]
+ PIN la_data_out[51]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1539.570 -4.800 1540.130 2.400 ;
+ END
+ END la_data_out[51]
+ PIN la_data_out[52]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1557.050 -4.800 1557.610 2.400 ;
+ END
+ END la_data_out[52]
+ PIN la_data_out[53]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1574.990 -4.800 1575.550 2.400 ;
+ END
+ END la_data_out[53]
+ PIN la_data_out[54]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1592.470 -4.800 1593.030 2.400 ;
+ END
+ END la_data_out[54]
+ PIN la_data_out[55]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1610.410 -4.800 1610.970 2.400 ;
+ END
+ END la_data_out[55]
+ PIN la_data_out[56]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1627.890 -4.800 1628.450 2.400 ;
+ END
+ END la_data_out[56]
+ PIN la_data_out[57]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1645.830 -4.800 1646.390 2.400 ;
+ END
+ END la_data_out[57]
+ PIN la_data_out[58]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1663.310 -4.800 1663.870 2.400 ;
+ END
+ END la_data_out[58]
+ PIN la_data_out[59]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1681.250 -4.800 1681.810 2.400 ;
+ END
+ END la_data_out[59]
+ PIN la_data_out[5]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 723.530 -4.800 724.090 2.400 ;
+ END
+ END la_data_out[5]
+ PIN la_data_out[60]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1699.190 -4.800 1699.750 2.400 ;
+ END
+ END la_data_out[60]
+ PIN la_data_out[61]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1716.670 -4.800 1717.230 2.400 ;
+ END
+ END la_data_out[61]
+ PIN la_data_out[62]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1734.610 -4.800 1735.170 2.400 ;
+ END
+ END la_data_out[62]
+ PIN la_data_out[63]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1752.090 -4.800 1752.650 2.400 ;
+ END
+ END la_data_out[63]
+ PIN la_data_out[64]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1770.030 -4.800 1770.590 2.400 ;
+ END
+ END la_data_out[64]
+ PIN la_data_out[65]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1787.510 -4.800 1788.070 2.400 ;
+ END
+ END la_data_out[65]
+ PIN la_data_out[66]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1805.450 -4.800 1806.010 2.400 ;
+ END
+ END la_data_out[66]
+ PIN la_data_out[67]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1822.930 -4.800 1823.490 2.400 ;
+ END
+ END la_data_out[67]
+ PIN la_data_out[68]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1840.870 -4.800 1841.430 2.400 ;
+ END
+ END la_data_out[68]
+ PIN la_data_out[69]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1858.350 -4.800 1858.910 2.400 ;
+ END
+ END la_data_out[69]
+ PIN la_data_out[6]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 741.470 -4.800 742.030 2.400 ;
+ END
+ END la_data_out[6]
+ PIN la_data_out[70]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1876.290 -4.800 1876.850 2.400 ;
+ END
+ END la_data_out[70]
+ PIN la_data_out[71]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1894.230 -4.800 1894.790 2.400 ;
+ END
+ END la_data_out[71]
+ PIN la_data_out[72]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1911.710 -4.800 1912.270 2.400 ;
+ END
+ END la_data_out[72]
+ PIN la_data_out[73]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1929.650 -4.800 1930.210 2.400 ;
+ END
+ END la_data_out[73]
+ PIN la_data_out[74]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1947.130 -4.800 1947.690 2.400 ;
+ END
+ END la_data_out[74]
+ PIN la_data_out[75]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1965.070 -4.800 1965.630 2.400 ;
+ END
+ END la_data_out[75]
+ PIN la_data_out[76]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1982.550 -4.800 1983.110 2.400 ;
+ END
+ END la_data_out[76]
+ PIN la_data_out[77]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2000.490 -4.800 2001.050 2.400 ;
+ END
+ END la_data_out[77]
+ PIN la_data_out[78]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2017.970 -4.800 2018.530 2.400 ;
+ END
+ END la_data_out[78]
+ PIN la_data_out[79]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2035.910 -4.800 2036.470 2.400 ;
+ END
+ END la_data_out[79]
+ PIN la_data_out[7]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 758.950 -4.800 759.510 2.400 ;
+ END
+ END la_data_out[7]
+ PIN la_data_out[80]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2053.850 -4.800 2054.410 2.400 ;
+ END
+ END la_data_out[80]
+ PIN la_data_out[81]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2071.330 -4.800 2071.890 2.400 ;
+ END
+ END la_data_out[81]
+ PIN la_data_out[82]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2089.270 -4.800 2089.830 2.400 ;
+ END
+ END la_data_out[82]
+ PIN la_data_out[83]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2106.750 -4.800 2107.310 2.400 ;
+ END
+ END la_data_out[83]
+ PIN la_data_out[84]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2124.690 -4.800 2125.250 2.400 ;
+ END
+ END la_data_out[84]
+ PIN la_data_out[85]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2142.170 -4.800 2142.730 2.400 ;
+ END
+ END la_data_out[85]
+ PIN la_data_out[86]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2160.110 -4.800 2160.670 2.400 ;
+ END
+ END la_data_out[86]
+ PIN la_data_out[87]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2177.590 -4.800 2178.150 2.400 ;
+ END
+ END la_data_out[87]
+ PIN la_data_out[88]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2195.530 -4.800 2196.090 2.400 ;
+ END
+ END la_data_out[88]
+ PIN la_data_out[89]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2213.010 -4.800 2213.570 2.400 ;
+ END
+ END la_data_out[89]
+ PIN la_data_out[8]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 776.890 -4.800 777.450 2.400 ;
+ END
+ END la_data_out[8]
+ PIN la_data_out[90]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2230.950 -4.800 2231.510 2.400 ;
+ END
+ END la_data_out[90]
+ PIN la_data_out[91]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2248.890 -4.800 2249.450 2.400 ;
+ END
+ END la_data_out[91]
+ PIN la_data_out[92]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2266.370 -4.800 2266.930 2.400 ;
+ END
+ END la_data_out[92]
+ PIN la_data_out[93]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2284.310 -4.800 2284.870 2.400 ;
+ END
+ END la_data_out[93]
+ PIN la_data_out[94]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2301.790 -4.800 2302.350 2.400 ;
+ END
+ END la_data_out[94]
+ PIN la_data_out[95]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2319.730 -4.800 2320.290 2.400 ;
+ END
+ END la_data_out[95]
+ PIN la_data_out[96]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2337.210 -4.800 2337.770 2.400 ;
+ END
+ END la_data_out[96]
+ PIN la_data_out[97]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2355.150 -4.800 2355.710 2.400 ;
+ END
+ END la_data_out[97]
+ PIN la_data_out[98]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2372.630 -4.800 2373.190 2.400 ;
+ END
+ END la_data_out[98]
+ PIN la_data_out[99]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2390.570 -4.800 2391.130 2.400 ;
+ END
+ END la_data_out[99]
+ PIN la_data_out[9]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 794.370 -4.800 794.930 2.400 ;
+ END
+ END la_data_out[9]
+ PIN la_oenb[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 640.730 -4.800 641.290 2.400 ;
+ END
+ END la_oenb[0]
+ PIN la_oenb[100]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2414.030 -4.800 2414.590 2.400 ;
+ END
+ END la_oenb[100]
+ PIN la_oenb[101]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2431.970 -4.800 2432.530 2.400 ;
+ END
+ END la_oenb[101]
+ PIN la_oenb[102]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2449.450 -4.800 2450.010 2.400 ;
+ END
+ END la_oenb[102]
+ PIN la_oenb[103]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2467.390 -4.800 2467.950 2.400 ;
+ END
+ END la_oenb[103]
+ PIN la_oenb[104]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2485.330 -4.800 2485.890 2.400 ;
+ END
+ END la_oenb[104]
+ PIN la_oenb[105]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2502.810 -4.800 2503.370 2.400 ;
+ END
+ END la_oenb[105]
+ PIN la_oenb[106]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2520.750 -4.800 2521.310 2.400 ;
+ END
+ END la_oenb[106]
+ PIN la_oenb[107]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2538.230 -4.800 2538.790 2.400 ;
+ END
+ END la_oenb[107]
+ PIN la_oenb[108]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2556.170 -4.800 2556.730 2.400 ;
+ END
+ END la_oenb[108]
+ PIN la_oenb[109]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2573.650 -4.800 2574.210 2.400 ;
+ END
+ END la_oenb[109]
+ PIN la_oenb[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 818.290 -4.800 818.850 2.400 ;
+ END
+ END la_oenb[10]
+ PIN la_oenb[110]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2591.590 -4.800 2592.150 2.400 ;
+ END
+ END la_oenb[110]
+ PIN la_oenb[111]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2609.070 -4.800 2609.630 2.400 ;
+ END
+ END la_oenb[111]
+ PIN la_oenb[112]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2627.010 -4.800 2627.570 2.400 ;
+ END
+ END la_oenb[112]
+ PIN la_oenb[113]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2644.950 -4.800 2645.510 2.400 ;
+ END
+ END la_oenb[113]
+ PIN la_oenb[114]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2662.430 -4.800 2662.990 2.400 ;
+ END
+ END la_oenb[114]
+ PIN la_oenb[115]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2680.370 -4.800 2680.930 2.400 ;
+ END
+ END la_oenb[115]
+ PIN la_oenb[116]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2697.850 -4.800 2698.410 2.400 ;
+ END
+ END la_oenb[116]
+ PIN la_oenb[117]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2715.790 -4.800 2716.350 2.400 ;
+ END
+ END la_oenb[117]
+ PIN la_oenb[118]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2733.270 -4.800 2733.830 2.400 ;
+ END
+ END la_oenb[118]
+ PIN la_oenb[119]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2751.210 -4.800 2751.770 2.400 ;
+ END
+ END la_oenb[119]
+ PIN la_oenb[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 835.770 -4.800 836.330 2.400 ;
+ END
+ END la_oenb[11]
+ PIN la_oenb[120]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2768.690 -4.800 2769.250 2.400 ;
+ END
+ END la_oenb[120]
+ PIN la_oenb[121]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2786.630 -4.800 2787.190 2.400 ;
+ END
+ END la_oenb[121]
+ PIN la_oenb[122]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2804.110 -4.800 2804.670 2.400 ;
+ END
+ END la_oenb[122]
+ PIN la_oenb[123]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2822.050 -4.800 2822.610 2.400 ;
+ END
+ END la_oenb[123]
+ PIN la_oenb[124]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2839.990 -4.800 2840.550 2.400 ;
+ END
+ END la_oenb[124]
+ PIN la_oenb[125]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2857.470 -4.800 2858.030 2.400 ;
+ END
+ END la_oenb[125]
+ PIN la_oenb[126]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2875.410 -4.800 2875.970 2.400 ;
+ END
+ END la_oenb[126]
+ PIN la_oenb[127]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2892.890 -4.800 2893.450 2.400 ;
+ END
+ END la_oenb[127]
+ PIN la_oenb[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 853.710 -4.800 854.270 2.400 ;
+ END
+ END la_oenb[12]
+ PIN la_oenb[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 871.190 -4.800 871.750 2.400 ;
+ END
+ END la_oenb[13]
+ PIN la_oenb[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 889.130 -4.800 889.690 2.400 ;
+ END
+ END la_oenb[14]
+ PIN la_oenb[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 907.070 -4.800 907.630 2.400 ;
+ END
+ END la_oenb[15]
+ PIN la_oenb[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 924.550 -4.800 925.110 2.400 ;
+ END
+ END la_oenb[16]
+ PIN la_oenb[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 942.490 -4.800 943.050 2.400 ;
+ END
+ END la_oenb[17]
+ PIN la_oenb[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 959.970 -4.800 960.530 2.400 ;
+ END
+ END la_oenb[18]
+ PIN la_oenb[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 977.910 -4.800 978.470 2.400 ;
+ END
+ END la_oenb[19]
+ PIN la_oenb[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 658.670 -4.800 659.230 2.400 ;
+ END
+ END la_oenb[1]
+ PIN la_oenb[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 995.390 -4.800 995.950 2.400 ;
+ END
+ END la_oenb[20]
+ PIN la_oenb[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1013.330 -4.800 1013.890 2.400 ;
+ END
+ END la_oenb[21]
+ PIN la_oenb[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1030.810 -4.800 1031.370 2.400 ;
+ END
+ END la_oenb[22]
+ PIN la_oenb[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1048.750 -4.800 1049.310 2.400 ;
+ END
+ END la_oenb[23]
+ PIN la_oenb[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1066.690 -4.800 1067.250 2.400 ;
+ END
+ END la_oenb[24]
+ PIN la_oenb[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1084.170 -4.800 1084.730 2.400 ;
+ END
+ END la_oenb[25]
+ PIN la_oenb[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1102.110 -4.800 1102.670 2.400 ;
+ END
+ END la_oenb[26]
+ PIN la_oenb[27]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1119.590 -4.800 1120.150 2.400 ;
+ END
+ END la_oenb[27]
+ PIN la_oenb[28]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1137.530 -4.800 1138.090 2.400 ;
+ END
+ END la_oenb[28]
+ PIN la_oenb[29]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1155.010 -4.800 1155.570 2.400 ;
+ END
+ END la_oenb[29]
+ PIN la_oenb[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 676.150 -4.800 676.710 2.400 ;
+ END
+ END la_oenb[2]
+ PIN la_oenb[30]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1172.950 -4.800 1173.510 2.400 ;
+ END
+ END la_oenb[30]
+ PIN la_oenb[31]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1190.430 -4.800 1190.990 2.400 ;
+ END
+ END la_oenb[31]
+ PIN la_oenb[32]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1208.370 -4.800 1208.930 2.400 ;
+ END
+ END la_oenb[32]
+ PIN la_oenb[33]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1225.850 -4.800 1226.410 2.400 ;
+ END
+ END la_oenb[33]
+ PIN la_oenb[34]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1243.790 -4.800 1244.350 2.400 ;
+ END
+ END la_oenb[34]
+ PIN la_oenb[35]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1261.730 -4.800 1262.290 2.400 ;
+ END
+ END la_oenb[35]
+ PIN la_oenb[36]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1279.210 -4.800 1279.770 2.400 ;
+ END
+ END la_oenb[36]
+ PIN la_oenb[37]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1297.150 -4.800 1297.710 2.400 ;
+ END
+ END la_oenb[37]
+ PIN la_oenb[38]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1314.630 -4.800 1315.190 2.400 ;
+ END
+ END la_oenb[38]
+ PIN la_oenb[39]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1332.570 -4.800 1333.130 2.400 ;
+ END
+ END la_oenb[39]
+ PIN la_oenb[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 694.090 -4.800 694.650 2.400 ;
+ END
+ END la_oenb[3]
+ PIN la_oenb[40]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1350.050 -4.800 1350.610 2.400 ;
+ END
+ END la_oenb[40]
+ PIN la_oenb[41]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1367.990 -4.800 1368.550 2.400 ;
+ END
+ END la_oenb[41]
+ PIN la_oenb[42]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1385.470 -4.800 1386.030 2.400 ;
+ END
+ END la_oenb[42]
+ PIN la_oenb[43]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1403.410 -4.800 1403.970 2.400 ;
+ END
+ END la_oenb[43]
+ PIN la_oenb[44]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1421.350 -4.800 1421.910 2.400 ;
+ END
+ END la_oenb[44]
+ PIN la_oenb[45]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1438.830 -4.800 1439.390 2.400 ;
+ END
+ END la_oenb[45]
+ PIN la_oenb[46]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1456.770 -4.800 1457.330 2.400 ;
+ END
+ END la_oenb[46]
+ PIN la_oenb[47]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1474.250 -4.800 1474.810 2.400 ;
+ END
+ END la_oenb[47]
+ PIN la_oenb[48]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1492.190 -4.800 1492.750 2.400 ;
+ END
+ END la_oenb[48]
+ PIN la_oenb[49]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1509.670 -4.800 1510.230 2.400 ;
+ END
+ END la_oenb[49]
+ PIN la_oenb[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 712.030 -4.800 712.590 2.400 ;
+ END
+ END la_oenb[4]
+ PIN la_oenb[50]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1527.610 -4.800 1528.170 2.400 ;
+ END
+ END la_oenb[50]
+ PIN la_oenb[51]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1545.090 -4.800 1545.650 2.400 ;
+ END
+ END la_oenb[51]
+ PIN la_oenb[52]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1563.030 -4.800 1563.590 2.400 ;
+ END
+ END la_oenb[52]
+ PIN la_oenb[53]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1580.970 -4.800 1581.530 2.400 ;
+ END
+ END la_oenb[53]
+ PIN la_oenb[54]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1598.450 -4.800 1599.010 2.400 ;
+ END
+ END la_oenb[54]
+ PIN la_oenb[55]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1616.390 -4.800 1616.950 2.400 ;
+ END
+ END la_oenb[55]
+ PIN la_oenb[56]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1633.870 -4.800 1634.430 2.400 ;
+ END
+ END la_oenb[56]
+ PIN la_oenb[57]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1651.810 -4.800 1652.370 2.400 ;
+ END
+ END la_oenb[57]
+ PIN la_oenb[58]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1669.290 -4.800 1669.850 2.400 ;
+ END
+ END la_oenb[58]
+ PIN la_oenb[59]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1687.230 -4.800 1687.790 2.400 ;
+ END
+ END la_oenb[59]
+ PIN la_oenb[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 729.510 -4.800 730.070 2.400 ;
+ END
+ END la_oenb[5]
+ PIN la_oenb[60]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1704.710 -4.800 1705.270 2.400 ;
+ END
+ END la_oenb[60]
+ PIN la_oenb[61]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1722.650 -4.800 1723.210 2.400 ;
+ END
+ END la_oenb[61]
+ PIN la_oenb[62]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1740.130 -4.800 1740.690 2.400 ;
+ END
+ END la_oenb[62]
+ PIN la_oenb[63]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1758.070 -4.800 1758.630 2.400 ;
+ END
+ END la_oenb[63]
+ PIN la_oenb[64]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1776.010 -4.800 1776.570 2.400 ;
+ END
+ END la_oenb[64]
+ PIN la_oenb[65]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1793.490 -4.800 1794.050 2.400 ;
+ END
+ END la_oenb[65]
+ PIN la_oenb[66]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1811.430 -4.800 1811.990 2.400 ;
+ END
+ END la_oenb[66]
+ PIN la_oenb[67]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1828.910 -4.800 1829.470 2.400 ;
+ END
+ END la_oenb[67]
+ PIN la_oenb[68]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1846.850 -4.800 1847.410 2.400 ;
+ END
+ END la_oenb[68]
+ PIN la_oenb[69]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1864.330 -4.800 1864.890 2.400 ;
+ END
+ END la_oenb[69]
+ PIN la_oenb[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 747.450 -4.800 748.010 2.400 ;
+ END
+ END la_oenb[6]
+ PIN la_oenb[70]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1882.270 -4.800 1882.830 2.400 ;
+ END
+ END la_oenb[70]
+ PIN la_oenb[71]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1899.750 -4.800 1900.310 2.400 ;
+ END
+ END la_oenb[71]
+ PIN la_oenb[72]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1917.690 -4.800 1918.250 2.400 ;
+ END
+ END la_oenb[72]
+ PIN la_oenb[73]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1935.630 -4.800 1936.190 2.400 ;
+ END
+ END la_oenb[73]
+ PIN la_oenb[74]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1953.110 -4.800 1953.670 2.400 ;
+ END
+ END la_oenb[74]
+ PIN la_oenb[75]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1971.050 -4.800 1971.610 2.400 ;
+ END
+ END la_oenb[75]
+ PIN la_oenb[76]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 1988.530 -4.800 1989.090 2.400 ;
+ END
+ END la_oenb[76]
+ PIN la_oenb[77]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2006.470 -4.800 2007.030 2.400 ;
+ END
+ END la_oenb[77]
+ PIN la_oenb[78]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2023.950 -4.800 2024.510 2.400 ;
+ END
+ END la_oenb[78]
+ PIN la_oenb[79]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2041.890 -4.800 2042.450 2.400 ;
+ END
+ END la_oenb[79]
+ PIN la_oenb[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 764.930 -4.800 765.490 2.400 ;
+ END
+ END la_oenb[7]
+ PIN la_oenb[80]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2059.370 -4.800 2059.930 2.400 ;
+ END
+ END la_oenb[80]
+ PIN la_oenb[81]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2077.310 -4.800 2077.870 2.400 ;
+ END
+ END la_oenb[81]
+ PIN la_oenb[82]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2094.790 -4.800 2095.350 2.400 ;
+ END
+ END la_oenb[82]
+ PIN la_oenb[83]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2112.730 -4.800 2113.290 2.400 ;
+ END
+ END la_oenb[83]
+ PIN la_oenb[84]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2130.670 -4.800 2131.230 2.400 ;
+ END
+ END la_oenb[84]
+ PIN la_oenb[85]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2148.150 -4.800 2148.710 2.400 ;
+ END
+ END la_oenb[85]
+ PIN la_oenb[86]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2166.090 -4.800 2166.650 2.400 ;
+ END
+ END la_oenb[86]
+ PIN la_oenb[87]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2183.570 -4.800 2184.130 2.400 ;
+ END
+ END la_oenb[87]
+ PIN la_oenb[88]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2201.510 -4.800 2202.070 2.400 ;
+ END
+ END la_oenb[88]
+ PIN la_oenb[89]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2218.990 -4.800 2219.550 2.400 ;
+ END
+ END la_oenb[89]
+ PIN la_oenb[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 782.870 -4.800 783.430 2.400 ;
+ END
+ END la_oenb[8]
+ PIN la_oenb[90]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2236.930 -4.800 2237.490 2.400 ;
+ END
+ END la_oenb[90]
+ PIN la_oenb[91]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2254.410 -4.800 2254.970 2.400 ;
+ END
+ END la_oenb[91]
+ PIN la_oenb[92]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2272.350 -4.800 2272.910 2.400 ;
+ END
+ END la_oenb[92]
+ PIN la_oenb[93]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2290.290 -4.800 2290.850 2.400 ;
+ END
+ END la_oenb[93]
+ PIN la_oenb[94]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2307.770 -4.800 2308.330 2.400 ;
+ END
+ END la_oenb[94]
+ PIN la_oenb[95]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2325.710 -4.800 2326.270 2.400 ;
+ END
+ END la_oenb[95]
+ PIN la_oenb[96]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2343.190 -4.800 2343.750 2.400 ;
+ END
+ END la_oenb[96]
+ PIN la_oenb[97]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2361.130 -4.800 2361.690 2.400 ;
+ END
+ END la_oenb[97]
+ PIN la_oenb[98]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2378.610 -4.800 2379.170 2.400 ;
+ END
+ END la_oenb[98]
+ PIN la_oenb[99]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2396.550 -4.800 2397.110 2.400 ;
+ END
+ END la_oenb[99]
+ PIN la_oenb[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 800.350 -4.800 800.910 2.400 ;
+ END
+ END la_oenb[9]
+ PIN user_clock2
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2898.870 -4.800 2899.430 2.400 ;
+ END
+ END user_clock2
+ PIN user_irq[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2904.850 -4.800 2905.410 2.400 ;
+ END
+ END user_irq[0]
+ PIN user_irq[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2910.830 -4.800 2911.390 2.400 ;
+ END
+ END user_irq[1]
+ PIN user_irq[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2916.810 -4.800 2917.370 2.400 ;
+ END
+ END user_irq[2]
+ PIN wb_clk_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 2.710 -4.800 3.270 2.400 ;
+ END
+ END wb_clk_i
+ PIN wb_rst_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 8.230 -4.800 8.790 2.400 ;
+ END
+ END wb_rst_i
+ PIN wbs_ack_o
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 14.210 -4.800 14.770 2.400 ;
+ END
+ END wbs_ack_o
+ PIN wbs_adr_i[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 38.130 -4.800 38.690 2.400 ;
+ END
+ END wbs_adr_i[0]
+ PIN wbs_adr_i[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 239.150 -4.800 239.710 2.400 ;
+ END
+ END wbs_adr_i[10]
+ PIN wbs_adr_i[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 256.630 -4.800 257.190 2.400 ;
+ END
+ END wbs_adr_i[11]
+ PIN wbs_adr_i[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 274.570 -4.800 275.130 2.400 ;
+ END
+ END wbs_adr_i[12]
+ PIN wbs_adr_i[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 292.050 -4.800 292.610 2.400 ;
+ END
+ END wbs_adr_i[13]
+ PIN wbs_adr_i[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 309.990 -4.800 310.550 2.400 ;
+ END
+ END wbs_adr_i[14]
+ PIN wbs_adr_i[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 327.470 -4.800 328.030 2.400 ;
+ END
+ END wbs_adr_i[15]
+ PIN wbs_adr_i[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 345.410 -4.800 345.970 2.400 ;
+ END
+ END wbs_adr_i[16]
+ PIN wbs_adr_i[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 362.890 -4.800 363.450 2.400 ;
+ END
+ END wbs_adr_i[17]
+ PIN wbs_adr_i[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 380.830 -4.800 381.390 2.400 ;
+ END
+ END wbs_adr_i[18]
+ PIN wbs_adr_i[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 398.310 -4.800 398.870 2.400 ;
+ END
+ END wbs_adr_i[19]
+ PIN wbs_adr_i[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 61.590 -4.800 62.150 2.400 ;
+ END
+ END wbs_adr_i[1]
+ PIN wbs_adr_i[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 416.250 -4.800 416.810 2.400 ;
+ END
+ END wbs_adr_i[20]
+ PIN wbs_adr_i[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 434.190 -4.800 434.750 2.400 ;
+ END
+ END wbs_adr_i[21]
+ PIN wbs_adr_i[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 451.670 -4.800 452.230 2.400 ;
+ END
+ END wbs_adr_i[22]
+ PIN wbs_adr_i[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 469.610 -4.800 470.170 2.400 ;
+ END
+ END wbs_adr_i[23]
+ PIN wbs_adr_i[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 487.090 -4.800 487.650 2.400 ;
+ END
+ END wbs_adr_i[24]
+ PIN wbs_adr_i[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 505.030 -4.800 505.590 2.400 ;
+ END
+ END wbs_adr_i[25]
+ PIN wbs_adr_i[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 522.510 -4.800 523.070 2.400 ;
+ END
+ END wbs_adr_i[26]
+ PIN wbs_adr_i[27]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 540.450 -4.800 541.010 2.400 ;
+ END
+ END wbs_adr_i[27]
+ PIN wbs_adr_i[28]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 557.930 -4.800 558.490 2.400 ;
+ END
+ END wbs_adr_i[28]
+ PIN wbs_adr_i[29]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 575.870 -4.800 576.430 2.400 ;
+ END
+ END wbs_adr_i[29]
+ PIN wbs_adr_i[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 85.050 -4.800 85.610 2.400 ;
+ END
+ END wbs_adr_i[2]
+ PIN wbs_adr_i[30]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 593.810 -4.800 594.370 2.400 ;
+ END
+ END wbs_adr_i[30]
+ PIN wbs_adr_i[31]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 611.290 -4.800 611.850 2.400 ;
+ END
+ END wbs_adr_i[31]
+ PIN wbs_adr_i[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 108.970 -4.800 109.530 2.400 ;
+ END
+ END wbs_adr_i[3]
+ PIN wbs_adr_i[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 132.430 -4.800 132.990 2.400 ;
+ END
+ END wbs_adr_i[4]
+ PIN wbs_adr_i[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 150.370 -4.800 150.930 2.400 ;
+ END
+ END wbs_adr_i[5]
+ PIN wbs_adr_i[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 167.850 -4.800 168.410 2.400 ;
+ END
+ END wbs_adr_i[6]
+ PIN wbs_adr_i[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 185.790 -4.800 186.350 2.400 ;
+ END
+ END wbs_adr_i[7]
+ PIN wbs_adr_i[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 203.270 -4.800 203.830 2.400 ;
+ END
+ END wbs_adr_i[8]
+ PIN wbs_adr_i[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 221.210 -4.800 221.770 2.400 ;
+ END
+ END wbs_adr_i[9]
+ PIN wbs_cyc_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 20.190 -4.800 20.750 2.400 ;
+ END
+ END wbs_cyc_i
+ PIN wbs_dat_i[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 43.650 -4.800 44.210 2.400 ;
+ END
+ END wbs_dat_i[0]
+ PIN wbs_dat_i[10]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 244.670 -4.800 245.230 2.400 ;
+ END
+ END wbs_dat_i[10]
+ PIN wbs_dat_i[11]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 262.610 -4.800 263.170 2.400 ;
+ END
+ END wbs_dat_i[11]
+ PIN wbs_dat_i[12]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 280.090 -4.800 280.650 2.400 ;
+ END
+ END wbs_dat_i[12]
+ PIN wbs_dat_i[13]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 298.030 -4.800 298.590 2.400 ;
+ END
+ END wbs_dat_i[13]
+ PIN wbs_dat_i[14]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 315.970 -4.800 316.530 2.400 ;
+ END
+ END wbs_dat_i[14]
+ PIN wbs_dat_i[15]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 333.450 -4.800 334.010 2.400 ;
+ END
+ END wbs_dat_i[15]
+ PIN wbs_dat_i[16]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 351.390 -4.800 351.950 2.400 ;
+ END
+ END wbs_dat_i[16]
+ PIN wbs_dat_i[17]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 368.870 -4.800 369.430 2.400 ;
+ END
+ END wbs_dat_i[17]
+ PIN wbs_dat_i[18]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 386.810 -4.800 387.370 2.400 ;
+ END
+ END wbs_dat_i[18]
+ PIN wbs_dat_i[19]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 404.290 -4.800 404.850 2.400 ;
+ END
+ END wbs_dat_i[19]
+ PIN wbs_dat_i[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 67.570 -4.800 68.130 2.400 ;
+ END
+ END wbs_dat_i[1]
+ PIN wbs_dat_i[20]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 422.230 -4.800 422.790 2.400 ;
+ END
+ END wbs_dat_i[20]
+ PIN wbs_dat_i[21]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 439.710 -4.800 440.270 2.400 ;
+ END
+ END wbs_dat_i[21]
+ PIN wbs_dat_i[22]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 457.650 -4.800 458.210 2.400 ;
+ END
+ END wbs_dat_i[22]
+ PIN wbs_dat_i[23]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 475.590 -4.800 476.150 2.400 ;
+ END
+ END wbs_dat_i[23]
+ PIN wbs_dat_i[24]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 493.070 -4.800 493.630 2.400 ;
+ END
+ END wbs_dat_i[24]
+ PIN wbs_dat_i[25]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 511.010 -4.800 511.570 2.400 ;
+ END
+ END wbs_dat_i[25]
+ PIN wbs_dat_i[26]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 528.490 -4.800 529.050 2.400 ;
+ END
+ END wbs_dat_i[26]
+ PIN wbs_dat_i[27]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 546.430 -4.800 546.990 2.400 ;
+ END
+ END wbs_dat_i[27]
+ PIN wbs_dat_i[28]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 563.910 -4.800 564.470 2.400 ;
+ END
+ END wbs_dat_i[28]
+ PIN wbs_dat_i[29]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 581.850 -4.800 582.410 2.400 ;
+ END
+ END wbs_dat_i[29]
+ PIN wbs_dat_i[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 91.030 -4.800 91.590 2.400 ;
+ END
+ END wbs_dat_i[2]
+ PIN wbs_dat_i[30]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 599.330 -4.800 599.890 2.400 ;
+ END
+ END wbs_dat_i[30]
+ PIN wbs_dat_i[31]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 617.270 -4.800 617.830 2.400 ;
+ END
+ END wbs_dat_i[31]
+ PIN wbs_dat_i[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 114.950 -4.800 115.510 2.400 ;
+ END
+ END wbs_dat_i[3]
+ PIN wbs_dat_i[4]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 138.410 -4.800 138.970 2.400 ;
+ END
+ END wbs_dat_i[4]
+ PIN wbs_dat_i[5]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 156.350 -4.800 156.910 2.400 ;
+ END
+ END wbs_dat_i[5]
+ PIN wbs_dat_i[6]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 173.830 -4.800 174.390 2.400 ;
+ END
+ END wbs_dat_i[6]
+ PIN wbs_dat_i[7]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 191.770 -4.800 192.330 2.400 ;
+ END
+ END wbs_dat_i[7]
+ PIN wbs_dat_i[8]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 209.250 -4.800 209.810 2.400 ;
+ END
+ END wbs_dat_i[8]
+ PIN wbs_dat_i[9]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 227.190 -4.800 227.750 2.400 ;
+ END
+ END wbs_dat_i[9]
+ PIN wbs_dat_o[0]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 49.630 -4.800 50.190 2.400 ;
+ END
+ END wbs_dat_o[0]
+ PIN wbs_dat_o[10]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 250.650 -4.800 251.210 2.400 ;
+ END
+ END wbs_dat_o[10]
+ PIN wbs_dat_o[11]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 268.590 -4.800 269.150 2.400 ;
+ END
+ END wbs_dat_o[11]
+ PIN wbs_dat_o[12]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 286.070 -4.800 286.630 2.400 ;
+ END
+ END wbs_dat_o[12]
+ PIN wbs_dat_o[13]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 304.010 -4.800 304.570 2.400 ;
+ END
+ END wbs_dat_o[13]
+ PIN wbs_dat_o[14]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 321.490 -4.800 322.050 2.400 ;
+ END
+ END wbs_dat_o[14]
+ PIN wbs_dat_o[15]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 339.430 -4.800 339.990 2.400 ;
+ END
+ END wbs_dat_o[15]
+ PIN wbs_dat_o[16]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 357.370 -4.800 357.930 2.400 ;
+ END
+ END wbs_dat_o[16]
+ PIN wbs_dat_o[17]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 374.850 -4.800 375.410 2.400 ;
+ END
+ END wbs_dat_o[17]
+ PIN wbs_dat_o[18]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 392.790 -4.800 393.350 2.400 ;
+ END
+ END wbs_dat_o[18]
+ PIN wbs_dat_o[19]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 410.270 -4.800 410.830 2.400 ;
+ END
+ END wbs_dat_o[19]
+ PIN wbs_dat_o[1]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 73.550 -4.800 74.110 2.400 ;
+ END
+ END wbs_dat_o[1]
+ PIN wbs_dat_o[20]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 428.210 -4.800 428.770 2.400 ;
+ END
+ END wbs_dat_o[20]
+ PIN wbs_dat_o[21]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 445.690 -4.800 446.250 2.400 ;
+ END
+ END wbs_dat_o[21]
+ PIN wbs_dat_o[22]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 463.630 -4.800 464.190 2.400 ;
+ END
+ END wbs_dat_o[22]
+ PIN wbs_dat_o[23]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 481.110 -4.800 481.670 2.400 ;
+ END
+ END wbs_dat_o[23]
+ PIN wbs_dat_o[24]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 499.050 -4.800 499.610 2.400 ;
+ END
+ END wbs_dat_o[24]
+ PIN wbs_dat_o[25]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 516.530 -4.800 517.090 2.400 ;
+ END
+ END wbs_dat_o[25]
+ PIN wbs_dat_o[26]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 534.470 -4.800 535.030 2.400 ;
+ END
+ END wbs_dat_o[26]
+ PIN wbs_dat_o[27]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 552.410 -4.800 552.970 2.400 ;
+ END
+ END wbs_dat_o[27]
+ PIN wbs_dat_o[28]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 569.890 -4.800 570.450 2.400 ;
+ END
+ END wbs_dat_o[28]
+ PIN wbs_dat_o[29]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 587.830 -4.800 588.390 2.400 ;
+ END
+ END wbs_dat_o[29]
+ PIN wbs_dat_o[2]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 97.010 -4.800 97.570 2.400 ;
+ END
+ END wbs_dat_o[2]
+ PIN wbs_dat_o[30]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 605.310 -4.800 605.870 2.400 ;
+ END
+ END wbs_dat_o[30]
+ PIN wbs_dat_o[31]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 623.250 -4.800 623.810 2.400 ;
+ END
+ END wbs_dat_o[31]
+ PIN wbs_dat_o[3]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 120.930 -4.800 121.490 2.400 ;
+ END
+ END wbs_dat_o[3]
+ PIN wbs_dat_o[4]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 144.390 -4.800 144.950 2.400 ;
+ END
+ END wbs_dat_o[4]
+ PIN wbs_dat_o[5]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 161.870 -4.800 162.430 2.400 ;
+ END
+ END wbs_dat_o[5]
+ PIN wbs_dat_o[6]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 179.810 -4.800 180.370 2.400 ;
+ END
+ END wbs_dat_o[6]
+ PIN wbs_dat_o[7]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 197.750 -4.800 198.310 2.400 ;
+ END
+ END wbs_dat_o[7]
+ PIN wbs_dat_o[8]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 215.230 -4.800 215.790 2.400 ;
+ END
+ END wbs_dat_o[8]
+ PIN wbs_dat_o[9]
+ DIRECTION OUTPUT TRISTATE ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 233.170 -4.800 233.730 2.400 ;
+ END
+ END wbs_dat_o[9]
+ PIN wbs_sel_i[0]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 55.610 -4.800 56.170 2.400 ;
+ END
+ END wbs_sel_i[0]
+ PIN wbs_sel_i[1]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 79.530 -4.800 80.090 2.400 ;
+ END
+ END wbs_sel_i[1]
+ PIN wbs_sel_i[2]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 102.990 -4.800 103.550 2.400 ;
+ END
+ END wbs_sel_i[2]
+ PIN wbs_sel_i[3]
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 126.450 -4.800 127.010 2.400 ;
+ END
+ END wbs_sel_i[3]
+ PIN wbs_stb_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 26.170 -4.800 26.730 2.400 ;
+ END
+ END wbs_stb_i
+ PIN wbs_we_i
+ DIRECTION INPUT ;
+ USE SIGNAL ;
+ PORT
+ LAYER met2 ;
+ RECT 32.150 -4.800 32.710 2.400 ;
+ END
+ END wbs_we_i
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2888.970 -9.470 2892.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2708.970 -9.470 2712.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2528.970 -9.470 2532.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2348.970 -9.470 2352.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2168.970 -9.470 2172.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1988.970 -9.470 1992.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1808.970 -9.470 1812.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1628.970 -9.470 1632.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1448.970 -9.470 1452.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1268.970 -9.470 1272.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1088.970 -9.470 1092.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 908.970 -9.470 912.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 728.970 -9.470 732.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 548.970 -9.470 552.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 368.970 -9.470 372.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 188.970 -9.470 192.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 8.970 -9.470 12.070 3529.150 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2926.550 -4.670 2929.650 3524.350 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT -10.030 -4.670 -6.930 3524.350 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -10.030 3521.250 2929.650 3524.350 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 3434.090 2934.450 3437.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 3254.090 2934.450 3257.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 3074.090 2934.450 3077.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2894.090 2934.450 2897.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2714.090 2934.450 2717.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2534.090 2934.450 2537.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2354.090 2934.450 2357.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2174.090 2934.450 2177.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1994.090 2934.450 1997.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1814.090 2934.450 1817.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1634.090 2934.450 1637.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1454.090 2934.450 1457.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1274.090 2934.450 1277.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1094.090 2934.450 1097.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 914.090 2934.450 917.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 734.090 2934.450 737.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 554.090 2934.450 557.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 374.090 2934.450 377.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 194.090 2934.450 197.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 14.090 2934.450 17.190 ;
+ END
+ END vccd1
+ PIN vccd1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -10.030 -4.670 2929.650 -1.570 ;
+ END
+ END vccd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2931.350 -9.470 2934.450 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2798.970 -9.470 2802.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2618.970 -9.470 2622.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2438.970 -9.470 2442.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2258.970 -9.470 2262.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2078.970 -9.470 2082.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1898.970 -9.470 1902.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1718.970 -9.470 1722.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1538.970 -9.470 1542.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1358.970 -9.470 1362.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1178.970 -9.470 1182.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 998.970 -9.470 1002.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 818.970 -9.470 822.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 638.970 -9.470 642.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 458.970 -9.470 462.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 278.970 -9.470 282.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 98.970 -9.470 102.070 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT -14.830 -9.470 -11.730 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 3526.050 2934.450 3529.150 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 3344.090 2934.450 3347.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 3164.090 2934.450 3167.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2984.090 2934.450 2987.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2804.090 2934.450 2807.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2624.090 2934.450 2627.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2444.090 2934.450 2447.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2264.090 2934.450 2267.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 2084.090 2934.450 2087.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1904.090 2934.450 1907.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1724.090 2934.450 1727.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1544.090 2934.450 1547.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1364.090 2934.450 1367.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1184.090 2934.450 1187.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 1004.090 2934.450 1007.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 824.090 2934.450 827.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 644.090 2934.450 647.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 464.090 2934.450 467.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 284.090 2934.450 287.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 104.090 2934.450 107.190 ;
+ END
+ END vssd1
+ PIN vssd1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -14.830 -9.470 2934.450 -6.370 ;
+ END
+ END vssd1
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2907.570 -19.070 2910.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2727.570 -19.070 2730.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2547.570 -19.070 2550.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2367.570 -19.070 2370.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2187.570 -19.070 2190.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2007.570 -19.070 2010.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1827.570 -19.070 1830.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1647.570 -19.070 1650.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1467.570 -19.070 1470.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1287.570 -19.070 1290.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1107.570 -19.070 1110.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 927.570 -19.070 930.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 747.570 -19.070 750.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 567.570 -19.070 570.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 387.570 -19.070 390.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 207.570 -19.070 210.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 27.570 -19.070 30.670 3538.750 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2936.150 -14.270 2939.250 3533.950 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT -19.630 -14.270 -16.530 3533.950 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -19.630 3530.850 2939.250 3533.950 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 3452.930 2944.050 3456.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 3272.930 2944.050 3276.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 3092.930 2944.050 3096.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2912.930 2944.050 2916.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2732.930 2944.050 2736.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2552.930 2944.050 2556.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2372.930 2944.050 2376.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2192.930 2944.050 2196.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2012.930 2944.050 2016.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1832.930 2944.050 1836.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1652.930 2944.050 1656.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1472.930 2944.050 1476.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1292.930 2944.050 1296.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1112.930 2944.050 1116.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 932.930 2944.050 936.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 752.930 2944.050 756.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 572.930 2944.050 576.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 392.930 2944.050 396.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 212.930 2944.050 216.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 32.930 2944.050 36.030 ;
+ END
+ END vccd2
+ PIN vccd2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -19.630 -14.270 2939.250 -11.170 ;
+ END
+ END vccd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2940.950 -19.070 2944.050 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2817.570 -19.070 2820.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2637.570 -19.070 2640.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2457.570 -19.070 2460.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2277.570 -19.070 2280.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2097.570 -19.070 2100.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1917.570 -19.070 1920.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1737.570 -19.070 1740.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1557.570 -19.070 1560.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1377.570 -19.070 1380.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1197.570 -19.070 1200.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1017.570 -19.070 1020.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 837.570 -19.070 840.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 657.570 -19.070 660.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 477.570 -19.070 480.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 297.570 -19.070 300.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 117.570 -19.070 120.670 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT -24.430 -19.070 -21.330 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 3535.650 2944.050 3538.750 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 3362.930 2944.050 3366.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 3182.930 2944.050 3186.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 3002.930 2944.050 3006.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2822.930 2944.050 2826.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2642.930 2944.050 2646.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2462.930 2944.050 2466.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2282.930 2944.050 2286.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 2102.930 2944.050 2106.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1922.930 2944.050 1926.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1742.930 2944.050 1746.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1562.930 2944.050 1566.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1382.930 2944.050 1386.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1202.930 2944.050 1206.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 1022.930 2944.050 1026.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 842.930 2944.050 846.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 662.930 2944.050 666.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 482.930 2944.050 486.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 302.930 2944.050 306.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 122.930 2944.050 126.030 ;
+ END
+ END vssd2
+ PIN vssd2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -24.430 -19.070 2944.050 -15.970 ;
+ END
+ END vssd2
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2746.170 -28.670 2749.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2566.170 -28.670 2569.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2386.170 -28.670 2389.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2206.170 -28.670 2209.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2026.170 -28.670 2029.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1846.170 -28.670 1849.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1666.170 -28.670 1669.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1486.170 -28.670 1489.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1306.170 -28.670 1309.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1126.170 -28.670 1129.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 946.170 -28.670 949.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 766.170 -28.670 769.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 586.170 -28.670 589.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 406.170 -28.670 409.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 226.170 -28.670 229.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 46.170 -28.670 49.270 3548.350 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2945.750 -23.870 2948.850 3543.550 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT -29.230 -23.870 -26.130 3543.550 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -29.230 3540.450 2948.850 3543.550 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 3471.530 2953.650 3474.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 3291.530 2953.650 3294.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 3111.530 2953.650 3114.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2931.530 2953.650 2934.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2751.530 2953.650 2754.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2571.530 2953.650 2574.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2391.530 2953.650 2394.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2211.530 2953.650 2214.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2031.530 2953.650 2034.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1851.530 2953.650 1854.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1671.530 2953.650 1674.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1491.530 2953.650 1494.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1311.530 2953.650 1314.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1131.530 2953.650 1134.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 951.530 2953.650 954.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 771.530 2953.650 774.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 591.530 2953.650 594.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 411.530 2953.650 414.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 231.530 2953.650 234.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 51.530 2953.650 54.630 ;
+ END
+ END vdda1
+ PIN vdda1
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -29.230 -23.870 2948.850 -20.770 ;
+ END
+ END vdda1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2950.550 -28.670 2953.650 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2836.170 -28.670 2839.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2656.170 -28.670 2659.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2476.170 -28.670 2479.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2296.170 -28.670 2299.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2116.170 -28.670 2119.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1936.170 -28.670 1939.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1756.170 -28.670 1759.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1576.170 -28.670 1579.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1396.170 -28.670 1399.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1216.170 -28.670 1219.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1036.170 -28.670 1039.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 856.170 -28.670 859.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 676.170 -28.670 679.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 496.170 -28.670 499.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 316.170 -28.670 319.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 136.170 -28.670 139.270 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT -34.030 -28.670 -30.930 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 3545.250 2953.650 3548.350 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 3381.530 2953.650 3384.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 3201.530 2953.650 3204.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 3021.530 2953.650 3024.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2841.530 2953.650 2844.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2661.530 2953.650 2664.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2481.530 2953.650 2484.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2301.530 2953.650 2304.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 2121.530 2953.650 2124.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1941.530 2953.650 1944.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1761.530 2953.650 1764.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1581.530 2953.650 1584.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1401.530 2953.650 1404.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1221.530 2953.650 1224.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 1041.530 2953.650 1044.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 861.530 2953.650 864.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 681.530 2953.650 684.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 501.530 2953.650 504.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 321.530 2953.650 324.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 141.530 2953.650 144.630 ;
+ END
+ END vssa1
+ PIN vssa1
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -34.030 -28.670 2953.650 -25.570 ;
+ END
+ END vssa1
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2764.770 -38.270 2767.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2584.770 -38.270 2587.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2404.770 -38.270 2407.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2224.770 -38.270 2227.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2044.770 -38.270 2047.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1864.770 -38.270 1867.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1684.770 -38.270 1687.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1504.770 -38.270 1507.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1324.770 -38.270 1327.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 1144.770 -38.270 1147.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 964.770 -38.270 967.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 784.770 -38.270 787.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 604.770 -38.270 607.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 424.770 -38.270 427.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 244.770 -38.270 247.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 64.770 -38.270 67.870 3557.950 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT 2955.350 -33.470 2958.450 3553.150 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met4 ;
+ RECT -38.830 -33.470 -35.730 3553.150 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -38.830 3550.050 2958.450 3553.150 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 3490.130 2963.250 3493.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 3310.130 2963.250 3313.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 3130.130 2963.250 3133.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2950.130 2963.250 2953.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2770.130 2963.250 2773.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2590.130 2963.250 2593.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2410.130 2963.250 2413.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2230.130 2963.250 2233.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2050.130 2963.250 2053.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1870.130 2963.250 1873.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1690.130 2963.250 1693.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1510.130 2963.250 1513.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1330.130 2963.250 1333.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1150.130 2963.250 1153.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 970.130 2963.250 973.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 790.130 2963.250 793.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 610.130 2963.250 613.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 430.130 2963.250 433.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 250.130 2963.250 253.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 70.130 2963.250 73.230 ;
+ END
+ END vdda2
+ PIN vdda2
+ DIRECTION INOUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT -38.830 -33.470 2958.450 -30.370 ;
+ END
+ END vdda2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2960.150 -38.270 2963.250 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2854.770 -38.270 2857.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2674.770 -38.270 2677.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2494.770 -38.270 2497.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2314.770 -38.270 2317.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 2134.770 -38.270 2137.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1954.770 -38.270 1957.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1774.770 -38.270 1777.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1594.770 -38.270 1597.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1414.770 -38.270 1417.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1234.770 -38.270 1237.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 1054.770 -38.270 1057.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 874.770 -38.270 877.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 694.770 -38.270 697.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 514.770 -38.270 517.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 334.770 -38.270 337.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT 154.770 -38.270 157.870 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met4 ;
+ RECT -43.630 -38.270 -40.530 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 3554.850 2963.250 3557.950 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 3400.130 2963.250 3403.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 3220.130 2963.250 3223.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 3040.130 2963.250 3043.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2860.130 2963.250 2863.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2680.130 2963.250 2683.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2500.130 2963.250 2503.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2320.130 2963.250 2323.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 2140.130 2963.250 2143.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1960.130 2963.250 1963.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1780.130 2963.250 1783.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1600.130 2963.250 1603.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1420.130 2963.250 1423.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1240.130 2963.250 1243.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 1060.130 2963.250 1063.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 880.130 2963.250 883.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 700.130 2963.250 703.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 520.130 2963.250 523.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 340.130 2963.250 343.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 160.130 2963.250 163.230 ;
+ END
+ END vssa2
+ PIN vssa2
+ DIRECTION INOUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT -43.630 -38.270 2963.250 -35.170 ;
+ END
+ END vssa2
+ OBS
+ LAYER met1 ;
+ RECT 5.520 10.640 2914.100 3509.040 ;
+ LAYER met2 ;
+ RECT 9.110 10.640 2891.930 3509.040 ;
+ LAYER met3 ;
+ RECT 8.970 10.715 2892.070 3508.965 ;
+ END
+END user_project_wrapper
+END LIBRARY
+
diff --git a/caravel/mag/user_analog_project_wrapper_empty.mag b/caravel/mag/user_analog_project_wrapper_empty.mag
new file mode 120000
index 0000000..7aab9c6
--- /dev/null
+++ b/caravel/mag/user_analog_project_wrapper_empty.mag
@@ -0,0 +1 @@
+user_analog_project_wrapper.mag
\ No newline at end of file
diff --git a/caravel/manifest b/caravel/manifest
new file mode 100644
index 0000000..3e2ffa7
--- /dev/null
+++ b/caravel/manifest
@@ -0,0 +1,48 @@
+0ca19fc3c20b483c8691ba25ed131648e6c194d3 verilog/rtl/DFFRAM.v
+216d603c97eb28f4e8957e534116c0caa5711bbd verilog/rtl/DFFRAMBB.v
+535d0592c0b1349489b6b86fd5449f9d1d81482e verilog/rtl/__uprj_analog_netlists.v
+87735eb5981740ca4d4b48e6b0321c8bb0023800 verilog/rtl/__uprj_netlists.v
+684085713662e37a26f9f981d35be7c6c7ff6e9a verilog/rtl/__user_analog_project_wrapper.v
+b5ad3558a91e508fad154b91565c7d664b247020 verilog/rtl/__user_project_wrapper.v
+7c25df2bd392893aa5b6fb0074332ea605ac3ed7 verilog/rtl/caravan.v
+e7d48588820f78c23284f663e99def4e43e59af3 verilog/rtl/caravan_netlists.v
+8623f6eace1f0d16dea0f1dfcc6357ddb7657781 verilog/rtl/caravel.v
+b2feeb2a098894d5d731a5b011858a471e855d73 verilog/rtl/caravel_clocking.v
+b707ae2325692f0441dfcd27272a9ad8611771bd verilog/rtl/chip_io.v
+614e2abd6759e927bc1c0bae4149169b0a444165 verilog/rtl/chip_io_alt.v
+d772308bd2a72121d7ed9dcdd40c8e6cbbe4b43c verilog/rtl/clock_div.v
+f937b52e53d45bdbe41bcbd07c65b41104c21756 verilog/rtl/convert_gpio_sigs.v
+21204dc96bdb3c1295dd06375293ee3d811d2f7e verilog/rtl/counter_timer_high.v
+6b9b2ab85a85f73d6ce686c67fc85e59d9623ee6 verilog/rtl/counter_timer_low.v
+fff2d08e49701312c2ebd6714b7425baf83f3d35 verilog/rtl/digital_pll.v
+ce49f9af199b5f16d2c39c417d58e5890bc7bab2 verilog/rtl/digital_pll_controller.v
+a1878558828b746a90d391bfe72ff0c1fadc2d92 verilog/rtl/gpio_control_block.v
+32d395d5936632f3c92a0de4867d6dd7cd4af1bb verilog/rtl/gpio_logic_high.v
+57554b3586f306944b31718a8c52526fa9a8a574 verilog/rtl/gpio_wb.v
+240d94f4783872b541879e8a7a0c6d9144aa8a91 verilog/rtl/housekeeping_spi.v
+6c11ee92e0b2995982041d8a599b5d46b7dde838 verilog/rtl/la_wb.v
+e04eb60b98cf1c0ab1aeca22cbe985080b6e3d47 verilog/rtl/mem_wb.v
+45d465b5cec158d2ad6d6b9a8595a58326fa12bb verilog/rtl/mgmt_core.v
+e12b24540b26523131cfed8f17e79df5ba2f067e verilog/rtl/mgmt_protect.v
+3b1ff20593bc386d13f5e2cf1571f08121889957 verilog/rtl/mgmt_protect_hv.v
+cc5704c74e5c46a73b96ba6804ff9ed1e3d4594c verilog/rtl/mgmt_soc.v
+9816acedf3dc3edd193861cc217ec46180ac1cdd verilog/rtl/mprj2_logic_high.v
+4b76489a9d03c0411d16dbad9c38cdcfef8d0f72 verilog/rtl/mprj_ctrl.v
+a61f5566f5d369d879c47d6b65f99cf297debe8f verilog/rtl/mprj_io.v
+b928ab6205a267f6ac83c603965c6f34a486724e verilog/rtl/mprj_logic_high.v
+eac1e6d413cdfbc2f802e229ae5058828e01be1e verilog/rtl/pads.v
+b5aff2fda5078cfda377b98337fcc91040815fc2 verilog/rtl/picorv32.v
+669d16642d5dd5f6824812754db20db98c9fe17b verilog/rtl/ring_osc2x13.v
+6864cc10dacfd3edb4c66825b7a301ab097cea0d verilog/rtl/simple_por.v
+cf08cb295ed068ccb521b9203a8dee2bb83446ee verilog/rtl/simple_spi_master.v
+d43221ffa0f2d760991d8b911b4a5292911203f5 verilog/rtl/simpleuart.v
+46bca62460c4dbfac30233318b24c3d526a40058 verilog/rtl/sky130_fd_sc_hvl__lsbufhv2lv_1_wrapped.v
+eb0c856ab69e8c364c04bdc149db9d82ae67b39d verilog/rtl/spimemio.v
+ff5fd967e7401e07ecce4e973746568354a6dcb8 verilog/rtl/sram_1rw1r_32_256_8_sky130.v
+cee5f1b535ce1f483fa69678255b543c408f1fb7 verilog/rtl/storage.v
+7e8d789570ed224df49cf61f69593cc738790a5d verilog/rtl/storage_bridge_wb.v
+5e314e94a13d7291117123395ae088e1d17cf487 verilog/rtl/sysctrl.v
+e6246df6bbf0860a331b3547d64f7d235b0eca9a verilog/rtl/wb_intercon.v
+9d06bd68e8ec6918cd3ef5467cb8cee44e7e3a26 scripts/set_user_id.py
+e20a41180aef509c5dc06f15c4458eed90651c5a scripts/generate_fill.py
+b676e0bf6f1c287d0a67ca4cd2d7ef0760284be1 scripts/compositor.py
diff --git a/caravel/openlane/Makefile b/caravel/openlane/Makefile
new file mode 100644
index 0000000..9398841
--- /dev/null
+++ b/caravel/openlane/Makefile
@@ -0,0 +1,90 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+BLOCKS = $(shell find * -maxdepth 0 -type d)
+CONFIG = $(foreach block,$(BLOCKS), ./$(block)/config.tcl)
+CLEAN = $(foreach block,$(BLOCKS), clean-$(block))
+
+OPENLANE_TAG ?= 2021.09.19_20.25.16
+OPENLANE_IMAGE_NAME ?= efabless/openlane:$(OPENLANE_TAG)
+OPENLANE_BASIC_COMMAND = "cd /project/openlane && flow.tcl -design ./$* -save_path .. -save -tag $* -overwrite"
+OPENLANE_INTERACTIVE_COMMAND = "cd /project/openlane && flow.tcl -it -file ./$*/interactive.tcl"
+
+all: $(BLOCKS)
+
+$(CONFIG) :
+ @echo "Missing $@. Please create a configuration for that design"
+ @exit 1
+
+$(BLOCKS) : % : ./%/config.tcl FORCE
+ifeq ($(OPENLANE_ROOT),)
+ @echo "Please export OPENLANE_ROOT"
+ @exit 1
+endif
+ifeq ($(PDK_ROOT),)
+ @echo "Please export PDK_ROOT"
+ @exit 1
+endif
+ @echo "###############################################"
+ @sleep 1
+
+ @if [ -f ./$*/interactive.tcl ]; then\
+ docker run -it -v $(OPENLANE_ROOT):/openLANE_flow \
+ -v $(PDK_ROOT):$(PDK_ROOT) \
+ -v $(PWD)/..:/project \
+ -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \
+ -e PDK_ROOT=$(PDK_ROOT) \
+ -e CARAVEL_ROOT=$(CARAVEL_ROOT) \
+ -u $(shell id -u $(USER)):$(shell id -g $(USER)) \
+ $(OPENLANE_IMAGE_NAME) sh -c $(OPENLANE_INTERACTIVE_COMMAND);\
+ else\
+ docker run -it -v $(OPENLANE_ROOT):/openLANE_flow \
+ -v $(PDK_ROOT):$(PDK_ROOT) \
+ -v $(PWD)/..:/project \
+ -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \
+ -e PDK_ROOT=$(PDK_ROOT) \
+ -e CARAVEL_ROOT=$(CARAVEL_ROOT) \
+ -u $(shell id -u $(USER)):$(shell id -g $(USER)) \
+ $(OPENLANE_IMAGE_NAME) sh -c $(OPENLANE_BASIC_COMMAND);\
+ fi
+ mkdir -p ../signoff/$*/
+ cp $*/runs/$*/OPENLANE_VERSION ../signoff/$*/
+ cp $*/runs/$*/PDK_SOURCES ../signoff/$*/
+ cp $*/runs/$*/reports/final_summary_report.csv ../signoff/$*/
+
+.PHONY: openlane
+openlane:
+ifeq ($(OPENLANE_ROOT),)
+ @echo "Please export OPENLANE_ROOT"
+ @exit 1
+endif
+ git clone https://github.com/The-OpenROAD-Project/OpenLane --branch=$(OPENLANE_TAG) --depth=1 $(OPENLANE_ROOT) && \
+ cd $(OPENLANE_ROOT) && \
+ export IMAGE_NAME=efabless/openlane:$(OPENLANE_TAG) && \
+ make openlane
+
+FORCE:
+
+clean:
+ @echo "Use clean_all to clean everything :)"
+
+clean_all: $(CLEAN)
+
+$(CLEAN): clean-% :
+ rm -rf runs/$*
+ rm -rf ../gds/$**
+ rm -rf ../mag/$**
+ rm -rf ../lef/$**
diff --git a/caravel/openlane/user_analog_project_wrapper_empty/config.tcl b/caravel/openlane/user_analog_project_wrapper_empty/config.tcl
new file mode 100644
index 0000000..6e1414a
--- /dev/null
+++ b/caravel/openlane/user_analog_project_wrapper_empty/config.tcl
@@ -0,0 +1,39 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+set script_dir [file dirname [file normalize [info script]]]
+source $script_dir/fixed_wrapper_cfgs.tcl
+
+set ::env(DESIGN_NAME) user_analog_project_wrapper
+
+set ::env(GLB_RT_OBS) "met1 0 0 $::env(DIE_AREA),\
+ met2 0 0 $::env(DIE_AREA),\
+ met3 0 0 $::env(DIE_AREA),\
+ met4 0 0 $::env(DIE_AREA),\
+ met5 0 0 $::env(DIE_AREA)"
+
+set ::env(CLOCK_PORT) "wb_clk_i"
+set ::env(CLOCK_NET) "wb_clk_i"
+
+set ::env(CLOCK_PERIOD) "10"
+
+set ::env(DIODE_INSERTION_STRATEGY) 0
+set ::env(SYNTH_DEFINES) "USE_POWER_PINS"
+
+set ::env(MAGIC_WRITE_FULL_LEF) 1
+
+set ::env(VERILOG_FILES) "\
+ $script_dir/../../verilog/rtl/defines.v \
+ $script_dir/../../verilog/rtl/__user_analog_project_wrapper.v"
diff --git a/caravel/openlane/user_analog_project_wrapper_empty/fixed_wrapper_cfgs.tcl b/caravel/openlane/user_analog_project_wrapper_empty/fixed_wrapper_cfgs.tcl
new file mode 100644
index 0000000..a4778c7
--- /dev/null
+++ b/caravel/openlane/user_analog_project_wrapper_empty/fixed_wrapper_cfgs.tcl
@@ -0,0 +1,41 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+# DON'T TOUCH THE FOLLOWING SECTIONS
+
+# This makes sure that the core rings are outside the boundaries
+# of your block.
+set ::env(MAGIC_ZEROIZE_ORIGIN) 0
+
+# Area Configurations. DON'T TOUCH.
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 2920 3520"
+
+set ::env(RUN_CVC) 0
+
+# Pin Configurations. DON'T TOUCH
+set ::unit 2.4
+set ::env(FP_IO_VLENGTH) $::unit
+set ::env(FP_IO_HLENGTH) $::unit
+
+set ::env(FP_IO_VTHICKNESS_MULT) 4
+set ::env(FP_IO_HTHICKNESS_MULT) 4
+
+# Power & Pin Configurations. DON'T TOUCH.
+set ::env(FP_PDN_CORE_RING) 0
+
+set ::env(VDD_NETS) [list {vccd1} {vccd2} {vdda1} {vdda2}]
+set ::env(GND_NETS) [list {vssd1} {vssd2} {vssa1} {vssa2}]
+set ::env(SYNTH_USE_PG_PINS_DEFINES) "USE_POWER_PINS"
\ No newline at end of file
diff --git a/caravel/openlane/user_analog_project_wrapper_empty/interactive.tcl b/caravel/openlane/user_analog_project_wrapper_empty/interactive.tcl
new file mode 100644
index 0000000..f67a7d7
--- /dev/null
+++ b/caravel/openlane/user_analog_project_wrapper_empty/interactive.tcl
@@ -0,0 +1,65 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+package require openlane
+set script_dir [file dirname [file normalize [info script]]]
+
+prep -design $script_dir -tag user_analog_project_wrapper_empty -overwrite
+set save_path $script_dir/../..
+
+verilog_elaborate
+
+init_floorplan
+
+# making it "empty"
+remove_nets -input $::env(CURRENT_DEF)
+remove_components -input $::env(CURRENT_DEF)
+
+set ::env(SAVE_DEF) [index_file $::env(ioPlacer_tmp_file_tag).def]
+try_catch openroad -exit $script_dir/or_ioplace.tcl |& tee $::env(TERMINAL_OUTPUT) [index_file $::env(ioPlacer_log_file_tag).log 0]
+set_def $::env(SAVE_DEF)
+
+# rename "duplicate" pins
+exec /bin/bash $script_dir/../../utils/rename_pins.sh $::env(SAVE_DEF) "io_analog_1_4,io_analog_1_5,io_analog_1_6,vdda1_1,vdda1_2,vdda1_3,vdda2_1,vssa1_1,vssa1_2,vssa1_3,vssa2_1,vccd1_1,vccd2_1,vssd1_1,vssd2_1" "io_analog\[4\],io_analog\[5\],io_analog\[6\],vdda1,vdda1,vdda1,vdda2,vssa1,vssa1,vssa1,vssa2,vccd1,vccd2,vssd1,vssd2"
+
+run_magic
+
+run_magic_drc
+
+save_views -lef_path $::env(magic_result_file_tag).lef \
+ -def_path $::env(CURRENT_DEF) \
+ -gds_path $::env(magic_result_file_tag).gds \
+ -mag_path $::env(magic_result_file_tag).mag \
+ -save_path $save_path \
+ -tag $::env(RUN_TAG)
+
+# make pin labels visible in the magview
+exec /bin/bash $script_dir/../../utils/export_pin_labels.sh $script_dir/../../mag/$::env(RUN_TAG).mag 0 3498 2920 3520 0 -20 2920 4 >@stdout 2>@stderr
+
+# Draw Boundary in the magview
+exec /bin/bash $script_dir/../../utils/draw_boundary.sh $script_dir/../../mag/$::env(RUN_TAG).mag 0 0 2920 3520 >@stdout 2>@stderr
+
+# produce "obstructed" LEF to be used for routing
+set gap 0.4
+set llx [expr [lindex $::env(DIE_AREA) 0]-$gap]
+set lly [expr [lindex $::env(DIE_AREA) 1]-$gap]
+set urx [expr [lindex $::env(DIE_AREA) 2]+$gap]
+set ury [expr [lindex $::env(DIE_AREA) 3]+$gap]
+exec python3 $::env(OPENLANE_ROOT)/scripts/rectify.py $llx $lly $urx $ury \
+ < $::env(magic_result_file_tag).lef \
+ | python3 $::env(OPENLANE_ROOT)/scripts/obs.py {*}$::env(DIE_AREA) li1 met1 met2 met3 \
+ | python3 $::env(OPENLANE_ROOT)/scripts/obs.py -42.88 -37.53 2962.50 3557.21 met4 met5 \
+ > $::env(magic_result_file_tag).obstructed.lef
+file copy -force $::env(magic_result_file_tag).obstructed.lef $save_path/lef
\ No newline at end of file
diff --git a/caravel/openlane/user_analog_project_wrapper_empty/or_ioplace.tcl b/caravel/openlane/user_analog_project_wrapper_empty/or_ioplace.tcl
new file mode 100644
index 0000000..65abbe2
--- /dev/null
+++ b/caravel/openlane/user_analog_project_wrapper_empty/or_ioplace.tcl
@@ -0,0 +1,279 @@
+# Copyright 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+## Needs OpenRoad Commit: 29db63fdda643f01d5a7705606a96681ab855a68
+
+if {[catch {read_lef $::env(MERGED_LEF)} errmsg]} {
+ puts stderr $errmsg
+ exit 1
+}
+
+if {[catch {read_def $::env(CURRENT_DEF)} errmsg]} {
+ puts stderr $errmsg
+ exit 1
+}
+
+ppl::set_hor_length $::env(FP_IO_HLENGTH)
+ppl::set_ver_length $::env(FP_IO_VLENGTH)
+ppl::set_hor_length_extend $::env(FP_IO_VEXTEND)
+ppl::set_ver_length_extend $::env(FP_IO_HEXTEND)
+ppl::set_ver_thick_multiplier $::env(FP_IO_VTHICKNESS_MULT)
+ppl::set_hor_thick_multiplier $::env(FP_IO_HTHICKNESS_MULT)
+
+## Config
+set core_area_x 2920
+set core_area_y 3520
+
+set analog_pin_size 25
+lappend analog_pin_size 8.5
+
+set clamp_pin_size 11
+lappend clamp_pin_size 8.5
+
+set power_pin_size 24
+lappend power_pin_size 8.3
+
+set pin_width 0.56
+set pin_height 2.40
+set pin_extension 4
+
+set regular_pin_size $pin_width
+lappend regular_pin_size [expr {$pin_height + $pin_extension}]
+
+set power_pins {vdda1 vdda1_1 vdda1_2 vdda1_3 vdda2 vdda2_1 vssa1 vssa1_1 vssa1_2 vssa1_3 vssa2 vssa2_1 vccd1 vccd1_1 vccd2 vccd2_1 vssd1 vssd1_1 vssd2 vssd2_1}
+
+## North Pins
+set north_pins { io_analog[1] vssa1 vssa1_1 io_analog[2] io_analog[3]
+ io_analog[4] io_clamp_high[0] io_clamp_low[0] io_analog_1_4
+ io_analog[5] io_clamp_high[1] io_clamp_low[1] io_analog_1_5
+ io_analog[6] io_clamp_high[2] io_clamp_low[2] io_analog_1_6
+ io_analog[7] io_analog[8] io_analog[9] }
+
+set offset_x 80.97
+set min_distance 235
+set clamp_min_distance 1.5
+set io_5to4_distance 432
+set io_4to3_distance 395.5
+
+set spacing_list [list 0 235 235 202 1.5 1.5 1.5 182 1.5 1.5 1.5 $io_5to4_distance 1.5 1.5 1.5 $io_4to3_distance 235 201 26 206]
+
+set i 0
+foreach pin [lreverse $north_pins] {
+
+ if {[string match "io_clamp*" $pin]} {
+ set pin_size $clamp_pin_size
+ } elseif { $pin in $power_pins} {
+ set pin_size $power_pin_size
+ } else {
+ set pin_size $analog_pin_size
+ }
+
+ set loc_y [expr {$core_area_y - [lindex $pin_size 1] / 2.0}]
+
+ if { $i==0 } {
+ set location [expr {$offset_x + [lindex $pin_size 0] / 2.0}]
+ } else {
+ set loc_x [expr {[lindex $prev_pin_size 0] / 2.0 + [lindex $pin_size 0] / 2.0 + [lindex $spacing_list $i] + [lindex $location 0]}]
+ set location $loc_x
+ }
+
+ lappend location $loc_y
+ puts $location
+ place_pin -pin_name $pin -layer met3 -location $location -pin_size $pin_size
+ set i [expr {$i + 1}]
+ set prev_pin_size $pin_size
+}
+
+## East Pins
+set east_pins { io_analog[0]
+ vccd1 vccd1_1
+ io_oeb[13] io_out[13] io_in[13] io_in_3v3[13] gpio_noesd[6] gpio_analog[6]
+ vdda1_1 vdda1
+ io_oeb[12] io_out[12] io_in[12] io_in_3v3[12] gpio_noesd[5] gpio_analog[5]
+ io_oeb[11] io_out[11] io_in[11] io_in_3v3[11] gpio_noesd[4] gpio_analog[4]
+ io_oeb[10] io_out[10] io_in[10] io_in_3v3[10] gpio_noesd[3] gpio_analog[3]
+ io_oeb[9] io_out[9] io_in[9] io_in_3v3[9] gpio_noesd[2] gpio_analog[2]
+ io_oeb[8] io_out[8] io_in[8] io_in_3v3[8] gpio_noesd[1] gpio_analog[1]
+ io_oeb[7] io_out[7] io_in[7] io_in_3v3[7] gpio_noesd[0] gpio_analog[0]
+ vdda1_2 vdda1_3
+ vssd1 vssd1_1
+ vssa1_2 vssa1_3
+ io_oeb[6] io_out[6] io_in[6] io_in_3v3[6]
+ io_oeb[5] io_out[5] io_in[5] io_in_3v3[5]
+ io_oeb[4] io_out[4] io_in[4] io_in_3v3[4]
+ io_oeb[3] io_out[3] io_in[3] io_in_3v3[3]
+ io_oeb[2] io_out[2] io_in[2] io_in_3v3[2]
+ io_oeb[1] io_out[1] io_in[1] io_in_3v3[1]
+ io_oeb[0] io_out[0] io_in[0] io_in_3v3[0]
+}
+
+set min_distance 5.35
+
+set spacing_list " 0
+ $min_distance $min_distance $min_distance $min_distance
+ $min_distance $min_distance $min_distance $min_distance
+ $min_distance $min_distance $min_distance $min_distance
+ $min_distance $min_distance $min_distance $min_distance
+ $min_distance $min_distance $min_distance 114
+ $min_distance $min_distance $min_distance 205
+ $min_distance $min_distance $min_distance 208
+ 26 149
+ 26 145
+ 26 146
+ $min_distance $min_distance $min_distance $min_distance $min_distance 192
+ $min_distance $min_distance $min_distance $min_distance $min_distance 196
+ $min_distance $min_distance $min_distance $min_distance $min_distance 202
+ $min_distance $min_distance $min_distance $min_distance $min_distance 192
+ $min_distance $min_distance $min_distance $min_distance $min_distance 192
+ $min_distance $min_distance $min_distance $min_distance $min_distance 202
+ 26 141
+ $min_distance $min_distance $min_distance $min_distance $min_distance 201
+ 26 167 "
+
+set offset_y 8
+
+set size $pin_height
+lappend size $pin_width
+
+
+set i 0
+set location 0
+lappend location $offset_y
+
+foreach pin [lreverse $east_pins] {
+
+ if {[string match "io_analog*" $pin]} {
+ set pin_size [lreverse $analog_pin_size]
+ set loc_x [expr {$core_area_x - [lindex $pin_size 0] / 2.0 }]
+ } elseif { $pin in $power_pins } {
+ set pin_size [lreverse $power_pin_size]
+ set loc_x [expr {$core_area_x - [lindex $pin_size 0] / 2.0 }]
+ } else {
+ set pin_size [lreverse $regular_pin_size]
+ set loc_x [expr {$core_area_x - [lindex $pin_size 0] / 2.0 + $pin_extension}]
+ }
+
+ if {$i == 0} {
+ set location $loc_x
+ lappend location $offset_y
+ } else {
+ set loc_y [expr { [lindex $prev_pin_size 1] / 2.0 + [lindex $pin_size 1] / 2.0 + + [lindex $spacing_list $i] + [lindex $location 1]}]
+ set location $loc_x
+ lappend location $loc_y
+ }
+
+ place_pin -pin_name $pin -layer met3 -location $location -pin_size $pin_size
+ set i [expr {$i + 1}]
+ set prev_pin_size $pin_size
+}
+
+## West Pins
+set west_pins {
+ io_analog[10]
+ vccd2 vccd2_1
+ vssa2 vssa2_1
+ gpio_analog[7] gpio_noesd[7] io_in_3v3[14] io_in[14] io_out[14] io_oeb[14]
+ gpio_analog[8] gpio_noesd[8] io_in_3v3[15] io_in[15] io_out[15] io_oeb[15]
+ gpio_analog[9] gpio_noesd[9] io_in_3v3[16] io_in[16] io_out[16] io_oeb[16]
+ gpio_analog[10] gpio_noesd[10] io_in_3v3[17] io_in[17] io_out[17] io_oeb[17]
+ gpio_analog[11] gpio_noesd[11] io_in_3v3[18] io_in[18] io_out[18] io_oeb[18]
+ gpio_analog[12] gpio_noesd[12] io_in_3v3[19] io_in[19] io_out[19] io_oeb[19]
+ gpio_analog[13] gpio_noesd[13] io_in_3v3[20] io_in[20] io_out[20] io_oeb[20]
+ vdda2_1 vdda2
+ vssd2 vssd2_1
+ gpio_analog[14] gpio_noesd[14] io_in_3v3[21] io_in[21] io_out[21] io_oeb[21]
+ gpio_analog[15] gpio_noesd[15] io_in_3v3[22] io_in[22] io_out[22] io_oeb[22]
+ gpio_analog[16] gpio_noesd[16] io_in_3v3[23] io_in[23] io_out[23] io_oeb[23]
+ gpio_analog[17] gpio_noesd[17] io_in_3v3[24] io_in[24] io_out[24] io_oeb[24]
+ io_in_3v3[25] io_in[25] io_out[25] io_oeb[25]
+ io_in_3v3[26] io_in[26] io_out[26] io_oeb[26]
+}
+
+set min_distance 5.35
+
+set spacing_list " 0
+ $min_distance $min_distance $min_distance $min_distance
+ $min_distance $min_distance $min_distance $min_distance
+ $min_distance $min_distance $min_distance $min_distance $min_distance 77
+ $min_distance $min_distance $min_distance $min_distance $min_distance 186
+ $min_distance $min_distance $min_distance $min_distance $min_distance 186
+ $min_distance $min_distance $min_distance $min_distance $min_distance 190
+ 26 136
+ 26 134
+ $min_distance $min_distance $min_distance $min_distance $min_distance 185
+ $min_distance $min_distance $min_distance $min_distance $min_distance 186
+ $min_distance $min_distance $min_distance $min_distance $min_distance 186
+ $min_distance $min_distance $min_distance $min_distance $min_distance 186
+ $min_distance $min_distance $min_distance $min_distance $min_distance 186
+ $min_distance $min_distance $min_distance $min_distance $min_distance 186
+ $min_distance $min_distance $min_distance $min_distance $min_distance 189
+ 26 348
+ 26 158"
+
+set offset_y 8
+set size $pin_height
+lappend size $pin_width
+
+
+set i 0
+foreach pin [lreverse $west_pins] {
+
+ if {[string match "io_analog*" $pin]} {
+ set pin_size [lreverse $analog_pin_size]
+ set loc_x [expr {[ lindex $pin_size 0] / 2.0 }]
+ } elseif { $pin in $power_pins } {
+ set pin_size [lreverse $power_pin_size]
+ set loc_x [expr {[ lindex $pin_size 0] / 2.0 }]
+ } else {
+ set pin_size [lreverse $regular_pin_size]
+ set loc_x [expr {[lindex $pin_size 0] / 2.0 - $pin_extension}]
+ }
+
+ if {$i == 0} {
+ set location $loc_x
+ lappend location $offset_y
+ } else {
+ set loc_y [expr { [lindex $prev_pin_size 1] / 2.0 + [lindex $pin_size 1] / 2.0 + [lindex $spacing_list $i] + [lindex $location 1]}]
+ set location $loc_x
+ lappend location $loc_y
+ }
+
+ place_pin -pin_name $pin -layer met3 -location $location -pin_size $pin_size
+ set i [expr {$i + 1}]
+ set prev_pin_size $pin_size
+}
+
+
+## South Pins
+set south_pins { wb_clk_i wb_rst_i wbs_ack_o wbs_cyc_i wbs_stb_i wbs_we_i wbs_adr_i[0] wbs_dat_i[0] wbs_dat_o[0] wbs_sel_i[0] wbs_adr_i[1] wbs_dat_i[1] wbs_dat_o[1] wbs_sel_i[1] wbs_adr_i[2] wbs_dat_i[2] wbs_dat_o[2] wbs_sel_i[2] wbs_adr_i[3] wbs_dat_i[3] wbs_dat_o[3] wbs_sel_i[3] wbs_adr_i[4] wbs_dat_i[4] wbs_dat_o[4] wbs_adr_i[5] wbs_dat_i[5] wbs_dat_o[5] wbs_adr_i[6] wbs_dat_i[6] wbs_dat_o[6] wbs_adr_i[7] wbs_dat_i[7] wbs_dat_o[7] wbs_adr_i[8] wbs_dat_i[8] wbs_dat_o[8] wbs_adr_i[9] wbs_dat_i[9] wbs_dat_o[9] wbs_adr_i[10] wbs_dat_i[10] wbs_dat_o[10] wbs_adr_i[11] wbs_dat_i[11] wbs_dat_o[11] wbs_adr_i[12] wbs_dat_i[12] wbs_dat_o[12] wbs_adr_i[13] wbs_dat_i[13] wbs_dat_o[13] wbs_adr_i[14] wbs_dat_i[14] wbs_dat_o[14] wbs_adr_i[15] wbs_dat_i[15] wbs_dat_o[15] wbs_adr_i[16] wbs_dat_i[16] wbs_dat_o[16] wbs_adr_i[17] wbs_dat_i[17] wbs_dat_o[17] wbs_adr_i[18] wbs_dat_i[18] wbs_dat_o[18] wbs_adr_i[19] wbs_dat_i[19] wbs_dat_o[19] wbs_adr_i[20] wbs_dat_i[20] wbs_dat_o[20] wbs_adr_i[21] wbs_dat_i[21] wbs_dat_o[21] wbs_adr_i[22] wbs_dat_i[22] wbs_dat_o[22] wbs_adr_i[23] wbs_dat_i[23] wbs_dat_o[23] wbs_adr_i[24] wbs_dat_i[24] wbs_dat_o[24] wbs_adr_i[25] wbs_dat_i[25] wbs_dat_o[25] wbs_adr_i[26] wbs_dat_i[26] wbs_dat_o[26] wbs_adr_i[27] wbs_dat_i[27] wbs_dat_o[27] wbs_adr_i[28] wbs_dat_i[28] wbs_dat_o[28] wbs_adr_i[29] wbs_dat_i[29] wbs_dat_o[29] wbs_adr_i[30] wbs_dat_i[30] wbs_dat_o[30] wbs_adr_i[31] wbs_dat_i[31] wbs_dat_o[31] la_data_in[0] la_data_out[0] la_oenb[0] la_data_in[1] la_data_out[1] la_oenb[1] la_data_in[2] la_data_out[2] la_oenb[2] la_data_in[3] la_data_out[3] la_oenb[3] la_data_in[4] la_data_out[4] la_oenb[4] la_data_in[5] la_data_out[5] la_oenb[5] la_data_in[6] la_data_out[6] la_oenb[6] la_data_in[7] la_data_out[7] la_oenb[7] la_data_in[8] la_data_out[8] la_oenb[8] la_data_in[9] la_data_out[9] la_oenb[9] la_data_in[10] la_data_out[10] la_oenb[10] la_data_in[11] la_data_out[11] la_oenb[11] la_data_in[12] la_data_out[12] la_oenb[12] la_data_in[13] la_data_out[13] la_oenb[13] la_data_in[14] la_data_out[14] la_oenb[14] la_data_in[15] la_data_out[15] la_oenb[15] la_data_in[16] la_data_out[16] la_oenb[16] la_data_in[17] la_data_out[17] la_oenb[17] la_data_in[18] la_data_out[18] la_oenb[18] la_data_in[19] la_data_out[19] la_oenb[19] la_data_in[20] la_data_out[20] la_oenb[20] la_data_in[21] la_data_out[21] la_oenb[21] la_data_in[22] la_data_out[22] la_oenb[22] la_data_in[23] la_data_out[23] la_oenb[23] la_data_in[24] la_data_out[24] la_oenb[24] la_data_in[25] la_data_out[25] la_oenb[25] la_data_in[26] la_data_out[26] la_oenb[26] la_data_in[27] la_data_out[27] la_oenb[27] la_data_in[28] la_data_out[28] la_oenb[28] la_data_in[29] la_data_out[29] la_oenb[29] la_data_in[30] la_data_out[30] la_oenb[30] la_data_in[31] la_data_out[31] la_oenb[31] la_data_in[32] la_data_out[32] la_oenb[32] la_data_in[33] la_data_out[33] la_oenb[33] la_data_in[34] la_data_out[34] la_oenb[34] la_data_in[35] la_data_out[35] la_oenb[35] la_data_in[36] la_data_out[36] la_oenb[36] la_data_in[37] la_data_out[37] la_oenb[37] la_data_in[38] la_data_out[38] la_oenb[38] la_data_in[39] la_data_out[39] la_oenb[39] la_data_in[40] la_data_out[40] la_oenb[40] la_data_in[41] la_data_out[41] la_oenb[41] la_data_in[42] la_data_out[42] la_oenb[42] la_data_in[43] la_data_out[43] la_oenb[43] la_data_in[44] la_data_out[44] la_oenb[44] la_data_in[45] la_data_out[45] la_oenb[45] la_data_in[46] la_data_out[46] la_oenb[46] la_data_in[47] la_data_out[47] la_oenb[47] la_data_in[48] la_data_out[48] la_oenb[48] la_data_in[49] la_data_out[49] la_oenb[49] la_data_in[50] la_data_out[50] la_oenb[50] la_data_in[51] la_data_out[51] la_oenb[51] la_data_in[52] la_data_out[52] la_oenb[52] la_data_in[53] la_data_out[53] la_oenb[53] la_data_in[54] la_data_out[54] la_oenb[54] la_data_in[55] la_data_out[55] la_oenb[55] la_data_in[56] la_data_out[56] la_oenb[56] la_data_in[57] la_data_out[57] la_oenb[57] la_data_in[58] la_data_out[58] la_oenb[58] la_data_in[59] la_data_out[59] la_oenb[59] la_data_in[60] la_data_out[60] la_oenb[60] la_data_in[61] la_data_out[61] la_oenb[61] la_data_in[62] la_data_out[62] la_oenb[62] la_data_in[63] la_data_out[63] la_oenb[63] la_data_in[64] la_data_out[64] la_oenb[64] la_data_in[65] la_data_out[65] la_oenb[65] la_data_in[66] la_data_out[66] la_oenb[66] la_data_in[67] la_data_out[67] la_oenb[67] la_data_in[68] la_data_out[68] la_oenb[68] la_data_in[69] la_data_out[69] la_oenb[69] la_data_in[70] la_data_out[70] la_oenb[70] la_data_in[71] la_data_out[71] la_oenb[71] la_data_in[72] la_data_out[72] la_oenb[72] la_data_in[73] la_data_out[73] la_oenb[73] la_data_in[74] la_data_out[74] la_oenb[74] la_data_in[75] la_data_out[75] la_oenb[75] la_data_in[76] la_data_out[76] la_oenb[76] la_data_in[77] la_data_out[77] la_oenb[77] la_data_in[78] la_data_out[78] la_oenb[78] la_data_in[79] la_data_out[79] la_oenb[79] la_data_in[80] la_data_out[80] la_oenb[80] la_data_in[81] la_data_out[81] la_oenb[81] la_data_in[82] la_data_out[82] la_oenb[82] la_data_in[83] la_data_out[83] la_oenb[83] la_data_in[84] la_data_out[84] la_oenb[84] la_data_in[85] la_data_out[85] la_oenb[85] la_data_in[86] la_data_out[86] la_oenb[86] la_data_in[87] la_data_out[87] la_oenb[87] la_data_in[88] la_data_out[88] la_oenb[88] la_data_in[89] la_data_out[89] la_oenb[89] la_data_in[90] la_data_out[90] la_oenb[90] la_data_in[91] la_data_out[91] la_oenb[91] la_data_in[92] la_data_out[92] la_oenb[92] la_data_in[93] la_data_out[93] la_oenb[93] la_data_in[94] la_data_out[94] la_oenb[94] la_data_in[95] la_data_out[95] la_oenb[95] la_data_in[96] la_data_out[96] la_oenb[96] la_data_in[97] la_data_out[97] la_oenb[97] la_data_in[98] la_data_out[98] la_oenb[98] la_data_in[99] la_data_out[99] la_oenb[99] la_data_in[100] la_data_out[100] la_oenb[100] la_data_in[101] la_data_out[101] la_oenb[101] la_data_in[102] la_data_out[102] la_oenb[102] la_data_in[103] la_data_out[103] la_oenb[103] la_data_in[104] la_data_out[104] la_oenb[104] la_data_in[105] la_data_out[105] la_oenb[105] la_data_in[106] la_data_out[106] la_oenb[106] la_data_in[107] la_data_out[107] la_oenb[107] la_data_in[108] la_data_out[108] la_oenb[108] la_data_in[109] la_data_out[109] la_oenb[109] la_data_in[110] la_data_out[110] la_oenb[110] la_data_in[111] la_data_out[111] la_oenb[111] la_data_in[112] la_data_out[112] la_oenb[112] la_data_in[113] la_data_out[113] la_oenb[113] la_data_in[114] la_data_out[114] la_oenb[114] la_data_in[115] la_data_out[115] la_oenb[115] la_data_in[116] la_data_out[116] la_oenb[116] la_data_in[117] la_data_out[117] la_oenb[117] la_data_in[118] la_data_out[118] la_oenb[118] la_data_in[119] la_data_out[119] la_oenb[119] la_data_in[120] la_data_out[120] la_oenb[120] la_data_in[121] la_data_out[121] la_oenb[121] la_data_in[122] la_data_out[122] la_oenb[122] la_data_in[123] la_data_out[123] la_oenb[123] la_data_in[124] la_data_out[124] la_oenb[124] la_data_in[125] la_data_out[125] la_oenb[125] la_data_in[126] la_data_out[126] la_oenb[126] la_data_in[127] la_data_out[127] la_oenb[127] user_clock2 user_irq[0] user_irq[1] user_irq[2] }
+set min_distance 5.35
+set offset_x 2.9
+
+set size $pin_width
+lappend size [expr {$pin_height + $pin_extension}]
+
+set i 0
+foreach pin $south_pins {
+ if {$i == 0} {
+ set location $offset_x
+ } else {
+ set location [expr {[lindex $location 0] + $min_distance + $pin_width}]
+ }
+ lappend location [expr {$pin_height / 2.0 - $pin_extension / 2.0}]
+ puts $location
+ place_pin -pin_name $pin -layer met2 -location $location -pin_size $size
+ set i [expr {$i + 1}]
+}
+
+write_def $::env(SAVE_DEF)
diff --git a/caravel/openlane/user_analog_project_wrapper_empty/pin_order.cfg b/caravel/openlane/user_analog_project_wrapper_empty/pin_order.cfg
new file mode 100644
index 0000000..cae55d2
--- /dev/null
+++ b/caravel/openlane/user_analog_project_wrapper_empty/pin_order.cfg
@@ -0,0 +1,178 @@
+#BUS_SORT
+#NR
+io_analog\[1\]
+io_analog\[2\]
+io_analog\[3\]
+io_clamp_high\[0\]
+io_clamp_low\[0\]
+io_analog\[4\]
+io_clamp_high\[1\]
+io_clamp_low\[1\]
+io_analog\[5\]
+io_clamp_high\[2\]
+io_clamp_low\[2\]
+io_analog\[6\]
+io_analog\[7\]
+io_analog\[8\]
+io_analog\[9\]
+
+
+#S
+wb_.*
+wbs_.*
+la_.*
+user_clock2
+user_irq.*
+
+#E
+io_in_3v3\[0\]
+io_in\[0\]
+io_out\[0\]
+io_oeb\[0\]
+io_in_3v3\[1\]
+io_in\[1\]
+io_out\[1\]
+io_oeb\[1\]
+io_in_3v3\[2\]
+io_in\[2\]
+io_out\[2\]
+io_oeb\[2\]
+io_in_3v3\[3\]
+io_in\[3\]
+io_out\[3\]
+io_oeb\[3\]
+io_in_3v3\[4\]
+io_in\[4\]
+io_out\[4\]
+io_oeb\[4\]
+io_in_3v3\[5\]
+io_in\[5\]
+io_out\[5\]
+io_oeb\[5\]
+io_in_3v3\[6\]
+io_in\[6\]
+io_out\[6\]
+io_oeb\[6\]
+gpio_analog\[0\]
+gpio_noesd\[0\]
+io_in_3v3\[7\]
+io_in\[7\]
+io_out\[7\]
+io_oeb\[7\]
+gpio_analog\[1\]
+gpio_noesd\[1\]
+io_in_3v3\[8\]
+io_in\[8\]
+io_out\[8\]
+io_oeb\[8\]
+gpio_analog\[2\]
+gpio_noesd\[2\]
+io_in_3v3\[9\]
+io_in\[9\]
+io_out\[9\]
+io_oeb\[9\]
+gpio_analog\[3\]
+gpio_noesd\[3\]
+io_in_3v3\[10\]
+io_in\[10\]
+io_out\[10\]
+io_oeb\[10\]
+gpio_analog\[4\]
+gpio_noesd\[4\]
+io_in_3v3\[11\]
+io_in\[11\]
+io_out\[11\]
+io_oeb\[11\]
+gpio_analog\[5\]
+gpio_noesd\[5\]
+io_in_3v3\[12\]
+io_in\[12\]
+io_out\[12\]
+io_oeb\[12\]
+gpio_analog\[6\]
+gpio_noesd\[6\]
+io_in_3v3\[13\]
+io_in\[13\]
+io_out\[13\]
+io_oeb\[13\]
+
+io_analog\[0\]
+
+#WR
+io_analog\[10\]
+gpio_analog\[7\]
+gpio_noesd\[7\]
+gpio_analog\[8\]
+gpio_noesd\[8\]
+io_in_3v3\[14\]
+io_in\[14\]
+io_out\[14\]
+io_oeb\[14\]
+gpio_analog\[9\]
+gpio_noesd\[9\]
+io_in_3v3\[15\]
+io_in\[15\]
+io_out\[15\]
+io_oeb\[15\]
+gpio_analog\[10\]
+gpio_noesd\[10\]
+io_in_3v3\[16\]
+io_in\[16\]
+io_out\[16\]
+io_oeb\[16\]
+gpio_analog\[11\]
+gpio_noesd\[11\]
+io_in_3v3\[17\]
+io_in\[17\]
+io_out\[17\]
+io_oeb\[17\]
+gpio_analog\[12\]
+gpio_noesd\[12\]
+io_in_3v3\[18\]
+io_in\[18\]
+io_out\[18\]
+io_oeb\[18\]
+gpio_analog\[13\]
+gpio_noesd\[13\]
+io_in_3v3\[19\]
+io_in\[19\]
+io_out\[19\]
+io_oeb\[19\]
+gpio_analog\[14\]
+gpio_noesd\[14\]
+io_in_3v3\[20\]
+io_in\[20\]
+io_out\[20\]
+io_oeb\[20\]
+gpio_analog\[15\]
+gpio_noesd\[15\]
+io_in_3v3\[21\]
+io_in\[21\]
+io_out\[21\]
+io_oeb\[21\]
+gpio_analog\[16\]
+gpio_noesd\[16\]
+io_in_3v3\[22\]
+io_in\[22\]
+io_out\[22\]
+io_oeb\[22\]
+gpio_analog\[17\]
+gpio_noesd\[17\]
+io_in_3v3\[23\]
+io_in\[23\]
+io_out\[23\]
+io_oeb\[23\]
+gpio_analog\[18\]
+gpio_noesd\[18\]
+io_in_3v3\[24\]
+io_in\[24\]
+io_out\[24\]
+io_oeb\[24\]
+io_in_3v3\[25\]
+io_in\[25\]
+io_out\[25\]
+io_oeb\[25\]
+io_in_3v3\[26\]
+io_in\[26\]
+io_out\[26\]
+io_oeb\[26\]
diff --git a/caravel/openlane/user_project_wrapper_empty/config.tcl b/caravel/openlane/user_project_wrapper_empty/config.tcl
new file mode 100644
index 0000000..c6ad019
--- /dev/null
+++ b/caravel/openlane/user_project_wrapper_empty/config.tcl
@@ -0,0 +1,43 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+set script_dir [file dirname [file normalize [info script]]]
+source $script_dir/fixed_wrapper_cfgs.tcl
+source $script_dir/default_wrapper_cfgs.tcl
+
+set ::env(DESIGN_NAME) user_project_wrapper
+
+set ::env(FP_PDN_CHECK_NODES) 0
+set ::env(FP_PDN_ENABLE_RAILS) 0
+
+set ::env(GLB_RT_OBS) "met1 0 0 $::env(DIE_AREA),\
+ met2 0 0 $::env(DIE_AREA),\
+ met3 0 0 $::env(DIE_AREA),\
+ met4 0 0 $::env(DIE_AREA),\
+ met5 0 0 $::env(DIE_AREA)"
+
+set ::env(CLOCK_PORT) "user_clock2"
+set ::env(CLOCK_NET) "mprj.clk"
+
+set ::env(CLOCK_PERIOD) "10"
+
+set ::env(PL_OPENPHYSYN_OPTIMIZATIONS) 0
+set ::env(DIODE_INSERTION_STRATEGY) 0
+
+set ::env(MAGIC_WRITE_FULL_LEF) 0
+
+set ::env(VERILOG_FILES) "\
+ $script_dir/../../verilog/rtl/defines.v \
+ $script_dir/../../verilog/rtl/__user_project_wrapper.v"
diff --git a/caravel/openlane/user_project_wrapper_empty/default_wrapper_cfgs.tcl b/caravel/openlane/user_project_wrapper_empty/default_wrapper_cfgs.tcl
new file mode 100644
index 0000000..4a4f8a2
--- /dev/null
+++ b/caravel/openlane/user_project_wrapper_empty/default_wrapper_cfgs.tcl
@@ -0,0 +1,24 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+# THE FOLLOWING SECTIONS CAN BE CHANGED IF NEEDED
+
+# PDN Pitch
+set ::env(FP_PDN_VPITCH) 180
+set ::env(FP_PDN_HPITCH) $::env(FP_PDN_VPITCH)
+
+# PDN Offset
+set ::env(FP_PDN_VOFFSET) 5
+set ::env(FP_PDN_HOFFSET) $::env(FP_PDN_VOFFSET)
\ No newline at end of file
diff --git a/caravel/openlane/user_project_wrapper_empty/fixed_wrapper_cfgs.tcl b/caravel/openlane/user_project_wrapper_empty/fixed_wrapper_cfgs.tcl
new file mode 100644
index 0000000..3f078eb
--- /dev/null
+++ b/caravel/openlane/user_project_wrapper_empty/fixed_wrapper_cfgs.tcl
@@ -0,0 +1,57 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+# DON'T TOUCH THE FOLLOWING SECTIONS
+set script_dir [file dirname [file normalize [info script]]]
+
+# This makes sure that the core rings are outside the boundaries
+# of your block.
+set ::env(MAGIC_ZEROIZE_ORIGIN) 0
+
+# Area Configurations. DON'T TOUCH.
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 2920 3520"
+
+set ::env(RUN_CVC) 0
+
+# Pin Configurations. DON'T TOUCH
+set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
+
+set ::unit 2.4
+set ::env(FP_IO_VEXTEND) [expr 2*$::unit]
+set ::env(FP_IO_HEXTEND) [expr 2*$::unit]
+set ::env(FP_IO_VLENGTH) $::unit
+set ::env(FP_IO_HLENGTH) $::unit
+
+set ::env(FP_IO_VTHICKNESS_MULT) 4
+set ::env(FP_IO_HTHICKNESS_MULT) 4
+
+# Power & Pin Configurations. DON'T TOUCH.
+set ::env(FP_PDN_CORE_RING) 1
+set ::env(FP_PDN_CORE_RING_VWIDTH) 3.1
+set ::env(FP_PDN_CORE_RING_HWIDTH) 3.1
+set ::env(FP_PDN_CORE_RING_VOFFSET) 14
+set ::env(FP_PDN_CORE_RING_HOFFSET) $::env(FP_PDN_CORE_RING_VOFFSET)
+set ::env(FP_PDN_CORE_RING_VSPACING) 1.7
+set ::env(FP_PDN_CORE_RING_HSPACING) $::env(FP_PDN_CORE_RING_VSPACING)
+
+set ::env(FP_PDN_VWIDTH) 3.1
+set ::env(FP_PDN_HWIDTH) 3.1
+set ::env(FP_PDN_VSPACING) [expr 5*$::env(FP_PDN_CORE_RING_VWIDTH)]
+set ::env(FP_PDN_HSPACING) [expr 5*$::env(FP_PDN_CORE_RING_HWIDTH)]
+
+set ::env(VDD_NETS) [list {vccd1} {vccd2} {vdda1} {vdda2}]
+set ::env(GND_NETS) [list {vssd1} {vssd2} {vssa1} {vssa2}]
+set ::env(SYNTH_USE_PG_PINS_DEFINES) "USE_POWER_PINS"
diff --git a/caravel/openlane/user_project_wrapper_empty/interactive.tcl b/caravel/openlane/user_project_wrapper_empty/interactive.tcl
new file mode 100755
index 0000000..b9074e5
--- /dev/null
+++ b/caravel/openlane/user_project_wrapper_empty/interactive.tcl
@@ -0,0 +1,69 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+package require openlane
+set script_dir [file dirname [file normalize [info script]]]
+
+prep -design $script_dir -tag user_project_wrapper -overwrite
+set save_path $script_dir/../..
+
+verilog_elaborate
+
+init_floorplan
+
+# making it "empty"
+remove_nets -input $::env(CURRENT_DEF)
+remove_components -input $::env(CURRENT_DEF)
+
+place_io_ol
+
+apply_route_obs
+
+run_power_grid_generation
+
+# pdngen-related hack
+# remove .extra\d+ "pins" so that magic
+# generates shapes for each stripes without the ".extra" postfix
+# until OpenDB can understand this syntax...
+exec sed \
+ -i -E {/^PINS/,/^END PINS/ s/\.extra[[:digit:]]+(.*USE (GROUND|POWER))/\1/g} \
+ $::env(CURRENT_DEF)
+
+
+run_magic
+
+save_views -lef_path $::env(magic_result_file_tag).lef \
+ -def_path $::env(CURRENT_DEF) \
+ -gds_path $::env(magic_result_file_tag).gds \
+ -mag_path $::env(magic_result_file_tag).mag \
+ -spice_path $::env(magic_result_file_tag).spice \
+ -save_path $save_path \
+ -tag $::env(RUN_TAG)
+
+# produce "obstructed" LEF to be used for routing
+set gap 0.4
+set llx [expr [lindex $::env(DIE_AREA) 0]-$gap]
+set lly [expr [lindex $::env(DIE_AREA) 1]-$gap]
+set urx [expr [lindex $::env(DIE_AREA) 2]+$gap]
+set ury [expr [lindex $::env(DIE_AREA) 3]+$gap]
+
+exec python3 $::env(OPENLANE_ROOT)/scripts/rectify.py $llx $lly $urx $ury \
+ < $::env(magic_result_file_tag).lef \
+ | python3 $::env(OPENLANE_ROOT)/scripts/obs.py -42.88 -37.53 2962.50 3557.21 met4,met5 \
+ | python3 $::env(OPENLANE_ROOT)/scripts/obs.py {*}$::env(DIE_AREA) li1,met1,met2,met3 \
+ > $::env(magic_result_file_tag).obstructed.lef
+file copy -force $::env(magic_result_file_tag).obstructed.lef $save_path/lef
+
+generate_final_summary_report
\ No newline at end of file
diff --git a/caravel/openlane/user_project_wrapper_empty/pin_order.cfg b/caravel/openlane/user_project_wrapper_empty/pin_order.cfg
new file mode 100644
index 0000000..90cde69
--- /dev/null
+++ b/caravel/openlane/user_project_wrapper_empty/pin_order.cfg
@@ -0,0 +1,156 @@
+#BUS_SORT
+#NR
+analog_io\[8\]
+io_in\[15\]
+io_out\[15\]
+io_oeb\[15\]
+analog_io\[9\]
+io_in\[16\]
+io_out\[16\]
+io_oeb\[16\]
+analog_io\[10\]
+io_in\[17\]
+io_out\[17\]
+io_oeb\[17\]
+analog_io\[11\]
+io_in\[18\]
+io_out\[18\]
+io_oeb\[18\]
+analog_io\[12\]
+io_in\[19\]
+io_out\[19\]
+io_oeb\[19\]
+analog_io\[13\]
+io_in\[20\]
+io_out\[20\]
+io_oeb\[20\]
+analog_io\[14\]
+io_in\[21\]
+io_out\[21\]
+io_oeb\[21\]
+analog_io\[15\]
+io_in\[22\]
+io_out\[22\]
+io_oeb\[22\]
+analog_io\[16\]
+io_in\[23\]
+io_out\[23\]
+io_oeb\[23\]
+
+#S
+wb_.*
+wbs_.*
+la_.*
+user_clock2
+user_irq.*
+
+#E
+io_in\[0\]
+io_out\[0\]
+io_oeb\[0\]
+io_in\[1\]
+io_out\[1\]
+io_oeb\[1\]
+io_in\[2\]
+io_out\[2\]
+io_oeb\[2\]
+io_in\[3\]
+io_out\[3\]
+io_oeb\[3\]
+io_in\[4\]
+io_out\[4\]
+io_oeb\[4\]
+io_in\[5\]
+io_out\[5\]
+io_oeb\[5\]
+io_in\[6\]
+io_out\[6\]
+io_oeb\[6\]
+analog_io\[0\]
+io_in\[7\]
+io_out\[7\]
+io_oeb\[7\]
+analog_io\[1\]
+io_in\[8\]
+io_out\[8\]
+io_oeb\[8\]
+analog_io\[2\]
+io_in\[9\]
+io_out\[9\]
+io_oeb\[9\]
+analog_io\[3\]
+io_in\[10\]
+io_out\[10\]
+io_oeb\[10\]
+analog_io\[4\]
+io_in\[11\]
+io_out\[11\]
+io_oeb\[11\]
+analog_io\[5\]
+io_in\[12\]
+io_out\[12\]
+io_oeb\[12\]
+analog_io\[6\]
+io_in\[13\]
+io_out\[13\]
+io_oeb\[13\]
+analog_io\[7\]
+io_in\[14\]
+io_out\[14\]
+io_oeb\[14\]
+
+#WR
+analog_io\[17\]
+io_in\[24\]
+io_out\[24\]
+io_oeb\[24\]
+analog_io\[18\]
+io_in\[25\]
+io_out\[25\]
+io_oeb\[25\]
+analog_io\[19\]
+io_in\[26\]
+io_out\[26\]
+io_oeb\[26\]
+analog_io\[20\]
+io_in\[27\]
+io_out\[27\]
+io_oeb\[27\]
+analog_io\[21\]
+io_in\[28\]
+io_out\[28\]
+io_oeb\[28\]
+analog_io\[22\]
+io_in\[29\]
+io_out\[29\]
+io_oeb\[29\]
+analog_io\[23\]
+io_in\[30\]
+io_out\[30\]
+io_oeb\[30\]
+analog_io\[24\]
+io_in\[31\]
+io_out\[31\]
+io_oeb\[31\]
+analog_io\[25\]
+io_in\[32\]
+io_out\[32\]
+io_oeb\[32\]
+analog_io\[26\]
+io_in\[33\]
+io_out\[33\]
+io_oeb\[33\]
+analog_io\[27\]
+io_in\[34\]
+io_out\[34\]
+io_oeb\[34\]
+analog_io\[28\]
+io_in\[35\]
+io_out\[35\]
+io_oeb\[35\]
+io_in\[36\]
+io_out\[36\]
+io_oeb\[36\]
+io_in\[37\]
+io_out\[37\]
+io_oeb\[37\]
diff --git a/caravel/scripts/check_density.py b/caravel/scripts/check_density.py
new file mode 100755
index 0000000..25f44ba
--- /dev/null
+++ b/caravel/scripts/check_density.py
@@ -0,0 +1,616 @@
+#!/usr/bin/env python3
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+#
+# check_density.py ---
+#
+# Run density checks on the final (filled) GDS.
+#
+
+import sys
+import os
+import re
+import select
+import subprocess
+
+def usage():
+ print("Usage:")
+ print("check_density.py [<path_to_project>] [-keep]")
+ print("")
+ print("where:")
+ print(" <path_to_project> is the path to the project top level directory.")
+ print("")
+ print(" If <path_to_project> is not given, then it is assumed to be the cwd.")
+ print(" If '-keep' is specified, then keep the check script.")
+ return 0
+
+
+if __name__ == '__main__':
+
+ optionlist = []
+ arguments = []
+
+ debugmode = False
+ keepmode = False
+
+ for option in sys.argv[1:]:
+ if option.find('-', 0) == 0:
+ optionlist.append(option)
+ else:
+ arguments.append(option)
+
+ if len(arguments) > 1:
+ print("Wrong number of arguments given to check_density.py.")
+ usage()
+ sys.exit(0)
+
+ if len(arguments) == 1:
+ user_project_path = arguments[0]
+ else:
+ user_project_path = os.getcwd()
+
+ # Check for valid user path
+
+ if not os.path.isdir(user_project_path):
+ print('Error: Project path "' + user_project_path + '" does not exist or is not readable.')
+ sys.exit(1)
+
+ # Check for valid user ID
+ user_id_value = None
+ if os.path.isfile(user_project_path + '/info.yaml'):
+ with open(user_project_path + '/info.yaml', 'r') as ifile:
+ infolines = ifile.read().splitlines()
+ for line in infolines:
+ kvpair = line.split(':')
+ if len(kvpair) == 2:
+ key = kvpair[0].strip()
+ value = kvpair[1].strip()
+ if key == 'project_id':
+ user_id_value = value.strip('"\'')
+ break
+
+ if user_id_value:
+ project = 'caravel'
+ project_with_id = 'caravel_' + user_id_value
+ else:
+ print('Error: No project_id found in info.yaml file.')
+ sys.exit(1)
+
+ if '-debug' in optionlist:
+ debugmode = True
+ if '-keep' in optionlist:
+ keepmode = True
+
+ magpath = user_project_path + '/mag'
+ rcfile = magpath + '/.magicrc'
+
+ with open(magpath + '/check_density.tcl', 'w') as ofile:
+ print('#!/bin/env wish', file=ofile)
+ print('crashbackups stop', file=ofile)
+ print('drc off', file=ofile)
+ print('snap internal', file=ofile)
+
+ print('set starttime [orig_clock format [orig_clock seconds] -format "%D %T"]', file=ofile)
+ print('puts stdout "Started reading GDS: $starttime"', file=ofile)
+ print('', file=ofile)
+ print('flush stdout', file=ofile)
+ print('update idletasks', file=ofile)
+
+ # Read final project from .gds
+ print('gds readonly true', file=ofile)
+ print('gds rescale false', file=ofile)
+ print('gds read ../gds/' + project_with_id + '.gds', file=ofile)
+ print('', file=ofile)
+
+ print('set midtime [orig_clock format [orig_clock seconds] -format "%D %T"]', file=ofile)
+ print('puts stdout "Starting density checks: $midtime"', file=ofile)
+ print('', file=ofile)
+ print('flush stdout', file=ofile)
+ print('update idletasks', file=ofile)
+
+ # Get step box dimensions (700um for size and 70um for FOM step)
+ # Use 350um for stepping on other layers.
+ print('box values 0 0 0 0', file=ofile)
+ # print('box size 700um 700um', file=ofile)
+ # print('set stepbox [box values]', file=ofile)
+ # print('set stepwidth [lindex $stepbox 2]', file=ofile)
+ # print('set stepheight [lindex $stepbox 3]', file=ofile)
+
+ print('box size 70um 70um', file=ofile)
+ print('set stepbox [box values]', file=ofile)
+ print('set stepsizex [lindex $stepbox 2]', file=ofile)
+ print('set stepsizey [lindex $stepbox 3]', file=ofile)
+
+ print('select top cell', file=ofile)
+ print('expand', file=ofile)
+
+ # Modify the box to be inside the seal ring area (shrink 5um)
+ print('box grow c -5um', file=ofile)
+ print('set fullbox [box values]', file=ofile)
+
+ print('set xmax [lindex $fullbox 2]', file=ofile)
+ print('set xmin [lindex $fullbox 0]', file=ofile)
+ print('set fullwidth [expr {$xmax - $xmin}]', file=ofile)
+ print('set xtiles [expr {int(ceil(($fullwidth + 0.0) / $stepsizex))}]', file=ofile)
+ print('set ymax [lindex $fullbox 3]', file=ofile)
+ print('set ymin [lindex $fullbox 1]', file=ofile)
+ print('set fullheight [expr {$ymax - $ymin}]', file=ofile)
+ print('set ytiles [expr {int(ceil(($fullheight + 0.0) / $stepsizey))}]', file=ofile)
+ print('box size $stepsizex $stepsizey', file=ofile)
+ print('set xbase [lindex $fullbox 0]', file=ofile)
+ print('set ybase [lindex $fullbox 1]', file=ofile)
+ print('', file=ofile)
+
+ print('puts stdout "XTILES: $xtiles"', file=ofile)
+ print('puts stdout "YTILES: $ytiles"', file=ofile)
+ print('', file=ofile)
+
+ # Need to know what fraction of a full tile is the last row and column
+ print('set xfrac [expr {($xtiles * $stepsizex - $fullwidth + 0.0) / $stepsizex}]', file=ofile)
+ print('set yfrac [expr {($ytiles * $stepsizey - $fullheight + 0.0) / $stepsizey}]', file=ofile)
+ print('puts stdout "XFRAC: $xfrac"', file=ofile)
+ print('puts stdout "YFRAC: $yfrac"', file=ofile)
+
+ print('cif ostyle density', file=ofile)
+
+ # Process density at steps. For efficiency, this is done in 70x70 um
+ # areas, dumped to a file, and then aggregated into the 700x700 areas.
+
+ print('for {set y 0} {$y < $ytiles} {incr y} {', file=ofile)
+ print(' for {set x 0} {$x < $xtiles} {incr x} {', file=ofile)
+ print(' set xlo [expr $xbase + $x * $stepsizex]', file=ofile)
+ print(' set ylo [expr $ybase + $y * $stepsizey]', file=ofile)
+ print(' set xhi [expr $xlo + $stepsizex]', file=ofile)
+ print(' set yhi [expr $ylo + $stepsizey]', file=ofile)
+ print(' box values $xlo $ylo $xhi $yhi', file=ofile)
+
+ # Flatten this area
+ print(' flatten -dobbox -nolabels tile', file=ofile)
+ print(' load tile', file=ofile)
+ print(' select top cell', file=ofile)
+
+ # Run density check for each layer
+ print(' puts stdout "Density results for tile x=$x y=$y"', file=ofile)
+
+ print(' set fdens [cif list cover fom_all]', file=ofile)
+ print(' set pdens [cif list cover poly_all]', file=ofile)
+ print(' set ldens [cif list cover li_all]', file=ofile)
+ print(' set m1dens [cif list cover m1_all]', file=ofile)
+ print(' set m2dens [cif list cover m2_all]', file=ofile)
+ print(' set m3dens [cif list cover m3_all]', file=ofile)
+ print(' set m4dens [cif list cover m4_all]', file=ofile)
+ print(' set m5dens [cif list cover m5_all]', file=ofile)
+ print(' puts stdout "FOM: $fdens"', file=ofile)
+ print(' puts stdout "POLY: $pdens"', file=ofile)
+ print(' puts stdout "LI1: $ldens"', file=ofile)
+ print(' puts stdout "MET1: $m1dens"', file=ofile)
+ print(' puts stdout "MET2: $m2dens"', file=ofile)
+ print(' puts stdout "MET3: $m3dens"', file=ofile)
+ print(' puts stdout "MET4: $m4dens"', file=ofile)
+ print(' puts stdout "MET5: $m5dens"', file=ofile)
+ print(' flush stdout', file=ofile)
+ print(' update idletasks', file=ofile)
+
+ print(' load ' + project_with_id, file=ofile)
+ print(' cellname delete tile', file=ofile)
+
+ print(' }', file=ofile)
+ print('}', file=ofile)
+
+ print('set endtime [orig_clock format [orig_clock seconds] -format "%D %T"]', file=ofile)
+ print('puts stdout "Ended: $endtime"', file=ofile)
+ print('', file=ofile)
+
+
+ myenv = os.environ.copy()
+ # Real views are necessary for the DRC checks
+ myenv['MAGTYPE'] = 'mag'
+
+ print('Running density checks on file ' + project_with_id + '.gds', flush=True)
+
+ mproc = subprocess.Popen(['magic', '-dnull', '-noconsole',
+ '-rcfile', rcfile, magpath + '/check_density.tcl'],
+ stdin = subprocess.DEVNULL,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ cwd = magpath,
+ env = myenv,
+ universal_newlines = True)
+
+ # Use signal to poll the process and generate any output as it arrives
+
+ dlines = []
+
+ while mproc:
+ status = mproc.poll()
+ if status != None:
+ try:
+ output = mproc.communicate(timeout=1)
+ except ValueError:
+ print('Magic forced stop, status ' + str(status))
+ sys.exit(1)
+ else:
+ outlines = output[0]
+ errlines = output[1]
+ for line in outlines.splitlines():
+ dlines.append(line)
+ print(line)
+ for line in errlines.splitlines():
+ print(line)
+ print('Magic exited with status ' + str(status))
+ if int(status) != 0:
+ sys.exit(int(status))
+ else:
+ break
+ else:
+ n = 0
+ while True:
+ n += 1
+ if n > 100:
+ n = 0
+ status = mproc.poll()
+ if status != None:
+ break
+ sresult = select.select([mproc.stdout, mproc.stderr], [], [], 0.5)[0]
+ if mproc.stdout in sresult:
+ outstring = mproc.stdout.readline().strip()
+ dlines.append(outstring)
+ print(outstring)
+ elif mproc.stderr in sresult:
+ outstring = mproc.stderr.readline().strip()
+ print(outstring)
+ else:
+ break
+
+ fomfill = []
+ polyfill = []
+ lifill = []
+ met1fill = []
+ met2fill = []
+ met3fill = []
+ met4fill = []
+ met5fill = []
+ xtiles = 0
+ ytiles = 0
+ xfrac = 0.0
+ yfrac = 0.0
+
+ for line in dlines:
+ dpair = line.split(':')
+ if len(dpair) == 2:
+ layer = dpair[0]
+ try:
+ density = float(dpair[1].strip())
+ except:
+ continue
+ if layer == 'FOM':
+ fomfill.append(density)
+ elif layer == 'POLY':
+ polyfill.append(density)
+ elif layer == 'LI1':
+ lifill.append(density)
+ elif layer == 'MET1':
+ met1fill.append(density)
+ elif layer == 'MET2':
+ met2fill.append(density)
+ elif layer == 'MET3':
+ met3fill.append(density)
+ elif layer == 'MET4':
+ met4fill.append(density)
+ elif layer == 'MET5':
+ met5fill.append(density)
+ elif layer == 'XTILES':
+ xtiles = int(dpair[1].strip())
+ elif layer == 'YTILES':
+ ytiles = int(dpair[1].strip())
+ elif layer == 'XFRAC':
+ xfrac = float(dpair[1].strip())
+ elif layer == 'YFRAC':
+ yfrac = float(dpair[1].strip())
+
+ if ytiles == 0 or xtiles == 0:
+ print('Failed to read XTILES or YTILES from output.')
+ sys.exit(1)
+
+ total_tiles = (ytiles - 9) * (xtiles - 9)
+
+ print('')
+ print('Density results (total tiles = ' + str(total_tiles) + '):')
+
+ # For FOM, step at 70um intervals (same as 70um check area)
+ fomstep = 1
+
+ # For poly, step only at 700um intervals (10 * 70um check area)
+ polystep = 10
+
+ # For all metals, step only at 350um intervals (5 * 70um check area)
+ metalstep = 5
+
+ # Full areas are 10 x 10 tiles = 100. But the right and top sides are
+ # not full tiles, so the full area must be prorated.
+
+ sideadjust = 90.0 + (10.0 * xfrac)
+ topadjust = 90.0 + (10.0 * yfrac)
+ corneradjust = 81.0 + (9.0 * xfrac) + (9.0 * yfrac) + (xfrac * yfrac)
+
+ print('')
+ print('FOM Density:')
+ for y in range(0, ytiles - 9, fomstep):
+ if y == ytiles - 10:
+ atotal = topadjust
+ else:
+ atotal = 100.0
+ for x in range(0, xtiles - 9, fomstep):
+ if x == xtiles - 10:
+ if y == ytiles - 10:
+ atotal = corneradjust
+ else:
+ atotal = sideadjust
+ fomaccum = 0
+ for w in range(y, y + 10):
+ base = xtiles * w + x
+ fomaccum += sum(fomfill[base : base + 10])
+
+ fomaccum /= atotal
+ print('Tile (' + str(x) + ', ' + str(y) + '): ' + str(fomaccum))
+ if fomaccum < 0.33:
+ print('***Error: FOM Density < 33%')
+ elif fomaccum > 0.57:
+ print('***Error: FOM Density > 57%')
+
+ print('')
+ print('POLY Density:')
+ for y in range(0, ytiles - 9, polystep):
+ if y == ytiles - 10:
+ atotal = topadjust
+ else:
+ atotal = 100.0
+ for x in range(0, xtiles - 9, polystep):
+ if x == xtiles - 10:
+ if y == ytiles - 10:
+ atotal = corneradjust
+ else:
+ atotal = sideadjust
+ polyaccum = 0
+ for w in range(y, y + 10):
+ base = xtiles * w + x
+ polyaccum += sum(polyfill[base : base + 10])
+
+ polyaccum /= atotal
+ print('Tile (' + str(x) + ', ' + str(y) + '): ' + str(polyaccum))
+
+ print('')
+ print('LI Density:')
+ for y in range(0, ytiles - 9, metalstep):
+ if y == ytiles - 10:
+ atotal = topadjust
+ else:
+ atotal = 100.0
+ for x in range(0, xtiles - 9, metalstep):
+ if x == xtiles - 10:
+ if y == ytiles - 10:
+ atotal = corneradjust
+ else:
+ atotal = sideadjust
+ liaccum = 0
+ for w in range(y, y + 10):
+ base = xtiles * w + x
+ liaccum += sum(lifill[base : base + 10])
+
+ liaccum /= atotal
+ print('Tile (' + str(x) + ', ' + str(y) + '): ' + str(liaccum))
+ if liaccum < 0.35:
+ print('***Error: LI Density < 35%')
+ elif liaccum > 0.60:
+ print('***Error: LI Density > 60%')
+
+ print('')
+ print('MET1 Density:')
+ for y in range(0, ytiles - 9, metalstep):
+ if y == ytiles - 10:
+ atotal = topadjust
+ else:
+ atotal = 100.0
+ for x in range(0, xtiles - 9, metalstep):
+ if x == xtiles - 10:
+ if y == ytiles - 10:
+ atotal = corneradjust
+ else:
+ atotal = sideadjust
+ met1accum = 0
+ for w in range(y, y + 10):
+ base = xtiles * w + x
+ met1accum += sum(met1fill[base : base + 10])
+
+ met1accum /= atotal
+ print('Tile (' + str(x) + ', ' + str(y) + '): ' + str(met1accum))
+ if met1accum < 0.35:
+ print('***Error: MET1 Density < 35%')
+ elif met1accum > 0.60:
+ print('***Error: MET1 Density > 60%')
+
+ print('')
+ print('MET2 Density:')
+ for y in range(0, ytiles - 9, metalstep):
+ if y == ytiles - 10:
+ atotal = topadjust
+ else:
+ atotal = 100.0
+ for x in range(0, xtiles - 9, metalstep):
+ if x == xtiles - 10:
+ if y == ytiles - 10:
+ atotal = corneradjust
+ else:
+ atotal = sideadjust
+ met2accum = 0
+ for w in range(y, y + 10):
+ base = xtiles * w + x
+ met2accum += sum(met2fill[base : base + 10])
+
+ met2accum /= atotal
+ print('Tile (' + str(x) + ', ' + str(y) + '): ' + str(met2accum))
+ if met2accum < 0.35:
+ print('***Error: MET2 Density < 35%')
+ elif met2accum > 0.60:
+ print('***Error: MET2 Density > 60%')
+
+ print('')
+ print('MET3 Density:')
+ for y in range(0, ytiles - 9, metalstep):
+ if y == ytiles - 10:
+ atotal = topadjust
+ else:
+ atotal = 100.0
+ for x in range(0, xtiles - 9, metalstep):
+ if x == xtiles - 10:
+ if y == ytiles - 10:
+ atotal = corneradjust
+ else:
+ atotal = sideadjust
+ met3accum = 0
+ for w in range(y, y + 10):
+ base = xtiles * w + x
+ met3accum += sum(met3fill[base : base + 10])
+
+ met3accum /= atotal
+ print('Tile (' + str(x) + ', ' + str(y) + '): ' + str(met3accum))
+ if met3accum < 0.35:
+ print('***Error: MET3 Density < 35%')
+ elif met3accum > 0.60:
+ print('***Error: MET3 Density > 60%')
+
+ print('')
+ print('MET4 Density:')
+ for y in range(0, ytiles - 9, metalstep):
+ if y == ytiles - 10:
+ atotal = topadjust
+ else:
+ atotal = 100.0
+ for x in range(0, xtiles - 9, metalstep):
+ if x == xtiles - 10:
+ if y == ytiles - 10:
+ atotal = corneradjust
+ else:
+ atotal = sideadjust
+ met4accum = 0
+ for w in range(y, y + 10):
+ base = xtiles * w + x
+ met4accum += sum(met4fill[base : base + 10])
+
+ met4accum /= atotal
+ print('Tile (' + str(x) + ', ' + str(y) + '): ' + str(met4accum))
+ if met4accum < 0.35:
+ print('***Error: MET4 Density < 35%')
+ elif met4accum > 0.60:
+ print('***Error: MET4 Density > 60%')
+
+ print('')
+ print('MET5 Density:')
+ for y in range(0, ytiles - 9, metalstep):
+ if y == ytiles - 10:
+ atotal = topadjust
+ else:
+ atotal = 100.0
+ for x in range(0, xtiles - 9, metalstep):
+ if x == xtiles - 10:
+ if y == ytiles - 10:
+ atotal = corneradjust
+ else:
+ atotal = sideadjust
+ met5accum = 0
+ for w in range(y, y + 10):
+ base = xtiles * w + x
+ met5accum += sum(met5fill[base : base + 10])
+
+ met5accum /= atotal
+ print('Tile (' + str(x) + ', ' + str(y) + '): ' + str(met5accum))
+ if met5accum < 0.45:
+ print('***Error: MET5 Density < 45%')
+ elif met5accum > 0.76:
+ print('***Error: MET5 Density > 76%')
+
+ print('')
+ print('Whole-chip density results:')
+
+ atotal = ((xtiles - 1.0) * (ytiles - 1.0)) + ((ytiles - 1.0) * xfrac) + ((xtiles - 1.0) * yfrac) + (xfrac * yfrac)
+
+ fomaccum = sum(fomfill) / atotal
+ print('')
+ print('FOM Density: ' + str(fomaccum))
+ if fomaccum < 0.33:
+ print('***Error: FOM Density < 33%')
+ elif fomaccum > 0.57:
+ print('***Error: FOM Density > 57%')
+
+ polyaccum = sum(polyfill) / atotal
+ print('')
+ print('POLY Density: ' + str(polyaccum))
+
+ liaccum = sum(lifill) / atotal
+ print('')
+ print('LI Density: ' + str(liaccum))
+ if liaccum < 0.35:
+ print('***Error: LI Density < 35%')
+ elif liaccum > 0.60:
+ print('***Error: LI Density > 60%')
+
+ met1accum = sum(met1fill) / atotal
+ print('')
+ print('MET1 Density: ' + str(met1accum))
+ if met1accum < 0.35:
+ print('***Error: MET1 Density < 35%')
+ elif met1accum > 0.60:
+ print('***Error: MET1 Density > 60%')
+
+ met2accum = sum(met2fill) / atotal
+ print('')
+ print('MET2 Density: ' + str(met2accum))
+ if met2accum < 0.35:
+ print('***Error: MET2 Density < 35%')
+ elif met2accum > 0.60:
+ print('***Error: MET2 Density > 60%')
+
+ met3accum = sum(met3fill) / atotal
+ print('')
+ print('MET3 Density: ' + str(met3accum))
+ if met3accum < 0.35:
+ print('***Error: MET3 Density < 35%')
+ elif met3accum > 0.60:
+ print('***Error: MET3 Density > 60%')
+
+ met4accum = sum(met4fill) / atotal
+ print('')
+ print('MET4 Density: ' + str(met4accum))
+ if met4accum < 0.35:
+ print('***Error: MET4 Density < 35%')
+ elif met4accum > 0.60:
+ print('***Error: MET4 Density > 60%')
+
+ met5accum = sum(met5fill) / atotal
+ print('')
+ print('MET5 Density: ' + str(met5accum))
+ if met5accum < 0.45:
+ print('***Error: MET5 Density < 45%')
+ elif met5accum > 0.76:
+ print('***Error: MET5 Density > 76%')
+
+ if not keepmode:
+ if os.path.isfile(magpath + '/check_density.tcl'):
+ os.remove(magpath + '/check_density.tcl')
+
+ print('')
+ print('Done!')
+ sys.exit(0)
diff --git a/caravel/scripts/compositor.py b/caravel/scripts/compositor.py
new file mode 100755
index 0000000..efa0b4e
--- /dev/null
+++ b/caravel/scripts/compositor.py
@@ -0,0 +1,253 @@
+#!/usr/bin/env python3
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+#
+# compositor.py ---
+#
+# Compose the final GDS for caravel from the caravel GDS, seal ring
+# GDS, and fill GDS.
+#
+
+import sys
+import os
+import re
+import subprocess
+
+def usage():
+ print("Usage:")
+ print("compositor.py <user_id_value> <project> <path_to_project> <path_to_mag_dir> <path_to_gds_dir [-keep]")
+ print("")
+ print("where:")
+ print(" <user_id_value> is a character string of eight hex digits, and")
+ print(" <path_to_project> is the path to the project top level directory.")
+ print(" <path_to_mag_dir> is the path to the mag directory.")
+ print(" <path_to_gds_dir> is the path to the gds directory.")
+ print("")
+ print(" If <user_id_value> is not given, then it must exist in the info.yaml file.")
+ print(" If <path_to_project> is not given, then it is assumed to be the cwd.")
+ print(" If <path_to_mag_dir> is not given, then it is assumed to be the <path_to_project>/tmp.")
+ print(" If <path_to_gds_dir> is not given, then it is assumed to be the <path_to_project>/gds.")
+ print(" If '-keep' is specified, then keep the generation script.")
+ return 0
+
+if __name__ == '__main__':
+
+ optionlist = []
+ arguments = []
+
+ debugmode = False
+ keepmode = False
+
+ for option in sys.argv[1:]:
+ if option.find('-', 0) == 0:
+ optionlist.append(option)
+ else:
+ arguments.append(option)
+
+ if len(arguments) != 5:
+ print("Wrong number of arguments given to compositor.py.")
+ usage()
+ sys.exit(0)
+
+ user_id_value = arguments[0]
+ project = arguments[1]
+ user_project_path = arguments[2]
+ mag_dir_path = arguments[3]
+ gds_dir_path = arguments[4]
+
+ # if len(arguments) > 0:
+ # user_id_value = arguments[0]
+
+ # Convert to binary
+ try:
+ user_id_int = int('0x' + user_id_value, 0)
+ user_id_bits = '{0:032b}'.format(user_id_int)
+ except:
+ print("User ID not recognized")
+ usage()
+ sys.exit(1)
+
+ # if len(arguments) == 2 and user_project_path == None:
+ # user_project_path = arguments[1]
+ # mag_dir_path = user_project_path + "/mag"
+ # gds_dir_path = "../gds"
+ # if len(arguments) == 3 and user_project_path == None:
+ # user_project_path = arguments[1]
+ # mag_dir_path = arguments[2]
+ # gds_dir_path = "../gds"
+ # if len(arguments) == 4:
+ # user_project_path = arguments[1]
+ # mag_dir_path = arguments[2]
+ # gds_dir_path = arguments[3]
+ # elif len(arguments) == 3 and user_project_path != None:
+ # mag_dir_path = arguments[1]
+ # gds_dir_path = arguments[2]
+ # else:
+ # user_project_path = os.getcwd()
+ # mag_dir_path = user_project_path + "/mag"
+ # gds_dir_path = "../gds"
+
+ # Check for valid user path
+
+ if not os.path.isdir(user_project_path):
+ print('Error: Project path "' + user_project_path + '" does not exist or is not readable.')
+ sys.exit(1)
+
+ # Check for valid mag path
+
+ if not os.path.isdir(mag_dir_path):
+ print('Error: Mag directory path "' + mag_dir_path + '" does not exist or is not readable.')
+ sys.exit(1)
+
+ # Check for valid gds path
+
+ if not os.path.isdir(gds_dir_path):
+ print('Error: GDS directory path "' + gds_dir_path + '" does not exist or is not readable.')
+ sys.exit(1)
+
+ # Check for valid user ID
+ # if not user_id_value:
+ # if os.path.isfile(user_project_path + '/info.yaml'):
+ # with open(user_project_path + '/info.yaml', 'r') as ifile:
+ # infolines = ifile.read().splitlines()
+ # for line in infolines:
+ # kvpair = line.split(':')
+ # if len(kvpair) == 2:
+ # key = kvpair[0].strip()
+ # value = kvpair[1].strip()
+ # if key == 'project_id':
+ # user_id_value = value.strip('"\'')
+ # break
+
+ if user_id_value:
+ # project = 'caravel'
+ # project_with_id = project + '_' + user_id_value
+ project_with_id = 'caravel_' + user_id_value
+ user_id_decimal = str(int(user_id_value, 16))
+ else:
+ print('Error: No project_id found in info.yaml file.')
+ sys.exit(1)
+
+ if '-debug' in optionlist:
+ debugmode = True
+ if '-keep' in optionlist:
+ keepmode = True
+
+ magpath = mag_dir_path
+ rcfile = magpath + '/.magicrc'
+
+ gdspath = gds_dir_path
+
+ # The compositor script will create <project_with_id>.mag, but is uses
+ # "load", so the file must not already exist.
+
+ if os.path.isfile(user_project_path + '/mag/' + project_with_id + '.mag'):
+ print('Error: File ' + project_with_id + '.mag exists already! Exiting. . .')
+ sys.exit(1)
+
+ with open(user_project_path + '/mag/compose_final.tcl', 'w') as ofile:
+ print('#!/bin/env wish', file=ofile)
+ print('drc off', file=ofile)
+ # Set the random seed from the project ID
+ print('random seed ' + user_id_decimal, file=ofile)
+
+ # Read project from .mag but set GDS properties so that it points
+ # to the GDS file created by "make ship".
+ print('load ' + project + ' -dereference', file=ofile)
+ print('property GDS_FILE ' + gdspath + '/' + project + '.gds', file=ofile)
+ print('property GDS_START 0', file=ofile)
+ print('select top cell', file=ofile)
+ print('set bbox [box values]', file=ofile)
+
+ # Ceate a cell to represent the generated fill. There are
+ # no magic layers corresponding to the fill shape data, and
+ # it's gigabytes anyway, so we don't want to deal with any
+ # actual data. So it's just a placeholder.
+
+ print('load ' + project_with_id + '_fill_pattern -quiet', file=ofile)
+ print('snap internal', file=ofile)
+ print('box values {*}$bbox', file=ofile)
+ print('paint comment', file=ofile)
+ print('property GDS_FILE ' + gdspath + '/' + project_with_id + '_fill_pattern.gds', file=ofile)
+ print('property GDS_START 0', file=ofile)
+ print('property FIXED_BBOX "$bbox"', file=ofile)
+
+ # Create a new project top level and place the fill cell.
+ print('load ' + project_with_id + ' -quiet', file=ofile)
+ print('box values 0 0 0 0', file=ofile)
+ print('box position 6um 6um', file=ofile)
+ print('getcell ' + project + ' child 0 0', file=ofile)
+ print('getcell ' + project_with_id + '_fill_pattern child 0 0', file=ofile)
+
+ # Move existing origin to (6um, 6um) for seal ring placement
+ # print('move origin -6um -6um', file=ofile)
+
+ # Read in abstract view of seal ring
+ print('box position 0 0', file=ofile)
+ print('getcell advSeal_6um_gen', file=ofile)
+
+ # Write out completed project as "caravel_" + the user ID
+ # print('save ' + user_project_path + '/mag/' + project_with_id, file=ofile)
+
+ # Generate final GDS
+ print('puts stdout "Writing final GDS. . . "', file=ofile)
+ print('flush stdout', file=ofile)
+ print('gds undefined allow', file=ofile)
+ print('cif *hier write disable', file=ofile)
+ print('gds write ' + gdspath + '/' + project_with_id + '.gds', file=ofile)
+ print('quit -noprompt', file=ofile)
+
+ myenv = os.environ.copy()
+ # Abstract views are appropriate for final composition
+ myenv['MAGTYPE'] = 'maglef'
+
+ print('Building final GDS file ' + project_with_id + '.gds', flush=True)
+
+ mproc = subprocess.run(['magic', '-dnull', '-noconsole',
+ '-rcfile', rcfile, user_project_path + '/mag/compose_final.tcl'],
+ stdin = subprocess.DEVNULL,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ cwd = magpath,
+ env = myenv,
+ universal_newlines = True)
+ if mproc.stdout:
+ for line in mproc.stdout.splitlines():
+ print(line)
+ if mproc.stderr:
+ # NOTE: Until there is a "load -quiet" option in magic, loading
+ # a new cell generates an error. This code ignores the error.
+ newlines = []
+ for line in mproc.stderr.splitlines():
+ if line.endswith("_fill_pattern.mag couldn't be read"):
+ continue
+ if line.startswith("No such file or directory"):
+ continue
+ else:
+ newlines.append(line)
+
+ if len(newlines) > 0:
+ print('Error message output from magic:')
+ for line in newlines:
+ print(line)
+ if mproc.returncode != 0:
+ print('ERROR: Magic exited with status ' + str(mproc.returncode))
+
+ if not keepmode:
+ os.remove(user_project_path + '/mag/compose_final.tcl')
+
+ print('Done!')
+ exit(0)
diff --git a/caravel/scripts/count_lvs.py b/caravel/scripts/count_lvs.py
new file mode 100644
index 0000000..2362e01
--- /dev/null
+++ b/caravel/scripts/count_lvs.py
@@ -0,0 +1,121 @@
+#!ENV_PATH python3
+#
+#---------------------------------------------------------
+# LVS failure check
+#
+# This is a Python script that parses the comp.json
+# output from netgen and reports on the number of
+# errors in the top-level netlist.
+#
+#---------------------------------------------------------
+# Written by Tim Edwards
+# efabless, inc.
+# Pulled from qflow GUI as standalone script Aug 20, 2018
+#---------------------------------------------------------
+
+import os
+import re
+import sys
+import json
+import argparse
+
+def count_LVS_failures(filename):
+ with open(filename, 'r') as cfile:
+ lvsdata = json.load(cfile)
+
+ # Count errors in the JSON file
+ failures = 0
+ devfail = 0
+ netfail = 0
+ pinfail = 0
+ propfail = 0
+ netdiff = 0
+ devdiff = 0
+ ncells = len(lvsdata)
+ for c in range(0, ncells):
+ cellrec = lvsdata[c]
+
+ if c == ncells - 1:
+ topcell = True
+ else:
+ topcell = False
+
+ # Most errors must only be counted for the top cell, because individual
+ # failing cells are flattened and the matching attempted again on the
+ # flattened netlist.
+
+ if topcell:
+ if 'devices' in cellrec:
+ devices = cellrec['devices']
+ devlist = [val for pair in zip(devices[0], devices[1]) for val in pair]
+ devpair = list(devlist[p:p + 2] for p in range(0, len(devlist), 2))
+ for dev in devpair:
+ c1dev = dev[0]
+ c2dev = dev[1]
+ diffdevs = abs(c1dev[1] - c2dev[1])
+ failures += diffdevs
+ devdiff += diffdevs
+
+ if 'nets' in cellrec:
+ nets = cellrec['nets']
+ diffnets = abs(nets[0] - nets[1])
+ failures += diffnets
+ netdiff += diffnets
+
+ if 'badnets' in cellrec:
+ badnets = cellrec['badnets']
+ failures += len(badnets)
+ netfail += len(badnets)
+
+ if 'badelements' in cellrec:
+ badelements = cellrec['badelements']
+ failures += len(badelements)
+ devfail += len(badelements)
+
+ if 'pins' in cellrec:
+ pins = cellrec['pins']
+ pinlist = [val for pair in zip(pins[0], pins[1]) for val in pair]
+ pinpair = list(pinlist[p:p + 2] for p in range(0, len(pinlist), 2))
+ for pin in pinpair:
+ # Avoid flagging global vs. local names, e.g., "gnd" vs. "gnd!,"
+ # and ignore case when comparing pins.
+ pin0 = re.sub('!$', '', pin[0].lower())
+ pin1 = re.sub('!$', '', pin[1].lower())
+ if pin0 != pin1:
+ # The text "(no pin)" indicates a missing pin that can be
+ # ignored because the pin in the other netlist is a no-connect
+ if pin0 != '(no pin)' and pin1 != '(no pin)':
+ failures += 1
+ pinfail += 1
+
+ # Property errors must be counted for every cell
+ if 'properties' in cellrec:
+ properties = cellrec['properties']
+ failures += len(properties)
+ propfail += len(properties)
+
+ return [failures, netfail, devfail, pinfail, propfail, netdiff, devdiff]
+
+if __name__ == '__main__':
+
+ parser = argparse.ArgumentParser(description='Parses netgen lvs')
+ parser.add_argument('--file', '-f', required=True)
+ args = parser.parse_args()
+ failures = count_LVS_failures(args.file)
+
+ total = failures[0]
+ if total > 0:
+ failed = True
+ print('LVS reports:')
+ print(' net count difference = ' + str(failures[5]))
+ print(' device count difference = ' + str(failures[6]))
+ print(' unmatched nets = ' + str(failures[1]))
+ print(' unmatched devices = ' + str(failures[2]))
+ print(' unmatched pins = ' + str(failures[3]))
+ print(' property failures = ' + str(failures[4]))
+ else:
+ print('LVS reports no net, device, pin, or property mismatches.')
+
+ print('')
+ print('Total errors = ' + str(total))
+
\ No newline at end of file
diff --git a/caravel/scripts/create-caravel-diagram.py b/caravel/scripts/create-caravel-diagram.py
new file mode 100644
index 0000000..bfb4e3c
--- /dev/null
+++ b/caravel/scripts/create-caravel-diagram.py
@@ -0,0 +1,126 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+import sys
+import os
+import subprocess
+from pathlib import Path
+import argparse
+from tempfile import mkstemp
+import re
+
+
+def remove_inouts(jsonpath, replacewith='input'):
+ """Replaces inouts with either input or output statements.
+
+ Netlistsvg does not parse inout ports as for now, so they need to be
+ replaced with either input or output to produce a diagram.
+
+ Parameters
+ ----------
+ jsonpath : str
+ Path to JSON file to fix
+ replacewith : str
+ The string to replace 'inout', can be 'input' or 'output'
+ """
+ assert replacewith in ['input', 'output']
+ with open(jsonpath, 'r') as withinouts:
+ lines = withinouts.readlines()
+ with open(jsonpath, 'w') as withoutinouts:
+ for line in lines:
+ withoutinouts.write(re.sub('inout', replacewith, line))
+
+
+def main(argv):
+ parser = argparse.ArgumentParser(argv[0])
+ parser.add_argument(
+ 'verilog_rtl_dir',
+ help="Path to the project's verilog/rtl directory",
+ type=Path)
+ parser.add_argument(
+ 'output',
+ help="Path to the output SVG file",
+ type=Path)
+ parser.add_argument(
+ '--num-iopads',
+ help='Number of iopads to render',
+ type=int,
+ default=38)
+ parser.add_argument(
+ '--yosys-executable',
+ help='Path to yosys executable',
+ type=Path,
+ default='yosys')
+ parser.add_argument(
+ '--netlistsvg-executable',
+ help='Path to netlistsvg executable',
+ type=Path,
+ default='netlistsvg')
+ parser.add_argument(
+ '--inouts-as',
+ help='To what kind of IO should inout ports be replaced',
+ choices=['input', 'output'],
+ default='input'
+ )
+
+ args = parser.parse_args(argv[1:])
+
+ fd, jsonpath = mkstemp(suffix='-yosys.json')
+ os.close(fd)
+
+ yosyscommand = [
+ f'{str(args.yosys_executable)}',
+ '-p',
+ 'read_verilog pads.v defines.v; ' +
+ 'read_verilog -lib -overwrite *.v; ' +
+ f'verilog_defines -DMPRJ_IO_PADS={args.num_iopads}; ' +
+ 'read_verilog -overwrite caravel.v; ' +
+ 'hierarchy -top caravel; ' +
+ 'proc; ' +
+ 'opt; ' +
+ f'write_json {jsonpath}; '
+ ]
+
+ result = subprocess.run(
+ yosyscommand,
+ cwd=args.verilog_rtl_dir,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT
+ )
+
+ exitcode = 0
+ if result.returncode != 0:
+ print(f'Failed to run: {" ".join(yosyscommand)}', file=sys.stderr)
+ print(result.stdout.decode())
+ exitcode = result.returncode
+ else:
+ # TODO once netlistsvg supports inout ports, this should be removed
+ remove_inouts(jsonpath, args.inouts_as)
+ command = f'{args.netlistsvg_executable} {jsonpath} -o {args.output}'
+ result = subprocess.run(
+ command.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT
+ )
+ if result.returncode != 0:
+ print(f'Failed to run: {command}', file=sys.stderr)
+ print(result.stdout.decode())
+ exitcode = result.returncode
+
+ os.unlink(jsonpath)
+ sys.exit(exitcode)
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
diff --git a/caravel/scripts/generate_fill.py b/caravel/scripts/generate_fill.py
new file mode 100755
index 0000000..c03a9f2
--- /dev/null
+++ b/caravel/scripts/generate_fill.py
@@ -0,0 +1,416 @@
+#!/usr/bin/env python3
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+#
+# generate_fill.py ---
+#
+# Run the fill generation on a layout top level.
+#
+
+import sys
+import os
+import re
+import glob
+import subprocess
+import multiprocessing
+
+def usage():
+ print("Usage:")
+ print("generate_fill.py <user_id_value> <project> <path_to_project> [-keep] [-test] [-dist]")
+ print("")
+ print("where:")
+ print(" <user_id_value> is a character string of eight hex digits, and")
+ print(" <path_to_project> is the path to the project top level directory.")
+ print("")
+ print(" If <user_id_value> is not given, then it must exist in the info.yaml file.")
+ print(" If <path_to_project> is not given, then it is assumed to be the cwd.")
+ print(" If '-keep' is specified, then keep the generation script.")
+ print(" If '-test' is specified, then create but do not run the generation script.")
+ print(" If '-dist' is specified, then run distributed (multi-processing).")
+
+ return 0
+
+def makegds(file):
+ # Procedure for multiprocessing run only: Run the distributed processing
+ # script to load a .mag file of one flattened square area of the layout,
+ # and run the fill generator to produce a .gds file output from it.
+
+ magpath = os.path.split(file)[0]
+ filename = os.path.split(file)[1]
+
+ myenv = os.environ.copy()
+ myenv['MAGTYPE'] = 'mag'
+
+ mproc = subprocess.run(['magic', '-dnull', '-noconsole',
+ '-rcfile', rcfile, magpath + '/generate_fill_dist.tcl',
+ filename],
+ stdin = subprocess.DEVNULL,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ cwd = magpath,
+ env = myenv,
+ universal_newlines = True)
+ if mproc.stdout:
+ for line in mproc.stdout.splitlines():
+ print(line)
+ if mproc.stderr:
+ print('Error message output from magic:')
+ for line in mproc.stderr.splitlines():
+ print(line)
+ if mproc.returncode != 0:
+ print('ERROR: Magic exited with status ' + str(mproc.returncode))
+
+
+if __name__ == '__main__':
+
+ optionlist = []
+ arguments = []
+
+ debugmode = False
+ keepmode = False
+ testmode = False
+ distmode = False
+
+ for option in sys.argv[1:]:
+ if option.find('-', 0) == 0:
+ optionlist.append(option)
+ else:
+ arguments.append(option)
+
+ if len(arguments) < 3:
+ print("Wrong number of arguments given to generate_fill.py.")
+ usage()
+ sys.exit(1)
+
+ user_id_value = arguments[0]
+ project = arguments[1]
+ user_project_path = arguments[2]
+
+ try:
+ # Convert to binary
+ user_id_int = int('0x' + user_id_value, 0)
+ user_id_bits = '{0:032b}'.format(user_id_int)
+
+ except:
+ print("User ID not recognized")
+ usage()
+ sys.exit(1)
+
+ # if len(arguments) == 0:
+ # user_project_path = os.getcwd()
+ # elif len(arguments) == 2:
+ # user_project_path = arguments[1]
+ # elif user_project_path == None:
+ # user_project_path = arguments[0]
+ # else:
+ # user_project_path = os.getcwd()
+
+
+ if not os.path.isdir(user_project_path):
+ print('Error: Project path "' + user_project_path + '" does not exist or is not readable.')
+ sys.exit(1)
+
+ # Check for valid user ID
+ # if not user_id_value:
+ # if os.path.isfile(user_project_path + '/info.yaml'):
+ # with open(user_project_path + '/info.yaml', 'r') as ifile:
+ # infolines = ifile.read().splitlines()
+ # for line in infolines:
+ # kvpair = line.split(':')
+ # if len(kvpair) == 2:
+ # key = kvpair[0].strip()
+ # value = kvpair[1].strip()
+ # if key == 'project_id':
+ # user_id_value = value.strip('"\'')
+ # break
+
+ if user_id_value:
+ project_with_id = 'caravel_' + user_id_value
+ else:
+ print('Error: No project_id found in info.yaml file.')
+ sys.exit(1)
+
+ if '-debug' in optionlist:
+ debugmode = True
+ if '-keep' in optionlist:
+ keepmode = True
+ if '-test' in optionlist:
+ testmode = True
+ if '-dist' in optionlist:
+ distmode = True
+
+ magpath = user_project_path + '/mag'
+ rcfile = magpath + '/.magicrc'
+
+ if not os.path.isfile(rcfile):
+ rcfile = None
+
+ topdir = user_project_path
+ gdsdir = topdir + '/gds'
+ hasgdsdir = True if os.path.isdir(gdsdir) else False
+
+ ofile = open(magpath + '/generate_fill.tcl', 'w')
+
+ print('#!/bin/env wish', file=ofile)
+ print('drc off', file=ofile)
+ print('tech unlock *', file=ofile)
+ print('snap internal', file=ofile)
+ print('box values 0 0 0 0', file=ofile)
+ print('box size 700um 700um', file=ofile)
+ print('set stepbox [box values]', file=ofile)
+ print('set stepwidth [lindex $stepbox 2]', file=ofile)
+ print('set stepheight [lindex $stepbox 3]', file=ofile)
+ print('', file=ofile)
+ print('set starttime [orig_clock format [orig_clock seconds] -format "%D %T"]', file=ofile)
+ print('puts stdout "Started: $starttime"', file=ofile)
+ print('', file=ofile)
+ # Read the user project from GDS, as there is not necessarily a magic database file
+ # to go along with this.
+ # print('gds read ../gds/user_project_wrapper', file=ofile)
+ # Now read the full caravel project
+ # print('load ' + project + ' -dereference', file=ofile)
+ print('gds readonly true', file=ofile)
+ print('gds rescale false', file=ofile)
+ print('gds read ../gds/' + project, file=ofile)
+ print('select top cell', file=ofile)
+ print('expand', file=ofile)
+ if not distmode:
+ print('cif ostyle wafflefill(tiled)', file=ofile)
+ print('', file=ofile)
+ print('set fullbox [box values]', file=ofile)
+ print('set xmax [lindex $fullbox 2]', file=ofile)
+ print('set xmin [lindex $fullbox 0]', file=ofile)
+ print('set fullwidth [expr {$xmax - $xmin}]', file=ofile)
+ print('set xtiles [expr {int(ceil(($fullwidth + 0.0) / $stepwidth))}]', file=ofile)
+ print('set ymax [lindex $fullbox 3]', file=ofile)
+ print('set ymin [lindex $fullbox 1]', file=ofile)
+ print('set fullheight [expr {$ymax - $ymin}]', file=ofile)
+ print('set ytiles [expr {int(ceil(($fullheight + 0.0) / $stepheight))}]', file=ofile)
+ print('box size $stepwidth $stepheight', file=ofile)
+ print('set xbase [lindex $fullbox 0]', file=ofile)
+ print('set ybase [lindex $fullbox 1]', file=ofile)
+ print('', file=ofile)
+
+ # Break layout into tiles and process each separately
+ print('for {set y 0} {$y < $ytiles} {incr y} {', file=ofile)
+ print(' for {set x 0} {$x < $xtiles} {incr x} {', file=ofile)
+ print(' set xlo [expr $xbase + $x * $stepwidth]', file=ofile)
+ print(' set ylo [expr $ybase + $y * $stepheight]', file=ofile)
+ print(' set xhi [expr $xlo + $stepwidth]', file=ofile)
+ print(' set yhi [expr $ylo + $stepheight]', file=ofile)
+ print(' if {$xhi > $fullwidth} {set xhi $fullwidth}', file=ofile)
+ print(' if {$yhi > $fullheight} {set yhi $fullheight}', file=ofile)
+ print(' box values $xlo $ylo $xhi $yhi', file=ofile)
+ # The flattened area must be larger than the fill tile by >1.5um
+ print(' box grow c 1.6um', file=ofile)
+
+ # Flatten into a cell with a new name
+ print(' puts stdout "Flattening layout of tile x=$x y=$y. . . "', file=ofile)
+ print(' flush stdout', file=ofile)
+ print(' update idletasks', file=ofile)
+ print(' flatten -dobox -nolabels ' + project_with_id + '_fill_pattern_${x}_$y', file=ofile)
+ print(' load ' + project_with_id + '_fill_pattern_${x}_$y', file=ofile)
+ # Remove any GDS_FILE reference (there should not be any?)
+ print(' property GDS_FILE ""', file=ofile)
+ # Set boundary using comment layer, to the size of the step box
+ # This corresponds to the "topbox" rule in the wafflefill(tiled) style
+ print(' select top cell', file=ofile)
+ print(' erase comment', file=ofile)
+ print(' box values $xlo $ylo $xhi $yhi', file=ofile)
+ print(' paint comment', file=ofile)
+
+ if not distmode:
+ print(' puts stdout "Writing GDS. . . "', file=ofile)
+
+ print(' flush stdout', file=ofile)
+ print(' update idletasks', file=ofile)
+
+ if distmode:
+ print(' writeall force ' + project_with_id + '_fill_pattern_${x}_$y', file=ofile)
+ else:
+ print(' gds write ' + project_with_id + '_fill_pattern_${x}_$y.gds', file=ofile)
+ # Reload project top
+ print(' load ' + project, file=ofile)
+
+ # Remove last generated cell to save memory
+ print(' cellname delete ' + project_with_id + '_fill_pattern_${x}_$y', file=ofile)
+
+ print(' }', file=ofile)
+ print('}', file=ofile)
+
+ if distmode:
+ print('set ofile [open fill_gen_info.txt w]', file=ofile)
+ print('puts $ofile "$stepwidth"', file=ofile)
+ print('puts $ofile "$stepheight"', file=ofile)
+ print('puts $ofile "$xtiles"', file=ofile)
+ print('puts $ofile "$ytiles"', file=ofile)
+ print('puts $ofile "$xbase"', file=ofile)
+ print('puts $ofile "$ybase"', file=ofile)
+ print('close $ofile', file=ofile)
+ print('quit -noprompt', file=ofile)
+ ofile.close()
+
+ with open(magpath + '/generate_fill_dist.tcl', 'w') as ofile:
+ print('#!/bin/env wish', file=ofile)
+ print('drc off', file=ofile)
+ print('tech unlock *', file=ofile)
+ print('snap internal', file=ofile)
+ print('box values 0 0 0 0', file=ofile)
+ print('set filename [file root [lindex $argv $argc-1]]', file=ofile)
+ print('load $filename', file=ofile)
+ print('cif ostyle wafflefill(tiled)', file=ofile)
+ print('gds write [file root $filename].gds', file=ofile)
+ print('quit -noprompt', file=ofile)
+
+ ofile = open(magpath + '/generate_fill_final.tcl', 'w')
+ print('#!/bin/env wish', file=ofile)
+ print('drc off', file=ofile)
+ print('tech unlock *', file=ofile)
+ print('snap internal', file=ofile)
+ print('box values 0 0 0 0', file=ofile)
+
+ print('set ifile [open fill_gen_info.txt r]', file=ofile)
+ print('gets $ifile stepwidth', file=ofile)
+ print('gets $ifile stepheight', file=ofile)
+ print('gets $ifile xtiles', file=ofile)
+ print('gets $ifile ytiles', file=ofile)
+ print('gets $ifile xbase', file=ofile)
+ print('gets $ifile ybase', file=ofile)
+ print('close $ifile', file=ofile)
+ print('cif ostyle wafflefill(tiled)', file=ofile)
+
+ # Now create simple "fake" views of all the tiles.
+ print('gds readonly true', file=ofile)
+ print('gds rescale false', file=ofile)
+ print('for {set y 0} {$y < $ytiles} {incr y} {', file=ofile)
+ print(' for {set x 0} {$x < $xtiles} {incr x} {', file=ofile)
+ print(' set xlo [expr $xbase + $x * $stepwidth]', file=ofile)
+ print(' set ylo [expr $ybase + $y * $stepheight]', file=ofile)
+ print(' set xhi [expr $xlo + $stepwidth]', file=ofile)
+ print(' set yhi [expr $ylo + $stepheight]', file=ofile)
+ print(' load ' + project_with_id + '_fill_pattern_${x}_$y -quiet', file=ofile)
+ print(' box values $xlo $ylo $xhi $yhi', file=ofile)
+ print(' paint comment', file=ofile)
+ print(' property FIXED_BBOX "$xlo $ylo $xhi $yhi"', file=ofile)
+ print(' property GDS_FILE ' + project_with_id + '_fill_pattern_${x}_${y}.gds', file=ofile)
+ print(' property GDS_START 0', file=ofile)
+ print(' }', file=ofile)
+ print('}', file=ofile)
+
+ # Now tile everything back together
+ print('load ' + project_with_id + '_fill_pattern -quiet', file=ofile)
+ print('for {set y 0} {$y < $ytiles} {incr y} {', file=ofile)
+ print(' for {set x 0} {$x < $xtiles} {incr x} {', file=ofile)
+ print(' box values 0 0 0 0', file=ofile)
+ print(' getcell ' + project_with_id + '_fill_pattern_${x}_$y child 0 0', file=ofile)
+ print(' }', file=ofile)
+ print('}', file=ofile)
+
+ # And write final GDS
+ print('puts stdout "Writing final GDS"', file=ofile)
+
+ print('cif *hier write disable', file=ofile)
+ print('cif *array write disable', file=ofile)
+ if hasgdsdir:
+ print('gds write ../gds/' + project_with_id + '_fill_pattern.gds', file=ofile)
+ else:
+ print('gds write ' + project_with_id + '_fill_pattern.gds', file=ofile)
+ print('set endtime [orig_clock format [orig_clock seconds] -format "%D %T"]', file=ofile)
+ print('puts stdout "Ended: $endtime"', file=ofile)
+ print('quit -noprompt', file=ofile)
+ ofile.close()
+
+ myenv = os.environ.copy()
+ myenv['MAGTYPE'] = 'mag'
+
+ if not testmode:
+ # Diagnostic
+ # print('This script will generate file ' + project_with_id + '_fill_pattern.gds')
+ print('This script will generate files ' + project_with_id + '_fill_pattern_x_y.gds')
+ print('Now generating fill patterns. This may take. . . quite. . . a while.', flush=True)
+ mproc = subprocess.run(['magic', '-dnull', '-noconsole',
+ '-rcfile', rcfile, magpath + '/generate_fill.tcl'],
+ stdin = subprocess.DEVNULL,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ cwd = magpath,
+ env = myenv,
+ universal_newlines = True)
+ if mproc.stdout:
+ for line in mproc.stdout.splitlines():
+ print(line)
+ if mproc.stderr:
+ print('Error message output from magic:')
+ for line in mproc.stderr.splitlines():
+ print(line)
+ if mproc.returncode != 0:
+ print('ERROR: Magic exited with status ' + str(mproc.returncode))
+
+ if distmode:
+ # If using distributed mode, then run magic on each of the generated
+ # layout files
+ pool = multiprocessing.Pool()
+ magfiles = glob.glob(magpath + '/' + project_with_id + '_fill_pattern_*.mag')
+ # NOTE: Adding 'x' to the end of each filename, or else magic will
+ # try to read it from the command line as well as passing it as an
+ # argument to the script. We only want it passed as an argument.
+ magxfiles = list(item + 'x' for item in magfiles)
+ pool.map(makegds, magxfiles)
+
+ # If using distributed mode, then remove all of the temporary .mag files
+ # and then run the final generation script.
+ for file in magfiles:
+ os.remove(file)
+
+ mproc = subprocess.run(['magic', '-dnull', '-noconsole',
+ '-rcfile', rcfile, magpath + '/generate_fill_final.tcl'],
+ stdin = subprocess.DEVNULL,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ cwd = magpath,
+ env = myenv,
+ universal_newlines = True)
+ if mproc.stdout:
+ for line in mproc.stdout.splitlines():
+ print(line)
+ if mproc.stderr:
+ print('Error message output from magic:')
+ for line in mproc.stderr.splitlines():
+ print(line)
+ if mproc.returncode != 0:
+ print('ERROR: Magic exited with status ' + str(mproc.returncode))
+
+ if not keepmode:
+ # Remove fill generation script
+ os.remove(magpath + '/generate_fill.tcl')
+ # Remove all individual fill tiles, leaving only the composite GDS.
+ filelist = os.listdir(magpath)
+ for file in filelist:
+ if os.path.splitext(magpath + '/' + file)[1] == '.gds':
+ if file.startswith(project_with_id + '_fill_pattern_'):
+ os.remove(magpath + '/' + file)
+
+ if distmode:
+ os.remove(magpath + '/generate_fill_dist.tcl')
+ os.remove(magpath + '/generate_fill_final.tcl')
+ os.remove(magpath + '/fill_gen_info.txt')
+ if testmode:
+ magfiles = glob.glob(magpath + '/' + project_with_id + '_fill_pattern_*.mag')
+ for file in magfiles:
+ os.remove(file)
+
+ print('Done!')
+ exit(0)
diff --git a/caravel/scripts/generate_fill_orig.py b/caravel/scripts/generate_fill_orig.py
new file mode 100755
index 0000000..3a43a8c
--- /dev/null
+++ b/caravel/scripts/generate_fill_orig.py
@@ -0,0 +1,268 @@
+#!/usr/bin/env python3
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+#
+# generate_fill_orig.py ---
+#
+# Run the fill generation on a layout top level.
+# This is the older version that does not have a "-dist" option for
+# distributed (multiprocessing) operation.
+#
+
+import sys
+import os
+import re
+import subprocess
+
+def usage():
+ print("Usage:")
+ print("generate_fill_orig.py [<path_to_project>] [-keep] [-test]")
+ print("")
+ print("where:")
+ print(" <path_to_project> is the path to the project top level directory.")
+ print("")
+ print(" If <path_to_project> is not given, then it is assumed to be the cwd.")
+ print(" If '-keep' is specified, then keep the generation script.")
+ print(" If '-test' is specified, then create but do not run the generation script.")
+ return 0
+
+if __name__ == '__main__':
+
+ optionlist = []
+ arguments = []
+
+ debugmode = False
+ keepmode = False
+ testmode = False
+
+ for option in sys.argv[1:]:
+ if option.find('-', 0) == 0:
+ optionlist.append(option)
+ else:
+ arguments.append(option)
+
+ if len(arguments) > 1:
+ print("Wrong number of arguments given to generate_fill_orig.py.")
+ usage()
+ sys.exit(1)
+
+ if len(arguments) == 1:
+ user_project_path = arguments[0]
+ else:
+ user_project_path = os.getcwd()
+
+ if not os.path.isdir(user_project_path):
+ print('Error: Project path "' + user_project_path + '" does not exist or is not readable.')
+ sys.exit(1)
+
+ # Check for valid user ID
+ user_id_value = None
+ if os.path.isfile(user_project_path + '/info.yaml'):
+ with open(user_project_path + '/info.yaml', 'r') as ifile:
+ infolines = ifile.read().splitlines()
+ for line in infolines:
+ kvpair = line.split(':')
+ if len(kvpair) == 2:
+ key = kvpair[0].strip()
+ value = kvpair[1].strip()
+ if key == 'project_id':
+ user_id_value = value.strip('"\'')
+ break
+
+ project = 'caravel'
+ if user_id_value:
+ project_with_id = project + '_' + user_id_value
+ else:
+ print('Error: No project_id found in info.yaml file.')
+ sys.exit(1)
+
+ if '-debug' in optionlist:
+ debugmode = True
+ if '-keep' in optionlist:
+ keepmode = True
+ if '