pinmux register remap as glbl,gpio,timer,pwm,semaphore
diff --git a/Makefile b/Makefile index ff82bc4..8daccc0 100644 --- a/Makefile +++ b/Makefile
@@ -143,15 +143,22 @@ # Default installs to the user home directory, override by "export PRECHECK_ROOT=<precheck-installation-path>" .PHONY: precheck precheck: - @git clone --depth=1 --branch mpw-5a https://github.com/efabless/mpw_precheck.git $(PRECHECK_ROOT) + @git clone --depth=1 --branch $(MPW_TAG) https://github.com/efabless/mpw_precheck.git $(PRECHECK_ROOT) @docker pull efabless/mpw_precheck:latest .PHONY: run-precheck run-precheck: check-pdk check-precheck $(eval INPUT_DIRECTORY := $(shell pwd)) cd $(PRECHECK_ROOT) && \ - docker run -v $(PRECHECK_ROOT):$(PRECHECK_ROOT) -v $(INPUT_DIRECTORY):$(INPUT_DIRECTORY) -v $(PDK_ROOT):$(PDK_ROOT) -e INPUT_DIRECTORY=$(INPUT_DIRECTORY) -e PDK_ROOT=$(PDK_ROOT) \ - -u $(shell id -u $(USER)):$(shell id -g $(USER)) efabless/mpw_precheck:latest bash -c "cd $(PRECHECK_ROOT) ; python3 mpw_precheck.py --input_directory $(INPUT_DIRECTORY) --pdk_root $(PDK_ROOT)" + docker run -v $(PRECHECK_ROOT):$(PRECHECK_ROOT) \ + -v $(INPUT_DIRECTORY):$(INPUT_DIRECTORY) \ + -v $(PDK_ROOT):$(PDK_ROOT) \ + -e INPUT_DIRECTORY=$(INPUT_DIRECTORY) \ + -e PDK_PATH=$(PDK_ROOT)/$(PDK) \ + -e PDK_ROOT=$(PDK_ROOT) \ + -e PDKPATH=$(PDKPATH) \ + -u $(shell id -u $(USER)):$(shell id -g $(USER)) \ + efabless/mpw_precheck:latest bash -c "cd $(PRECHECK_ROOT) ; python3 mpw_precheck.py --input_directory $(INPUT_DIRECTORY) --pdk_path $(PDK_ROOT)/$(PDK)"
diff --git a/openlane/Makefile b/openlane/Makefile index 865f452..c21989a 100644 --- a/openlane/Makefile +++ b/openlane/Makefile
@@ -18,7 +18,7 @@ CONFIG = $(foreach block,$(BLOCKS), ./$(block)/config.tcl) CLEAN = $(foreach block,$(BLOCKS), clean-$(block)) -OPENLANE_TAG = mpw5 +OPENLANE_TAG = mpw7 OPENLANE_IMAGE_NAME = riscduino/openlane:$(OPENLANE_TAG) OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -design ./$* -save_path .. -save -tag $* -overwrite" OPENLANE_INTERACTIVE_COMMAND = "cd $(PWD)/../openlane && flow.tcl -design ./$* -save_path .. -save -tag $* -overwrite -it -file ./$*/interactive.tcl" @@ -43,15 +43,29 @@ @sleep 1 @if [ -f ./$*/interactive.tcl ]; then\ - docker run --rm \ + docker run --rm -v $(OPENLANE_ROOT):/openlane \ + -v $(PDK_ROOT):$(PDK_ROOT) \ -v $(PWD)/..:$(PWD)/.. \ + -v $(MCW_ROOT):$(MCW_ROOT) \ + -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \ + -e MCW_ROOT=$(MCW_ROOT) \ + -e PDK_ROOT=$(PDK_ROOT) \ + -e CARAVEL_ROOT=$(CARAVEL_ROOT) \ + -e PDK=$(PDK) \ -e TEST_MISMATCHES=tools \ -e MISMATCHES_OK=1 \ -u $(shell id -u $(USER)):$(shell id -g $(USER)) \ $(OPENLANE_IMAGE_NAME) sh -c $(OPENLANE_INTERACTIVE_COMMAND);\ else\ - docker run --rm \ + docker run --rm -v $(OPENLANE_ROOT):/openlane \ + -v $(PDK_ROOT):$(PDK_ROOT) \ -v $(PWD)/..:$(PWD)/.. \ + -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \ + -v $(MCW_ROOT):$(MCW_ROOT) \ + -e MCW_ROOT=$(MCW_ROOT) \ + -e PDK=$(PDK) \ + -e PDK_ROOT=$(PDK_ROOT) \ + -e CARAVEL_ROOT=$(CARAVEL_ROOT) \ -e TEST_MISMATCHES=tools \ -e MISMATCHES_OK=1 \ -u $(shell id -u $(USER)):$(shell id -g $(USER)) \
diff --git a/openlane/Read.me b/openlane/Read.me index c0c9895..e69de29 100644 --- a/openlane/Read.me +++ b/openlane/Read.me
@@ -1,3 +0,0 @@ -ycr2_mintf harden with riscduino/openlane:mpw4 (mpw5 version not able to root due to conjuestion) -Rest of the cores & top-level are harden with riscduino/openlane:mpw5 docker -
diff --git a/openlane/pinmux/config.tcl b/openlane/pinmux/config.tcl deleted file mode 100755 index f844215..0000000 --- a/openlane/pinmux/config.tcl +++ /dev/null
@@ -1,113 +0,0 @@ -# SPDX-FileCopyrightText: 2021 , Dinesh Annayya -# -# 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 -# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org> - -# Global -# ------ - -set script_dir [file dirname [file normalize [info script]]] -# Name - -set ::env(DESIGN_NAME) pinmux - -set ::env(DESIGN_IS_CORE) "0" -set ::env(FP_PDN_CORE_RING) "0" - -# Timing configuration -set ::env(CLOCK_PERIOD) "10" -set ::env(CLOCK_PORT) "mclk" - -set ::env(SYNTH_MAX_FANOUT) 4 - -## CTS BUFFER -set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8" -set ::env(CTS_SINK_CLUSTERING_SIZE) "16" -set ::env(CLOCK_BUFFER_FANOUT) "8" - -# Sources -# ------- - -# Local sources + no2usb sources -set ::env(VERILOG_FILES) "\ - $script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \ - $script_dir/../../verilog/rtl/pinmux/src/pinmux.sv \ - $script_dir/../../verilog/rtl/pinmux/src/pinmux_reg.sv \ - $script_dir/../../verilog/rtl/pinmux/src/gpio_intr.sv \ - $script_dir/../../verilog/rtl/pinmux/src/pwm.sv \ - $script_dir/../../verilog/rtl/pinmux/src/timer.sv \ - $script_dir/../../verilog/rtl/lib/pulse_gen_type1.sv \ - $script_dir/../../verilog/rtl/lib/pulse_gen_type2.sv \ - $script_dir/../../verilog/rtl/lib/registers.v \ - $script_dir/../../verilog/rtl/lib/ctech_cells.sv \ - $script_dir/../../verilog/rtl/lib/reset_sync.sv \ - " - - -set ::env(SYNTH_DEFINES) [list SYNTHESIS ] -set ::env(SYNTH_READ_BLACKBOX_LIB) 1 -set ::env(SDC_FILE) "$script_dir/base.sdc" -set ::env(BASE_SDC_FILE) "$script_dir/base.sdc" - -set ::env(LEC_ENABLE) 0 - -set ::env(VDD_PIN) [list {vccd1}] -set ::env(GND_PIN) [list {vssd1}] - - -# Floorplanning -# ------------- - -set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg - -set ::env(FP_SIZING) absolute -set ::env(DIE_AREA) "0 0 550 450" - - -# If you're going to use multiple power domains, then keep this disabled. -set ::env(RUN_CVC) 0 - -#set ::env(PDN_CFG) $script_dir/pdn.tcl - - -set ::env(PL_TIME_DRIVEN) 1 -set ::env(PL_TARGET_DENSITY) "0.30" -set ::env(CELL_PAD) "4" - -set ::env(FP_IO_VEXTEND) {6} -set ::env(FP_IO_HEXTEND) {6} - - -# helps in anteena fix -set ::env(USE_ARC_ANTENNA_CHECK) "0" - -set ::env(FP_IO_VEXTEND) 4 -set ::env(FP_IO_HEXTEND) 4 - -set ::env(FP_PDN_VPITCH) 100 -set ::env(FP_PDN_HPITCH) 100 -set ::env(FP_PDN_VWIDTH) 5 -set ::env(FP_PDN_HWIDTH) 5 - -#set ::env(GLB_RT_MAXLAYER) 5 -set ::env(RT_MAX_LAYER) {met4} -set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 - -set ::env(DIODE_INSERTION_STRATEGY) 4 - - -set ::env(QUIT_ON_TIMING_VIOLATIONS) "0" -set ::env(QUIT_ON_MAGIC_DRC) "1" -set ::env(QUIT_ON_LVS_ERROR) "1" -set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
diff --git a/openlane/pinmux/base.sdc b/openlane/pinmux_top/base.sdc similarity index 98% rename from openlane/pinmux/base.sdc rename to openlane/pinmux_top/base.sdc index 91f9b40..2aa686d 100644 --- a/openlane/pinmux/base.sdc +++ b/openlane/pinmux_top/base.sdc
@@ -10,7 +10,7 @@ set_propagated_clock [get_clocks {mclk}] set_clock_transition 0.1500 [all_clocks] -set_clock_uncertainty -setup 0.2500 [all_clocks] +set_clock_uncertainty -setup 0.5000 [all_clocks] set_clock_uncertainty -hold 0.2500 [all_clocks] set ::env(SYNTH_TIMING_DERATE) 0.05
diff --git a/openlane/pinmux_top/config.tcl b/openlane/pinmux_top/config.tcl new file mode 100755 index 0000000..57819dc --- /dev/null +++ b/openlane/pinmux_top/config.tcl
@@ -0,0 +1,121 @@ +# SPDX-FileCopyrightText: 2021 , Dinesh Annayya +# +# 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 +# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org> + +# Global +# ------ + +set script_dir [file dirname [file normalize [info script]]] +# Name + +set ::env(DESIGN_NAME) pinmux_top + +set ::env(DESIGN_IS_CORE) "0" +set ::env(FP_PDN_CORE_RING) "0" + +# Timing configuration +set ::env(CLOCK_PERIOD) "10" +set ::env(CLOCK_PORT) "mclk" + +set ::env(SYNTH_MAX_FANOUT) 4 + +## CTS BUFFER +set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8" +set ::env(CTS_SINK_CLUSTERING_SIZE) "16" +set ::env(CLOCK_BUFFER_FANOUT) "8" + +# Sources +# ------- + +# Local sources + no2usb sources +set ::env(VERILOG_FILES) "\ + $::env(DESIGN_DIR)/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/pinmux_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/pinmux.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/glbl_reg.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/gpio_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/gpio_reg.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/gpio_intr.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/pwm_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/pwm_reg.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/pwm.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/timer_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/timer_reg.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/timer.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/semaphore_reg.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/pulse_gen_type1.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/pulse_gen_type2.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/registers.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/ctech_cells.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/reset_sync.sv \ + " + + +set ::env(SYNTH_DEFINES) [list SYNTHESIS ] +set ::env(SYNTH_READ_BLACKBOX_LIB) 1 +set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc +set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc + +set ::env(LEC_ENABLE) 0 + +set ::env(VDD_PIN) [list {vccd1}] +set ::env(GND_PIN) [list {vssd1}] + + +# Floorplanning +# ------------- + +set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg + +set ::env(FP_SIZING) absolute +set ::env(DIE_AREA) "0 0 500 400" + + +# If you're going to use multiple power domains, then keep this disabled. +set ::env(RUN_CVC) 0 + +#set ::env(PDN_CFG) $script_dir/pdn.tcl + + +set ::env(PL_TIME_DRIVEN) 1 +set ::env(PL_TARGET_DENSITY) "0.40" +set ::env(CELL_PAD) "4" + +set ::env(FP_IO_VEXTEND) {6} +set ::env(FP_IO_HEXTEND) {6} + + +# helps in anteena fix +set ::env(USE_ARC_ANTENNA_CHECK) "0" + +set ::env(FP_IO_VEXTEND) 4 +set ::env(FP_IO_HEXTEND) 4 + +set ::env(FP_PDN_VPITCH) 100 +set ::env(FP_PDN_HPITCH) 100 +set ::env(FP_PDN_VWIDTH) 5 +set ::env(FP_PDN_HWIDTH) 5 + +#set ::env(GLB_RT_MAXLAYER) 5 +set ::env(RT_MAX_LAYER) {met4} +#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 + +set ::env(DIODE_INSERTION_STRATEGY) 4 + + +set ::env(QUIT_ON_TIMING_VIOLATIONS) "0" +set ::env(QUIT_ON_MAGIC_DRC) "1" +set ::env(QUIT_ON_LVS_ERROR) "1" +set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
diff --git a/openlane/pinmux/pin_order.cfg b/openlane/pinmux_top/pin_order.cfg similarity index 99% rename from openlane/pinmux/pin_order.cfg rename to openlane/pinmux_top/pin_order.cfg index baa31fd..6dc053a 100644 --- a/openlane/pinmux/pin_order.cfg +++ b/openlane/pinmux_top/pin_order.cfg
@@ -129,6 +129,7 @@ reg_cs 200 0 reg_wr +reg_addr\[8\] reg_addr\[7\] reg_addr\[6\] reg_addr\[5\]
diff --git a/openlane/qspim_top/base.sdc b/openlane/qspim_top/base.sdc index 327d1f4..c0e8993 100644 --- a/openlane/qspim_top/base.sdc +++ b/openlane/qspim_top/base.sdc
@@ -24,7 +24,7 @@ set_propagated_clock [get_clocks {spiclk}] set_clock_transition 0.1500 [all_clocks] -set_clock_uncertainty -setup 0.2500 [all_clocks] +set_clock_uncertainty -setup 0.5000 [all_clocks] set_clock_uncertainty -hold 0.2500 [all_clocks] set ::env(SYNTH_TIMING_DERATE) 0.05
diff --git a/openlane/qspim_top/config.tcl b/openlane/qspim_top/config.tcl index 187e486..0ce98bf 100755 --- a/openlane/qspim_top/config.tcl +++ b/openlane/qspim_top/config.tcl
@@ -41,23 +41,23 @@ # Local sources + no2usb sources set ::env(VERILOG_FILES) "\ - $script_dir/../../verilog/rtl/lib/clk_skew_adjust.gv \ - $script_dir/../../verilog/rtl/lib/reset_sync.sv \ - $script_dir/../../verilog/rtl/qspim/src/qspim_top.sv \ - $script_dir/../../verilog/rtl/qspim/src/qspim_if.sv \ - $script_dir/../../verilog/rtl/qspim/src/qspim_regs.sv \ - $script_dir/../../verilog/rtl/qspim/src/qspim_fifo.sv \ - $script_dir/../../verilog/rtl/qspim/src/qspim_clkgen.sv \ - $script_dir/../../verilog/rtl/qspim/src/qspim_ctrl.sv \ - $script_dir/../../verilog/rtl/qspim/src/qspim_rx.sv \ - $script_dir/../../verilog/rtl/qspim/src/qspim_tx.sv \ - $script_dir/../../verilog/rtl/lib/ctech_cells.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/clk_skew_adjust.gv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/reset_sync.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/qspim/src/qspim_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/qspim/src/qspim_if.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/qspim/src/qspim_regs.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/qspim/src/qspim_fifo.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/qspim/src/qspim_clkgen.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/qspim/src/qspim_ctrl.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/qspim/src/qspim_rx.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/qspim/src/qspim_tx.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/ctech_cells.sv \ " set ::env(SYNTH_DEFINES) [list SYNTHESIS ] set ::env(SYNTH_READ_BLACKBOX_LIB) 1 -set ::env(SDC_FILE) "$script_dir/base.sdc" -set ::env(BASE_SDC_FILE) "$script_dir/base.sdc" +set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc +set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc set ::env(LEC_ENABLE) 0 @@ -95,7 +95,7 @@ #set ::env(GLB_RT_MAXLAYER) 5 set ::env(RT_MAX_LAYER) {met4} -set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 +#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 set ::env(DIODE_INSERTION_STRATEGY) 4
diff --git a/openlane/uart_i2cm_usb_spi_top/base.sdc b/openlane/uart_i2cm_usb_spi_top/base.sdc index 4a33fc5..35bba97 100644 --- a/openlane/uart_i2cm_usb_spi_top/base.sdc +++ b/openlane/uart_i2cm_usb_spi_top/base.sdc
@@ -12,7 +12,7 @@ create_clock -name usb_clk -period 100.0000 [get_ports {usb_clk}] set_clock_transition 0.1500 [all_clocks] -set_clock_uncertainty -setup 0.2500 [all_clocks] +set_clock_uncertainty -setup 0.5000 [all_clocks] set_clock_uncertainty -hold 0.2500 [all_clocks] @@ -44,9 +44,9 @@ set_input_delay -min 1.5000 -clock [get_clocks {app_clk}] -add_delay [get_ports {usb_rstn}] -set_input_delay -max 6.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {reg_addr[*]}] +set_input_delay -max 5.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {reg_addr[*]}] set_input_delay -max 6.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {reg_be[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {reg_cs}] +set_input_delay -max 5.7500 -clock [get_clocks {app_clk}] -add_delay [get_ports {reg_cs}] set_input_delay -max 6.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {reg_wdata[*]}] set_input_delay -max 6.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {reg_wr}]
diff --git a/openlane/uart_i2cm_usb_spi_top/config.tcl b/openlane/uart_i2cm_usb_spi_top/config.tcl index 802f0cf..39350c5 100644 --- a/openlane/uart_i2cm_usb_spi_top/config.tcl +++ b/openlane/uart_i2cm_usb_spi_top/config.tcl
@@ -41,44 +41,45 @@ # Local sources + no2usb sources set ::env(VERILOG_FILES) "\ - $script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \ - $script_dir/../../verilog/rtl/uart/src/uart_core.sv \ - $script_dir/../../verilog/rtl/uart/src/uart_cfg.sv \ - $script_dir/../../verilog/rtl/uart/src/uart_rxfsm.sv \ - $script_dir/../../verilog/rtl/uart/src/uart_txfsm.sv \ - $script_dir/../../verilog/rtl/lib/async_wb.sv \ - $script_dir/../../verilog/rtl/lib/async_fifo.sv \ - $script_dir/../../verilog/rtl/lib/async_fifo_th.sv \ - $script_dir/../../verilog/rtl/lib/reset_sync.sv \ - $script_dir/../../verilog/rtl/lib/double_sync_low.v \ - $script_dir/../../verilog/rtl/lib/clk_ctl.v \ - $script_dir/../../verilog/rtl/lib/registers.v \ - $script_dir/../../verilog/rtl/i2cm/src/core/i2cm_bit_ctrl.v \ - $script_dir/../../verilog/rtl/i2cm/src/core/i2cm_byte_ctrl.v \ - $script_dir/../../verilog/rtl/i2cm/src/core/i2cm_top.v \ - $script_dir/../../verilog/rtl/usb1_host/src/core/usbh_core.sv \ - $script_dir/../../verilog/rtl/usb1_host/src/core/usbh_crc16.sv \ - $script_dir/../../verilog/rtl/usb1_host/src/core/usbh_crc5.sv \ - $script_dir/../../verilog/rtl/usb1_host/src/core/usbh_fifo.sv \ - $script_dir/../../verilog/rtl/usb1_host/src/core/usbh_sie.sv \ - $script_dir/../../verilog/rtl/usb1_host/src/phy/usb_fs_phy.v \ - $script_dir/../../verilog/rtl/usb1_host/src/phy/usb_transceiver.v\ - $script_dir/../../verilog/rtl/usb1_host/src/top/usb1_host.sv \ - $script_dir/../../verilog/rtl/sspim/src/sspim_top.sv \ - $script_dir/../../verilog/rtl/sspim/src/sspim_ctl.sv \ - $script_dir/../../verilog/rtl/sspim/src/sspim_if.sv \ - $script_dir/../../verilog/rtl/sspim/src/sspim_cfg.sv \ - $script_dir/../../verilog/rtl/uart_i2c_usb_spi/src/uart_i2c_usb_spi.sv\ - $script_dir/../../verilog/rtl/lib/ctech_cells.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart/src/uart_core.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart/src/uart_cfg.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart/src/uart_rxfsm.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart/src/uart_txfsm.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/async_wb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/async_fifo.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/async_fifo_th.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/reset_sync.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/double_sync_low.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/clk_ctl.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/registers.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/i2cm/src/core/i2cm_bit_ctrl.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/i2cm/src/core/i2cm_byte_ctrl.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/i2cm/src/core/i2cm_top.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/usb1_host/src/core/usbh_core.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/usb1_host/src/core/usbh_crc16.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/usb1_host/src/core/usbh_crc5.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/usb1_host/src/core/usbh_fifo.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/usb1_host/src/core/usbh_sie.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/usb1_host/src/phy/usb_fs_phy.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/usb1_host/src/phy/usb_transceiver.v\ + $::env(DESIGN_DIR)/../../verilog/rtl/usb1_host/src/top/usb1_host.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/sspim/src/sspim_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/sspim/src/sspim_ctl.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/sspim/src/sspim_if.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/sspim/src/sspim_cfg.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/sspim/src/sspim_clkgen.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart_i2c_usb_spi/src/uart_i2c_usb_spi.sv\ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/ctech_cells.sv \ " set ::env(SYNTH_NO_FLAT) {1} set ::env(SYNTH_READ_BLACKBOX_LIB) 1 -set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/i2cm/src/includes $script_dir/../../verilog/rtl/usb1_host/src/includes ] +set ::env(VERILOG_INCLUDE_DIRS) [glob $::env(DESIGN_DIR)/../../verilog/rtl/i2cm/src/includes $::env(DESIGN_DIR)/../../verilog/rtl/usb1_host/src/includes ] set ::env(SYNTH_DEFINES) [list SYNTHESIS ] -set ::env(SDC_FILE) "$script_dir/base.sdc" -set ::env(BASE_SDC_FILE) "$script_dir/base.sdc" +set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc +set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc set ::env(LEC_ENABLE) 0 @@ -91,7 +92,7 @@ set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg set ::env(FP_SIZING) "absolute" -set ::env(DIE_AREA) [list 0.0 0.0 510.0 725.0] +set ::env(DIE_AREA) [list 0.0 0.0 520.0 725.0] @@ -117,13 +118,14 @@ #set ::env(GLB_RT_MAXLAYER) 5 set ::env(RT_MAX_LAYER) {met4} -set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 +#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 set ::env(DIODE_INSERTION_STRATEGY) 4 set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) {1} set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) {1} -set ::env(GLB_RT_ADJUSTMENT) {0.25} +#set ::env(GLB_RT_ADJUSTMENT) {0.25} +set ::env(GLB_RT_LAYER_ADJUSTMENTS) {0.25,0,0,0,0,0} set ::env(CELL_PAD) {2} set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl index 1c6fc4f..8bace80 100644 --- a/openlane/user_project_wrapper/config.tcl +++ b/openlane/user_project_wrapper/config.tcl
@@ -16,36 +16,34 @@ # Base Configurations. Don't Touch # section begin -set ::env(PDK) "sky130A" set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd" # YOU ARE NOT ALLOWED TO CHANGE ANY VARIABLES DEFINED IN THE FIXED WRAPPER CFGS -source $::env(CARAVEL_ROOT)/openlane/user_project_wrapper/fixed_wrapper_cfgs.tcl +source $::env(DESIGN_DIR)/fixed_dont_change/fixed_wrapper_cfgs.tcl # YOU CAN CHANGE ANY VARIABLES DEFINED IN THE DEFAULT WRAPPER CFGS BY OVERRIDING THEM IN THIS CONFIG.TCL -source $::env(CARAVEL_ROOT)/openlane/user_project_wrapper/default_wrapper_cfgs.tcl +source $::env(DESIGN_DIR)/fixed_dont_change/default_wrapper_cfgs.tcl set script_dir [file dirname [file normalize [info script]]] set proj_dir [file dirname [file normalize [info script]]] set ::env(DESIGN_NAME) user_project_wrapper -set verilog_root $proj_dir/../../verilog/ -set lef_root $proj_dir/../../lef/ -set gds_root $proj_dir/../../gds/ +set verilog_root $::env(DESIGN_DIR)/../../verilog/ +set lef_root $::env(DESIGN_DIR)/../../lef/ +set gds_root $::env(DESIGN_DIR)/../../gds/ #section end # User Configurations # set ::env(DESIGN_IS_CORE) 1 -set ::env(FP_PDN_CORE_RING) 1 ## Source Verilog Files set ::env(VERILOG_FILES) "\ - $proj_dir/../../verilog/rtl//yifive/ycr2c/src/top/ycr2_top_wb.sv \ - $proj_dir/../../verilog/rtl/user_project_wrapper.v" + $::env(DESIGN_DIR)/../../verilog/rtl//yifive/ycr2c/src/top/ycr2_top_wb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/user_project_wrapper.v" ## Clock configurations @@ -56,33 +54,32 @@ ## Internal Macros ### Macro Placement -set ::env(FP_SIZING) "absolute" -set ::env(MACRO_PLACEMENT_CFG) $proj_dir/macro.cfg +set ::env(MACRO_PLACEMENT_CFG) $::env(DESIGN_DIR)/macro.cfg -set ::env(PDN_CFG) $proj_dir/pdn_cfg.tcl +#set ::env(PDN_CFG) $::env(DESIGN_DIR)/pdn_cfg.tcl -set ::env(SDC_FILE) "$proj_dir/base.sdc" -set ::env(BASE_SDC_FILE) "$proj_dir/base.sdc" +set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc +set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc set ::env(SYNTH_READ_BLACKBOX_LIB) 1 ### Black-box verilog and views set ::env(VERILOG_FILES_BLACKBOX) "\ - $proj_dir/../../verilog/gl/qspim_top.v \ - $proj_dir/../../verilog/gl/wb_interconnect.v \ - $proj_dir/../../verilog/gl/pinmux.v \ - $proj_dir/../../verilog/gl/uart_i2c_usb_spi_top.v \ - $proj_dir/../../verilog/gl/wb_host.v \ - $proj_dir/../../verilog/gl/ycr_intf.v \ - $proj_dir/../../verilog/gl/ycr_core_top.v \ - $proj_dir/../../verilog/gl/ycr2_iconnect.v \ - $proj_dir/../../verilog/gl/digital_pll.v \ - $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \ + $::env(DESIGN_DIR)/../../verilog/gl/qspim_top.v \ + $::env(DESIGN_DIR)/../../verilog/gl/wb_interconnect.v \ + $::env(DESIGN_DIR)/../../verilog/gl/pinmux_top.v \ + $::env(DESIGN_DIR)/../../verilog/gl/uart_i2c_usb_spi_top.v \ + $::env(DESIGN_DIR)/../../verilog/gl/wb_host.v \ + $::env(DESIGN_DIR)/../../verilog/gl/ycr_intf.v \ + $::env(DESIGN_DIR)/../../verilog/gl/ycr_core_top.v \ + $::env(DESIGN_DIR)/../../verilog/gl/ycr2_iconnect.v \ + $::env(DESIGN_DIR)/../../verilog/gl/digital_pll.v \ + $::env(PDK_ROOT)/sky130B/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \ " set ::env(EXTRA_LEFS) "\ $lef_root/qspim_top.lef \ - $lef_root/pinmux.lef \ + $lef_root/pinmux_top.lef \ $lef_root/wb_interconnect.lef \ $lef_root/uart_i2c_usb_spi_top.lef \ $lef_root/wb_host.lef \ @@ -90,12 +87,12 @@ $lef_root/ycr_core_top.lef \ $lef_root/ycr2_iconnect.lef \ $lef_root/digital_pll.lef \ - $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef \ + $::env(PDK_ROOT)/sky130B/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef \ " set ::env(EXTRA_GDS_FILES) "\ $gds_root/qspim_top.gds \ - $gds_root/pinmux.gds \ + $gds_root/pinmux_top.gds \ $gds_root/wb_interconnect.gds \ $gds_root/uart_i2c_usb_spi_top.gds \ $gds_root/wb_host.gds \ @@ -103,12 +100,12 @@ $gds_root/ycr_core_top.gds \ $gds_root/ycr2_iconnect.gds \ $gds_root/digital_pll.gds \ - $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds \ + $::env(PDK_ROOT)/sky130B/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds \ " set ::env(SYNTH_DEFINES) [list SYNTHESIS ] -set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr2c/src/includes ] +set ::env(VERILOG_INCLUDE_DIRS) [glob $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/includes ] #set ::env(GLB_RT_MAXLAYER) 6 set ::env(RT_MAX_LAYER) {met5} @@ -119,15 +116,15 @@ ## Internal Macros ### Macro PDN Connections set ::env(FP_PDN_ENABLE_MACROS_GRID) "1" -set ::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS) "1" +#set ::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS) "1" -set ::env(VDD_NETS) {vccd1 vccd2 vdda1 vdda2} -set ::env(GND_NETS) {vssd1 vssd2 vssa1 vssa2} -# +set ::env(VDD_NET) {vccd1} set ::env(VDD_PIN) {vccd1} +set ::env(GND_NET) {vssd1} set ::env(GND_PIN) {vssd1} -set ::env(GLB_RT_OBS) " \ + +set ::env(GRT_OBS) " \ li1 150 130 833.1 546.54,\ met1 150 130 833.1 546.54,\ met2 150 130 833.1 546.54,\ @@ -138,37 +135,30 @@ met2 950 130 1633.1 546.54,\ met3 950 130 1633.1 546.54,\ - li1 150 750 833.1 1166.54,\ - met1 150 750 833.1 1166.54,\ - met2 150 750 833.1 1166.54,\ - met3 150 750 833.1 1166.54,\ - met1 950 650 1760 660 ,\ - met3 950 650 1760 660 ,\ - met1 2250 2150 2800 2600,\ - met2 2250 2150 2800 2600,\ - met3 2250 2150 2800 2600,\ + li1 150 750 833.1 1166.54,\ + met1 150 750 833.1 1166.54,\ + met2 150 750 833.1 1166.54,\ + met3 150 750 833.1 1166.54,\ met5 0 0 2920 3520" -set ::env(FP_PDN_POWER_STRAPS) "vccd1 vssd1 1, vccd2 vssd2 0, vdda1 vssa1 0, vdda2 vssa2 0" +#set ::env(FP_PDN_POWER_STRAPS) "vccd1 vssd1 1, vccd2 vssd2 0, vdda1 vssa1 1, vdda2 vssa2 1" -#set ::env(FP_PDN_MACRO_HOOKS) " \ -# u_intercon vccd1 vssd1,\ -# u_pinmux vccd1 vssd1,\ -# u_qspi_master vccd1 vssd1,\ -# u_riscv_top vccd1 vssd1,\ -# u_tsram0_2kb vccd1 vssd1,\ -# u_icache_2kb vccd1 vssd1,\ -# u_dcache_2kb vccd1 vssd1,\ -# u_sram0_2kb vccd1 vssd1,\ -# u_sram1_2kb vccd1 vssd1,\ -# u_sram2_2kb vccd1 vssd1,\ -# u_sram3_2kb vccd1 vssd1,\ -# u_uart_i2c_usb_spi vccd1 vssd1,\ -# u_wb_host vccd1 vssd1,\ -# u_riscv_top.i_core_top_0 vccd1 vssd1, \ -# u_riscv_top.i_core_top_1 vccd1 vssd1, \ -# u_riscv_top.u_intf vccd1 vssd1 \ -# " +set ::env(FP_PDN_MACRO_HOOKS) " \ + u_pll vccd1 vssd1 VPWR VGND, \ + u_intercon vccd1 vssd1 vccd1 vssd1,\ + u_pinmux vccd1 vssd1 vccd1 vssd1,\ + u_qspi_master vccd1 vssd1 vccd1 vssd1,\ + u_tsram0_2kb vccd1 vssd1 vccd1 vssd1,\ + u_icache_2kb vccd1 vssd1 vccd1 vssd1,\ + u_dcache_2kb vccd1 vssd1 vccd1 vssd1,\ + u_uart_i2c_usb_spi vccd1 vssd1 vccd1 vssd1,\ + u_wb_host vccd1 vssd1 vccd1 vssd1,\ + u_riscv_top.i_core_top_0 vccd1 vssd1 vccd1 vssd1, \ + u_riscv_top.i_core_top_1 vccd1 vssd1 vccd1 vssd1, \ + u_riscv_top.u_connect vccd1 vssd1 VPWR VGND, \ + u_riscv_top.u_intf vccd1 vssd1 vccd1 vssd1 \ + " + # The following is because there are no std cells in the example wrapper project. @@ -188,14 +178,15 @@ set ::env(QUIT_ON_NEGATIVE_WNS) "0" set ::env(QUIT_ON_SLEW_VIOLATIONS) "0" set ::env(QUIT_ON_TIMING_VIOLATIONS) "0" -set ::env(FP_PDN_IRDROP) "0" + +set ::env(FP_PDN_IRDROP) "1" set ::env(FP_PDN_HORIZONTAL_HALO) "10" set ::env(FP_PDN_VERTICAL_HALO) "10" + +# + set ::env(FP_PDN_VOFFSET) "5" -set ::env(FP_PDN_VPITCH) "80" -set ::env(FP_PDN_VSPACING) "15.5" -set ::env(FP_PDN_VWIDTH) "3.1" -set ::env(FP_PDN_HOFFSET) "10" -set ::env(FP_PDN_HPITCH) "90" -set ::env(FP_PDN_HSPACING) "10" -set ::env(FP_PDN_HWIDTH) "3.1" +set ::env(FP_PDN_VPITCH) "180" +set ::env(FP_PDN_HOFFSET) "5" +set ::env(FP_PDN_HPITCH) "180" +
diff --git a/openlane/user_project_wrapper/fixed_dont_change/default_wrapper_cfgs.tcl b/openlane/user_project_wrapper/fixed_dont_change/default_wrapper_cfgs.tcl new file mode 100644 index 0000000..4a4f8a2 --- /dev/null +++ b/openlane/user_project_wrapper/fixed_dont_change/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/openlane/user_project_wrapper/fixed_dont_change/fixed_wrapper_cfgs.tcl b/openlane/user_project_wrapper/fixed_dont_change/fixed_wrapper_cfgs.tcl new file mode 100644 index 0000000..e602da7 --- /dev/null +++ b/openlane/user_project_wrapper/fixed_dont_change/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 + +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) 12.45 +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" + +# Pin placement template +set ::env(FP_DEF_TEMPLATE) $::env(DESIGN_DIR)/fixed_dont_change/user_project_wrapper.def
diff --git a/openlane/user_project_wrapper/fixed_dont_change/user_project_wrapper.def b/openlane/user_project_wrapper/fixed_dont_change/user_project_wrapper.def new file mode 100644 index 0000000..7bf40c0 --- /dev/null +++ b/openlane/user_project_wrapper/fixed_dont_change/user_project_wrapper.def
@@ -0,0 +1,14496 @@ +VERSION 5.8 ; +DIVIDERCHAR "/" ; +BUSBITCHARS "[]" ; +DESIGN user_project_wrapper ; +UNITS DISTANCE MICRONS 1000 ; +DIEAREA ( 0 0 ) ( 2920000 3520000 ) ; +ROW ROW_0 unithd 5520 10880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1 unithd 5520 13600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_2 unithd 5520 16320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_3 unithd 5520 19040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_4 unithd 5520 21760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_5 unithd 5520 24480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_6 unithd 5520 27200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_7 unithd 5520 29920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_8 unithd 5520 32640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_9 unithd 5520 35360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_10 unithd 5520 38080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_11 unithd 5520 40800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_12 unithd 5520 43520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_13 unithd 5520 46240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_14 unithd 5520 48960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_15 unithd 5520 51680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_16 unithd 5520 54400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_17 unithd 5520 57120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_18 unithd 5520 59840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_19 unithd 5520 62560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_20 unithd 5520 65280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_21 unithd 5520 68000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_22 unithd 5520 70720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_23 unithd 5520 73440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_24 unithd 5520 76160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_25 unithd 5520 78880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_26 unithd 5520 81600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_27 unithd 5520 84320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_28 unithd 5520 87040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_29 unithd 5520 89760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_30 unithd 5520 92480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_31 unithd 5520 95200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_32 unithd 5520 97920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_33 unithd 5520 100640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_34 unithd 5520 103360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_35 unithd 5520 106080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_36 unithd 5520 108800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_37 unithd 5520 111520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_38 unithd 5520 114240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_39 unithd 5520 116960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_40 unithd 5520 119680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_41 unithd 5520 122400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_42 unithd 5520 125120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_43 unithd 5520 127840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_44 unithd 5520 130560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_45 unithd 5520 133280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_46 unithd 5520 136000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_47 unithd 5520 138720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_48 unithd 5520 141440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_49 unithd 5520 144160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_50 unithd 5520 146880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_51 unithd 5520 149600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_52 unithd 5520 152320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_53 unithd 5520 155040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_54 unithd 5520 157760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_55 unithd 5520 160480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_56 unithd 5520 163200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_57 unithd 5520 165920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_58 unithd 5520 168640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_59 unithd 5520 171360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_60 unithd 5520 174080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_61 unithd 5520 176800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_62 unithd 5520 179520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_63 unithd 5520 182240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_64 unithd 5520 184960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_65 unithd 5520 187680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_66 unithd 5520 190400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_67 unithd 5520 193120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_68 unithd 5520 195840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_69 unithd 5520 198560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_70 unithd 5520 201280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_71 unithd 5520 204000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_72 unithd 5520 206720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_73 unithd 5520 209440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_74 unithd 5520 212160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_75 unithd 5520 214880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_76 unithd 5520 217600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_77 unithd 5520 220320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_78 unithd 5520 223040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_79 unithd 5520 225760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_80 unithd 5520 228480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_81 unithd 5520 231200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_82 unithd 5520 233920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_83 unithd 5520 236640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_84 unithd 5520 239360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_85 unithd 5520 242080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_86 unithd 5520 244800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_87 unithd 5520 247520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_88 unithd 5520 250240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_89 unithd 5520 252960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_90 unithd 5520 255680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_91 unithd 5520 258400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_92 unithd 5520 261120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_93 unithd 5520 263840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_94 unithd 5520 266560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_95 unithd 5520 269280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_96 unithd 5520 272000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_97 unithd 5520 274720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_98 unithd 5520 277440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_99 unithd 5520 280160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_100 unithd 5520 282880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_101 unithd 5520 285600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_102 unithd 5520 288320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_103 unithd 5520 291040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_104 unithd 5520 293760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_105 unithd 5520 296480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_106 unithd 5520 299200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_107 unithd 5520 301920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_108 unithd 5520 304640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_109 unithd 5520 307360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_110 unithd 5520 310080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_111 unithd 5520 312800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_112 unithd 5520 315520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_113 unithd 5520 318240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_114 unithd 5520 320960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_115 unithd 5520 323680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_116 unithd 5520 326400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_117 unithd 5520 329120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_118 unithd 5520 331840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_119 unithd 5520 334560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_120 unithd 5520 337280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_121 unithd 5520 340000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_122 unithd 5520 342720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_123 unithd 5520 345440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_124 unithd 5520 348160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_125 unithd 5520 350880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_126 unithd 5520 353600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_127 unithd 5520 356320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_128 unithd 5520 359040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_129 unithd 5520 361760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_130 unithd 5520 364480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_131 unithd 5520 367200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_132 unithd 5520 369920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_133 unithd 5520 372640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_134 unithd 5520 375360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_135 unithd 5520 378080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_136 unithd 5520 380800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_137 unithd 5520 383520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_138 unithd 5520 386240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_139 unithd 5520 388960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_140 unithd 5520 391680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_141 unithd 5520 394400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_142 unithd 5520 397120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_143 unithd 5520 399840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_144 unithd 5520 402560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_145 unithd 5520 405280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_146 unithd 5520 408000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_147 unithd 5520 410720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_148 unithd 5520 413440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_149 unithd 5520 416160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_150 unithd 5520 418880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_151 unithd 5520 421600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_152 unithd 5520 424320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_153 unithd 5520 427040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_154 unithd 5520 429760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_155 unithd 5520 432480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_156 unithd 5520 435200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_157 unithd 5520 437920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_158 unithd 5520 440640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_159 unithd 5520 443360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_160 unithd 5520 446080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_161 unithd 5520 448800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_162 unithd 5520 451520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_163 unithd 5520 454240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_164 unithd 5520 456960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_165 unithd 5520 459680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_166 unithd 5520 462400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_167 unithd 5520 465120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_168 unithd 5520 467840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_169 unithd 5520 470560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_170 unithd 5520 473280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_171 unithd 5520 476000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_172 unithd 5520 478720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_173 unithd 5520 481440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_174 unithd 5520 484160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_175 unithd 5520 486880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_176 unithd 5520 489600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_177 unithd 5520 492320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_178 unithd 5520 495040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_179 unithd 5520 497760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_180 unithd 5520 500480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_181 unithd 5520 503200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_182 unithd 5520 505920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_183 unithd 5520 508640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_184 unithd 5520 511360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_185 unithd 5520 514080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_186 unithd 5520 516800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_187 unithd 5520 519520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_188 unithd 5520 522240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_189 unithd 5520 524960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_190 unithd 5520 527680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_191 unithd 5520 530400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_192 unithd 5520 533120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_193 unithd 5520 535840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_194 unithd 5520 538560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_195 unithd 5520 541280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_196 unithd 5520 544000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_197 unithd 5520 546720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_198 unithd 5520 549440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_199 unithd 5520 552160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_200 unithd 5520 554880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_201 unithd 5520 557600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_202 unithd 5520 560320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_203 unithd 5520 563040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_204 unithd 5520 565760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_205 unithd 5520 568480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_206 unithd 5520 571200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_207 unithd 5520 573920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_208 unithd 5520 576640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_209 unithd 5520 579360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_210 unithd 5520 582080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_211 unithd 5520 584800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_212 unithd 5520 587520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_213 unithd 5520 590240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_214 unithd 5520 592960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_215 unithd 5520 595680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_216 unithd 5520 598400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_217 unithd 5520 601120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_218 unithd 5520 603840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_219 unithd 5520 606560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_220 unithd 5520 609280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_221 unithd 5520 612000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_222 unithd 5520 614720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_223 unithd 5520 617440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_224 unithd 5520 620160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_225 unithd 5520 622880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_226 unithd 5520 625600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_227 unithd 5520 628320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_228 unithd 5520 631040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_229 unithd 5520 633760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_230 unithd 5520 636480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_231 unithd 5520 639200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_232 unithd 5520 641920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_233 unithd 5520 644640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_234 unithd 5520 647360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_235 unithd 5520 650080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_236 unithd 5520 652800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_237 unithd 5520 655520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_238 unithd 5520 658240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_239 unithd 5520 660960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_240 unithd 5520 663680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_241 unithd 5520 666400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_242 unithd 5520 669120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_243 unithd 5520 671840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_244 unithd 5520 674560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_245 unithd 5520 677280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_246 unithd 5520 680000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_247 unithd 5520 682720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_248 unithd 5520 685440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_249 unithd 5520 688160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_250 unithd 5520 690880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_251 unithd 5520 693600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_252 unithd 5520 696320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_253 unithd 5520 699040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_254 unithd 5520 701760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_255 unithd 5520 704480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_256 unithd 5520 707200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_257 unithd 5520 709920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_258 unithd 5520 712640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_259 unithd 5520 715360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_260 unithd 5520 718080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_261 unithd 5520 720800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_262 unithd 5520 723520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_263 unithd 5520 726240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_264 unithd 5520 728960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_265 unithd 5520 731680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_266 unithd 5520 734400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_267 unithd 5520 737120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_268 unithd 5520 739840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_269 unithd 5520 742560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_270 unithd 5520 745280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_271 unithd 5520 748000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_272 unithd 5520 750720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_273 unithd 5520 753440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_274 unithd 5520 756160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_275 unithd 5520 758880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_276 unithd 5520 761600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_277 unithd 5520 764320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_278 unithd 5520 767040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_279 unithd 5520 769760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_280 unithd 5520 772480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_281 unithd 5520 775200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_282 unithd 5520 777920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_283 unithd 5520 780640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_284 unithd 5520 783360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_285 unithd 5520 786080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_286 unithd 5520 788800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_287 unithd 5520 791520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_288 unithd 5520 794240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_289 unithd 5520 796960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_290 unithd 5520 799680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_291 unithd 5520 802400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_292 unithd 5520 805120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_293 unithd 5520 807840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_294 unithd 5520 810560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_295 unithd 5520 813280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_296 unithd 5520 816000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_297 unithd 5520 818720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_298 unithd 5520 821440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_299 unithd 5520 824160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_300 unithd 5520 826880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_301 unithd 5520 829600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_302 unithd 5520 832320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_303 unithd 5520 835040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_304 unithd 5520 837760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_305 unithd 5520 840480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_306 unithd 5520 843200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_307 unithd 5520 845920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_308 unithd 5520 848640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_309 unithd 5520 851360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_310 unithd 5520 854080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_311 unithd 5520 856800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_312 unithd 5520 859520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_313 unithd 5520 862240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_314 unithd 5520 864960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_315 unithd 5520 867680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_316 unithd 5520 870400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_317 unithd 5520 873120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_318 unithd 5520 875840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_319 unithd 5520 878560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_320 unithd 5520 881280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_321 unithd 5520 884000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_322 unithd 5520 886720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_323 unithd 5520 889440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_324 unithd 5520 892160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_325 unithd 5520 894880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_326 unithd 5520 897600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_327 unithd 5520 900320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_328 unithd 5520 903040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_329 unithd 5520 905760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_330 unithd 5520 908480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_331 unithd 5520 911200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_332 unithd 5520 913920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_333 unithd 5520 916640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_334 unithd 5520 919360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_335 unithd 5520 922080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_336 unithd 5520 924800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_337 unithd 5520 927520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_338 unithd 5520 930240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_339 unithd 5520 932960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_340 unithd 5520 935680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_341 unithd 5520 938400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_342 unithd 5520 941120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_343 unithd 5520 943840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_344 unithd 5520 946560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_345 unithd 5520 949280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_346 unithd 5520 952000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_347 unithd 5520 954720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_348 unithd 5520 957440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_349 unithd 5520 960160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_350 unithd 5520 962880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_351 unithd 5520 965600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_352 unithd 5520 968320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_353 unithd 5520 971040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_354 unithd 5520 973760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_355 unithd 5520 976480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_356 unithd 5520 979200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_357 unithd 5520 981920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_358 unithd 5520 984640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_359 unithd 5520 987360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_360 unithd 5520 990080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_361 unithd 5520 992800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_362 unithd 5520 995520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_363 unithd 5520 998240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_364 unithd 5520 1000960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_365 unithd 5520 1003680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_366 unithd 5520 1006400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_367 unithd 5520 1009120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_368 unithd 5520 1011840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_369 unithd 5520 1014560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_370 unithd 5520 1017280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_371 unithd 5520 1020000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_372 unithd 5520 1022720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_373 unithd 5520 1025440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_374 unithd 5520 1028160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_375 unithd 5520 1030880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_376 unithd 5520 1033600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_377 unithd 5520 1036320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_378 unithd 5520 1039040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_379 unithd 5520 1041760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_380 unithd 5520 1044480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_381 unithd 5520 1047200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_382 unithd 5520 1049920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_383 unithd 5520 1052640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_384 unithd 5520 1055360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_385 unithd 5520 1058080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_386 unithd 5520 1060800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_387 unithd 5520 1063520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_388 unithd 5520 1066240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_389 unithd 5520 1068960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_390 unithd 5520 1071680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_391 unithd 5520 1074400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_392 unithd 5520 1077120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_393 unithd 5520 1079840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_394 unithd 5520 1082560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_395 unithd 5520 1085280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_396 unithd 5520 1088000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_397 unithd 5520 1090720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_398 unithd 5520 1093440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_399 unithd 5520 1096160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_400 unithd 5520 1098880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_401 unithd 5520 1101600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_402 unithd 5520 1104320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_403 unithd 5520 1107040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_404 unithd 5520 1109760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_405 unithd 5520 1112480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_406 unithd 5520 1115200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_407 unithd 5520 1117920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_408 unithd 5520 1120640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_409 unithd 5520 1123360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_410 unithd 5520 1126080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_411 unithd 5520 1128800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_412 unithd 5520 1131520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_413 unithd 5520 1134240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_414 unithd 5520 1136960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_415 unithd 5520 1139680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_416 unithd 5520 1142400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_417 unithd 5520 1145120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_418 unithd 5520 1147840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_419 unithd 5520 1150560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_420 unithd 5520 1153280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_421 unithd 5520 1156000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_422 unithd 5520 1158720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_423 unithd 5520 1161440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_424 unithd 5520 1164160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_425 unithd 5520 1166880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_426 unithd 5520 1169600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_427 unithd 5520 1172320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_428 unithd 5520 1175040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_429 unithd 5520 1177760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_430 unithd 5520 1180480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_431 unithd 5520 1183200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_432 unithd 5520 1185920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_433 unithd 5520 1188640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_434 unithd 5520 1191360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_435 unithd 5520 1194080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_436 unithd 5520 1196800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_437 unithd 5520 1199520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_438 unithd 5520 1202240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_439 unithd 5520 1204960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_440 unithd 5520 1207680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_441 unithd 5520 1210400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_442 unithd 5520 1213120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_443 unithd 5520 1215840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_444 unithd 5520 1218560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_445 unithd 5520 1221280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_446 unithd 5520 1224000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_447 unithd 5520 1226720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_448 unithd 5520 1229440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_449 unithd 5520 1232160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_450 unithd 5520 1234880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_451 unithd 5520 1237600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_452 unithd 5520 1240320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_453 unithd 5520 1243040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_454 unithd 5520 1245760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_455 unithd 5520 1248480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_456 unithd 5520 1251200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_457 unithd 5520 1253920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_458 unithd 5520 1256640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_459 unithd 5520 1259360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_460 unithd 5520 1262080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_461 unithd 5520 1264800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_462 unithd 5520 1267520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_463 unithd 5520 1270240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_464 unithd 5520 1272960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_465 unithd 5520 1275680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_466 unithd 5520 1278400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_467 unithd 5520 1281120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_468 unithd 5520 1283840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_469 unithd 5520 1286560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_470 unithd 5520 1289280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_471 unithd 5520 1292000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_472 unithd 5520 1294720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_473 unithd 5520 1297440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_474 unithd 5520 1300160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_475 unithd 5520 1302880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_476 unithd 5520 1305600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_477 unithd 5520 1308320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_478 unithd 5520 1311040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_479 unithd 5520 1313760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_480 unithd 5520 1316480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_481 unithd 5520 1319200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_482 unithd 5520 1321920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_483 unithd 5520 1324640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_484 unithd 5520 1327360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_485 unithd 5520 1330080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_486 unithd 5520 1332800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_487 unithd 5520 1335520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_488 unithd 5520 1338240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_489 unithd 5520 1340960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_490 unithd 5520 1343680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_491 unithd 5520 1346400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_492 unithd 5520 1349120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_493 unithd 5520 1351840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_494 unithd 5520 1354560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_495 unithd 5520 1357280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_496 unithd 5520 1360000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_497 unithd 5520 1362720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_498 unithd 5520 1365440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_499 unithd 5520 1368160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_500 unithd 5520 1370880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_501 unithd 5520 1373600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_502 unithd 5520 1376320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_503 unithd 5520 1379040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_504 unithd 5520 1381760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_505 unithd 5520 1384480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_506 unithd 5520 1387200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_507 unithd 5520 1389920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_508 unithd 5520 1392640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_509 unithd 5520 1395360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_510 unithd 5520 1398080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_511 unithd 5520 1400800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_512 unithd 5520 1403520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_513 unithd 5520 1406240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_514 unithd 5520 1408960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_515 unithd 5520 1411680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_516 unithd 5520 1414400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_517 unithd 5520 1417120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_518 unithd 5520 1419840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_519 unithd 5520 1422560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_520 unithd 5520 1425280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_521 unithd 5520 1428000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_522 unithd 5520 1430720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_523 unithd 5520 1433440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_524 unithd 5520 1436160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_525 unithd 5520 1438880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_526 unithd 5520 1441600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_527 unithd 5520 1444320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_528 unithd 5520 1447040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_529 unithd 5520 1449760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_530 unithd 5520 1452480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_531 unithd 5520 1455200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_532 unithd 5520 1457920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_533 unithd 5520 1460640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_534 unithd 5520 1463360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_535 unithd 5520 1466080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_536 unithd 5520 1468800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_537 unithd 5520 1471520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_538 unithd 5520 1474240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_539 unithd 5520 1476960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_540 unithd 5520 1479680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_541 unithd 5520 1482400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_542 unithd 5520 1485120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_543 unithd 5520 1487840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_544 unithd 5520 1490560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_545 unithd 5520 1493280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_546 unithd 5520 1496000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_547 unithd 5520 1498720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_548 unithd 5520 1501440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_549 unithd 5520 1504160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_550 unithd 5520 1506880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_551 unithd 5520 1509600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_552 unithd 5520 1512320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_553 unithd 5520 1515040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_554 unithd 5520 1517760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_555 unithd 5520 1520480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_556 unithd 5520 1523200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_557 unithd 5520 1525920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_558 unithd 5520 1528640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_559 unithd 5520 1531360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_560 unithd 5520 1534080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_561 unithd 5520 1536800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_562 unithd 5520 1539520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_563 unithd 5520 1542240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_564 unithd 5520 1544960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_565 unithd 5520 1547680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_566 unithd 5520 1550400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_567 unithd 5520 1553120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_568 unithd 5520 1555840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_569 unithd 5520 1558560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_570 unithd 5520 1561280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_571 unithd 5520 1564000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_572 unithd 5520 1566720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_573 unithd 5520 1569440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_574 unithd 5520 1572160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_575 unithd 5520 1574880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_576 unithd 5520 1577600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_577 unithd 5520 1580320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_578 unithd 5520 1583040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_579 unithd 5520 1585760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_580 unithd 5520 1588480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_581 unithd 5520 1591200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_582 unithd 5520 1593920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_583 unithd 5520 1596640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_584 unithd 5520 1599360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_585 unithd 5520 1602080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_586 unithd 5520 1604800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_587 unithd 5520 1607520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_588 unithd 5520 1610240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_589 unithd 5520 1612960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_590 unithd 5520 1615680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_591 unithd 5520 1618400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_592 unithd 5520 1621120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_593 unithd 5520 1623840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_594 unithd 5520 1626560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_595 unithd 5520 1629280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_596 unithd 5520 1632000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_597 unithd 5520 1634720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_598 unithd 5520 1637440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_599 unithd 5520 1640160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_600 unithd 5520 1642880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_601 unithd 5520 1645600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_602 unithd 5520 1648320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_603 unithd 5520 1651040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_604 unithd 5520 1653760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_605 unithd 5520 1656480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_606 unithd 5520 1659200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_607 unithd 5520 1661920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_608 unithd 5520 1664640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_609 unithd 5520 1667360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_610 unithd 5520 1670080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_611 unithd 5520 1672800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_612 unithd 5520 1675520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_613 unithd 5520 1678240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_614 unithd 5520 1680960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_615 unithd 5520 1683680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_616 unithd 5520 1686400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_617 unithd 5520 1689120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_618 unithd 5520 1691840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_619 unithd 5520 1694560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_620 unithd 5520 1697280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_621 unithd 5520 1700000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_622 unithd 5520 1702720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_623 unithd 5520 1705440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_624 unithd 5520 1708160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_625 unithd 5520 1710880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_626 unithd 5520 1713600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_627 unithd 5520 1716320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_628 unithd 5520 1719040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_629 unithd 5520 1721760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_630 unithd 5520 1724480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_631 unithd 5520 1727200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_632 unithd 5520 1729920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_633 unithd 5520 1732640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_634 unithd 5520 1735360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_635 unithd 5520 1738080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_636 unithd 5520 1740800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_637 unithd 5520 1743520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_638 unithd 5520 1746240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_639 unithd 5520 1748960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_640 unithd 5520 1751680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_641 unithd 5520 1754400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_642 unithd 5520 1757120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_643 unithd 5520 1759840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_644 unithd 5520 1762560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_645 unithd 5520 1765280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_646 unithd 5520 1768000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_647 unithd 5520 1770720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_648 unithd 5520 1773440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_649 unithd 5520 1776160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_650 unithd 5520 1778880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_651 unithd 5520 1781600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_652 unithd 5520 1784320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_653 unithd 5520 1787040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_654 unithd 5520 1789760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_655 unithd 5520 1792480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_656 unithd 5520 1795200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_657 unithd 5520 1797920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_658 unithd 5520 1800640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_659 unithd 5520 1803360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_660 unithd 5520 1806080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_661 unithd 5520 1808800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_662 unithd 5520 1811520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_663 unithd 5520 1814240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_664 unithd 5520 1816960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_665 unithd 5520 1819680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_666 unithd 5520 1822400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_667 unithd 5520 1825120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_668 unithd 5520 1827840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_669 unithd 5520 1830560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_670 unithd 5520 1833280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_671 unithd 5520 1836000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_672 unithd 5520 1838720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_673 unithd 5520 1841440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_674 unithd 5520 1844160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_675 unithd 5520 1846880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_676 unithd 5520 1849600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_677 unithd 5520 1852320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_678 unithd 5520 1855040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_679 unithd 5520 1857760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_680 unithd 5520 1860480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_681 unithd 5520 1863200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_682 unithd 5520 1865920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_683 unithd 5520 1868640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_684 unithd 5520 1871360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_685 unithd 5520 1874080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_686 unithd 5520 1876800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_687 unithd 5520 1879520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_688 unithd 5520 1882240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_689 unithd 5520 1884960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_690 unithd 5520 1887680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_691 unithd 5520 1890400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_692 unithd 5520 1893120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_693 unithd 5520 1895840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_694 unithd 5520 1898560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_695 unithd 5520 1901280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_696 unithd 5520 1904000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_697 unithd 5520 1906720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_698 unithd 5520 1909440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_699 unithd 5520 1912160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_700 unithd 5520 1914880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_701 unithd 5520 1917600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_702 unithd 5520 1920320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_703 unithd 5520 1923040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_704 unithd 5520 1925760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_705 unithd 5520 1928480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_706 unithd 5520 1931200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_707 unithd 5520 1933920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_708 unithd 5520 1936640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_709 unithd 5520 1939360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_710 unithd 5520 1942080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_711 unithd 5520 1944800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_712 unithd 5520 1947520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_713 unithd 5520 1950240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_714 unithd 5520 1952960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_715 unithd 5520 1955680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_716 unithd 5520 1958400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_717 unithd 5520 1961120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_718 unithd 5520 1963840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_719 unithd 5520 1966560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_720 unithd 5520 1969280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_721 unithd 5520 1972000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_722 unithd 5520 1974720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_723 unithd 5520 1977440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_724 unithd 5520 1980160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_725 unithd 5520 1982880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_726 unithd 5520 1985600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_727 unithd 5520 1988320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_728 unithd 5520 1991040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_729 unithd 5520 1993760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_730 unithd 5520 1996480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_731 unithd 5520 1999200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_732 unithd 5520 2001920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_733 unithd 5520 2004640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_734 unithd 5520 2007360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_735 unithd 5520 2010080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_736 unithd 5520 2012800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_737 unithd 5520 2015520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_738 unithd 5520 2018240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_739 unithd 5520 2020960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_740 unithd 5520 2023680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_741 unithd 5520 2026400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_742 unithd 5520 2029120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_743 unithd 5520 2031840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_744 unithd 5520 2034560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_745 unithd 5520 2037280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_746 unithd 5520 2040000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_747 unithd 5520 2042720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_748 unithd 5520 2045440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_749 unithd 5520 2048160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_750 unithd 5520 2050880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_751 unithd 5520 2053600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_752 unithd 5520 2056320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_753 unithd 5520 2059040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_754 unithd 5520 2061760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_755 unithd 5520 2064480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_756 unithd 5520 2067200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_757 unithd 5520 2069920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_758 unithd 5520 2072640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_759 unithd 5520 2075360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_760 unithd 5520 2078080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_761 unithd 5520 2080800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_762 unithd 5520 2083520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_763 unithd 5520 2086240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_764 unithd 5520 2088960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_765 unithd 5520 2091680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_766 unithd 5520 2094400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_767 unithd 5520 2097120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_768 unithd 5520 2099840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_769 unithd 5520 2102560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_770 unithd 5520 2105280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_771 unithd 5520 2108000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_772 unithd 5520 2110720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_773 unithd 5520 2113440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_774 unithd 5520 2116160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_775 unithd 5520 2118880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_776 unithd 5520 2121600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_777 unithd 5520 2124320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_778 unithd 5520 2127040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_779 unithd 5520 2129760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_780 unithd 5520 2132480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_781 unithd 5520 2135200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_782 unithd 5520 2137920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_783 unithd 5520 2140640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_784 unithd 5520 2143360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_785 unithd 5520 2146080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_786 unithd 5520 2148800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_787 unithd 5520 2151520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_788 unithd 5520 2154240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_789 unithd 5520 2156960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_790 unithd 5520 2159680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_791 unithd 5520 2162400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_792 unithd 5520 2165120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_793 unithd 5520 2167840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_794 unithd 5520 2170560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_795 unithd 5520 2173280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_796 unithd 5520 2176000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_797 unithd 5520 2178720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_798 unithd 5520 2181440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_799 unithd 5520 2184160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_800 unithd 5520 2186880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_801 unithd 5520 2189600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_802 unithd 5520 2192320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_803 unithd 5520 2195040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_804 unithd 5520 2197760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_805 unithd 5520 2200480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_806 unithd 5520 2203200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_807 unithd 5520 2205920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_808 unithd 5520 2208640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_809 unithd 5520 2211360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_810 unithd 5520 2214080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_811 unithd 5520 2216800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_812 unithd 5520 2219520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_813 unithd 5520 2222240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_814 unithd 5520 2224960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_815 unithd 5520 2227680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_816 unithd 5520 2230400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_817 unithd 5520 2233120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_818 unithd 5520 2235840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_819 unithd 5520 2238560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_820 unithd 5520 2241280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_821 unithd 5520 2244000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_822 unithd 5520 2246720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_823 unithd 5520 2249440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_824 unithd 5520 2252160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_825 unithd 5520 2254880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_826 unithd 5520 2257600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_827 unithd 5520 2260320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_828 unithd 5520 2263040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_829 unithd 5520 2265760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_830 unithd 5520 2268480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_831 unithd 5520 2271200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_832 unithd 5520 2273920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_833 unithd 5520 2276640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_834 unithd 5520 2279360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_835 unithd 5520 2282080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_836 unithd 5520 2284800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_837 unithd 5520 2287520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_838 unithd 5520 2290240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_839 unithd 5520 2292960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_840 unithd 5520 2295680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_841 unithd 5520 2298400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_842 unithd 5520 2301120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_843 unithd 5520 2303840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_844 unithd 5520 2306560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_845 unithd 5520 2309280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_846 unithd 5520 2312000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_847 unithd 5520 2314720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_848 unithd 5520 2317440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_849 unithd 5520 2320160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_850 unithd 5520 2322880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_851 unithd 5520 2325600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_852 unithd 5520 2328320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_853 unithd 5520 2331040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_854 unithd 5520 2333760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_855 unithd 5520 2336480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_856 unithd 5520 2339200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_857 unithd 5520 2341920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_858 unithd 5520 2344640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_859 unithd 5520 2347360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_860 unithd 5520 2350080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_861 unithd 5520 2352800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_862 unithd 5520 2355520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_863 unithd 5520 2358240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_864 unithd 5520 2360960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_865 unithd 5520 2363680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_866 unithd 5520 2366400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_867 unithd 5520 2369120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_868 unithd 5520 2371840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_869 unithd 5520 2374560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_870 unithd 5520 2377280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_871 unithd 5520 2380000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_872 unithd 5520 2382720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_873 unithd 5520 2385440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_874 unithd 5520 2388160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_875 unithd 5520 2390880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_876 unithd 5520 2393600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_877 unithd 5520 2396320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_878 unithd 5520 2399040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_879 unithd 5520 2401760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_880 unithd 5520 2404480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_881 unithd 5520 2407200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_882 unithd 5520 2409920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_883 unithd 5520 2412640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_884 unithd 5520 2415360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_885 unithd 5520 2418080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_886 unithd 5520 2420800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_887 unithd 5520 2423520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_888 unithd 5520 2426240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_889 unithd 5520 2428960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_890 unithd 5520 2431680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_891 unithd 5520 2434400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_892 unithd 5520 2437120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_893 unithd 5520 2439840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_894 unithd 5520 2442560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_895 unithd 5520 2445280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_896 unithd 5520 2448000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_897 unithd 5520 2450720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_898 unithd 5520 2453440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_899 unithd 5520 2456160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_900 unithd 5520 2458880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_901 unithd 5520 2461600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_902 unithd 5520 2464320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_903 unithd 5520 2467040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_904 unithd 5520 2469760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_905 unithd 5520 2472480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_906 unithd 5520 2475200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_907 unithd 5520 2477920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_908 unithd 5520 2480640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_909 unithd 5520 2483360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_910 unithd 5520 2486080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_911 unithd 5520 2488800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_912 unithd 5520 2491520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_913 unithd 5520 2494240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_914 unithd 5520 2496960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_915 unithd 5520 2499680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_916 unithd 5520 2502400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_917 unithd 5520 2505120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_918 unithd 5520 2507840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_919 unithd 5520 2510560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_920 unithd 5520 2513280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_921 unithd 5520 2516000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_922 unithd 5520 2518720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_923 unithd 5520 2521440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_924 unithd 5520 2524160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_925 unithd 5520 2526880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_926 unithd 5520 2529600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_927 unithd 5520 2532320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_928 unithd 5520 2535040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_929 unithd 5520 2537760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_930 unithd 5520 2540480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_931 unithd 5520 2543200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_932 unithd 5520 2545920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_933 unithd 5520 2548640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_934 unithd 5520 2551360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_935 unithd 5520 2554080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_936 unithd 5520 2556800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_937 unithd 5520 2559520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_938 unithd 5520 2562240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_939 unithd 5520 2564960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_940 unithd 5520 2567680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_941 unithd 5520 2570400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_942 unithd 5520 2573120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_943 unithd 5520 2575840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_944 unithd 5520 2578560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_945 unithd 5520 2581280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_946 unithd 5520 2584000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_947 unithd 5520 2586720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_948 unithd 5520 2589440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_949 unithd 5520 2592160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_950 unithd 5520 2594880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_951 unithd 5520 2597600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_952 unithd 5520 2600320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_953 unithd 5520 2603040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_954 unithd 5520 2605760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_955 unithd 5520 2608480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_956 unithd 5520 2611200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_957 unithd 5520 2613920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_958 unithd 5520 2616640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_959 unithd 5520 2619360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_960 unithd 5520 2622080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_961 unithd 5520 2624800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_962 unithd 5520 2627520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_963 unithd 5520 2630240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_964 unithd 5520 2632960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_965 unithd 5520 2635680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_966 unithd 5520 2638400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_967 unithd 5520 2641120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_968 unithd 5520 2643840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_969 unithd 5520 2646560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_970 unithd 5520 2649280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_971 unithd 5520 2652000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_972 unithd 5520 2654720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_973 unithd 5520 2657440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_974 unithd 5520 2660160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_975 unithd 5520 2662880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_976 unithd 5520 2665600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_977 unithd 5520 2668320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_978 unithd 5520 2671040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_979 unithd 5520 2673760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_980 unithd 5520 2676480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_981 unithd 5520 2679200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_982 unithd 5520 2681920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_983 unithd 5520 2684640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_984 unithd 5520 2687360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_985 unithd 5520 2690080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_986 unithd 5520 2692800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_987 unithd 5520 2695520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_988 unithd 5520 2698240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_989 unithd 5520 2700960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_990 unithd 5520 2703680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_991 unithd 5520 2706400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_992 unithd 5520 2709120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_993 unithd 5520 2711840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_994 unithd 5520 2714560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_995 unithd 5520 2717280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_996 unithd 5520 2720000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_997 unithd 5520 2722720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_998 unithd 5520 2725440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_999 unithd 5520 2728160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1000 unithd 5520 2730880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1001 unithd 5520 2733600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1002 unithd 5520 2736320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1003 unithd 5520 2739040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1004 unithd 5520 2741760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1005 unithd 5520 2744480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1006 unithd 5520 2747200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1007 unithd 5520 2749920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1008 unithd 5520 2752640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1009 unithd 5520 2755360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1010 unithd 5520 2758080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1011 unithd 5520 2760800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1012 unithd 5520 2763520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1013 unithd 5520 2766240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1014 unithd 5520 2768960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1015 unithd 5520 2771680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1016 unithd 5520 2774400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1017 unithd 5520 2777120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1018 unithd 5520 2779840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1019 unithd 5520 2782560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1020 unithd 5520 2785280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1021 unithd 5520 2788000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1022 unithd 5520 2790720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1023 unithd 5520 2793440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1024 unithd 5520 2796160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1025 unithd 5520 2798880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1026 unithd 5520 2801600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1027 unithd 5520 2804320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1028 unithd 5520 2807040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1029 unithd 5520 2809760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1030 unithd 5520 2812480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1031 unithd 5520 2815200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1032 unithd 5520 2817920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1033 unithd 5520 2820640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1034 unithd 5520 2823360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1035 unithd 5520 2826080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1036 unithd 5520 2828800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1037 unithd 5520 2831520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1038 unithd 5520 2834240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1039 unithd 5520 2836960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1040 unithd 5520 2839680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1041 unithd 5520 2842400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1042 unithd 5520 2845120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1043 unithd 5520 2847840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1044 unithd 5520 2850560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1045 unithd 5520 2853280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1046 unithd 5520 2856000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1047 unithd 5520 2858720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1048 unithd 5520 2861440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1049 unithd 5520 2864160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1050 unithd 5520 2866880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1051 unithd 5520 2869600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1052 unithd 5520 2872320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1053 unithd 5520 2875040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1054 unithd 5520 2877760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1055 unithd 5520 2880480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1056 unithd 5520 2883200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1057 unithd 5520 2885920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1058 unithd 5520 2888640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1059 unithd 5520 2891360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1060 unithd 5520 2894080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1061 unithd 5520 2896800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1062 unithd 5520 2899520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1063 unithd 5520 2902240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1064 unithd 5520 2904960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1065 unithd 5520 2907680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1066 unithd 5520 2910400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1067 unithd 5520 2913120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1068 unithd 5520 2915840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1069 unithd 5520 2918560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1070 unithd 5520 2921280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1071 unithd 5520 2924000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1072 unithd 5520 2926720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1073 unithd 5520 2929440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1074 unithd 5520 2932160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1075 unithd 5520 2934880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1076 unithd 5520 2937600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1077 unithd 5520 2940320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1078 unithd 5520 2943040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1079 unithd 5520 2945760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1080 unithd 5520 2948480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1081 unithd 5520 2951200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1082 unithd 5520 2953920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1083 unithd 5520 2956640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1084 unithd 5520 2959360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1085 unithd 5520 2962080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1086 unithd 5520 2964800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1087 unithd 5520 2967520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1088 unithd 5520 2970240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1089 unithd 5520 2972960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1090 unithd 5520 2975680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1091 unithd 5520 2978400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1092 unithd 5520 2981120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1093 unithd 5520 2983840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1094 unithd 5520 2986560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1095 unithd 5520 2989280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1096 unithd 5520 2992000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1097 unithd 5520 2994720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1098 unithd 5520 2997440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1099 unithd 5520 3000160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1100 unithd 5520 3002880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1101 unithd 5520 3005600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1102 unithd 5520 3008320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1103 unithd 5520 3011040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1104 unithd 5520 3013760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1105 unithd 5520 3016480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1106 unithd 5520 3019200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1107 unithd 5520 3021920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1108 unithd 5520 3024640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1109 unithd 5520 3027360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1110 unithd 5520 3030080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1111 unithd 5520 3032800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1112 unithd 5520 3035520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1113 unithd 5520 3038240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1114 unithd 5520 3040960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1115 unithd 5520 3043680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1116 unithd 5520 3046400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1117 unithd 5520 3049120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1118 unithd 5520 3051840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1119 unithd 5520 3054560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1120 unithd 5520 3057280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1121 unithd 5520 3060000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1122 unithd 5520 3062720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1123 unithd 5520 3065440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1124 unithd 5520 3068160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1125 unithd 5520 3070880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1126 unithd 5520 3073600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1127 unithd 5520 3076320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1128 unithd 5520 3079040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1129 unithd 5520 3081760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1130 unithd 5520 3084480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1131 unithd 5520 3087200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1132 unithd 5520 3089920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1133 unithd 5520 3092640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1134 unithd 5520 3095360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1135 unithd 5520 3098080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1136 unithd 5520 3100800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1137 unithd 5520 3103520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1138 unithd 5520 3106240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1139 unithd 5520 3108960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1140 unithd 5520 3111680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1141 unithd 5520 3114400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1142 unithd 5520 3117120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1143 unithd 5520 3119840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1144 unithd 5520 3122560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1145 unithd 5520 3125280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1146 unithd 5520 3128000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1147 unithd 5520 3130720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1148 unithd 5520 3133440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1149 unithd 5520 3136160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1150 unithd 5520 3138880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1151 unithd 5520 3141600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1152 unithd 5520 3144320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1153 unithd 5520 3147040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1154 unithd 5520 3149760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1155 unithd 5520 3152480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1156 unithd 5520 3155200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1157 unithd 5520 3157920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1158 unithd 5520 3160640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1159 unithd 5520 3163360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1160 unithd 5520 3166080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1161 unithd 5520 3168800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1162 unithd 5520 3171520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1163 unithd 5520 3174240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1164 unithd 5520 3176960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1165 unithd 5520 3179680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1166 unithd 5520 3182400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1167 unithd 5520 3185120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1168 unithd 5520 3187840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1169 unithd 5520 3190560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1170 unithd 5520 3193280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1171 unithd 5520 3196000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1172 unithd 5520 3198720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1173 unithd 5520 3201440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1174 unithd 5520 3204160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1175 unithd 5520 3206880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1176 unithd 5520 3209600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1177 unithd 5520 3212320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1178 unithd 5520 3215040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1179 unithd 5520 3217760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1180 unithd 5520 3220480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1181 unithd 5520 3223200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1182 unithd 5520 3225920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1183 unithd 5520 3228640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1184 unithd 5520 3231360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1185 unithd 5520 3234080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1186 unithd 5520 3236800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1187 unithd 5520 3239520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1188 unithd 5520 3242240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1189 unithd 5520 3244960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1190 unithd 5520 3247680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1191 unithd 5520 3250400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1192 unithd 5520 3253120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1193 unithd 5520 3255840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1194 unithd 5520 3258560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1195 unithd 5520 3261280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1196 unithd 5520 3264000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1197 unithd 5520 3266720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1198 unithd 5520 3269440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1199 unithd 5520 3272160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1200 unithd 5520 3274880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1201 unithd 5520 3277600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1202 unithd 5520 3280320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1203 unithd 5520 3283040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1204 unithd 5520 3285760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1205 unithd 5520 3288480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1206 unithd 5520 3291200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1207 unithd 5520 3293920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1208 unithd 5520 3296640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1209 unithd 5520 3299360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1210 unithd 5520 3302080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1211 unithd 5520 3304800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1212 unithd 5520 3307520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1213 unithd 5520 3310240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1214 unithd 5520 3312960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1215 unithd 5520 3315680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1216 unithd 5520 3318400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1217 unithd 5520 3321120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1218 unithd 5520 3323840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1219 unithd 5520 3326560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1220 unithd 5520 3329280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1221 unithd 5520 3332000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1222 unithd 5520 3334720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1223 unithd 5520 3337440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1224 unithd 5520 3340160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1225 unithd 5520 3342880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1226 unithd 5520 3345600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1227 unithd 5520 3348320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1228 unithd 5520 3351040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1229 unithd 5520 3353760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1230 unithd 5520 3356480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1231 unithd 5520 3359200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1232 unithd 5520 3361920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1233 unithd 5520 3364640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1234 unithd 5520 3367360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1235 unithd 5520 3370080 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1236 unithd 5520 3372800 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1237 unithd 5520 3375520 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1238 unithd 5520 3378240 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1239 unithd 5520 3380960 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1240 unithd 5520 3383680 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1241 unithd 5520 3386400 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1242 unithd 5520 3389120 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1243 unithd 5520 3391840 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1244 unithd 5520 3394560 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1245 unithd 5520 3397280 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1246 unithd 5520 3400000 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1247 unithd 5520 3402720 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1248 unithd 5520 3405440 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1249 unithd 5520 3408160 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1250 unithd 5520 3410880 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1251 unithd 5520 3413600 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1252 unithd 5520 3416320 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1253 unithd 5520 3419040 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1254 unithd 5520 3421760 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1255 unithd 5520 3424480 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1256 unithd 5520 3427200 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1257 unithd 5520 3429920 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1258 unithd 5520 3432640 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1259 unithd 5520 3435360 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1260 unithd 5520 3438080 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1261 unithd 5520 3440800 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1262 unithd 5520 3443520 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1263 unithd 5520 3446240 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1264 unithd 5520 3448960 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1265 unithd 5520 3451680 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1266 unithd 5520 3454400 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1267 unithd 5520 3457120 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1268 unithd 5520 3459840 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1269 unithd 5520 3462560 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1270 unithd 5520 3465280 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1271 unithd 5520 3468000 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1272 unithd 5520 3470720 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1273 unithd 5520 3473440 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1274 unithd 5520 3476160 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1275 unithd 5520 3478880 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1276 unithd 5520 3481600 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1277 unithd 5520 3484320 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1278 unithd 5520 3487040 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1279 unithd 5520 3489760 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1280 unithd 5520 3492480 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1281 unithd 5520 3495200 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1282 unithd 5520 3497920 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1283 unithd 5520 3500640 FS DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1284 unithd 5520 3503360 N DO 6323 BY 1 STEP 460 0 ; +ROW ROW_1285 unithd 5520 3506080 FS DO 6323 BY 1 STEP 460 0 ; +TRACKS X 230 DO 6348 STEP 460 LAYER li1 ; +TRACKS Y 170 DO 10353 STEP 340 LAYER li1 ; +TRACKS X 170 DO 8588 STEP 340 LAYER met1 ; +TRACKS Y 170 DO 10353 STEP 340 LAYER met1 ; +TRACKS X 230 DO 6348 STEP 460 LAYER met2 ; +TRACKS Y 230 DO 7652 STEP 460 LAYER met2 ; +TRACKS X 340 DO 4294 STEP 680 LAYER met3 ; +TRACKS Y 340 DO 5176 STEP 680 LAYER met3 ; +TRACKS X 460 DO 3174 STEP 920 LAYER met4 ; +TRACKS Y 460 DO 3826 STEP 920 LAYER met4 ; +TRACKS X 1700 DO 859 STEP 3400 LAYER met5 ; +TRACKS Y 1700 DO 1035 STEP 3400 LAYER met5 ; +GCELLGRID X 0 DO 423 STEP 6900 ; +GCELLGRID Y 0 DO 510 STEP 6900 ; +VIAS 2 ; + - via4_3100x3100 + VIARULE M4M5_PR + CUTSIZE 800 800 + LAYERS met4 via4 met5 + CUTSPACING 800 800 + ENCLOSURE 350 350 350 350 + ROWCOL 2 2 ; + - via4_1600x3100 + VIARULE M4M5_PR + CUTSIZE 800 800 + LAYERS met4 via4 met5 + CUTSPACING 800 800 + ENCLOSURE 400 350 400 350 + ROWCOL 2 1 ; +END VIAS +COMPONENTS 1 ; + - mprj user_proj_example + FIXED ( 1175000 1690000 ) N ; +END COMPONENTS +PINS 645 ; + - analog_io[0] + NET analog_io[0] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1426980 ) N ; + - analog_io[10] + NET analog_io[10] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2230770 3521200 ) N ; + - analog_io[11] + NET analog_io[11] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1906010 3521200 ) N ; + - analog_io[12] + NET analog_io[12] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1581710 3521200 ) N ; + - analog_io[13] + NET analog_io[13] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1257410 3521200 ) N ; + - analog_io[14] + NET analog_io[14] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 932650 3521200 ) N ; + - analog_io[15] + NET analog_io[15] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 608350 3521200 ) N ; + - analog_io[16] + NET analog_io[16] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 284050 3521200 ) N ; + - analog_io[17] + NET analog_io[17] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 3486700 ) N ; + - analog_io[18] + NET analog_io[18] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 3225580 ) N ; + - analog_io[19] + NET analog_io[19] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2965140 ) N ; + - analog_io[1] + NET analog_io[1] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1692860 ) N ; + - analog_io[20] + NET analog_io[20] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2704020 ) N ; + - analog_io[21] + NET analog_io[21] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2443580 ) N ; + - analog_io[22] + NET analog_io[22] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2183140 ) N ; + - analog_io[23] + NET analog_io[23] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1922020 ) N ; + - analog_io[24] + NET analog_io[24] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1661580 ) N ; + - analog_io[25] + NET analog_io[25] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1400460 ) N ; + - analog_io[26] + NET analog_io[26] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1140020 ) N ; + - analog_io[27] + NET analog_io[27] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 879580 ) N ; + - analog_io[28] + NET analog_io[28] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 618460 ) N ; + - analog_io[2] + NET analog_io[2] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1958740 ) N ; + - analog_io[3] + NET analog_io[3] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2223940 ) N ; + - analog_io[4] + NET analog_io[4] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2489820 ) N ; + - analog_io[5] + NET analog_io[5] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2755700 ) N ; + - analog_io[6] + NET analog_io[6] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 3020900 ) N ; + - analog_io[7] + NET analog_io[7] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 3286780 ) N ; + - analog_io[8] + NET analog_io[8] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2879370 3521200 ) N ; + - analog_io[9] + NET analog_io[9] + DIRECTION INOUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2555070 3521200 ) N ; + - io_in[0] + NET io_in[0] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 32980 ) N ; + - io_in[10] + NET io_in[10] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2290580 ) N ; + - io_in[11] + NET io_in[11] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2556460 ) N ; + - io_in[12] + NET io_in[12] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2821660 ) N ; + - io_in[13] + NET io_in[13] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 3087540 ) N ; + - io_in[14] + NET io_in[14] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 3353420 ) N ; + - io_in[15] + NET io_in[15] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2798410 3521200 ) N ; + - io_in[16] + NET io_in[16] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2474110 3521200 ) N ; + - io_in[17] + NET io_in[17] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2149350 3521200 ) N ; + - io_in[18] + NET io_in[18] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1825050 3521200 ) N ; + - io_in[19] + NET io_in[19] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1500750 3521200 ) N ; + - io_in[1] + NET io_in[1] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 231540 ) N ; + - io_in[20] + NET io_in[20] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1175990 3521200 ) N ; + - io_in[21] + NET io_in[21] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 851690 3521200 ) N ; + - io_in[22] + NET io_in[22] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 527390 3521200 ) N ; + - io_in[23] + NET io_in[23] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 202630 3521200 ) N ; + - io_in[24] + NET io_in[24] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 3421420 ) N ; + - io_in[25] + NET io_in[25] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 3160300 ) N ; + - io_in[26] + NET io_in[26] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2899860 ) N ; + - io_in[27] + NET io_in[27] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2639420 ) N ; + - io_in[28] + NET io_in[28] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2378300 ) N ; + - io_in[29] + NET io_in[29] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2117860 ) N ; + - io_in[2] + NET io_in[2] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 430780 ) N ; + - io_in[30] + NET io_in[30] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1856740 ) N ; + - io_in[31] + NET io_in[31] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1596300 ) N ; + - io_in[32] + NET io_in[32] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1335860 ) N ; + - io_in[33] + NET io_in[33] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1074740 ) N ; + - io_in[34] + NET io_in[34] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 814300 ) N ; + - io_in[35] + NET io_in[35] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 553180 ) N ; + - io_in[36] + NET io_in[36] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 358020 ) N ; + - io_in[37] + NET io_in[37] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 162180 ) N ; + - io_in[3] + NET io_in[3] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 630020 ) N ; + - io_in[4] + NET io_in[4] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 829260 ) N ; + - io_in[5] + NET io_in[5] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1028500 ) N ; + - io_in[6] + NET io_in[6] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1227740 ) N ; + - io_in[7] + NET io_in[7] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1493620 ) N ; + - io_in[8] + NET io_in[8] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1759500 ) N ; + - io_in[9] + NET io_in[9] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2024700 ) N ; + - io_oeb[0] + NET io_oeb[0] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 165580 ) N ; + - io_oeb[10] + NET io_oeb[10] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2423180 ) N ; + - io_oeb[11] + NET io_oeb[11] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2689060 ) N ; + - io_oeb[12] + NET io_oeb[12] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2954940 ) N ; + - io_oeb[13] + NET io_oeb[13] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 3220140 ) N ; + - io_oeb[14] + NET io_oeb[14] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 3486020 ) N ; + - io_oeb[15] + NET io_oeb[15] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2636030 3521200 ) N ; + - io_oeb[16] + NET io_oeb[16] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2311730 3521200 ) N ; + - io_oeb[17] + NET io_oeb[17] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1987430 3521200 ) N ; + - io_oeb[18] + NET io_oeb[18] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1662670 3521200 ) N ; + - io_oeb[19] + NET io_oeb[19] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1338370 3521200 ) N ; + - io_oeb[1] + NET io_oeb[1] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 364820 ) N ; + - io_oeb[20] + NET io_oeb[20] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1014070 3521200 ) N ; + - io_oeb[21] + NET io_oeb[21] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 689310 3521200 ) N ; + - io_oeb[22] + NET io_oeb[22] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 365010 3521200 ) N ; + - io_oeb[23] + NET io_oeb[23] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 40710 3521200 ) N ; + - io_oeb[24] + NET io_oeb[24] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 3290860 ) N ; + - io_oeb[25] + NET io_oeb[25] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 3030420 ) N ; + - io_oeb[26] + NET io_oeb[26] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2769300 ) N ; + - io_oeb[27] + NET io_oeb[27] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2508860 ) N ; + - io_oeb[28] + NET io_oeb[28] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2247740 ) N ; + - io_oeb[29] + NET io_oeb[29] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1987300 ) N ; + - io_oeb[2] + NET io_oeb[2] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 564060 ) N ; + - io_oeb[30] + NET io_oeb[30] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1726860 ) N ; + - io_oeb[31] + NET io_oeb[31] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1465740 ) N ; + - io_oeb[32] + NET io_oeb[32] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1205300 ) N ; + - io_oeb[33] + NET io_oeb[33] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 944180 ) N ; + - io_oeb[34] + NET io_oeb[34] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 683740 ) N ; + - io_oeb[35] + NET io_oeb[35] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 423300 ) N ; + - io_oeb[36] + NET io_oeb[36] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 227460 ) N ; + - io_oeb[37] + NET io_oeb[37] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 32300 ) N ; + - io_oeb[3] + NET io_oeb[3] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 763300 ) N ; + - io_oeb[4] + NET io_oeb[4] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 962540 ) N ; + - io_oeb[5] + NET io_oeb[5] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1161780 ) N ; + - io_oeb[6] + NET io_oeb[6] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1361020 ) N ; + - io_oeb[7] + NET io_oeb[7] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1626220 ) N ; + - io_oeb[8] + NET io_oeb[8] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1892100 ) N ; + - io_oeb[9] + NET io_oeb[9] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2157980 ) N ; + - io_out[0] + NET io_out[0] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 98940 ) N ; + - io_out[10] + NET io_out[10] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2357220 ) N ; + - io_out[11] + NET io_out[11] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2622420 ) N ; + - io_out[12] + NET io_out[12] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2888300 ) N ; + - io_out[13] + NET io_out[13] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 3154180 ) N ; + - io_out[14] + NET io_out[14] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 3419380 ) N ; + - io_out[15] + NET io_out[15] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2717450 3521200 ) N ; + - io_out[16] + NET io_out[16] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2392690 3521200 ) N ; + - io_out[17] + NET io_out[17] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2068390 3521200 ) N ; + - io_out[18] + NET io_out[18] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1744090 3521200 ) N ; + - io_out[19] + NET io_out[19] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1419330 3521200 ) N ; + - io_out[1] + NET io_out[1] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 298180 ) N ; + - io_out[20] + NET io_out[20] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1095030 3521200 ) N ; + - io_out[21] + NET io_out[21] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 770730 3521200 ) N ; + - io_out[22] + NET io_out[22] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 445970 3521200 ) N ; + - io_out[23] + NET io_out[23] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 121670 3521200 ) N ; + - io_out[24] + NET io_out[24] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 3356140 ) N ; + - io_out[25] + NET io_out[25] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 3095700 ) N ; + - io_out[26] + NET io_out[26] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2834580 ) N ; + - io_out[27] + NET io_out[27] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2574140 ) N ; + - io_out[28] + NET io_out[28] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2313020 ) N ; + - io_out[29] + NET io_out[29] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 2052580 ) N ; + - io_out[2] + NET io_out[2] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 497420 ) N ; + - io_out[30] + NET io_out[30] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1792140 ) N ; + - io_out[31] + NET io_out[31] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1531020 ) N ; + - io_out[32] + NET io_out[32] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1270580 ) N ; + - io_out[33] + NET io_out[33] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 1009460 ) N ; + - io_out[34] + NET io_out[34] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 749020 ) N ; + - io_out[35] + NET io_out[35] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 487900 ) N ; + - io_out[36] + NET io_out[36] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 292740 ) N ; + - io_out[37] + NET io_out[37] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( -1200 96900 ) N ; + - io_out[3] + NET io_out[3] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 696660 ) N ; + - io_out[4] + NET io_out[4] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 895900 ) N ; + - io_out[5] + NET io_out[5] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1095140 ) N ; + - io_out[6] + NET io_out[6] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1294380 ) N ; + - io_out[7] + NET io_out[7] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1560260 ) N ; + - io_out[8] + NET io_out[8] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 1825460 ) N ; + - io_out[9] + NET io_out[9] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met3 ( -3600 -600 ) ( 3600 600 ) + + PLACED ( 2921200 2091340 ) N ; + - la_data_in[0] + NET la_data_in[0] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 629510 -1200 ) N ; + - la_data_in[100] + NET la_data_in[100] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2402810 -1200 ) N ; + - la_data_in[101] + NET la_data_in[101] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2420290 -1200 ) N ; + - la_data_in[102] + NET la_data_in[102] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2438230 -1200 ) N ; + - la_data_in[103] + NET la_data_in[103] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2455710 -1200 ) N ; + - la_data_in[104] + NET la_data_in[104] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2473650 -1200 ) N ; + - la_data_in[105] + NET la_data_in[105] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2491130 -1200 ) N ; + - la_data_in[106] + NET la_data_in[106] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2509070 -1200 ) N ; + - la_data_in[107] + NET la_data_in[107] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2527010 -1200 ) N ; + - la_data_in[108] + NET la_data_in[108] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2544490 -1200 ) N ; + - la_data_in[109] + NET la_data_in[109] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2562430 -1200 ) N ; + - la_data_in[10] + NET la_data_in[10] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 806610 -1200 ) N ; + - la_data_in[110] + NET la_data_in[110] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2579910 -1200 ) N ; + - la_data_in[111] + NET la_data_in[111] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2597850 -1200 ) N ; + - la_data_in[112] + NET la_data_in[112] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2615330 -1200 ) N ; + - la_data_in[113] + NET la_data_in[113] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2633270 -1200 ) N ; + - la_data_in[114] + NET la_data_in[114] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2650750 -1200 ) N ; + - la_data_in[115] + NET la_data_in[115] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2668690 -1200 ) N ; + - la_data_in[116] + NET la_data_in[116] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2686170 -1200 ) N ; + - la_data_in[117] + NET la_data_in[117] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2704110 -1200 ) N ; + - la_data_in[118] + NET la_data_in[118] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2722050 -1200 ) N ; + - la_data_in[119] + NET la_data_in[119] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2739530 -1200 ) N ; + - la_data_in[11] + NET la_data_in[11] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 824550 -1200 ) N ; + - la_data_in[120] + NET la_data_in[120] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2757470 -1200 ) N ; + - la_data_in[121] + NET la_data_in[121] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2774950 -1200 ) N ; + - la_data_in[122] + NET la_data_in[122] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2792890 -1200 ) N ; + - la_data_in[123] + NET la_data_in[123] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2810370 -1200 ) N ; + - la_data_in[124] + NET la_data_in[124] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2828310 -1200 ) N ; + - la_data_in[125] + NET la_data_in[125] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2845790 -1200 ) N ; + - la_data_in[126] + NET la_data_in[126] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2863730 -1200 ) N ; + - la_data_in[127] + NET la_data_in[127] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2881670 -1200 ) N ; + - la_data_in[12] + NET la_data_in[12] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 842030 -1200 ) N ; + - la_data_in[13] + NET la_data_in[13] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 859970 -1200 ) N ; + - la_data_in[14] + NET la_data_in[14] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 877450 -1200 ) N ; + - la_data_in[15] + NET la_data_in[15] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 895390 -1200 ) N ; + - la_data_in[16] + NET la_data_in[16] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 912870 -1200 ) N ; + - la_data_in[17] + NET la_data_in[17] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 930810 -1200 ) N ; + - la_data_in[18] + NET la_data_in[18] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 948750 -1200 ) N ; + - la_data_in[19] + NET la_data_in[19] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 966230 -1200 ) N ; + - la_data_in[1] + NET la_data_in[1] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 646990 -1200 ) N ; + - la_data_in[20] + NET la_data_in[20] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 984170 -1200 ) N ; + - la_data_in[21] + NET la_data_in[21] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1001650 -1200 ) N ; + - la_data_in[22] + NET la_data_in[22] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1019590 -1200 ) N ; + - la_data_in[23] + NET la_data_in[23] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1037070 -1200 ) N ; + - la_data_in[24] + NET la_data_in[24] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1055010 -1200 ) N ; + - la_data_in[25] + NET la_data_in[25] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1072490 -1200 ) N ; + - la_data_in[26] + NET la_data_in[26] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1090430 -1200 ) N ; + - la_data_in[27] + NET la_data_in[27] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1107910 -1200 ) N ; + - la_data_in[28] + NET la_data_in[28] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1125850 -1200 ) N ; + - la_data_in[29] + NET la_data_in[29] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1143790 -1200 ) N ; + - la_data_in[2] + NET la_data_in[2] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 664930 -1200 ) N ; + - la_data_in[30] + NET la_data_in[30] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1161270 -1200 ) N ; + - la_data_in[31] + NET la_data_in[31] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1179210 -1200 ) N ; + - la_data_in[32] + NET la_data_in[32] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1196690 -1200 ) N ; + - la_data_in[33] + NET la_data_in[33] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1214630 -1200 ) N ; + - la_data_in[34] + NET la_data_in[34] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1232110 -1200 ) N ; + - la_data_in[35] + NET la_data_in[35] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1250050 -1200 ) N ; + - la_data_in[36] + NET la_data_in[36] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1267530 -1200 ) N ; + - la_data_in[37] + NET la_data_in[37] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1285470 -1200 ) N ; + - la_data_in[38] + NET la_data_in[38] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1303410 -1200 ) N ; + - la_data_in[39] + NET la_data_in[39] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1320890 -1200 ) N ; + - la_data_in[3] + NET la_data_in[3] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 682410 -1200 ) N ; + - la_data_in[40] + NET la_data_in[40] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1338830 -1200 ) N ; + - la_data_in[41] + NET la_data_in[41] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1356310 -1200 ) N ; + - la_data_in[42] + NET la_data_in[42] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1374250 -1200 ) N ; + - la_data_in[43] + NET la_data_in[43] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1391730 -1200 ) N ; + - la_data_in[44] + NET la_data_in[44] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1409670 -1200 ) N ; + - la_data_in[45] + NET la_data_in[45] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1427150 -1200 ) N ; + - la_data_in[46] + NET la_data_in[46] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1445090 -1200 ) N ; + - la_data_in[47] + NET la_data_in[47] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1463030 -1200 ) N ; + - la_data_in[48] + NET la_data_in[48] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1480510 -1200 ) N ; + - la_data_in[49] + NET la_data_in[49] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1498450 -1200 ) N ; + - la_data_in[4] + NET la_data_in[4] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 700350 -1200 ) N ; + - la_data_in[50] + NET la_data_in[50] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1515930 -1200 ) N ; + - la_data_in[51] + NET la_data_in[51] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1533870 -1200 ) N ; + - la_data_in[52] + NET la_data_in[52] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1551350 -1200 ) N ; + - la_data_in[53] + NET la_data_in[53] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1569290 -1200 ) N ; + - la_data_in[54] + NET la_data_in[54] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1586770 -1200 ) N ; + - la_data_in[55] + NET la_data_in[55] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1604710 -1200 ) N ; + - la_data_in[56] + NET la_data_in[56] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1622190 -1200 ) N ; + - la_data_in[57] + NET la_data_in[57] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1640130 -1200 ) N ; + - la_data_in[58] + NET la_data_in[58] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1658070 -1200 ) N ; + - la_data_in[59] + NET la_data_in[59] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1675550 -1200 ) N ; + - la_data_in[5] + NET la_data_in[5] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 717830 -1200 ) N ; + - la_data_in[60] + NET la_data_in[60] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1693490 -1200 ) N ; + - la_data_in[61] + NET la_data_in[61] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1710970 -1200 ) N ; + - la_data_in[62] + NET la_data_in[62] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1728910 -1200 ) N ; + - la_data_in[63] + NET la_data_in[63] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1746390 -1200 ) N ; + - la_data_in[64] + NET la_data_in[64] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1764330 -1200 ) N ; + - la_data_in[65] + NET la_data_in[65] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1781810 -1200 ) N ; + - la_data_in[66] + NET la_data_in[66] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1799750 -1200 ) N ; + - la_data_in[67] + NET la_data_in[67] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1817690 -1200 ) N ; + - la_data_in[68] + NET la_data_in[68] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1835170 -1200 ) N ; + - la_data_in[69] + NET la_data_in[69] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1853110 -1200 ) N ; + - la_data_in[6] + NET la_data_in[6] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 735770 -1200 ) N ; + - la_data_in[70] + NET la_data_in[70] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1870590 -1200 ) N ; + - la_data_in[71] + NET la_data_in[71] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1888530 -1200 ) N ; + - la_data_in[72] + NET la_data_in[72] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1906010 -1200 ) N ; + - la_data_in[73] + NET la_data_in[73] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1923950 -1200 ) N ; + - la_data_in[74] + NET la_data_in[74] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1941430 -1200 ) N ; + - la_data_in[75] + NET la_data_in[75] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1959370 -1200 ) N ; + - la_data_in[76] + NET la_data_in[76] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1976850 -1200 ) N ; + - la_data_in[77] + NET la_data_in[77] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1994790 -1200 ) N ; + - la_data_in[78] + NET la_data_in[78] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2012730 -1200 ) N ; + - la_data_in[79] + NET la_data_in[79] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2030210 -1200 ) N ; + - la_data_in[7] + NET la_data_in[7] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 753250 -1200 ) N ; + - la_data_in[80] + NET la_data_in[80] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2048150 -1200 ) N ; + - la_data_in[81] + NET la_data_in[81] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2065630 -1200 ) N ; + - la_data_in[82] + NET la_data_in[82] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2083570 -1200 ) N ; + - la_data_in[83] + NET la_data_in[83] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2101050 -1200 ) N ; + - la_data_in[84] + NET la_data_in[84] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2118990 -1200 ) N ; + - la_data_in[85] + NET la_data_in[85] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2136470 -1200 ) N ; + - la_data_in[86] + NET la_data_in[86] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2154410 -1200 ) N ; + - la_data_in[87] + NET la_data_in[87] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2172350 -1200 ) N ; + - la_data_in[88] + NET la_data_in[88] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2189830 -1200 ) N ; + - la_data_in[89] + NET la_data_in[89] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2207770 -1200 ) N ; + - la_data_in[8] + NET la_data_in[8] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 771190 -1200 ) N ; + - la_data_in[90] + NET la_data_in[90] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2225250 -1200 ) N ; + - la_data_in[91] + NET la_data_in[91] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2243190 -1200 ) N ; + - la_data_in[92] + NET la_data_in[92] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2260670 -1200 ) N ; + - la_data_in[93] + NET la_data_in[93] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2278610 -1200 ) N ; + - la_data_in[94] + NET la_data_in[94] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2296090 -1200 ) N ; + - la_data_in[95] + NET la_data_in[95] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2314030 -1200 ) N ; + - la_data_in[96] + NET la_data_in[96] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2331510 -1200 ) N ; + - la_data_in[97] + NET la_data_in[97] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2349450 -1200 ) N ; + - la_data_in[98] + NET la_data_in[98] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2367390 -1200 ) N ; + - la_data_in[99] + NET la_data_in[99] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2384870 -1200 ) N ; + - la_data_in[9] + NET la_data_in[9] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 789130 -1200 ) N ; + - la_data_out[0] + NET la_data_out[0] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 635030 -1200 ) N ; + - la_data_out[100] + NET la_data_out[100] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2408790 -1200 ) N ; + - la_data_out[101] + NET la_data_out[101] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2426270 -1200 ) N ; + - la_data_out[102] + NET la_data_out[102] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2444210 -1200 ) N ; + - la_data_out[103] + NET la_data_out[103] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2461690 -1200 ) N ; + - la_data_out[104] + NET la_data_out[104] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2479630 -1200 ) N ; + - la_data_out[105] + NET la_data_out[105] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2497110 -1200 ) N ; + - la_data_out[106] + NET la_data_out[106] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2515050 -1200 ) N ; + - la_data_out[107] + NET la_data_out[107] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2532530 -1200 ) N ; + - la_data_out[108] + NET la_data_out[108] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2550470 -1200 ) N ; + - la_data_out[109] + NET la_data_out[109] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2567950 -1200 ) N ; + - la_data_out[10] + NET la_data_out[10] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 812590 -1200 ) N ; + - la_data_out[110] + NET la_data_out[110] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2585890 -1200 ) N ; + - la_data_out[111] + NET la_data_out[111] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2603830 -1200 ) N ; + - la_data_out[112] + NET la_data_out[112] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2621310 -1200 ) N ; + - la_data_out[113] + NET la_data_out[113] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2639250 -1200 ) N ; + - la_data_out[114] + NET la_data_out[114] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2656730 -1200 ) N ; + - la_data_out[115] + NET la_data_out[115] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2674670 -1200 ) N ; + - la_data_out[116] + NET la_data_out[116] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2692150 -1200 ) N ; + - la_data_out[117] + NET la_data_out[117] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2710090 -1200 ) N ; + - la_data_out[118] + NET la_data_out[118] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2727570 -1200 ) N ; + - la_data_out[119] + NET la_data_out[119] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2745510 -1200 ) N ; + - la_data_out[11] + NET la_data_out[11] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 830530 -1200 ) N ; + - la_data_out[120] + NET la_data_out[120] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2763450 -1200 ) N ; + - la_data_out[121] + NET la_data_out[121] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2780930 -1200 ) N ; + - la_data_out[122] + NET la_data_out[122] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2798870 -1200 ) N ; + - la_data_out[123] + NET la_data_out[123] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2816350 -1200 ) N ; + - la_data_out[124] + NET la_data_out[124] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2834290 -1200 ) N ; + - la_data_out[125] + NET la_data_out[125] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2851770 -1200 ) N ; + - la_data_out[126] + NET la_data_out[126] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2869710 -1200 ) N ; + - la_data_out[127] + NET la_data_out[127] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2887190 -1200 ) N ; + - la_data_out[12] + NET la_data_out[12] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 848010 -1200 ) N ; + - la_data_out[13] + NET la_data_out[13] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 865950 -1200 ) N ; + - la_data_out[14] + NET la_data_out[14] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 883430 -1200 ) N ; + - la_data_out[15] + NET la_data_out[15] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 901370 -1200 ) N ; + - la_data_out[16] + NET la_data_out[16] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 918850 -1200 ) N ; + - la_data_out[17] + NET la_data_out[17] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 936790 -1200 ) N ; + - la_data_out[18] + NET la_data_out[18] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 954270 -1200 ) N ; + - la_data_out[19] + NET la_data_out[19] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 972210 -1200 ) N ; + - la_data_out[1] + NET la_data_out[1] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 652970 -1200 ) N ; + - la_data_out[20] + NET la_data_out[20] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 989690 -1200 ) N ; + - la_data_out[21] + NET la_data_out[21] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1007630 -1200 ) N ; + - la_data_out[22] + NET la_data_out[22] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1025570 -1200 ) N ; + - la_data_out[23] + NET la_data_out[23] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1043050 -1200 ) N ; + - la_data_out[24] + NET la_data_out[24] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1060990 -1200 ) N ; + - la_data_out[25] + NET la_data_out[25] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1078470 -1200 ) N ; + - la_data_out[26] + NET la_data_out[26] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1096410 -1200 ) N ; + - la_data_out[27] + NET la_data_out[27] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1113890 -1200 ) N ; + - la_data_out[28] + NET la_data_out[28] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1131830 -1200 ) N ; + - la_data_out[29] + NET la_data_out[29] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1149310 -1200 ) N ; + - la_data_out[2] + NET la_data_out[2] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 670910 -1200 ) N ; + - la_data_out[30] + NET la_data_out[30] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1167250 -1200 ) N ; + - la_data_out[31] + NET la_data_out[31] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1185190 -1200 ) N ; + - la_data_out[32] + NET la_data_out[32] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1202670 -1200 ) N ; + - la_data_out[33] + NET la_data_out[33] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1220610 -1200 ) N ; + - la_data_out[34] + NET la_data_out[34] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1238090 -1200 ) N ; + - la_data_out[35] + NET la_data_out[35] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1256030 -1200 ) N ; + - la_data_out[36] + NET la_data_out[36] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1273510 -1200 ) N ; + - la_data_out[37] + NET la_data_out[37] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1291450 -1200 ) N ; + - la_data_out[38] + NET la_data_out[38] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1308930 -1200 ) N ; + - la_data_out[39] + NET la_data_out[39] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1326870 -1200 ) N ; + - la_data_out[3] + NET la_data_out[3] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 688390 -1200 ) N ; + - la_data_out[40] + NET la_data_out[40] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1344350 -1200 ) N ; + - la_data_out[41] + NET la_data_out[41] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1362290 -1200 ) N ; + - la_data_out[42] + NET la_data_out[42] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1380230 -1200 ) N ; + - la_data_out[43] + NET la_data_out[43] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1397710 -1200 ) N ; + - la_data_out[44] + NET la_data_out[44] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1415650 -1200 ) N ; + - la_data_out[45] + NET la_data_out[45] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1433130 -1200 ) N ; + - la_data_out[46] + NET la_data_out[46] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1451070 -1200 ) N ; + - la_data_out[47] + NET la_data_out[47] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1468550 -1200 ) N ; + - la_data_out[48] + NET la_data_out[48] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1486490 -1200 ) N ; + - la_data_out[49] + NET la_data_out[49] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1503970 -1200 ) N ; + - la_data_out[4] + NET la_data_out[4] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 706330 -1200 ) N ; + - la_data_out[50] + NET la_data_out[50] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1521910 -1200 ) N ; + - la_data_out[51] + NET la_data_out[51] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1539850 -1200 ) N ; + - la_data_out[52] + NET la_data_out[52] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1557330 -1200 ) N ; + - la_data_out[53] + NET la_data_out[53] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1575270 -1200 ) N ; + - la_data_out[54] + NET la_data_out[54] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1592750 -1200 ) N ; + - la_data_out[55] + NET la_data_out[55] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1610690 -1200 ) N ; + - la_data_out[56] + NET la_data_out[56] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1628170 -1200 ) N ; + - la_data_out[57] + NET la_data_out[57] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1646110 -1200 ) N ; + - la_data_out[58] + NET la_data_out[58] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1663590 -1200 ) N ; + - la_data_out[59] + NET la_data_out[59] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1681530 -1200 ) N ; + - la_data_out[5] + NET la_data_out[5] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 723810 -1200 ) N ; + - la_data_out[60] + NET la_data_out[60] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1699470 -1200 ) N ; + - la_data_out[61] + NET la_data_out[61] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1716950 -1200 ) N ; + - la_data_out[62] + NET la_data_out[62] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1734890 -1200 ) N ; + - la_data_out[63] + NET la_data_out[63] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1752370 -1200 ) N ; + - la_data_out[64] + NET la_data_out[64] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1770310 -1200 ) N ; + - la_data_out[65] + NET la_data_out[65] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1787790 -1200 ) N ; + - la_data_out[66] + NET la_data_out[66] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1805730 -1200 ) N ; + - la_data_out[67] + NET la_data_out[67] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1823210 -1200 ) N ; + - la_data_out[68] + NET la_data_out[68] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1841150 -1200 ) N ; + - la_data_out[69] + NET la_data_out[69] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1858630 -1200 ) N ; + - la_data_out[6] + NET la_data_out[6] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 741750 -1200 ) N ; + - la_data_out[70] + NET la_data_out[70] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1876570 -1200 ) N ; + - la_data_out[71] + NET la_data_out[71] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1894510 -1200 ) N ; + - la_data_out[72] + NET la_data_out[72] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1911990 -1200 ) N ; + - la_data_out[73] + NET la_data_out[73] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1929930 -1200 ) N ; + - la_data_out[74] + NET la_data_out[74] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1947410 -1200 ) N ; + - la_data_out[75] + NET la_data_out[75] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1965350 -1200 ) N ; + - la_data_out[76] + NET la_data_out[76] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1982830 -1200 ) N ; + - la_data_out[77] + NET la_data_out[77] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2000770 -1200 ) N ; + - la_data_out[78] + NET la_data_out[78] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2018250 -1200 ) N ; + - la_data_out[79] + NET la_data_out[79] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2036190 -1200 ) N ; + - la_data_out[7] + NET la_data_out[7] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 759230 -1200 ) N ; + - la_data_out[80] + NET la_data_out[80] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2054130 -1200 ) N ; + - la_data_out[81] + NET la_data_out[81] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2071610 -1200 ) N ; + - la_data_out[82] + NET la_data_out[82] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2089550 -1200 ) N ; + - la_data_out[83] + NET la_data_out[83] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2107030 -1200 ) N ; + - la_data_out[84] + NET la_data_out[84] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2124970 -1200 ) N ; + - la_data_out[85] + NET la_data_out[85] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2142450 -1200 ) N ; + - la_data_out[86] + NET la_data_out[86] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2160390 -1200 ) N ; + - la_data_out[87] + NET la_data_out[87] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2177870 -1200 ) N ; + - la_data_out[88] + NET la_data_out[88] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2195810 -1200 ) N ; + - la_data_out[89] + NET la_data_out[89] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2213290 -1200 ) N ; + - la_data_out[8] + NET la_data_out[8] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 777170 -1200 ) N ; + - la_data_out[90] + NET la_data_out[90] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2231230 -1200 ) N ; + - la_data_out[91] + NET la_data_out[91] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2249170 -1200 ) N ; + - la_data_out[92] + NET la_data_out[92] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2266650 -1200 ) N ; + - la_data_out[93] + NET la_data_out[93] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2284590 -1200 ) N ; + - la_data_out[94] + NET la_data_out[94] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2302070 -1200 ) N ; + - la_data_out[95] + NET la_data_out[95] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2320010 -1200 ) N ; + - la_data_out[96] + NET la_data_out[96] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2337490 -1200 ) N ; + - la_data_out[97] + NET la_data_out[97] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2355430 -1200 ) N ; + - la_data_out[98] + NET la_data_out[98] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2372910 -1200 ) N ; + - la_data_out[99] + NET la_data_out[99] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2390850 -1200 ) N ; + - la_data_out[9] + NET la_data_out[9] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 794650 -1200 ) N ; + - la_oenb[0] + NET la_oenb[0] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 641010 -1200 ) N ; + - la_oenb[100] + NET la_oenb[100] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2414310 -1200 ) N ; + - la_oenb[101] + NET la_oenb[101] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2432250 -1200 ) N ; + - la_oenb[102] + NET la_oenb[102] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2449730 -1200 ) N ; + - la_oenb[103] + NET la_oenb[103] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2467670 -1200 ) N ; + - la_oenb[104] + NET la_oenb[104] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2485610 -1200 ) N ; + - la_oenb[105] + NET la_oenb[105] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2503090 -1200 ) N ; + - la_oenb[106] + NET la_oenb[106] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2521030 -1200 ) N ; + - la_oenb[107] + NET la_oenb[107] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2538510 -1200 ) N ; + - la_oenb[108] + NET la_oenb[108] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2556450 -1200 ) N ; + - la_oenb[109] + NET la_oenb[109] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2573930 -1200 ) N ; + - la_oenb[10] + NET la_oenb[10] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 818570 -1200 ) N ; + - la_oenb[110] + NET la_oenb[110] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2591870 -1200 ) N ; + - la_oenb[111] + NET la_oenb[111] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2609350 -1200 ) N ; + - la_oenb[112] + NET la_oenb[112] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2627290 -1200 ) N ; + - la_oenb[113] + NET la_oenb[113] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2645230 -1200 ) N ; + - la_oenb[114] + NET la_oenb[114] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2662710 -1200 ) N ; + - la_oenb[115] + NET la_oenb[115] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2680650 -1200 ) N ; + - la_oenb[116] + NET la_oenb[116] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2698130 -1200 ) N ; + - la_oenb[117] + NET la_oenb[117] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2716070 -1200 ) N ; + - la_oenb[118] + NET la_oenb[118] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2733550 -1200 ) N ; + - la_oenb[119] + NET la_oenb[119] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2751490 -1200 ) N ; + - la_oenb[11] + NET la_oenb[11] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 836050 -1200 ) N ; + - la_oenb[120] + NET la_oenb[120] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2768970 -1200 ) N ; + - la_oenb[121] + NET la_oenb[121] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2786910 -1200 ) N ; + - la_oenb[122] + NET la_oenb[122] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2804390 -1200 ) N ; + - la_oenb[123] + NET la_oenb[123] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2822330 -1200 ) N ; + - la_oenb[124] + NET la_oenb[124] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2840270 -1200 ) N ; + - la_oenb[125] + NET la_oenb[125] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2857750 -1200 ) N ; + - la_oenb[126] + NET la_oenb[126] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2875690 -1200 ) N ; + - la_oenb[127] + NET la_oenb[127] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2893170 -1200 ) N ; + - la_oenb[12] + NET la_oenb[12] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 853990 -1200 ) N ; + - la_oenb[13] + NET la_oenb[13] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 871470 -1200 ) N ; + - la_oenb[14] + NET la_oenb[14] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 889410 -1200 ) N ; + - la_oenb[15] + NET la_oenb[15] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 907350 -1200 ) N ; + - la_oenb[16] + NET la_oenb[16] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 924830 -1200 ) N ; + - la_oenb[17] + NET la_oenb[17] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 942770 -1200 ) N ; + - la_oenb[18] + NET la_oenb[18] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 960250 -1200 ) N ; + - la_oenb[19] + NET la_oenb[19] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 978190 -1200 ) N ; + - la_oenb[1] + NET la_oenb[1] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 658950 -1200 ) N ; + - la_oenb[20] + NET la_oenb[20] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 995670 -1200 ) N ; + - la_oenb[21] + NET la_oenb[21] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1013610 -1200 ) N ; + - la_oenb[22] + NET la_oenb[22] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1031090 -1200 ) N ; + - la_oenb[23] + NET la_oenb[23] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1049030 -1200 ) N ; + - la_oenb[24] + NET la_oenb[24] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1066970 -1200 ) N ; + - la_oenb[25] + NET la_oenb[25] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1084450 -1200 ) N ; + - la_oenb[26] + NET la_oenb[26] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1102390 -1200 ) N ; + - la_oenb[27] + NET la_oenb[27] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1119870 -1200 ) N ; + - la_oenb[28] + NET la_oenb[28] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1137810 -1200 ) N ; + - la_oenb[29] + NET la_oenb[29] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1155290 -1200 ) N ; + - la_oenb[2] + NET la_oenb[2] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 676430 -1200 ) N ; + - la_oenb[30] + NET la_oenb[30] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1173230 -1200 ) N ; + - la_oenb[31] + NET la_oenb[31] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1190710 -1200 ) N ; + - la_oenb[32] + NET la_oenb[32] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1208650 -1200 ) N ; + - la_oenb[33] + NET la_oenb[33] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1226130 -1200 ) N ; + - la_oenb[34] + NET la_oenb[34] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1244070 -1200 ) N ; + - la_oenb[35] + NET la_oenb[35] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1262010 -1200 ) N ; + - la_oenb[36] + NET la_oenb[36] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1279490 -1200 ) N ; + - la_oenb[37] + NET la_oenb[37] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1297430 -1200 ) N ; + - la_oenb[38] + NET la_oenb[38] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1314910 -1200 ) N ; + - la_oenb[39] + NET la_oenb[39] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1332850 -1200 ) N ; + - la_oenb[3] + NET la_oenb[3] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 694370 -1200 ) N ; + - la_oenb[40] + NET la_oenb[40] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1350330 -1200 ) N ; + - la_oenb[41] + NET la_oenb[41] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1368270 -1200 ) N ; + - la_oenb[42] + NET la_oenb[42] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1385750 -1200 ) N ; + - la_oenb[43] + NET la_oenb[43] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1403690 -1200 ) N ; + - la_oenb[44] + NET la_oenb[44] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1421630 -1200 ) N ; + - la_oenb[45] + NET la_oenb[45] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1439110 -1200 ) N ; + - la_oenb[46] + NET la_oenb[46] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1457050 -1200 ) N ; + - la_oenb[47] + NET la_oenb[47] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1474530 -1200 ) N ; + - la_oenb[48] + NET la_oenb[48] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1492470 -1200 ) N ; + - la_oenb[49] + NET la_oenb[49] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1509950 -1200 ) N ; + - la_oenb[4] + NET la_oenb[4] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 712310 -1200 ) N ; + - la_oenb[50] + NET la_oenb[50] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1527890 -1200 ) N ; + - la_oenb[51] + NET la_oenb[51] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1545370 -1200 ) N ; + - la_oenb[52] + NET la_oenb[52] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1563310 -1200 ) N ; + - la_oenb[53] + NET la_oenb[53] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1581250 -1200 ) N ; + - la_oenb[54] + NET la_oenb[54] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1598730 -1200 ) N ; + - la_oenb[55] + NET la_oenb[55] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1616670 -1200 ) N ; + - la_oenb[56] + NET la_oenb[56] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1634150 -1200 ) N ; + - la_oenb[57] + NET la_oenb[57] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1652090 -1200 ) N ; + - la_oenb[58] + NET la_oenb[58] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1669570 -1200 ) N ; + - la_oenb[59] + NET la_oenb[59] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1687510 -1200 ) N ; + - la_oenb[5] + NET la_oenb[5] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 729790 -1200 ) N ; + - la_oenb[60] + NET la_oenb[60] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1704990 -1200 ) N ; + - la_oenb[61] + NET la_oenb[61] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1722930 -1200 ) N ; + - la_oenb[62] + NET la_oenb[62] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1740410 -1200 ) N ; + - la_oenb[63] + NET la_oenb[63] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1758350 -1200 ) N ; + - la_oenb[64] + NET la_oenb[64] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1776290 -1200 ) N ; + - la_oenb[65] + NET la_oenb[65] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1793770 -1200 ) N ; + - la_oenb[66] + NET la_oenb[66] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1811710 -1200 ) N ; + - la_oenb[67] + NET la_oenb[67] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1829190 -1200 ) N ; + - la_oenb[68] + NET la_oenb[68] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1847130 -1200 ) N ; + - la_oenb[69] + NET la_oenb[69] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1864610 -1200 ) N ; + - la_oenb[6] + NET la_oenb[6] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 747730 -1200 ) N ; + - la_oenb[70] + NET la_oenb[70] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1882550 -1200 ) N ; + - la_oenb[71] + NET la_oenb[71] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1900030 -1200 ) N ; + - la_oenb[72] + NET la_oenb[72] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1917970 -1200 ) N ; + - la_oenb[73] + NET la_oenb[73] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1935910 -1200 ) N ; + - la_oenb[74] + NET la_oenb[74] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1953390 -1200 ) N ; + - la_oenb[75] + NET la_oenb[75] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1971330 -1200 ) N ; + - la_oenb[76] + NET la_oenb[76] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 1988810 -1200 ) N ; + - la_oenb[77] + NET la_oenb[77] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2006750 -1200 ) N ; + - la_oenb[78] + NET la_oenb[78] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2024230 -1200 ) N ; + - la_oenb[79] + NET la_oenb[79] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2042170 -1200 ) N ; + - la_oenb[7] + NET la_oenb[7] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 765210 -1200 ) N ; + - la_oenb[80] + NET la_oenb[80] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2059650 -1200 ) N ; + - la_oenb[81] + NET la_oenb[81] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2077590 -1200 ) N ; + - la_oenb[82] + NET la_oenb[82] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2095070 -1200 ) N ; + - la_oenb[83] + NET la_oenb[83] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2113010 -1200 ) N ; + - la_oenb[84] + NET la_oenb[84] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2130950 -1200 ) N ; + - la_oenb[85] + NET la_oenb[85] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2148430 -1200 ) N ; + - la_oenb[86] + NET la_oenb[86] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2166370 -1200 ) N ; + - la_oenb[87] + NET la_oenb[87] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2183850 -1200 ) N ; + - la_oenb[88] + NET la_oenb[88] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2201790 -1200 ) N ; + - la_oenb[89] + NET la_oenb[89] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2219270 -1200 ) N ; + - la_oenb[8] + NET la_oenb[8] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 783150 -1200 ) N ; + - la_oenb[90] + NET la_oenb[90] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2237210 -1200 ) N ; + - la_oenb[91] + NET la_oenb[91] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2254690 -1200 ) N ; + - la_oenb[92] + NET la_oenb[92] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2272630 -1200 ) N ; + - la_oenb[93] + NET la_oenb[93] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2290570 -1200 ) N ; + - la_oenb[94] + NET la_oenb[94] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2308050 -1200 ) N ; + - la_oenb[95] + NET la_oenb[95] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2325990 -1200 ) N ; + - la_oenb[96] + NET la_oenb[96] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2343470 -1200 ) N ; + - la_oenb[97] + NET la_oenb[97] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2361410 -1200 ) N ; + - la_oenb[98] + NET la_oenb[98] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2378890 -1200 ) N ; + - la_oenb[99] + NET la_oenb[99] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2396830 -1200 ) N ; + - la_oenb[9] + NET la_oenb[9] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 800630 -1200 ) N ; + - user_clock2 + NET user_clock2 + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2899150 -1200 ) N ; + - user_irq[0] + NET user_irq[0] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2905130 -1200 ) N ; + - user_irq[1] + NET user_irq[1] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2911110 -1200 ) N ; + - user_irq[2] + NET user_irq[2] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2917090 -1200 ) N ; + - vccd1 + NET vccd1 + SPECIAL + DIRECTION INPUT + USE POWER + + PORT + + LAYER met4 ( -1550 -1769310 ) ( 1550 1769310 ) + + LAYER met4 ( -181550 -1769310 ) ( -178450 1769310 ) + + LAYER met4 ( -361550 -1769310 ) ( -358450 1769310 ) + + LAYER met4 ( -541550 -1769310 ) ( -538450 1769310 ) + + LAYER met4 ( -721550 -1769310 ) ( -718450 1769310 ) + + LAYER met4 ( -901550 540160 ) ( -898450 1769310 ) + + LAYER met4 ( -1081550 540160 ) ( -1078450 1769310 ) + + LAYER met4 ( -1261550 540160 ) ( -1258450 1769310 ) + + LAYER met4 ( -1441550 540160 ) ( -1438450 1769310 ) + + LAYER met4 ( -1621550 540160 ) ( -1618450 1769310 ) + + LAYER met4 ( -1801550 -1769310 ) ( -1798450 1769310 ) + + LAYER met4 ( -1981550 -1769310 ) ( -1978450 1769310 ) + + LAYER met4 ( -2161550 -1769310 ) ( -2158450 1769310 ) + + LAYER met4 ( -2341550 -1769310 ) ( -2338450 1769310 ) + + LAYER met4 ( -2521550 -1769310 ) ( -2518450 1769310 ) + + LAYER met4 ( -2701550 -1769310 ) ( -2698450 1769310 ) + + LAYER met4 ( -2881550 -1769310 ) ( -2878450 1769310 ) + + LAYER met4 ( 36030 -1764510 ) ( 39130 1764510 ) + + LAYER met4 ( -2900550 -1764510 ) ( -2897450 1764510 ) + + LAYER met4 ( -901550 -1769310 ) ( -898450 -79840 ) + + LAYER met4 ( -1081550 -1769310 ) ( -1078450 -79840 ) + + LAYER met4 ( -1261550 -1769310 ) ( -1258450 -79840 ) + + LAYER met4 ( -1441550 -1769310 ) ( -1438450 -79840 ) + + LAYER met4 ( -1621550 -1769310 ) ( -1618450 -79840 ) + + LAYER met5 ( -2900550 1761410 ) ( 39130 1764510 ) + + LAYER met5 ( -2905350 1674490 ) ( 43930 1677590 ) + + LAYER met5 ( -2905350 1494490 ) ( 43930 1497590 ) + + LAYER met5 ( -2905350 1314490 ) ( 43930 1317590 ) + + LAYER met5 ( -2905350 1134490 ) ( 43930 1137590 ) + + LAYER met5 ( -2905350 954490 ) ( 43930 957590 ) + + LAYER met5 ( -2905350 774490 ) ( 43930 777590 ) + + LAYER met5 ( -2905350 594490 ) ( 43930 597590 ) + + LAYER met5 ( -2905350 414490 ) ( 43930 417590 ) + + LAYER met5 ( -2905350 234490 ) ( 43930 237590 ) + + LAYER met5 ( -2905350 54490 ) ( 43930 57590 ) + + LAYER met5 ( -2905350 -125510 ) ( 43930 -122410 ) + + LAYER met5 ( -2905350 -305510 ) ( 43930 -302410 ) + + LAYER met5 ( -2905350 -485510 ) ( 43930 -482410 ) + + LAYER met5 ( -2905350 -665510 ) ( 43930 -662410 ) + + LAYER met5 ( -2905350 -845510 ) ( 43930 -842410 ) + + LAYER met5 ( -2905350 -1025510 ) ( 43930 -1022410 ) + + LAYER met5 ( -2905350 -1205510 ) ( 43930 -1202410 ) + + LAYER met5 ( -2905350 -1385510 ) ( 43930 -1382410 ) + + LAYER met5 ( -2905350 -1565510 ) ( 43930 -1562410 ) + + LAYER met5 ( -2905350 -1745510 ) ( 43930 -1742410 ) + + LAYER met5 ( -2900550 -1764510 ) ( 39130 -1761410 ) + + FIXED ( 2890520 1759840 ) N ; + - vccd2 + NET vccd2 + SPECIAL + DIRECTION INPUT + USE POWER + + PORT + + LAYER met4 ( -1550 -1778910 ) ( 1550 1778910 ) + + LAYER met4 ( -181550 -1778910 ) ( -178450 1778910 ) + + LAYER met4 ( -361550 -1778910 ) ( -358450 1778910 ) + + LAYER met4 ( -541550 -1778910 ) ( -538450 1778910 ) + + LAYER met4 ( -721550 -1778910 ) ( -718450 1778910 ) + + LAYER met4 ( -901550 540160 ) ( -898450 1778910 ) + + LAYER met4 ( -1081550 540160 ) ( -1078450 1778910 ) + + LAYER met4 ( -1261550 540160 ) ( -1258450 1778910 ) + + LAYER met4 ( -1441550 540160 ) ( -1438450 1778910 ) + + LAYER met4 ( -1621550 540160 ) ( -1618450 1778910 ) + + LAYER met4 ( -1801550 -1778910 ) ( -1798450 1778910 ) + + LAYER met4 ( -1981550 -1778910 ) ( -1978450 1778910 ) + + LAYER met4 ( -2161550 -1778910 ) ( -2158450 1778910 ) + + LAYER met4 ( -2341550 -1778910 ) ( -2338450 1778910 ) + + LAYER met4 ( -2521550 -1778910 ) ( -2518450 1778910 ) + + LAYER met4 ( -2701550 -1778910 ) ( -2698450 1778910 ) + + LAYER met4 ( -2881550 -1778910 ) ( -2878450 1778910 ) + + LAYER met4 ( 27030 -1774110 ) ( 30130 1774110 ) + + LAYER met4 ( -2928750 -1774110 ) ( -2925650 1774110 ) + + LAYER met4 ( -901550 -1778910 ) ( -898450 -79840 ) + + LAYER met4 ( -1081550 -1778910 ) ( -1078450 -79840 ) + + LAYER met4 ( -1261550 -1778910 ) ( -1258450 -79840 ) + + LAYER met4 ( -1441550 -1778910 ) ( -1438450 -79840 ) + + LAYER met4 ( -1621550 -1778910 ) ( -1618450 -79840 ) + + LAYER met5 ( -2928750 1771010 ) ( 30130 1774110 ) + + LAYER met5 ( -2933550 1693090 ) ( 34930 1696190 ) + + LAYER met5 ( -2933550 1513090 ) ( 34930 1516190 ) + + LAYER met5 ( -2933550 1333090 ) ( 34930 1336190 ) + + LAYER met5 ( -2933550 1153090 ) ( 34930 1156190 ) + + LAYER met5 ( -2933550 973090 ) ( 34930 976190 ) + + LAYER met5 ( -2933550 793090 ) ( 34930 796190 ) + + LAYER met5 ( -2933550 613090 ) ( 34930 616190 ) + + LAYER met5 ( -2933550 433090 ) ( 34930 436190 ) + + LAYER met5 ( -2933550 253090 ) ( 34930 256190 ) + + LAYER met5 ( -2933550 73090 ) ( 34930 76190 ) + + LAYER met5 ( -2933550 -106910 ) ( 34930 -103810 ) + + LAYER met5 ( -2933550 -286910 ) ( 34930 -283810 ) + + LAYER met5 ( -2933550 -466910 ) ( 34930 -463810 ) + + LAYER met5 ( -2933550 -646910 ) ( 34930 -643810 ) + + LAYER met5 ( -2933550 -826910 ) ( 34930 -823810 ) + + LAYER met5 ( -2933550 -1006910 ) ( 34930 -1003810 ) + + LAYER met5 ( -2933550 -1186910 ) ( 34930 -1183810 ) + + LAYER met5 ( -2933550 -1366910 ) ( 34930 -1363810 ) + + LAYER met5 ( -2933550 -1546910 ) ( 34930 -1543810 ) + + LAYER met5 ( -2933550 -1726910 ) ( 34930 -1723810 ) + + LAYER met5 ( -2928750 -1774110 ) ( 30130 -1771010 ) + + FIXED ( 2909120 1759840 ) N ; + - vdda1 + NET vdda1 + SPECIAL + DIRECTION INPUT + USE POWER + + PORT + + LAYER met4 ( -1550 -1788510 ) ( 1550 1788510 ) + + LAYER met4 ( -181550 -1788510 ) ( -178450 1788510 ) + + LAYER met4 ( -361550 -1788510 ) ( -358450 1788510 ) + + LAYER met4 ( -541550 -1788510 ) ( -538450 1788510 ) + + LAYER met4 ( -721550 540160 ) ( -718450 1788510 ) + + LAYER met4 ( -901550 540160 ) ( -898450 1788510 ) + + LAYER met4 ( -1081550 540160 ) ( -1078450 1788510 ) + + LAYER met4 ( -1261550 540160 ) ( -1258450 1788510 ) + + LAYER met4 ( -1441550 540160 ) ( -1438450 1788510 ) + + LAYER met4 ( -1621550 -1788510 ) ( -1618450 1788510 ) + + LAYER met4 ( -1801550 -1788510 ) ( -1798450 1788510 ) + + LAYER met4 ( -1981550 -1788510 ) ( -1978450 1788510 ) + + LAYER met4 ( -2161550 -1788510 ) ( -2158450 1788510 ) + + LAYER met4 ( -2341550 -1788510 ) ( -2338450 1788510 ) + + LAYER met4 ( -2521550 -1788510 ) ( -2518450 1788510 ) + + LAYER met4 ( -2701550 -1788510 ) ( -2698450 1788510 ) + + LAYER met4 ( 198030 -1783710 ) ( 201130 1783710 ) + + LAYER met4 ( -2776950 -1783710 ) ( -2773850 1783710 ) + + LAYER met4 ( -721550 -1788510 ) ( -718450 -79840 ) + + LAYER met4 ( -901550 -1788510 ) ( -898450 -79840 ) + + LAYER met4 ( -1081550 -1788510 ) ( -1078450 -79840 ) + + LAYER met4 ( -1261550 -1788510 ) ( -1258450 -79840 ) + + LAYER met4 ( -1441550 -1788510 ) ( -1438450 -79840 ) + + LAYER met5 ( -2776950 1780610 ) ( 201130 1783710 ) + + LAYER met5 ( -2781750 1711690 ) ( 205930 1714790 ) + + LAYER met5 ( -2781750 1531690 ) ( 205930 1534790 ) + + LAYER met5 ( -2781750 1351690 ) ( 205930 1354790 ) + + LAYER met5 ( -2781750 1171690 ) ( 205930 1174790 ) + + LAYER met5 ( -2781750 991690 ) ( 205930 994790 ) + + LAYER met5 ( -2781750 811690 ) ( 205930 814790 ) + + LAYER met5 ( -2781750 631690 ) ( 205930 634790 ) + + LAYER met5 ( -2781750 451690 ) ( 205930 454790 ) + + LAYER met5 ( -2781750 271690 ) ( 205930 274790 ) + + LAYER met5 ( -2781750 91690 ) ( 205930 94790 ) + + LAYER met5 ( -2781750 -88310 ) ( 205930 -85210 ) + + LAYER met5 ( -2781750 -268310 ) ( 205930 -265210 ) + + LAYER met5 ( -2781750 -448310 ) ( 205930 -445210 ) + + LAYER met5 ( -2781750 -628310 ) ( 205930 -625210 ) + + LAYER met5 ( -2781750 -808310 ) ( 205930 -805210 ) + + LAYER met5 ( -2781750 -988310 ) ( 205930 -985210 ) + + LAYER met5 ( -2781750 -1168310 ) ( 205930 -1165210 ) + + LAYER met5 ( -2781750 -1348310 ) ( 205930 -1345210 ) + + LAYER met5 ( -2781750 -1528310 ) ( 205930 -1525210 ) + + LAYER met5 ( -2781750 -1708310 ) ( 205930 -1705210 ) + + LAYER met5 ( -2776950 -1783710 ) ( 201130 -1780610 ) + + FIXED ( 2747720 1759840 ) N ; + - vdda2 + NET vdda2 + SPECIAL + DIRECTION INPUT + USE POWER + + PORT + + LAYER met4 ( -1550 -1798110 ) ( 1550 1798110 ) + + LAYER met4 ( -181550 -1798110 ) ( -178450 1798110 ) + + LAYER met4 ( -361550 -1798110 ) ( -358450 1798110 ) + + LAYER met4 ( -541550 -1798110 ) ( -538450 1798110 ) + + LAYER met4 ( -721550 540160 ) ( -718450 1798110 ) + + LAYER met4 ( -901550 540160 ) ( -898450 1798110 ) + + LAYER met4 ( -1081550 540160 ) ( -1078450 1798110 ) + + LAYER met4 ( -1261550 540160 ) ( -1258450 1798110 ) + + LAYER met4 ( -1441550 540160 ) ( -1438450 1798110 ) + + LAYER met4 ( -1621550 -1798110 ) ( -1618450 1798110 ) + + LAYER met4 ( -1801550 -1798110 ) ( -1798450 1798110 ) + + LAYER met4 ( -1981550 -1798110 ) ( -1978450 1798110 ) + + LAYER met4 ( -2161550 -1798110 ) ( -2158450 1798110 ) + + LAYER met4 ( -2341550 -1798110 ) ( -2338450 1798110 ) + + LAYER met4 ( -2521550 -1798110 ) ( -2518450 1798110 ) + + LAYER met4 ( -2701550 -1798110 ) ( -2698450 1798110 ) + + LAYER met4 ( 189030 -1793310 ) ( 192130 1793310 ) + + LAYER met4 ( -2805150 -1793310 ) ( -2802050 1793310 ) + + LAYER met4 ( -721550 -1798110 ) ( -718450 -79840 ) + + LAYER met4 ( -901550 -1798110 ) ( -898450 -79840 ) + + LAYER met4 ( -1081550 -1798110 ) ( -1078450 -79840 ) + + LAYER met4 ( -1261550 -1798110 ) ( -1258450 -79840 ) + + LAYER met4 ( -1441550 -1798110 ) ( -1438450 -79840 ) + + LAYER met5 ( -2805150 1790210 ) ( 192130 1793310 ) + + LAYER met5 ( -2809950 1730290 ) ( 196930 1733390 ) + + LAYER met5 ( -2809950 1550290 ) ( 196930 1553390 ) + + LAYER met5 ( -2809950 1370290 ) ( 196930 1373390 ) + + LAYER met5 ( -2809950 1190290 ) ( 196930 1193390 ) + + LAYER met5 ( -2809950 1010290 ) ( 196930 1013390 ) + + LAYER met5 ( -2809950 830290 ) ( 196930 833390 ) + + LAYER met5 ( -2809950 650290 ) ( 196930 653390 ) + + LAYER met5 ( -2809950 470290 ) ( 196930 473390 ) + + LAYER met5 ( -2809950 290290 ) ( 196930 293390 ) + + LAYER met5 ( -2809950 110290 ) ( 196930 113390 ) + + LAYER met5 ( -2809950 -69710 ) ( 196930 -66610 ) + + LAYER met5 ( -2809950 -249710 ) ( 196930 -246610 ) + + LAYER met5 ( -2809950 -429710 ) ( 196930 -426610 ) + + LAYER met5 ( -2809950 -609710 ) ( 196930 -606610 ) + + LAYER met5 ( -2809950 -789710 ) ( 196930 -786610 ) + + LAYER met5 ( -2809950 -969710 ) ( 196930 -966610 ) + + LAYER met5 ( -2809950 -1149710 ) ( 196930 -1146610 ) + + LAYER met5 ( -2809950 -1329710 ) ( 196930 -1326610 ) + + LAYER met5 ( -2809950 -1509710 ) ( 196930 -1506610 ) + + LAYER met5 ( -2809950 -1689710 ) ( 196930 -1686610 ) + + LAYER met5 ( -2805150 -1793310 ) ( 192130 -1790210 ) + + FIXED ( 2766320 1759840 ) N ; + - vssa1 + NET vssa1 + SPECIAL + DIRECTION INPUT + USE GROUND + + PORT + + LAYER met4 ( -1550 -1788510 ) ( 1550 1788510 ) + + LAYER met4 ( -115930 -1788510 ) ( -112830 1788510 ) + + LAYER met4 ( -295930 -1788510 ) ( -292830 1788510 ) + + LAYER met4 ( -475930 -1788510 ) ( -472830 1788510 ) + + LAYER met4 ( -655930 -1788510 ) ( -652830 1788510 ) + + LAYER met4 ( -835930 -1788510 ) ( -832830 1788510 ) + + LAYER met4 ( -1015930 540160 ) ( -1012830 1788510 ) + + LAYER met4 ( -1195930 540160 ) ( -1192830 1788510 ) + + LAYER met4 ( -1375930 540160 ) ( -1372830 1788510 ) + + LAYER met4 ( -1555930 540160 ) ( -1552830 1788510 ) + + LAYER met4 ( -1735930 540160 ) ( -1732830 1788510 ) + + LAYER met4 ( -1915930 -1788510 ) ( -1912830 1788510 ) + + LAYER met4 ( -2095930 -1788510 ) ( -2092830 1788510 ) + + LAYER met4 ( -2275930 -1788510 ) ( -2272830 1788510 ) + + LAYER met4 ( -2455930 -1788510 ) ( -2452830 1788510 ) + + LAYER met4 ( -2635930 -1788510 ) ( -2632830 1788510 ) + + LAYER met4 ( -2815930 -1788510 ) ( -2812830 1788510 ) + + LAYER met4 ( -2986130 -1788510 ) ( -2983030 1788510 ) + + LAYER met4 ( -1015930 -1788510 ) ( -1012830 -79840 ) + + LAYER met4 ( -1195930 -1788510 ) ( -1192830 -79840 ) + + LAYER met4 ( -1375930 -1788510 ) ( -1372830 -79840 ) + + LAYER met4 ( -1555930 -1788510 ) ( -1552830 -79840 ) + + LAYER met4 ( -1735930 -1788510 ) ( -1732830 -79840 ) + + LAYER met5 ( -2986130 1785410 ) ( 1550 1788510 ) + + LAYER met5 ( -2986130 1621690 ) ( 1550 1624790 ) + + LAYER met5 ( -2986130 1441690 ) ( 1550 1444790 ) + + LAYER met5 ( -2986130 1261690 ) ( 1550 1264790 ) + + LAYER met5 ( -2986130 1081690 ) ( 1550 1084790 ) + + LAYER met5 ( -2986130 901690 ) ( 1550 904790 ) + + LAYER met5 ( -2986130 721690 ) ( 1550 724790 ) + + LAYER met5 ( -2986130 541690 ) ( 1550 544790 ) + + LAYER met5 ( -2986130 361690 ) ( 1550 364790 ) + + LAYER met5 ( -2986130 181690 ) ( 1550 184790 ) + + LAYER met5 ( -2986130 1690 ) ( 1550 4790 ) + + LAYER met5 ( -2986130 -178310 ) ( 1550 -175210 ) + + LAYER met5 ( -2986130 -358310 ) ( 1550 -355210 ) + + LAYER met5 ( -2986130 -538310 ) ( 1550 -535210 ) + + LAYER met5 ( -2986130 -718310 ) ( 1550 -715210 ) + + LAYER met5 ( -2986130 -898310 ) ( 1550 -895210 ) + + LAYER met5 ( -2986130 -1078310 ) ( 1550 -1075210 ) + + LAYER met5 ( -2986130 -1258310 ) ( 1550 -1255210 ) + + LAYER met5 ( -2986130 -1438310 ) ( 1550 -1435210 ) + + LAYER met5 ( -2986130 -1618310 ) ( 1550 -1615210 ) + + LAYER met5 ( -2986130 -1788510 ) ( 1550 -1785410 ) + + FIXED ( 2952100 1759840 ) N ; + - vssa2 + NET vssa2 + SPECIAL + DIRECTION INPUT + USE GROUND + + PORT + + LAYER met4 ( -1550 -1798110 ) ( 1550 1798110 ) + + LAYER met4 ( -106930 -1798110 ) ( -103830 1798110 ) + + LAYER met4 ( -286930 -1798110 ) ( -283830 1798110 ) + + LAYER met4 ( -466930 -1798110 ) ( -463830 1798110 ) + + LAYER met4 ( -646930 -1798110 ) ( -643830 1798110 ) + + LAYER met4 ( -826930 -1798110 ) ( -823830 1798110 ) + + LAYER met4 ( -1006930 540160 ) ( -1003830 1798110 ) + + LAYER met4 ( -1186930 540160 ) ( -1183830 1798110 ) + + LAYER met4 ( -1366930 540160 ) ( -1363830 1798110 ) + + LAYER met4 ( -1546930 540160 ) ( -1543830 1798110 ) + + LAYER met4 ( -1726930 540160 ) ( -1723830 1798110 ) + + LAYER met4 ( -1906930 -1798110 ) ( -1903830 1798110 ) + + LAYER met4 ( -2086930 -1798110 ) ( -2083830 1798110 ) + + LAYER met4 ( -2266930 -1798110 ) ( -2263830 1798110 ) + + LAYER met4 ( -2446930 -1798110 ) ( -2443830 1798110 ) + + LAYER met4 ( -2626930 -1798110 ) ( -2623830 1798110 ) + + LAYER met4 ( -2806930 -1798110 ) ( -2803830 1798110 ) + + LAYER met4 ( -3005330 -1798110 ) ( -3002230 1798110 ) + + LAYER met4 ( -1006930 -1798110 ) ( -1003830 -79840 ) + + LAYER met4 ( -1186930 -1798110 ) ( -1183830 -79840 ) + + LAYER met4 ( -1366930 -1798110 ) ( -1363830 -79840 ) + + LAYER met4 ( -1546930 -1798110 ) ( -1543830 -79840 ) + + LAYER met4 ( -1726930 -1798110 ) ( -1723830 -79840 ) + + LAYER met5 ( -3005330 1795010 ) ( 1550 1798110 ) + + LAYER met5 ( -3005330 1640290 ) ( 1550 1643390 ) + + LAYER met5 ( -3005330 1460290 ) ( 1550 1463390 ) + + LAYER met5 ( -3005330 1280290 ) ( 1550 1283390 ) + + LAYER met5 ( -3005330 1100290 ) ( 1550 1103390 ) + + LAYER met5 ( -3005330 920290 ) ( 1550 923390 ) + + LAYER met5 ( -3005330 740290 ) ( 1550 743390 ) + + LAYER met5 ( -3005330 560290 ) ( 1550 563390 ) + + LAYER met5 ( -3005330 380290 ) ( 1550 383390 ) + + LAYER met5 ( -3005330 200290 ) ( 1550 203390 ) + + LAYER met5 ( -3005330 20290 ) ( 1550 23390 ) + + LAYER met5 ( -3005330 -159710 ) ( 1550 -156610 ) + + LAYER met5 ( -3005330 -339710 ) ( 1550 -336610 ) + + LAYER met5 ( -3005330 -519710 ) ( 1550 -516610 ) + + LAYER met5 ( -3005330 -699710 ) ( 1550 -696610 ) + + LAYER met5 ( -3005330 -879710 ) ( 1550 -876610 ) + + LAYER met5 ( -3005330 -1059710 ) ( 1550 -1056610 ) + + LAYER met5 ( -3005330 -1239710 ) ( 1550 -1236610 ) + + LAYER met5 ( -3005330 -1419710 ) ( 1550 -1416610 ) + + LAYER met5 ( -3005330 -1599710 ) ( 1550 -1596610 ) + + LAYER met5 ( -3005330 -1798110 ) ( 1550 -1795010 ) + + FIXED ( 2961700 1759840 ) N ; + - vssd1 + NET vssd1 + SPECIAL + DIRECTION INPUT + USE GROUND + + PORT + + LAYER met4 ( -1550 -1769310 ) ( 1550 1769310 ) + + LAYER met4 ( -133930 -1769310 ) ( -130830 1769310 ) + + LAYER met4 ( -313930 -1769310 ) ( -310830 1769310 ) + + LAYER met4 ( -493930 -1769310 ) ( -490830 1769310 ) + + LAYER met4 ( -673930 -1769310 ) ( -670830 1769310 ) + + LAYER met4 ( -853930 540160 ) ( -850830 1769310 ) + + LAYER met4 ( -1033930 540160 ) ( -1030830 1769310 ) + + LAYER met4 ( -1213930 540160 ) ( -1210830 1769310 ) + + LAYER met4 ( -1393930 540160 ) ( -1390830 1769310 ) + + LAYER met4 ( -1573930 540160 ) ( -1570830 1769310 ) + + LAYER met4 ( -1753930 540160 ) ( -1750830 1769310 ) + + LAYER met4 ( -1933930 -1769310 ) ( -1930830 1769310 ) + + LAYER met4 ( -2113930 -1769310 ) ( -2110830 1769310 ) + + LAYER met4 ( -2293930 -1769310 ) ( -2290830 1769310 ) + + LAYER met4 ( -2473930 -1769310 ) ( -2470830 1769310 ) + + LAYER met4 ( -2653930 -1769310 ) ( -2650830 1769310 ) + + LAYER met4 ( -2833930 -1769310 ) ( -2830830 1769310 ) + + LAYER met4 ( -2947730 -1769310 ) ( -2944630 1769310 ) + + LAYER met4 ( -853930 -1769310 ) ( -850830 -79840 ) + + LAYER met4 ( -1033930 -1769310 ) ( -1030830 -79840 ) + + LAYER met4 ( -1213930 -1769310 ) ( -1210830 -79840 ) + + LAYER met4 ( -1393930 -1769310 ) ( -1390830 -79840 ) + + LAYER met4 ( -1573930 -1769310 ) ( -1570830 -79840 ) + + LAYER met4 ( -1753930 -1769310 ) ( -1750830 -79840 ) + + LAYER met5 ( -2947730 1766210 ) ( 1550 1769310 ) + + LAYER met5 ( -2947730 1584490 ) ( 1550 1587590 ) + + LAYER met5 ( -2947730 1404490 ) ( 1550 1407590 ) + + LAYER met5 ( -2947730 1224490 ) ( 1550 1227590 ) + + LAYER met5 ( -2947730 1044490 ) ( 1550 1047590 ) + + LAYER met5 ( -2947730 864490 ) ( 1550 867590 ) + + LAYER met5 ( -2947730 684490 ) ( 1550 687590 ) + + LAYER met5 ( -2947730 504490 ) ( 1550 507590 ) + + LAYER met5 ( -2947730 324490 ) ( 1550 327590 ) + + LAYER met5 ( -2947730 144490 ) ( 1550 147590 ) + + LAYER met5 ( -2947730 -35510 ) ( 1550 -32410 ) + + LAYER met5 ( -2947730 -215510 ) ( 1550 -212410 ) + + LAYER met5 ( -2947730 -395510 ) ( 1550 -392410 ) + + LAYER met5 ( -2947730 -575510 ) ( 1550 -572410 ) + + LAYER met5 ( -2947730 -755510 ) ( 1550 -752410 ) + + LAYER met5 ( -2947730 -935510 ) ( 1550 -932410 ) + + LAYER met5 ( -2947730 -1115510 ) ( 1550 -1112410 ) + + LAYER met5 ( -2947730 -1295510 ) ( 1550 -1292410 ) + + LAYER met5 ( -2947730 -1475510 ) ( 1550 -1472410 ) + + LAYER met5 ( -2947730 -1655510 ) ( 1550 -1652410 ) + + LAYER met5 ( -2947730 -1769310 ) ( 1550 -1766210 ) + + FIXED ( 2932900 1759840 ) N ; + - vssd2 + NET vssd2 + SPECIAL + DIRECTION INPUT + USE GROUND + + PORT + + LAYER met4 ( -1550 -1778910 ) ( 1550 1778910 ) + + LAYER met4 ( -124930 -1778910 ) ( -121830 1778910 ) + + LAYER met4 ( -304930 -1778910 ) ( -301830 1778910 ) + + LAYER met4 ( -484930 -1778910 ) ( -481830 1778910 ) + + LAYER met4 ( -664930 -1778910 ) ( -661830 1778910 ) + + LAYER met4 ( -844930 -1778910 ) ( -841830 1778910 ) + + LAYER met4 ( -1024930 540160 ) ( -1021830 1778910 ) + + LAYER met4 ( -1204930 540160 ) ( -1201830 1778910 ) + + LAYER met4 ( -1384930 540160 ) ( -1381830 1778910 ) + + LAYER met4 ( -1564930 540160 ) ( -1561830 1778910 ) + + LAYER met4 ( -1744930 540160 ) ( -1741830 1778910 ) + + LAYER met4 ( -1924930 -1778910 ) ( -1921830 1778910 ) + + LAYER met4 ( -2104930 -1778910 ) ( -2101830 1778910 ) + + LAYER met4 ( -2284930 -1778910 ) ( -2281830 1778910 ) + + LAYER met4 ( -2464930 -1778910 ) ( -2461830 1778910 ) + + LAYER met4 ( -2644930 -1778910 ) ( -2641830 1778910 ) + + LAYER met4 ( -2824930 -1778910 ) ( -2821830 1778910 ) + + LAYER met4 ( -2966930 -1778910 ) ( -2963830 1778910 ) + + LAYER met4 ( -1024930 -1778910 ) ( -1021830 -79840 ) + + LAYER met4 ( -1204930 -1778910 ) ( -1201830 -79840 ) + + LAYER met4 ( -1384930 -1778910 ) ( -1381830 -79840 ) + + LAYER met4 ( -1564930 -1778910 ) ( -1561830 -79840 ) + + LAYER met4 ( -1744930 -1778910 ) ( -1741830 -79840 ) + + LAYER met5 ( -2966930 1775810 ) ( 1550 1778910 ) + + LAYER met5 ( -2966930 1603090 ) ( 1550 1606190 ) + + LAYER met5 ( -2966930 1423090 ) ( 1550 1426190 ) + + LAYER met5 ( -2966930 1243090 ) ( 1550 1246190 ) + + LAYER met5 ( -2966930 1063090 ) ( 1550 1066190 ) + + LAYER met5 ( -2966930 883090 ) ( 1550 886190 ) + + LAYER met5 ( -2966930 703090 ) ( 1550 706190 ) + + LAYER met5 ( -2966930 523090 ) ( 1550 526190 ) + + LAYER met5 ( -2966930 343090 ) ( 1550 346190 ) + + LAYER met5 ( -2966930 163090 ) ( 1550 166190 ) + + LAYER met5 ( -2966930 -16910 ) ( 1550 -13810 ) + + LAYER met5 ( -2966930 -196910 ) ( 1550 -193810 ) + + LAYER met5 ( -2966930 -376910 ) ( 1550 -373810 ) + + LAYER met5 ( -2966930 -556910 ) ( 1550 -553810 ) + + LAYER met5 ( -2966930 -736910 ) ( 1550 -733810 ) + + LAYER met5 ( -2966930 -916910 ) ( 1550 -913810 ) + + LAYER met5 ( -2966930 -1096910 ) ( 1550 -1093810 ) + + LAYER met5 ( -2966930 -1276910 ) ( 1550 -1273810 ) + + LAYER met5 ( -2966930 -1456910 ) ( 1550 -1453810 ) + + LAYER met5 ( -2966930 -1636910 ) ( 1550 -1633810 ) + + LAYER met5 ( -2966930 -1778910 ) ( 1550 -1775810 ) + + FIXED ( 2942500 1759840 ) N ; + - wb_clk_i + NET wb_clk_i + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 2990 -1200 ) N ; + - wb_rst_i + NET wb_rst_i + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 8510 -1200 ) N ; + - wbs_ack_o + NET wbs_ack_o + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 14490 -1200 ) N ; + - wbs_adr_i[0] + NET wbs_adr_i[0] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 38410 -1200 ) N ; + - wbs_adr_i[10] + NET wbs_adr_i[10] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 239430 -1200 ) N ; + - wbs_adr_i[11] + NET wbs_adr_i[11] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 256910 -1200 ) N ; + - wbs_adr_i[12] + NET wbs_adr_i[12] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 274850 -1200 ) N ; + - wbs_adr_i[13] + NET wbs_adr_i[13] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 292330 -1200 ) N ; + - wbs_adr_i[14] + NET wbs_adr_i[14] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 310270 -1200 ) N ; + - wbs_adr_i[15] + NET wbs_adr_i[15] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 327750 -1200 ) N ; + - wbs_adr_i[16] + NET wbs_adr_i[16] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 345690 -1200 ) N ; + - wbs_adr_i[17] + NET wbs_adr_i[17] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 363170 -1200 ) N ; + - wbs_adr_i[18] + NET wbs_adr_i[18] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 381110 -1200 ) N ; + - wbs_adr_i[19] + NET wbs_adr_i[19] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 398590 -1200 ) N ; + - wbs_adr_i[1] + NET wbs_adr_i[1] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 61870 -1200 ) N ; + - wbs_adr_i[20] + NET wbs_adr_i[20] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 416530 -1200 ) N ; + - wbs_adr_i[21] + NET wbs_adr_i[21] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 434470 -1200 ) N ; + - wbs_adr_i[22] + NET wbs_adr_i[22] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 451950 -1200 ) N ; + - wbs_adr_i[23] + NET wbs_adr_i[23] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 469890 -1200 ) N ; + - wbs_adr_i[24] + NET wbs_adr_i[24] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 487370 -1200 ) N ; + - wbs_adr_i[25] + NET wbs_adr_i[25] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 505310 -1200 ) N ; + - wbs_adr_i[26] + NET wbs_adr_i[26] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 522790 -1200 ) N ; + - wbs_adr_i[27] + NET wbs_adr_i[27] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 540730 -1200 ) N ; + - wbs_adr_i[28] + NET wbs_adr_i[28] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 558210 -1200 ) N ; + - wbs_adr_i[29] + NET wbs_adr_i[29] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 576150 -1200 ) N ; + - wbs_adr_i[2] + NET wbs_adr_i[2] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 85330 -1200 ) N ; + - wbs_adr_i[30] + NET wbs_adr_i[30] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 594090 -1200 ) N ; + - wbs_adr_i[31] + NET wbs_adr_i[31] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 611570 -1200 ) N ; + - wbs_adr_i[3] + NET wbs_adr_i[3] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 109250 -1200 ) N ; + - wbs_adr_i[4] + NET wbs_adr_i[4] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 132710 -1200 ) N ; + - wbs_adr_i[5] + NET wbs_adr_i[5] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 150650 -1200 ) N ; + - wbs_adr_i[6] + NET wbs_adr_i[6] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 168130 -1200 ) N ; + - wbs_adr_i[7] + NET wbs_adr_i[7] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 186070 -1200 ) N ; + - wbs_adr_i[8] + NET wbs_adr_i[8] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 203550 -1200 ) N ; + - wbs_adr_i[9] + NET wbs_adr_i[9] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 221490 -1200 ) N ; + - wbs_cyc_i + NET wbs_cyc_i + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 20470 -1200 ) N ; + - wbs_dat_i[0] + NET wbs_dat_i[0] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 43930 -1200 ) N ; + - wbs_dat_i[10] + NET wbs_dat_i[10] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 244950 -1200 ) N ; + - wbs_dat_i[11] + NET wbs_dat_i[11] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 262890 -1200 ) N ; + - wbs_dat_i[12] + NET wbs_dat_i[12] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 280370 -1200 ) N ; + - wbs_dat_i[13] + NET wbs_dat_i[13] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 298310 -1200 ) N ; + - wbs_dat_i[14] + NET wbs_dat_i[14] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 316250 -1200 ) N ; + - wbs_dat_i[15] + NET wbs_dat_i[15] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 333730 -1200 ) N ; + - wbs_dat_i[16] + NET wbs_dat_i[16] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 351670 -1200 ) N ; + - wbs_dat_i[17] + NET wbs_dat_i[17] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 369150 -1200 ) N ; + - wbs_dat_i[18] + NET wbs_dat_i[18] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 387090 -1200 ) N ; + - wbs_dat_i[19] + NET wbs_dat_i[19] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 404570 -1200 ) N ; + - wbs_dat_i[1] + NET wbs_dat_i[1] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 67850 -1200 ) N ; + - wbs_dat_i[20] + NET wbs_dat_i[20] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 422510 -1200 ) N ; + - wbs_dat_i[21] + NET wbs_dat_i[21] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 439990 -1200 ) N ; + - wbs_dat_i[22] + NET wbs_dat_i[22] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 457930 -1200 ) N ; + - wbs_dat_i[23] + NET wbs_dat_i[23] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 475870 -1200 ) N ; + - wbs_dat_i[24] + NET wbs_dat_i[24] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 493350 -1200 ) N ; + - wbs_dat_i[25] + NET wbs_dat_i[25] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 511290 -1200 ) N ; + - wbs_dat_i[26] + NET wbs_dat_i[26] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 528770 -1200 ) N ; + - wbs_dat_i[27] + NET wbs_dat_i[27] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 546710 -1200 ) N ; + - wbs_dat_i[28] + NET wbs_dat_i[28] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 564190 -1200 ) N ; + - wbs_dat_i[29] + NET wbs_dat_i[29] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 582130 -1200 ) N ; + - wbs_dat_i[2] + NET wbs_dat_i[2] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 91310 -1200 ) N ; + - wbs_dat_i[30] + NET wbs_dat_i[30] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 599610 -1200 ) N ; + - wbs_dat_i[31] + NET wbs_dat_i[31] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 617550 -1200 ) N ; + - wbs_dat_i[3] + NET wbs_dat_i[3] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 115230 -1200 ) N ; + - wbs_dat_i[4] + NET wbs_dat_i[4] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 138690 -1200 ) N ; + - wbs_dat_i[5] + NET wbs_dat_i[5] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 156630 -1200 ) N ; + - wbs_dat_i[6] + NET wbs_dat_i[6] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 174110 -1200 ) N ; + - wbs_dat_i[7] + NET wbs_dat_i[7] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 192050 -1200 ) N ; + - wbs_dat_i[8] + NET wbs_dat_i[8] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 209530 -1200 ) N ; + - wbs_dat_i[9] + NET wbs_dat_i[9] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 227470 -1200 ) N ; + - wbs_dat_o[0] + NET wbs_dat_o[0] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 49910 -1200 ) N ; + - wbs_dat_o[10] + NET wbs_dat_o[10] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 250930 -1200 ) N ; + - wbs_dat_o[11] + NET wbs_dat_o[11] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 268870 -1200 ) N ; + - wbs_dat_o[12] + NET wbs_dat_o[12] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 286350 -1200 ) N ; + - wbs_dat_o[13] + NET wbs_dat_o[13] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 304290 -1200 ) N ; + - wbs_dat_o[14] + NET wbs_dat_o[14] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 321770 -1200 ) N ; + - wbs_dat_o[15] + NET wbs_dat_o[15] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 339710 -1200 ) N ; + - wbs_dat_o[16] + NET wbs_dat_o[16] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 357650 -1200 ) N ; + - wbs_dat_o[17] + NET wbs_dat_o[17] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 375130 -1200 ) N ; + - wbs_dat_o[18] + NET wbs_dat_o[18] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 393070 -1200 ) N ; + - wbs_dat_o[19] + NET wbs_dat_o[19] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 410550 -1200 ) N ; + - wbs_dat_o[1] + NET wbs_dat_o[1] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 73830 -1200 ) N ; + - wbs_dat_o[20] + NET wbs_dat_o[20] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 428490 -1200 ) N ; + - wbs_dat_o[21] + NET wbs_dat_o[21] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 445970 -1200 ) N ; + - wbs_dat_o[22] + NET wbs_dat_o[22] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 463910 -1200 ) N ; + - wbs_dat_o[23] + NET wbs_dat_o[23] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 481390 -1200 ) N ; + - wbs_dat_o[24] + NET wbs_dat_o[24] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 499330 -1200 ) N ; + - wbs_dat_o[25] + NET wbs_dat_o[25] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 516810 -1200 ) N ; + - wbs_dat_o[26] + NET wbs_dat_o[26] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 534750 -1200 ) N ; + - wbs_dat_o[27] + NET wbs_dat_o[27] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 552690 -1200 ) N ; + - wbs_dat_o[28] + NET wbs_dat_o[28] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 570170 -1200 ) N ; + - wbs_dat_o[29] + NET wbs_dat_o[29] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 588110 -1200 ) N ; + - wbs_dat_o[2] + NET wbs_dat_o[2] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 97290 -1200 ) N ; + - wbs_dat_o[30] + NET wbs_dat_o[30] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 605590 -1200 ) N ; + - wbs_dat_o[31] + NET wbs_dat_o[31] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 623530 -1200 ) N ; + - wbs_dat_o[3] + NET wbs_dat_o[3] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 121210 -1200 ) N ; + - wbs_dat_o[4] + NET wbs_dat_o[4] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 144670 -1200 ) N ; + - wbs_dat_o[5] + NET wbs_dat_o[5] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 162150 -1200 ) N ; + - wbs_dat_o[6] + NET wbs_dat_o[6] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 180090 -1200 ) N ; + - wbs_dat_o[7] + NET wbs_dat_o[7] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 198030 -1200 ) N ; + - wbs_dat_o[8] + NET wbs_dat_o[8] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 215510 -1200 ) N ; + - wbs_dat_o[9] + NET wbs_dat_o[9] + DIRECTION OUTPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 233450 -1200 ) N ; + - wbs_sel_i[0] + NET wbs_sel_i[0] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 55890 -1200 ) N ; + - wbs_sel_i[1] + NET wbs_sel_i[1] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 79810 -1200 ) N ; + - wbs_sel_i[2] + NET wbs_sel_i[2] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 103270 -1200 ) N ; + - wbs_sel_i[3] + NET wbs_sel_i[3] + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 126730 -1200 ) N ; + - wbs_stb_i + NET wbs_stb_i + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 26450 -1200 ) N ; + - wbs_we_i + NET wbs_we_i + DIRECTION INPUT + USE SIGNAL + + PORT + + LAYER met2 ( -280 -3600 ) ( 280 3600 ) + + PLACED ( 32430 -1200 ) N ; +END PINS +SPECIALNETS 8 ; + - vccd1 ( PIN vccd1 ) + USE POWER + + ROUTED met4 0 + SHAPE STRIPE ( 1964840 2175880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1811240 2175880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1657640 2175880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1504040 2175880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1350440 2175880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1196840 2175880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1964840 1995880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1811240 1995880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1657640 1995880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1504040 1995880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1350440 1995880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1196840 1995880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1964840 1815880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1811240 1815880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1657640 1815880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1504040 1815880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1350440 1815880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1196840 1815880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 3522800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 3435880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 3255880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 3075880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 2895880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 2715880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 2535880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 2355880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 2175880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 1995880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 1815880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 1635880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 1455880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 1275880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 1095880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 915880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 735880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 555880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 375880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 195880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 15880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2928100 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2890520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2710520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2530520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2350520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2170520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1990520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1810520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1630520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1450520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1270520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1090520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 910520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 730520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 550520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 370520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 190520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 10520 -3120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -8480 -3120 ) via4_3100x3100 + NEW met5 3100 + SHAPE STRIPE ( -10030 3522800 ) ( 2929650 3522800 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 3435880 ) ( 2934450 3435880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 3255880 ) ( 2934450 3255880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 3075880 ) ( 2934450 3075880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2895880 ) ( 2934450 2895880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2715880 ) ( 2934450 2715880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2535880 ) ( 2934450 2535880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2355880 ) ( 2934450 2355880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2175880 ) ( 2934450 2175880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1995880 ) ( 2934450 1995880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1815880 ) ( 2934450 1815880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1635880 ) ( 2934450 1635880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1455880 ) ( 2934450 1455880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1275880 ) ( 2934450 1275880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1095880 ) ( 2934450 1095880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 915880 ) ( 2934450 915880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 735880 ) ( 2934450 735880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 555880 ) ( 2934450 555880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 375880 ) ( 2934450 375880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 195880 ) ( 2934450 195880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 15880 ) ( 2934450 15880 ) + NEW met5 3100 + SHAPE STRIPE ( -10030 -3120 ) ( 2929650 -3120 ) + NEW met4 3100 + SHAPE STRIPE ( 2890520 -9470 ) ( 2890520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2710520 -9470 ) ( 2710520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2530520 -9470 ) ( 2530520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2350520 -9470 ) ( 2350520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2170520 -9470 ) ( 2170520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1990520 2300000 ) ( 1990520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1810520 2300000 ) ( 1810520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1630520 2300000 ) ( 1630520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1450520 2300000 ) ( 1450520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1270520 2300000 ) ( 1270520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1090520 -9470 ) ( 1090520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 910520 -9470 ) ( 910520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 730520 -9470 ) ( 730520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 550520 -9470 ) ( 550520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 370520 -9470 ) ( 370520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 190520 -9470 ) ( 190520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 10520 -9470 ) ( 10520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2928100 -4670 ) ( 2928100 3524350 ) + NEW met4 3100 + SHAPE STRIPE ( -8480 -4670 ) ( -8480 3524350 ) + NEW met4 3100 + SHAPE STRIPE ( 1990520 -9470 ) ( 1990520 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1810520 -9470 ) ( 1810520 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1630520 -9470 ) ( 1630520 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1450520 -9470 ) ( 1450520 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1270520 -9470 ) ( 1270520 1680000 ) ; + - vccd2 ( PIN vccd2 ) + USE POWER + + ROUTED met4 0 + SHAPE STRIPE ( 2937700 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 3532400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 3454480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 3274480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 3094480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 2914480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 2734480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 2554480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 2374480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 2194480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 2014480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 1834480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 1654480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 1474480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 1294480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 1114480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 934480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 754480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 574480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 394480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 214480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 34480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2937700 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2909120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2729120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2549120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2369120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2189120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2009120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1829120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1649120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1469120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1289120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1109120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 929120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 749120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 569120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 389120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 209120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 29120 -12720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -18080 -12720 ) via4_3100x3100 + NEW met5 3100 + SHAPE STRIPE ( -19630 3532400 ) ( 2939250 3532400 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 3454480 ) ( 2944050 3454480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 3274480 ) ( 2944050 3274480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 3094480 ) ( 2944050 3094480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2914480 ) ( 2944050 2914480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2734480 ) ( 2944050 2734480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2554480 ) ( 2944050 2554480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2374480 ) ( 2944050 2374480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2194480 ) ( 2944050 2194480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2014480 ) ( 2944050 2014480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1834480 ) ( 2944050 1834480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1654480 ) ( 2944050 1654480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1474480 ) ( 2944050 1474480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1294480 ) ( 2944050 1294480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1114480 ) ( 2944050 1114480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 934480 ) ( 2944050 934480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 754480 ) ( 2944050 754480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 574480 ) ( 2944050 574480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 394480 ) ( 2944050 394480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 214480 ) ( 2944050 214480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 34480 ) ( 2944050 34480 ) + NEW met5 3100 + SHAPE STRIPE ( -19630 -12720 ) ( 2939250 -12720 ) + NEW met4 3100 + SHAPE STRIPE ( 2909120 -19070 ) ( 2909120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2729120 -19070 ) ( 2729120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2549120 -19070 ) ( 2549120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2369120 -19070 ) ( 2369120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2189120 -19070 ) ( 2189120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2009120 2300000 ) ( 2009120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1829120 2300000 ) ( 1829120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1649120 2300000 ) ( 1649120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1469120 2300000 ) ( 1469120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1289120 2300000 ) ( 1289120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1109120 -19070 ) ( 1109120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 929120 -19070 ) ( 929120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 749120 -19070 ) ( 749120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 569120 -19070 ) ( 569120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 389120 -19070 ) ( 389120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 209120 -19070 ) ( 209120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 29120 -19070 ) ( 29120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2937700 -14270 ) ( 2937700 3533950 ) + NEW met4 3100 + SHAPE STRIPE ( -18080 -14270 ) ( -18080 3533950 ) + NEW met4 3100 + SHAPE STRIPE ( 2009120 -19070 ) ( 2009120 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1829120 -19070 ) ( 1829120 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1649120 -19070 ) ( 1649120 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1469120 -19070 ) ( 1469120 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1289120 -19070 ) ( 1289120 1680000 ) ; + - vdda1 ( PIN vdda1 ) + USE POWER + + ROUTED met4 0 + SHAPE STRIPE ( 2947300 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 3542000 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 3473080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 3293080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 3113080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 2933080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 2753080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 2573080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 2393080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 2213080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 2033080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 1853080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 1673080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 1493080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 1313080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 1133080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 953080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 773080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 593080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 413080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 233080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 53080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2947300 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2747720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2567720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2387720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2207720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2027720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1847720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1667720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1487720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1307720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1127720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 947720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 767720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 587720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 407720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 227720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 47720 -22320 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -27680 -22320 ) via4_3100x3100 + NEW met5 3100 + SHAPE STRIPE ( -29230 3542000 ) ( 2948850 3542000 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 3473080 ) ( 2953650 3473080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 3293080 ) ( 2953650 3293080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 3113080 ) ( 2953650 3113080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2933080 ) ( 2953650 2933080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2753080 ) ( 2953650 2753080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2573080 ) ( 2953650 2573080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2393080 ) ( 2953650 2393080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2213080 ) ( 2953650 2213080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2033080 ) ( 2953650 2033080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1853080 ) ( 2953650 1853080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1673080 ) ( 2953650 1673080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1493080 ) ( 2953650 1493080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1313080 ) ( 2953650 1313080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1133080 ) ( 2953650 1133080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 953080 ) ( 2953650 953080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 773080 ) ( 2953650 773080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 593080 ) ( 2953650 593080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 413080 ) ( 2953650 413080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 233080 ) ( 2953650 233080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 53080 ) ( 2953650 53080 ) + NEW met5 3100 + SHAPE STRIPE ( -29230 -22320 ) ( 2948850 -22320 ) + NEW met4 3100 + SHAPE STRIPE ( 2747720 -28670 ) ( 2747720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2567720 -28670 ) ( 2567720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2387720 -28670 ) ( 2387720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2207720 -28670 ) ( 2207720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2027720 2300000 ) ( 2027720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1847720 2300000 ) ( 1847720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1667720 2300000 ) ( 1667720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1487720 2300000 ) ( 1487720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1307720 2300000 ) ( 1307720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1127720 -28670 ) ( 1127720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 947720 -28670 ) ( 947720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 767720 -28670 ) ( 767720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 587720 -28670 ) ( 587720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 407720 -28670 ) ( 407720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 227720 -28670 ) ( 227720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 47720 -28670 ) ( 47720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2947300 -23870 ) ( 2947300 3543550 ) + NEW met4 3100 + SHAPE STRIPE ( -27680 -23870 ) ( -27680 3543550 ) + NEW met4 3100 + SHAPE STRIPE ( 2027720 -28670 ) ( 2027720 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1847720 -28670 ) ( 1847720 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1667720 -28670 ) ( 1667720 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1487720 -28670 ) ( 1487720 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1307720 -28670 ) ( 1307720 1680000 ) ; + - vdda2 ( PIN vdda2 ) + USE POWER + + ROUTED met4 0 + SHAPE STRIPE ( 2956900 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 3551600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 3491680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 3311680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 3131680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 2951680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 2771680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 2591680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 2411680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 2231680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 2051680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 1871680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 1691680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 1511680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 1331680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 1151680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 971680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 791680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 611680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 431680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 251680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 71680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2956900 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2766320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2586320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2406320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2226320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2046320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1866320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1686320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1506320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1326320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1146320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 966320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 786320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 606320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 426320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 246320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 66320 -31920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -37280 -31920 ) via4_3100x3100 + NEW met5 3100 + SHAPE STRIPE ( -38830 3551600 ) ( 2958450 3551600 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 3491680 ) ( 2963250 3491680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 3311680 ) ( 2963250 3311680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 3131680 ) ( 2963250 3131680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2951680 ) ( 2963250 2951680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2771680 ) ( 2963250 2771680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2591680 ) ( 2963250 2591680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2411680 ) ( 2963250 2411680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2231680 ) ( 2963250 2231680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2051680 ) ( 2963250 2051680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1871680 ) ( 2963250 1871680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1691680 ) ( 2963250 1691680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1511680 ) ( 2963250 1511680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1331680 ) ( 2963250 1331680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1151680 ) ( 2963250 1151680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 971680 ) ( 2963250 971680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 791680 ) ( 2963250 791680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 611680 ) ( 2963250 611680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 431680 ) ( 2963250 431680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 251680 ) ( 2963250 251680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 71680 ) ( 2963250 71680 ) + NEW met5 3100 + SHAPE STRIPE ( -38830 -31920 ) ( 2958450 -31920 ) + NEW met4 3100 + SHAPE STRIPE ( 2766320 -38270 ) ( 2766320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2586320 -38270 ) ( 2586320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2406320 -38270 ) ( 2406320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2226320 -38270 ) ( 2226320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2046320 2300000 ) ( 2046320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1866320 2300000 ) ( 1866320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1686320 2300000 ) ( 1686320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1506320 2300000 ) ( 1506320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1326320 2300000 ) ( 1326320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1146320 -38270 ) ( 1146320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 966320 -38270 ) ( 966320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 786320 -38270 ) ( 786320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 606320 -38270 ) ( 606320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 426320 -38270 ) ( 426320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 246320 -38270 ) ( 246320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 66320 -38270 ) ( 66320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2956900 -33470 ) ( 2956900 3553150 ) + NEW met4 3100 + SHAPE STRIPE ( -37280 -33470 ) ( -37280 3553150 ) + NEW met4 3100 + SHAPE STRIPE ( 2046320 -38270 ) ( 2046320 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1866320 -38270 ) ( 1866320 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1686320 -38270 ) ( 1686320 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1506320 -38270 ) ( 1506320 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1326320 -38270 ) ( 1326320 1680000 ) ; + - vssa1 ( PIN vssa1 ) + USE GROUND + + ROUTED met4 0 + SHAPE STRIPE ( 2952100 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 3546800 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 3383080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 3203080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 3023080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 2843080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 2663080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 2483080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 2303080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 2123080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 1943080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 1763080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 1583080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 1403080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 1223080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 1043080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 863080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 683080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 503080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 323080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 143080 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2952100 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2837720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2657720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2477720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2297720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2117720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1937720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1757720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1577720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1397720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1217720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1037720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 857720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 677720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 497720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 317720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 137720 -27120 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -32480 -27120 ) via4_3100x3100 + NEW met5 3100 + SHAPE STRIPE ( -34030 3546800 ) ( 2953650 3546800 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 3383080 ) ( 2953650 3383080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 3203080 ) ( 2953650 3203080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 3023080 ) ( 2953650 3023080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2843080 ) ( 2953650 2843080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2663080 ) ( 2953650 2663080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2483080 ) ( 2953650 2483080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2303080 ) ( 2953650 2303080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 2123080 ) ( 2953650 2123080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1943080 ) ( 2953650 1943080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1763080 ) ( 2953650 1763080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1583080 ) ( 2953650 1583080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1403080 ) ( 2953650 1403080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1223080 ) ( 2953650 1223080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 1043080 ) ( 2953650 1043080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 863080 ) ( 2953650 863080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 683080 ) ( 2953650 683080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 503080 ) ( 2953650 503080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 323080 ) ( 2953650 323080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 143080 ) ( 2953650 143080 ) + NEW met5 3100 + SHAPE STRIPE ( -34030 -27120 ) ( 2953650 -27120 ) + NEW met4 3100 + SHAPE STRIPE ( 2952100 -28670 ) ( 2952100 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2837720 -28670 ) ( 2837720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2657720 -28670 ) ( 2657720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2477720 -28670 ) ( 2477720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2297720 -28670 ) ( 2297720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 2117720 -28670 ) ( 2117720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1937720 2300000 ) ( 1937720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1757720 2300000 ) ( 1757720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1577720 2300000 ) ( 1577720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1397720 2300000 ) ( 1397720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1217720 2300000 ) ( 1217720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1037720 -28670 ) ( 1037720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 857720 -28670 ) ( 857720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 677720 -28670 ) ( 677720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 497720 -28670 ) ( 497720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 317720 -28670 ) ( 317720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 137720 -28670 ) ( 137720 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( -32480 -28670 ) ( -32480 3548350 ) + NEW met4 3100 + SHAPE STRIPE ( 1937720 -28670 ) ( 1937720 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1757720 -28670 ) ( 1757720 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1577720 -28670 ) ( 1577720 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1397720 -28670 ) ( 1397720 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1217720 -28670 ) ( 1217720 1680000 ) ; + - vssa2 ( PIN vssa2 ) + USE GROUND + + ROUTED met4 0 + SHAPE STRIPE ( 2961700 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 3556400 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 3401680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 3221680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 3041680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 2861680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 2681680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 2501680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 2321680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 2141680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 1961680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 1781680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 1601680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 1421680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 1241680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 1061680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 881680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 701680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 521680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 341680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 161680 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2961700 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2856320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2676320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2496320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2316320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2136320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1956320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1776320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1596320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1416320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1236320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1056320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 876320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 696320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 516320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 336320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 156320 -36720 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -42080 -36720 ) via4_3100x3100 + NEW met5 3100 + SHAPE STRIPE ( -43630 3556400 ) ( 2963250 3556400 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 3401680 ) ( 2963250 3401680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 3221680 ) ( 2963250 3221680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 3041680 ) ( 2963250 3041680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2861680 ) ( 2963250 2861680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2681680 ) ( 2963250 2681680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2501680 ) ( 2963250 2501680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2321680 ) ( 2963250 2321680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 2141680 ) ( 2963250 2141680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1961680 ) ( 2963250 1961680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1781680 ) ( 2963250 1781680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1601680 ) ( 2963250 1601680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1421680 ) ( 2963250 1421680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1241680 ) ( 2963250 1241680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 1061680 ) ( 2963250 1061680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 881680 ) ( 2963250 881680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 701680 ) ( 2963250 701680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 521680 ) ( 2963250 521680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 341680 ) ( 2963250 341680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 161680 ) ( 2963250 161680 ) + NEW met5 3100 + SHAPE STRIPE ( -43630 -36720 ) ( 2963250 -36720 ) + NEW met4 3100 + SHAPE STRIPE ( 2961700 -38270 ) ( 2961700 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2856320 -38270 ) ( 2856320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2676320 -38270 ) ( 2676320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2496320 -38270 ) ( 2496320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2316320 -38270 ) ( 2316320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 2136320 -38270 ) ( 2136320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1956320 2300000 ) ( 1956320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1776320 2300000 ) ( 1776320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1596320 2300000 ) ( 1596320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1416320 2300000 ) ( 1416320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1236320 2300000 ) ( 1236320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1056320 -38270 ) ( 1056320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 876320 -38270 ) ( 876320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 696320 -38270 ) ( 696320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 516320 -38270 ) ( 516320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 336320 -38270 ) ( 336320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 156320 -38270 ) ( 156320 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( -42080 -38270 ) ( -42080 3557950 ) + NEW met4 3100 + SHAPE STRIPE ( 1956320 -38270 ) ( 1956320 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1776320 -38270 ) ( 1776320 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1596320 -38270 ) ( 1596320 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1416320 -38270 ) ( 1416320 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1236320 -38270 ) ( 1236320 1680000 ) ; + - vssd1 ( PIN vssd1 ) + USE GROUND + + ROUTED met4 0 + SHAPE STRIPE ( 2041640 2265880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1888040 2265880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1734440 2265880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1580840 2265880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1427240 2265880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1273640 2265880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 2041640 2085880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1888040 2085880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1734440 2085880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1580840 2085880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1427240 2085880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1273640 2085880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 2041640 1905880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1888040 1905880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1734440 1905880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1580840 1905880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1427240 1905880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1273640 1905880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 2041640 1725880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1888040 1725880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1734440 1725880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1580840 1725880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1427240 1725880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 1273640 1725880 ) via4_1600x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 3527600 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 3345880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 3165880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 2985880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 2805880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 2625880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 2445880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 2265880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 2085880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 1905880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 1725880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 1545880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 1365880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 1185880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 1005880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 825880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 645880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 465880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 285880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 105880 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2932900 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2800520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2620520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2440520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2260520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2080520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1900520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1720520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1540520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1360520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1180520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1000520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 820520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 640520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 460520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 280520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 100520 -7920 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -13280 -7920 ) via4_3100x3100 + NEW met5 3100 + SHAPE STRIPE ( -14830 3527600 ) ( 2934450 3527600 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 3345880 ) ( 2934450 3345880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 3165880 ) ( 2934450 3165880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2985880 ) ( 2934450 2985880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2805880 ) ( 2934450 2805880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2625880 ) ( 2934450 2625880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2445880 ) ( 2934450 2445880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2265880 ) ( 2934450 2265880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 2085880 ) ( 2934450 2085880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1905880 ) ( 2934450 1905880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1725880 ) ( 2934450 1725880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1545880 ) ( 2934450 1545880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1365880 ) ( 2934450 1365880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1185880 ) ( 2934450 1185880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 1005880 ) ( 2934450 1005880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 825880 ) ( 2934450 825880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 645880 ) ( 2934450 645880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 465880 ) ( 2934450 465880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 285880 ) ( 2934450 285880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 105880 ) ( 2934450 105880 ) + NEW met5 3100 + SHAPE STRIPE ( -14830 -7920 ) ( 2934450 -7920 ) + NEW met4 3100 + SHAPE STRIPE ( 2932900 -9470 ) ( 2932900 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2800520 -9470 ) ( 2800520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2620520 -9470 ) ( 2620520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2440520 -9470 ) ( 2440520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2260520 -9470 ) ( 2260520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2080520 2300000 ) ( 2080520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1900520 2300000 ) ( 1900520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1720520 2300000 ) ( 1720520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1540520 2300000 ) ( 1540520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1360520 2300000 ) ( 1360520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1180520 2300000 ) ( 1180520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 1000520 -9470 ) ( 1000520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 820520 -9470 ) ( 820520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 640520 -9470 ) ( 640520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 460520 -9470 ) ( 460520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 280520 -9470 ) ( 280520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 100520 -9470 ) ( 100520 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( -13280 -9470 ) ( -13280 3529150 ) + NEW met4 3100 + SHAPE STRIPE ( 2080520 -9470 ) ( 2080520 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1900520 -9470 ) ( 1900520 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1720520 -9470 ) ( 1720520 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1540520 -9470 ) ( 1540520 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1360520 -9470 ) ( 1360520 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1180520 -9470 ) ( 1180520 1680000 ) ; + - vssd2 ( PIN vssd2 ) + USE GROUND + + ROUTED met4 0 + SHAPE STRIPE ( 2942500 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 3537200 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 3364480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 3184480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 3004480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 2824480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 2644480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 2464480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 2284480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 2104480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 1924480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 1744480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 1564480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 1384480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 1204480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 1024480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 844480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 664480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 484480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 304480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 124480 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2942500 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2819120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2639120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2459120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2279120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 2099120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1919120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1739120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1559120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1379120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1199120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 1019120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 839120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 659120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 479120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 299120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( 119120 -17520 ) via4_3100x3100 + NEW met4 0 + SHAPE STRIPE ( -22880 -17520 ) via4_3100x3100 + NEW met5 3100 + SHAPE STRIPE ( -24430 3537200 ) ( 2944050 3537200 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 3364480 ) ( 2944050 3364480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 3184480 ) ( 2944050 3184480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 3004480 ) ( 2944050 3004480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2824480 ) ( 2944050 2824480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2644480 ) ( 2944050 2644480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2464480 ) ( 2944050 2464480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2284480 ) ( 2944050 2284480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 2104480 ) ( 2944050 2104480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1924480 ) ( 2944050 1924480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1744480 ) ( 2944050 1744480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1564480 ) ( 2944050 1564480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1384480 ) ( 2944050 1384480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1204480 ) ( 2944050 1204480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 1024480 ) ( 2944050 1024480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 844480 ) ( 2944050 844480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 664480 ) ( 2944050 664480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 484480 ) ( 2944050 484480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 304480 ) ( 2944050 304480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 124480 ) ( 2944050 124480 ) + NEW met5 3100 + SHAPE STRIPE ( -24430 -17520 ) ( 2944050 -17520 ) + NEW met4 3100 + SHAPE STRIPE ( 2942500 -19070 ) ( 2942500 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2819120 -19070 ) ( 2819120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2639120 -19070 ) ( 2639120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2459120 -19070 ) ( 2459120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2279120 -19070 ) ( 2279120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 2099120 -19070 ) ( 2099120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1919120 2300000 ) ( 1919120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1739120 2300000 ) ( 1739120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1559120 2300000 ) ( 1559120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1379120 2300000 ) ( 1379120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1199120 2300000 ) ( 1199120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1019120 -19070 ) ( 1019120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 839120 -19070 ) ( 839120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 659120 -19070 ) ( 659120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 479120 -19070 ) ( 479120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 299120 -19070 ) ( 299120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 119120 -19070 ) ( 119120 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( -22880 -19070 ) ( -22880 3538750 ) + NEW met4 3100 + SHAPE STRIPE ( 1919120 -19070 ) ( 1919120 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1739120 -19070 ) ( 1739120 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1559120 -19070 ) ( 1559120 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1379120 -19070 ) ( 1379120 1680000 ) + NEW met4 3100 + SHAPE STRIPE ( 1199120 -19070 ) ( 1199120 1680000 ) ; +END SPECIALNETS +NETS 637 ; + - analog_io[0] ( PIN analog_io[0] ) + USE SIGNAL ; + - analog_io[10] ( PIN analog_io[10] ) + USE SIGNAL ; + - analog_io[11] ( PIN analog_io[11] ) + USE SIGNAL ; + - analog_io[12] ( PIN analog_io[12] ) + USE SIGNAL ; + - analog_io[13] ( PIN analog_io[13] ) + USE SIGNAL ; + - analog_io[14] ( PIN analog_io[14] ) + USE SIGNAL ; + - analog_io[15] ( PIN analog_io[15] ) + USE SIGNAL ; + - analog_io[16] ( PIN analog_io[16] ) + USE SIGNAL ; + - analog_io[17] ( PIN analog_io[17] ) + USE SIGNAL ; + - analog_io[18] ( PIN analog_io[18] ) + USE SIGNAL ; + - analog_io[19] ( PIN analog_io[19] ) + USE SIGNAL ; + - analog_io[1] ( PIN analog_io[1] ) + USE SIGNAL ; + - analog_io[20] ( PIN analog_io[20] ) + USE SIGNAL ; + - analog_io[21] ( PIN analog_io[21] ) + USE SIGNAL ; + - analog_io[22] ( PIN analog_io[22] ) + USE SIGNAL ; + - analog_io[23] ( PIN analog_io[23] ) + USE SIGNAL ; + - analog_io[24] ( PIN analog_io[24] ) + USE SIGNAL ; + - analog_io[25] ( PIN analog_io[25] ) + USE SIGNAL ; + - analog_io[26] ( PIN analog_io[26] ) + USE SIGNAL ; + - analog_io[27] ( PIN analog_io[27] ) + USE SIGNAL ; + - analog_io[28] ( PIN analog_io[28] ) + USE SIGNAL ; + - analog_io[2] ( PIN analog_io[2] ) + USE SIGNAL ; + - analog_io[3] ( PIN analog_io[3] ) + USE SIGNAL ; + - analog_io[4] ( PIN analog_io[4] ) + USE SIGNAL ; + - analog_io[5] ( PIN analog_io[5] ) + USE SIGNAL ; + - analog_io[6] ( PIN analog_io[6] ) + USE SIGNAL ; + - analog_io[7] ( PIN analog_io[7] ) + USE SIGNAL ; + - analog_io[8] ( PIN analog_io[8] ) + USE SIGNAL ; + - analog_io[9] ( PIN analog_io[9] ) + USE SIGNAL ; + - io_in[0] ( PIN io_in[0] ) ( mprj io_in[0] ) + USE SIGNAL + + ROUTED met2 ( 2900990 32980 ) ( * 34170 ) + NEW met3 ( 2900990 32980 ) ( 2917780 * 0 ) + NEW met2 ( 1178980 2289900 0 ) ( 1179670 * ) + NEW met2 ( 1179670 2289900 ) ( * 2300100 ) + NEW met1 ( 2080350 34170 ) ( 2900990 * ) + NEW met2 ( 2080350 34170 ) ( * 2300100 ) + NEW met3 ( 1179670 2300100 ) ( 2080350 * ) + NEW met1 ( 2900990 34170 ) M1M2_PR + NEW met2 ( 2900990 32980 ) M2M3_PR + NEW met2 ( 1179670 2300100 ) M2M3_PR + NEW met1 ( 2080350 34170 ) M1M2_PR + NEW met2 ( 2080350 2300100 ) M2M3_PR ; + - io_in[10] ( PIN io_in[10] ) ( mprj io_in[10] ) + USE SIGNAL + + ROUTED met2 ( 2900990 2290580 ) ( * 2293810 ) + NEW met3 ( 2900990 2290580 ) ( 2917780 * 0 ) + NEW met2 ( 1415880 2289900 0 ) ( 1417490 * ) + NEW met2 ( 1417490 2289900 ) ( * 2293810 ) + NEW met1 ( 1417490 2293810 ) ( 2900990 * ) + NEW met1 ( 2900990 2293810 ) M1M2_PR + NEW met2 ( 2900990 2290580 ) M2M3_PR + NEW met1 ( 1417490 2293810 ) M1M2_PR ; + - io_in[11] ( PIN io_in[11] ) ( mprj io_in[11] ) + USE SIGNAL + + ROUTED met2 ( 1437270 2289900 ) ( 1439340 * 0 ) + NEW met2 ( 1435430 2401200 ) ( 1437270 * ) + NEW met2 ( 1437270 2289900 ) ( * 2401200 ) + NEW met2 ( 1435430 2401200 ) ( * 2553230 ) + NEW met2 ( 2900990 2553230 ) ( * 2556460 ) + NEW met3 ( 2900990 2556460 ) ( 2917780 * 0 ) + NEW met1 ( 1435430 2553230 ) ( 2900990 * ) + NEW met1 ( 1435430 2553230 ) M1M2_PR + NEW met1 ( 2900990 2553230 ) M1M2_PR + NEW met2 ( 2900990 2556460 ) M2M3_PR ; + - io_in[12] ( PIN io_in[12] ) ( mprj io_in[12] ) + USE SIGNAL + + ROUTED met2 ( 2899150 2815370 ) ( * 2821660 ) + NEW met3 ( 2899150 2821660 ) ( 2917780 * 0 ) + NEW met2 ( 1463030 2289900 ) ( 1463260 * 0 ) + NEW met2 ( 1463030 2289900 ) ( * 2815370 ) + NEW met1 ( 1463030 2815370 ) ( 2899150 * ) + NEW met1 ( 1463030 2815370 ) M1M2_PR + NEW met1 ( 2899150 2815370 ) M1M2_PR + NEW met2 ( 2899150 2821660 ) M2M3_PR ; + - io_in[13] ( PIN io_in[13] ) ( mprj io_in[13] ) + USE SIGNAL + + ROUTED met2 ( 2900990 3084310 ) ( * 3087540 ) + NEW met3 ( 2900990 3087540 ) ( 2917780 * 0 ) + NEW met1 ( 1483730 3084310 ) ( 2900990 * ) + NEW met2 ( 1484650 2289900 ) ( 1486720 * 0 ) + NEW met2 ( 1483730 2401200 ) ( 1484650 * ) + NEW met2 ( 1484650 2289900 ) ( * 2401200 ) + NEW met2 ( 1483730 2401200 ) ( * 3084310 ) + NEW met1 ( 2900990 3084310 ) M1M2_PR + NEW met2 ( 2900990 3087540 ) M2M3_PR + NEW met1 ( 1483730 3084310 ) M1M2_PR ; + - io_in[14] ( PIN io_in[14] ) ( mprj io_in[14] ) + USE SIGNAL + + ROUTED met2 ( 2900990 3353420 ) ( * 3353930 ) + NEW met3 ( 2900990 3353420 ) ( 2917780 * 0 ) + NEW met2 ( 1508570 2289900 ) ( 1510640 * 0 ) + NEW met2 ( 1504430 2401200 ) ( 1508570 * ) + NEW met2 ( 1508570 2289900 ) ( * 2401200 ) + NEW met2 ( 1504430 2401200 ) ( * 3353930 ) + NEW met1 ( 1504430 3353930 ) ( 2900990 * ) + NEW met1 ( 2900990 3353930 ) M1M2_PR + NEW met2 ( 2900990 3353420 ) M2M3_PR + NEW met1 ( 1504430 3353930 ) M1M2_PR ; + - io_in[15] ( PIN io_in[15] ) ( mprj io_in[15] ) + USE SIGNAL + + ROUTED met2 ( 1534100 2289900 0 ) ( 1535710 * ) + NEW met2 ( 1535710 2289900 ) ( * 2308430 ) + NEW met2 ( 2794730 2308430 ) ( * 3512100 ) + NEW met2 ( 2794730 3512100 ) ( 2798410 * ) + NEW met2 ( 2798410 3512100 ) ( * 3517980 0 ) + NEW met1 ( 1535710 2308430 ) ( 2794730 * ) + NEW met1 ( 1535710 2308430 ) M1M2_PR + NEW met1 ( 2794730 2308430 ) M1M2_PR ; + - io_in[16] ( PIN io_in[16] ) ( mprj io_in[16] ) + USE SIGNAL + + ROUTED met2 ( 1558020 2289900 0 ) ( 1559170 * ) + NEW met2 ( 1559170 2289900 ) ( * 2309450 ) + NEW met2 ( 2470430 3517980 ) ( 2473190 * ) + NEW met2 ( 2473190 3517300 ) ( * 3517980 ) + NEW met2 ( 2473190 3517300 ) ( 2474110 * ) + NEW met2 ( 2474110 3517300 ) ( * 3517980 0 ) + NEW met2 ( 2470430 2309450 ) ( * 3517980 ) + NEW met1 ( 1559170 2309450 ) ( 2470430 * ) + NEW met1 ( 1559170 2309450 ) M1M2_PR + NEW met1 ( 2470430 2309450 ) M1M2_PR ; + - io_in[17] ( PIN io_in[17] ) ( mprj io_in[17] ) + USE SIGNAL + + ROUTED met2 ( 2146130 3517980 ) ( 2148430 * ) + NEW met2 ( 2148430 3517300 ) ( * 3517980 ) + NEW met2 ( 2148430 3517300 ) ( 2149350 * ) + NEW met2 ( 2149350 3517300 ) ( * 3517980 0 ) + NEW met2 ( 2146130 2310130 ) ( * 3517980 ) + NEW met2 ( 1581480 2289900 0 ) ( 1583090 * ) + NEW met2 ( 1583090 2289900 ) ( * 2310130 ) + NEW met1 ( 1583090 2310130 ) ( 2146130 * ) + NEW met1 ( 2146130 2310130 ) M1M2_PR + NEW met1 ( 1583090 2310130 ) M1M2_PR ; + - io_in[18] ( PIN io_in[18] ) ( mprj io_in[18] ) + USE SIGNAL + + ROUTED met2 ( 1821830 3512100 ) ( 1825050 * ) + NEW met2 ( 1825050 3512100 ) ( * 3517980 0 ) + NEW met2 ( 1605400 2289900 0 ) ( 1607010 * ) + NEW met2 ( 1607010 2289900 ) ( * 2311150 ) + NEW met1 ( 1607010 2311150 ) ( 1821830 * ) + NEW met2 ( 1821830 2311150 ) ( * 3512100 ) + NEW met1 ( 1607010 2311150 ) M1M2_PR + NEW met1 ( 1821830 2311150 ) M1M2_PR ; + - io_in[19] ( PIN io_in[19] ) ( mprj io_in[19] ) + USE SIGNAL + + ROUTED met2 ( 1628630 2289900 ) ( 1628860 * 0 ) + NEW met2 ( 1628630 2289900 ) ( * 2311490 ) + NEW met1 ( 1497530 2311490 ) ( 1628630 * ) + NEW met2 ( 1497530 3517980 ) ( 1499830 * ) + NEW met2 ( 1499830 3517300 ) ( * 3517980 ) + NEW met2 ( 1499830 3517300 ) ( 1500750 * ) + NEW met2 ( 1500750 3517300 ) ( * 3517980 0 ) + NEW met2 ( 1497530 2311490 ) ( * 3517980 ) + NEW met1 ( 1628630 2311490 ) M1M2_PR + NEW met1 ( 1497530 2311490 ) M1M2_PR ; + - io_in[1] ( PIN io_in[1] ) ( mprj io_in[1] ) + USE SIGNAL + + ROUTED met3 ( 2902140 231540 ) ( 2917780 * 0 ) + NEW met4 ( 2902140 231540 ) ( * 2299420 ) + NEW met2 ( 1202440 2289900 0 ) ( 1204050 * ) + NEW met2 ( 1204050 2289900 ) ( * 2299420 ) + NEW met3 ( 1204050 2299420 ) ( 2902140 * ) + NEW met3 ( 2902140 231540 ) M3M4_PR + NEW met3 ( 2902140 2299420 ) M3M4_PR + NEW met2 ( 1204050 2299420 ) M2M3_PR ; + - io_in[20] ( PIN io_in[20] ) ( mprj io_in[20] ) + USE SIGNAL + + ROUTED met2 ( 1173230 3517980 ) ( 1175070 * ) + NEW met2 ( 1175070 3517300 ) ( * 3517980 ) + NEW met2 ( 1175070 3517300 ) ( 1175990 * ) + NEW met2 ( 1175990 3517300 ) ( * 3517980 0 ) + NEW met2 ( 1173230 2310470 ) ( * 3517980 ) + NEW met2 ( 1651170 2289900 ) ( 1652780 * 0 ) + NEW met2 ( 1651170 2289900 ) ( * 2310470 ) + NEW met1 ( 1173230 2310470 ) ( 1651170 * ) + NEW met1 ( 1173230 2310470 ) M1M2_PR + NEW met1 ( 1651170 2310470 ) M1M2_PR ; + - io_in[21] ( PIN io_in[21] ) ( mprj io_in[21] ) + USE SIGNAL + + ROUTED met2 ( 1674630 2289900 ) ( 1676240 * 0 ) + NEW met2 ( 1674630 2289900 ) ( * 2309790 ) + NEW met1 ( 848930 2309790 ) ( 1674630 * ) + NEW met2 ( 848930 2309790 ) ( * 3512100 ) + NEW met2 ( 848930 3512100 ) ( 851690 * ) + NEW met2 ( 851690 3512100 ) ( * 3517980 0 ) + NEW met1 ( 1674630 2309790 ) M1M2_PR + NEW met1 ( 848930 2309790 ) M1M2_PR ; + - io_in[22] ( PIN io_in[22] ) ( mprj io_in[22] ) + USE SIGNAL + + ROUTED met1 ( 524630 2308770 ) ( 1698550 * ) + NEW met2 ( 524630 3517980 ) ( 526470 * ) + NEW met2 ( 526470 3517300 ) ( * 3517980 ) + NEW met2 ( 526470 3517300 ) ( 527390 * ) + NEW met2 ( 527390 3517300 ) ( * 3517980 0 ) + NEW met2 ( 524630 2308770 ) ( * 3517980 ) + NEW met2 ( 1698550 2289900 ) ( 1700160 * 0 ) + NEW met2 ( 1698550 2289900 ) ( * 2308770 ) + NEW met1 ( 524630 2308770 ) M1M2_PR + NEW met1 ( 1698550 2308770 ) M1M2_PR ; + - io_in[23] ( PIN io_in[23] ) ( mprj io_in[23] ) + USE SIGNAL + + ROUTED met2 ( 200330 3517980 ) ( 201710 * ) + NEW met2 ( 201710 3517300 ) ( * 3517980 ) + NEW met2 ( 201710 3517300 ) ( 202630 * ) + NEW met2 ( 202630 3517300 ) ( * 3517980 0 ) + NEW met2 ( 200330 2308090 ) ( * 3517980 ) + NEW met1 ( 200330 2308090 ) ( 1722010 * ) + NEW met2 ( 1722010 2289900 ) ( 1723620 * 0 ) + NEW met2 ( 1722010 2289900 ) ( * 2308090 ) + NEW met1 ( 200330 2308090 ) M1M2_PR + NEW met1 ( 1722010 2308090 ) M1M2_PR ; + - io_in[24] ( PIN io_in[24] ) ( mprj io_in[24] ) + USE SIGNAL + + ROUTED met3 ( 1380 3421420 0 ) ( 17250 * ) + NEW met2 ( 17250 3415810 ) ( * 3421420 ) + NEW met1 ( 17250 3415810 ) ( 1745930 * ) + NEW met2 ( 1745930 2289900 ) ( 1747540 * 0 ) + NEW met2 ( 1745930 2289900 ) ( * 3415810 ) + NEW met2 ( 17250 3421420 ) M2M3_PR + NEW met1 ( 17250 3415810 ) M1M2_PR + NEW met1 ( 1745930 3415810 ) M1M2_PR ; + - io_in[25] ( PIN io_in[25] ) ( mprj io_in[25] ) + USE SIGNAL + + ROUTED met3 ( 1380 3160300 0 ) ( 17250 * ) + NEW met2 ( 17250 3160300 ) ( * 3160470 ) + NEW met2 ( 1766630 2401200 ) ( 1768930 * ) + NEW met2 ( 1766630 2401200 ) ( * 3160470 ) + NEW met1 ( 17250 3160470 ) ( 1766630 * ) + NEW met2 ( 1768930 2289900 ) ( 1771000 * 0 ) + NEW met2 ( 1768930 2289900 ) ( * 2401200 ) + NEW met2 ( 17250 3160300 ) M2M3_PR + NEW met1 ( 17250 3160470 ) M1M2_PR + NEW met1 ( 1766630 3160470 ) M1M2_PR ; + - io_in[26] ( PIN io_in[26] ) ( mprj io_in[26] ) + USE SIGNAL + + ROUTED met3 ( 1380 2899860 0 ) ( 16790 * ) + NEW met2 ( 16790 2898330 ) ( * 2899860 ) + NEW met1 ( 16790 2898330 ) ( 1794230 * ) + NEW met2 ( 1794230 2289900 ) ( 1794920 * 0 ) + NEW met2 ( 1794230 2289900 ) ( * 2898330 ) + NEW met2 ( 16790 2899860 ) M2M3_PR + NEW met1 ( 16790 2898330 ) M1M2_PR + NEW met1 ( 1794230 2898330 ) M1M2_PR ; + - io_in[27] ( PIN io_in[27] ) ( mprj io_in[27] ) + USE SIGNAL + + ROUTED met3 ( 1380 2639420 0 ) ( 17250 * ) + NEW met2 ( 17250 2635850 ) ( * 2639420 ) + NEW met1 ( 17250 2635850 ) ( 1814930 * ) + NEW met2 ( 1814930 2401200 ) ( 1816310 * ) + NEW met2 ( 1814930 2401200 ) ( * 2635850 ) + NEW met2 ( 1816310 2289900 ) ( 1818380 * 0 ) + NEW met2 ( 1816310 2289900 ) ( * 2401200 ) + NEW met2 ( 17250 2639420 ) M2M3_PR + NEW met1 ( 17250 2635850 ) M1M2_PR + NEW met1 ( 1814930 2635850 ) M1M2_PR ; + - io_in[28] ( PIN io_in[28] ) ( mprj io_in[28] ) + USE SIGNAL + + ROUTED met3 ( 1380 2378300 0 ) ( 17250 * ) + NEW met2 ( 17250 2373710 ) ( * 2378300 ) + NEW met1 ( 17250 2373710 ) ( 1840230 * ) + NEW met2 ( 1840230 2289900 ) ( 1842300 * 0 ) + NEW met2 ( 1840230 2289900 ) ( * 2373710 ) + NEW met2 ( 17250 2378300 ) M2M3_PR + NEW met1 ( 17250 2373710 ) M1M2_PR + NEW met1 ( 1840230 2373710 ) M1M2_PR ; + - io_in[29] ( PIN io_in[29] ) ( mprj io_in[29] ) + USE SIGNAL + + ROUTED met3 ( 1380 2117860 0 ) ( 20010 * ) + NEW met2 ( 20010 2117860 ) ( * 2291430 ) + NEW met2 ( 1864150 2289900 ) ( 1865760 * 0 ) + NEW met2 ( 1864150 2289900 ) ( * 2291430 ) + NEW met1 ( 20010 2291430 ) ( 1864150 * ) + NEW met2 ( 20010 2117860 ) M2M3_PR + NEW met1 ( 20010 2291430 ) M1M2_PR + NEW met1 ( 1864150 2291430 ) M1M2_PR ; + - io_in[2] ( PIN io_in[2] ) ( mprj io_in[2] ) + USE SIGNAL + + ROUTED met3 ( 2901910 430780 ) ( 2917780 * 0 ) + NEW met2 ( 2901910 430780 ) ( * 2298910 ) + NEW met2 ( 1226360 2289900 0 ) ( 1227970 * ) + NEW met2 ( 1227970 2289900 ) ( * 2298910 ) + NEW met1 ( 1227970 2298910 ) ( 2901910 * ) + NEW met2 ( 2901910 430780 ) M2M3_PR + NEW met1 ( 2901910 2298910 ) M1M2_PR + NEW met1 ( 1227970 2298910 ) M1M2_PR ; + - io_in[30] ( PIN io_in[30] ) ( mprj io_in[30] ) + USE SIGNAL + + ROUTED met3 ( 1380 1856740 0 ) ( 18630 * ) + NEW met2 ( 18630 1856740 ) ( * 2291090 ) + NEW met2 ( 1889680 2289900 0 ) ( * 2291090 ) + NEW met1 ( 18630 2291090 ) ( 1889680 * ) + NEW met2 ( 18630 1856740 ) M2M3_PR + NEW met1 ( 18630 2291090 ) M1M2_PR + NEW met1 ( 1889680 2291090 ) M1M2_PR ; + - io_in[31] ( PIN io_in[31] ) ( mprj io_in[31] ) + USE SIGNAL + + ROUTED met3 ( 1380 1596300 0 ) ( 17710 * ) + NEW met2 ( 17710 1596300 ) ( * 1600550 ) + NEW met2 ( 1168630 1600550 ) ( * 2301290 ) + NEW met1 ( 17710 1600550 ) ( 1168630 * ) + NEW met2 ( 1911530 2289900 ) ( 1913140 * 0 ) + NEW met2 ( 1911530 2289900 ) ( * 2301290 ) + NEW met1 ( 1168630 2301290 ) ( 1911530 * ) + NEW met2 ( 17710 1596300 ) M2M3_PR + NEW met1 ( 17710 1600550 ) M1M2_PR + NEW met1 ( 1168630 1600550 ) M1M2_PR + NEW met1 ( 1168630 2301290 ) M1M2_PR + NEW met1 ( 1911530 2301290 ) M1M2_PR ; + - io_in[32] ( PIN io_in[32] ) ( mprj io_in[32] ) + USE SIGNAL + + ROUTED met3 ( 1380 1335860 0 ) ( 17710 * ) + NEW met2 ( 17710 1335860 ) ( * 1338410 ) + NEW met2 ( 1172770 1338410 ) ( * 2300610 ) + NEW met2 ( 1935450 2289900 ) ( 1937060 * 0 ) + NEW met2 ( 1935450 2289900 ) ( * 2300610 ) + NEW met1 ( 17710 1338410 ) ( 1172770 * ) + NEW met1 ( 1172770 2300610 ) ( 1935450 * ) + NEW met2 ( 17710 1335860 ) M2M3_PR + NEW met1 ( 17710 1338410 ) M1M2_PR + NEW met1 ( 1172770 1338410 ) M1M2_PR + NEW met1 ( 1172770 2300610 ) M1M2_PR + NEW met1 ( 1935450 2300610 ) M1M2_PR ; + - io_in[33] ( PIN io_in[33] ) ( mprj io_in[33] ) + USE SIGNAL + + ROUTED met3 ( 1380 1074740 0 ) ( 16790 * ) + NEW met2 ( 16790 1074740 ) ( * 1076270 ) + NEW met2 ( 1171850 1076270 ) ( * 2300270 ) + NEW met2 ( 1959830 2289900 ) ( 1960520 * 0 ) + NEW met2 ( 1959830 2289900 ) ( * 2300270 ) + NEW met1 ( 16790 1076270 ) ( 1171850 * ) + NEW met1 ( 1171850 2300270 ) ( 1959830 * ) + NEW met2 ( 16790 1074740 ) M2M3_PR + NEW met1 ( 16790 1076270 ) M1M2_PR + NEW met1 ( 1171850 1076270 ) M1M2_PR + NEW met1 ( 1171850 2300270 ) M1M2_PR + NEW met1 ( 1959830 2300270 ) M1M2_PR ; + - io_in[34] ( PIN io_in[34] ) ( mprj io_in[34] ) + USE SIGNAL + + ROUTED met3 ( 1380 814300 0 ) ( 16330 * ) + NEW met2 ( 16330 814300 ) ( * 820930 ) + NEW met2 ( 1170930 820930 ) ( * 2299590 ) + NEW met1 ( 16330 820930 ) ( 1170930 * ) + NEW met2 ( 1982830 2289900 ) ( 1984440 * 0 ) + NEW met2 ( 1982830 2289900 ) ( * 2299590 ) + NEW met1 ( 1170930 2299590 ) ( 1982830 * ) + NEW met2 ( 16330 814300 ) M2M3_PR + NEW met1 ( 16330 820930 ) M1M2_PR + NEW met1 ( 1170930 820930 ) M1M2_PR + NEW met1 ( 1170930 2299590 ) M1M2_PR + NEW met1 ( 1982830 2299590 ) M1M2_PR ; + - io_in[35] ( PIN io_in[35] ) ( mprj io_in[35] ) + USE SIGNAL + + ROUTED met3 ( 1380 553180 0 ) ( 15870 * ) + NEW met2 ( 15870 553180 ) ( * 558790 ) + NEW met2 ( 1170010 558790 ) ( * 2299250 ) + NEW met1 ( 15870 558790 ) ( 1170010 * ) + NEW met2 ( 2006290 2289900 ) ( 2007900 * 0 ) + NEW met2 ( 2006290 2289900 ) ( * 2299250 ) + NEW met1 ( 1170010 2299250 ) ( 2006290 * ) + NEW met2 ( 15870 553180 ) M2M3_PR + NEW met1 ( 15870 558790 ) M1M2_PR + NEW met1 ( 1170010 558790 ) M1M2_PR + NEW met1 ( 1170010 2299250 ) M1M2_PR + NEW met1 ( 2006290 2299250 ) M1M2_PR ; + - io_in[36] ( PIN io_in[36] ) ( mprj io_in[36] ) + USE SIGNAL + + ROUTED met3 ( 1380 358020 0 ) ( 3220 * ) + NEW met3 ( 3220 357340 ) ( * 358020 ) + NEW met3 ( 1380 357340 ) ( 3220 * ) + NEW met3 ( 1380 354620 ) ( * 357340 ) + NEW met4 ( 1169780 351900 ) ( * 2300780 ) + NEW met2 ( 2030210 2289900 ) ( 2031820 * 0 ) + NEW met2 ( 2030210 2289900 ) ( * 2300780 ) + NEW met3 ( 1380 354620 ) ( 34500 * ) + NEW met3 ( 34500 351900 ) ( * 354620 ) + NEW met3 ( 34500 351900 ) ( 1169780 * ) + NEW met3 ( 1169780 2300780 ) ( 2030210 * ) + NEW met3 ( 1169780 351900 ) M3M4_PR + NEW met3 ( 1169780 2300780 ) M3M4_PR + NEW met2 ( 2030210 2300780 ) M2M3_PR ; + - io_in[37] ( PIN io_in[37] ) ( mprj io_in[37] ) + USE SIGNAL + + ROUTED met3 ( 1380 162180 0 ) ( 3220 * ) + NEW met3 ( 3220 161500 ) ( * 162180 ) + NEW met3 ( 1380 161500 ) ( 3220 * ) + NEW met3 ( 1380 158780 ) ( * 161500 ) + NEW met3 ( 2049300 2287180 ) ( 2053670 * ) + NEW met2 ( 2053670 2287180 ) ( 2055280 * 0 ) + NEW met4 ( 2049300 158780 ) ( * 2287180 ) + NEW met3 ( 1380 158780 ) ( 2049300 * ) + NEW met3 ( 2049300 158780 ) M3M4_PR + NEW met3 ( 2049300 2287180 ) M3M4_PR + NEW met2 ( 2053670 2287180 ) M2M3_PR ; + - io_in[3] ( PIN io_in[3] ) ( mprj io_in[3] ) + USE SIGNAL + + ROUTED met3 ( 1270060 2285820 ) ( * 2287180 ) + NEW met3 ( 1251430 2287180 ) ( 1270060 * ) + NEW met2 ( 1249820 2287180 0 ) ( 1251430 * ) + NEW met3 ( 2902370 630020 ) ( 2917780 * 0 ) + NEW met2 ( 2902370 630020 ) ( * 2285820 ) + NEW met3 ( 1270060 2285820 ) ( 2902370 * ) + NEW met2 ( 1251430 2287180 ) M2M3_PR + NEW met2 ( 2902370 630020 ) M2M3_PR + NEW met2 ( 2902370 2285820 ) M2M3_PR ; + - io_in[4] ( PIN io_in[4] ) ( mprj io_in[4] ) + USE SIGNAL + + ROUTED met2 ( 1273740 2287180 0 ) ( 1275350 * ) + NEW met3 ( 2903290 829260 ) ( 2917780 * 0 ) + NEW met2 ( 2903290 829260 ) ( * 2286500 ) + NEW met3 ( 1275350 2287180 ) ( 1290300 * ) + NEW met3 ( 1290300 2286500 ) ( * 2287180 ) + NEW met3 ( 1290300 2286500 ) ( 2903290 * ) + NEW met2 ( 1275350 2287180 ) M2M3_PR + NEW met2 ( 2903290 829260 ) M2M3_PR + NEW met2 ( 2903290 2286500 ) M2M3_PR ; + - io_in[5] ( PIN io_in[5] ) ( mprj io_in[5] ) + USE SIGNAL + + ROUTED met3 ( 2904210 1028500 ) ( 2917780 * 0 ) + NEW met2 ( 2904210 1028500 ) ( * 2287180 ) + NEW met2 ( 1297200 2287180 0 ) ( 1297890 * ) + NEW met3 ( 1966500 2287180 ) ( * 2287860 ) + NEW met3 ( 1966500 2287860 ) ( 2063100 * ) + NEW met3 ( 2063100 2287180 ) ( * 2287860 ) + NEW met3 ( 2063100 2287180 ) ( 2904210 * ) + NEW met3 ( 1297890 2287180 ) ( 1966500 * ) + NEW met2 ( 2904210 1028500 ) M2M3_PR + NEW met2 ( 2904210 2287180 ) M2M3_PR + NEW met2 ( 1297890 2287180 ) M2M3_PR ; + - io_in[6] ( PIN io_in[6] ) ( mprj io_in[6] ) + USE SIGNAL + + ROUTED met3 ( 2902830 1227740 ) ( 2917780 * 0 ) + NEW met2 ( 2902830 1227740 ) ( * 2284630 ) + NEW met1 ( 1338600 2284630 ) ( * 2287350 ) + NEW met1 ( 1322730 2287350 ) ( 1338600 * ) + NEW met2 ( 1322730 2287180 ) ( * 2287350 ) + NEW met2 ( 1321120 2287180 0 ) ( 1322730 * ) + NEW met1 ( 1897500 2284630 ) ( 2902830 * ) + NEW met1 ( 1897500 2283950 ) ( * 2284630 ) + NEW met1 ( 1890600 2283950 ) ( 1897500 * ) + NEW met1 ( 1890600 2282930 ) ( * 2283950 ) + NEW met1 ( 1883700 2282930 ) ( 1890600 * ) + NEW met1 ( 1883700 2282930 ) ( * 2283270 ) + NEW met1 ( 1835400 2283270 ) ( 1883700 * ) + NEW met1 ( 1835400 2282250 ) ( * 2283270 ) + NEW met1 ( 1828500 2282250 ) ( 1835400 * ) + NEW met1 ( 1828500 2281910 ) ( * 2282250 ) + NEW met1 ( 1821600 2281910 ) ( 1828500 * ) + NEW met1 ( 1821600 2281910 ) ( * 2282250 ) + NEW met1 ( 1807800 2282250 ) ( 1821600 * ) + NEW met1 ( 1807800 2281910 ) ( * 2282250 ) + NEW met1 ( 1800900 2281910 ) ( 1807800 * ) + NEW met1 ( 1800900 2280890 ) ( * 2281910 ) + NEW met1 ( 1794000 2280890 ) ( 1800900 * ) + NEW met1 ( 1794000 2280890 ) ( * 2283270 ) + NEW met1 ( 1787100 2283270 ) ( 1794000 * ) + NEW met1 ( 1787100 2282590 ) ( * 2283270 ) + NEW met1 ( 1780200 2282590 ) ( 1787100 * ) + NEW met1 ( 1780200 2281910 ) ( * 2282590 ) + NEW met1 ( 1773300 2281910 ) ( 1780200 * ) + NEW met1 ( 1773300 2281910 ) ( * 2282250 ) + NEW met1 ( 1766400 2282250 ) ( 1773300 * ) + NEW met1 ( 1764330 2281230 ) ( * 2281910 ) + NEW met1 ( 1764330 2281230 ) ( 1766400 * ) + NEW met1 ( 1766400 2281230 ) ( * 2282250 ) + NEW met1 ( 1731900 2281910 ) ( 1764330 * ) + NEW met1 ( 1731900 2280210 ) ( * 2281910 ) + NEW met1 ( 1725000 2280210 ) ( 1731900 * ) + NEW met1 ( 1725000 2280210 ) ( * 2280890 ) + NEW met1 ( 1718100 2280890 ) ( 1725000 * ) + NEW met1 ( 1718100 2280550 ) ( * 2280890 ) + NEW met1 ( 1704300 2280550 ) ( 1718100 * ) + NEW met1 ( 1704300 2280550 ) ( * 2281570 ) + NEW met1 ( 1690500 2281570 ) ( 1704300 * ) + NEW met1 ( 1690500 2279530 ) ( * 2281570 ) + NEW met1 ( 1683600 2279530 ) ( 1690500 * ) + NEW met1 ( 1683600 2279190 ) ( * 2279530 ) + NEW met1 ( 1676700 2279190 ) ( 1683600 * ) + NEW met1 ( 1676700 2279190 ) ( * 2280550 ) + NEW met1 ( 1669800 2280550 ) ( 1676700 * ) + NEW met1 ( 1669800 2280550 ) ( * 2281230 ) + NEW met1 ( 1662900 2281230 ) ( 1669800 * ) + NEW met1 ( 1662900 2278170 ) ( * 2281230 ) + NEW met1 ( 1649100 2278170 ) ( 1662900 * ) + NEW met1 ( 1610690 2284630 ) ( * 2287350 ) + NEW met2 ( 1610690 2287350 ) ( * 2288710 ) + NEW met1 ( 1610690 2288710 ) ( 1617590 * ) + NEW met2 ( 1617590 2287350 ) ( * 2288710 ) + NEW met1 ( 1617590 2281570 ) ( * 2287350 ) + NEW met1 ( 1617590 2281570 ) ( 1618050 * ) + NEW met1 ( 1618050 2281230 ) ( * 2281570 ) + NEW met1 ( 1618050 2281230 ) ( 1649100 * ) + NEW met1 ( 1649100 2278170 ) ( * 2281230 ) + NEW met1 ( 1338600 2284630 ) ( 1610690 * ) + NEW met2 ( 2902830 1227740 ) M2M3_PR + NEW met1 ( 2902830 2284630 ) M1M2_PR + NEW met1 ( 1322730 2287350 ) M1M2_PR + NEW met1 ( 1610690 2287350 ) M1M2_PR + NEW met1 ( 1610690 2288710 ) M1M2_PR + NEW met1 ( 1617590 2288710 ) M1M2_PR + NEW met1 ( 1617590 2287350 ) M1M2_PR ; + - io_in[7] ( PIN io_in[7] ) ( mprj io_in[7] ) + USE SIGNAL + + ROUTED met1 ( 1345270 2284970 ) ( * 2287350 ) + NEW met2 ( 1345270 2287180 ) ( * 2287350 ) + NEW met2 ( 1344580 2287180 0 ) ( 1345270 * ) + NEW met3 ( 2903750 1493620 ) ( 2917780 * 0 ) + NEW met2 ( 2903750 1493620 ) ( * 2284970 ) + NEW met1 ( 1890600 2284970 ) ( 2903750 * ) + NEW met1 ( 1890600 2284630 ) ( * 2284970 ) + NEW met1 ( 1883700 2284630 ) ( 1890600 * ) + NEW met1 ( 1883700 2284630 ) ( * 2284970 ) + NEW met1 ( 1863000 2284970 ) ( 1883700 * ) + NEW met2 ( 1838390 2287350 ) ( * 2288710 ) + NEW met1 ( 1838390 2287350 ) ( 1838850 * ) + NEW met1 ( 1838850 2286330 ) ( * 2287350 ) + NEW met1 ( 1838850 2286330 ) ( 1863000 * ) + NEW met1 ( 1863000 2284970 ) ( * 2286330 ) + NEW met2 ( 1790550 2287350 ) ( * 2288710 ) + NEW met1 ( 1790550 2288710 ) ( 1838390 * ) + NEW met1 ( 1780200 2287350 ) ( 1790550 * ) + NEW met1 ( 1780200 2284970 ) ( * 2287350 ) + NEW met2 ( 1748230 2287350 ) ( * 2288370 ) + NEW met1 ( 1748230 2287010 ) ( * 2287350 ) + NEW met1 ( 1748230 2287010 ) ( 1748690 * ) + NEW met1 ( 1748690 2284970 ) ( * 2287010 ) + NEW met1 ( 1748690 2284970 ) ( 1780200 * ) + NEW met1 ( 1708670 2284970 ) ( * 2287350 ) + NEW met2 ( 1708670 2287350 ) ( * 2288370 ) + NEW met1 ( 1708670 2288370 ) ( 1748230 * ) + NEW met1 ( 1609310 2284970 ) ( * 2285310 ) + NEW met1 ( 1609310 2285310 ) ( 1610230 * ) + NEW met1 ( 1610230 2285310 ) ( * 2287350 ) + NEW met2 ( 1610230 2287350 ) ( * 2288370 ) + NEW met1 ( 1610230 2288370 ) ( 1620350 * ) + NEW met2 ( 1620350 2287350 ) ( * 2288370 ) + NEW met1 ( 1620350 2284970 ) ( * 2287350 ) + NEW met1 ( 1345270 2284970 ) ( 1609310 * ) + NEW met1 ( 1620350 2284970 ) ( 1708670 * ) + NEW met1 ( 1345270 2287350 ) M1M2_PR + NEW met2 ( 2903750 1493620 ) M2M3_PR + NEW met1 ( 2903750 2284970 ) M1M2_PR + NEW met1 ( 1838390 2288710 ) M1M2_PR + NEW met1 ( 1838390 2287350 ) M1M2_PR + NEW met1 ( 1790550 2287350 ) M1M2_PR + NEW met1 ( 1790550 2288710 ) M1M2_PR + NEW met1 ( 1748230 2288370 ) M1M2_PR + NEW met1 ( 1748230 2287350 ) M1M2_PR + NEW met1 ( 1708670 2287350 ) M1M2_PR + NEW met1 ( 1708670 2288370 ) M1M2_PR + NEW met1 ( 1610230 2287350 ) M1M2_PR + NEW met1 ( 1610230 2288370 ) M1M2_PR + NEW met1 ( 1620350 2288370 ) M1M2_PR + NEW met1 ( 1620350 2287350 ) M1M2_PR ; + - io_in[8] ( PIN io_in[8] ) ( mprj io_in[8] ) + USE SIGNAL + + ROUTED met3 ( 2904670 1759500 ) ( 2917780 * 0 ) + NEW met1 ( 1370110 2285310 ) ( * 2287350 ) + NEW met2 ( 1370110 2287180 ) ( * 2287350 ) + NEW met2 ( 1368500 2287180 0 ) ( 1370110 * ) + NEW met2 ( 2904670 1759500 ) ( * 2285310 ) + NEW met1 ( 1883700 2285310 ) ( 2904670 * ) + NEW met1 ( 1883700 2285310 ) ( * 2287010 ) + NEW met2 ( 1837470 2287690 ) ( * 2287860 ) + NEW met3 ( 1837470 2287860 ) ( 1839310 * ) + NEW met2 ( 1839310 2287350 ) ( * 2287860 ) + NEW met1 ( 1839310 2287010 ) ( * 2287350 ) + NEW met1 ( 1839310 2287010 ) ( 1883700 * ) + NEW met1 ( 1763870 2285310 ) ( * 2287690 ) + NEW met1 ( 1763870 2287690 ) ( 1837470 * ) + NEW met1 ( 1752600 2285310 ) ( 1763870 * ) + NEW met2 ( 1748690 2287350 ) ( * 2287860 ) + NEW met1 ( 1748690 2287350 ) ( 1752600 * ) + NEW met1 ( 1752600 2285310 ) ( * 2287350 ) + NEW met1 ( 1707290 2285310 ) ( * 2287350 ) + NEW met2 ( 1707290 2287350 ) ( * 2287860 ) + NEW met3 ( 1707290 2287860 ) ( 1748690 * ) + NEW met1 ( 1608850 2285310 ) ( * 2287690 ) + NEW met1 ( 1608850 2287690 ) ( 1620810 * ) + NEW met1 ( 1620810 2285310 ) ( * 2287690 ) + NEW met1 ( 1370110 2285310 ) ( 1608850 * ) + NEW met1 ( 1620810 2285310 ) ( 1707290 * ) + NEW met2 ( 2904670 1759500 ) M2M3_PR + NEW met1 ( 1370110 2287350 ) M1M2_PR + NEW met1 ( 2904670 2285310 ) M1M2_PR + NEW met1 ( 1837470 2287690 ) M1M2_PR + NEW met2 ( 1837470 2287860 ) M2M3_PR + NEW met2 ( 1839310 2287860 ) M2M3_PR + NEW met1 ( 1839310 2287350 ) M1M2_PR + NEW met2 ( 1748690 2287860 ) M2M3_PR + NEW met1 ( 1748690 2287350 ) M1M2_PR + NEW met1 ( 1707290 2287350 ) M1M2_PR + NEW met2 ( 1707290 2287860 ) M2M3_PR ; + - io_in[9] ( PIN io_in[9] ) ( mprj io_in[9] ) + USE SIGNAL + + ROUTED met3 ( 2900530 2024700 ) ( 2917780 * 0 ) + NEW met2 ( 2900530 2024700 ) ( * 2285990 ) + NEW met1 ( 1435200 2285990 ) ( * 2287350 ) + NEW met1 ( 1393570 2287350 ) ( 1435200 * ) + NEW met2 ( 1393570 2287180 ) ( * 2287350 ) + NEW met2 ( 1391960 2287180 0 ) ( 1393570 * ) + NEW met1 ( 1897500 2285990 ) ( 2900530 * ) + NEW met1 ( 1897500 2285990 ) ( * 2287690 ) + NEW met1 ( 1890600 2287690 ) ( 1897500 * ) + NEW met1 ( 1890600 2287690 ) ( * 2288030 ) + NEW met1 ( 1704300 2285990 ) ( * 2288030 ) + NEW met1 ( 1704300 2288030 ) ( 1890600 * ) + NEW met1 ( 1649100 2285990 ) ( 1704300 * ) + NEW met1 ( 1435200 2285990 ) ( 1600800 * ) + NEW met1 ( 1600800 2285990 ) ( * 2289050 ) + NEW met1 ( 1600800 2289050 ) ( 1649100 * ) + NEW met1 ( 1649100 2285990 ) ( * 2289050 ) + NEW met2 ( 2900530 2024700 ) M2M3_PR + NEW met1 ( 2900530 2285990 ) M1M2_PR + NEW met1 ( 1393570 2287350 ) M1M2_PR ; + - io_oeb[0] ( PIN io_oeb[0] ) ( mprj io_oeb[0] ) + USE SIGNAL + + ROUTED met2 ( 1186570 2289900 ) ( 1186800 * 0 ) + NEW met2 ( 1186570 2289900 ) ( * 2298740 ) + NEW met3 ( 2901220 165580 ) ( 2917780 * 0 ) + NEW met4 ( 2901220 165580 ) ( * 2298740 ) + NEW met3 ( 1186570 2298740 ) ( 2901220 * ) + NEW met2 ( 1186570 2298740 ) M2M3_PR + NEW met3 ( 2901220 165580 ) M3M4_PR + NEW met3 ( 2901220 2298740 ) M3M4_PR ; + - io_oeb[10] ( PIN io_oeb[10] ) ( mprj io_oeb[10] ) + USE SIGNAL + + ROUTED met2 ( 2900990 2421990 ) ( * 2423180 ) + NEW met3 ( 2900990 2423180 ) ( 2917780 * 0 ) + NEW met1 ( 1421630 2421990 ) ( 2900990 * ) + NEW met2 ( 1421630 2289900 ) ( 1423700 * 0 ) + NEW met2 ( 1421630 2289900 ) ( * 2421990 ) + NEW met1 ( 2900990 2421990 ) M1M2_PR + NEW met2 ( 2900990 2423180 ) M2M3_PR + NEW met1 ( 1421630 2421990 ) M1M2_PR ; + - io_oeb[11] ( PIN io_oeb[11] ) ( mprj io_oeb[11] ) + USE SIGNAL + + ROUTED met2 ( 1445090 2289900 ) ( 1447160 * 0 ) + NEW met2 ( 1442330 2401200 ) ( 1445090 * ) + NEW met2 ( 1445090 2289900 ) ( * 2401200 ) + NEW met2 ( 1442330 2401200 ) ( * 2684130 ) + NEW met2 ( 2900990 2684130 ) ( * 2689060 ) + NEW met3 ( 2900990 2689060 ) ( 2917780 * 0 ) + NEW met1 ( 1442330 2684130 ) ( 2900990 * ) + NEW met1 ( 1442330 2684130 ) M1M2_PR + NEW met1 ( 2900990 2684130 ) M1M2_PR + NEW met2 ( 2900990 2689060 ) M2M3_PR ; + - io_oeb[12] ( PIN io_oeb[12] ) ( mprj io_oeb[12] ) + USE SIGNAL + + ROUTED met2 ( 1469930 2289900 ) ( 1471080 * 0 ) + NEW met2 ( 1469930 2289900 ) ( * 2953410 ) + NEW met2 ( 2899150 2953410 ) ( * 2954940 ) + NEW met3 ( 2899150 2954940 ) ( 2917780 * 0 ) + NEW met1 ( 1469930 2953410 ) ( 2899150 * ) + NEW met1 ( 1469930 2953410 ) M1M2_PR + NEW met1 ( 2899150 2953410 ) M1M2_PR + NEW met2 ( 2899150 2954940 ) M2M3_PR ; + - io_oeb[13] ( PIN io_oeb[13] ) ( mprj io_oeb[13] ) + USE SIGNAL + + ROUTED met2 ( 2900990 3215550 ) ( * 3220140 ) + NEW met3 ( 2900990 3220140 ) ( 2917780 * 0 ) + NEW met1 ( 1490630 3215550 ) ( 2900990 * ) + NEW met2 ( 1492470 2289900 ) ( 1494540 * 0 ) + NEW met2 ( 1490630 2401200 ) ( 1492470 * ) + NEW met2 ( 1492470 2289900 ) ( * 2401200 ) + NEW met2 ( 1490630 2401200 ) ( * 3215550 ) + NEW met1 ( 2900990 3215550 ) M1M2_PR + NEW met2 ( 2900990 3220140 ) M2M3_PR + NEW met1 ( 1490630 3215550 ) M1M2_PR ; + - io_oeb[14] ( PIN io_oeb[14] ) ( mprj io_oeb[14] ) + USE SIGNAL + + ROUTED met2 ( 2900990 3484830 ) ( * 3486020 ) + NEW met3 ( 2900990 3486020 ) ( 2917780 * 0 ) + NEW met1 ( 1518230 3484830 ) ( 2900990 * ) + NEW met2 ( 1518230 2289900 ) ( 1518460 * 0 ) + NEW met2 ( 1518230 2289900 ) ( * 3484830 ) + NEW met1 ( 2900990 3484830 ) M1M2_PR + NEW met2 ( 2900990 3486020 ) M2M3_PR + NEW met1 ( 1518230 3484830 ) M1M2_PR ; + - io_oeb[15] ( PIN io_oeb[15] ) ( mprj io_oeb[15] ) + USE SIGNAL + + ROUTED met2 ( 1541920 2289900 0 ) ( 1543530 * ) + NEW met2 ( 1543530 2289900 ) ( * 2309110 ) + NEW met2 ( 2636030 2309110 ) ( * 3517980 0 ) + NEW met1 ( 1543530 2309110 ) ( 2636030 * ) + NEW met1 ( 1543530 2309110 ) M1M2_PR + NEW met1 ( 2636030 2309110 ) M1M2_PR ; + - io_oeb[16] ( PIN io_oeb[16] ) ( mprj io_oeb[16] ) + USE SIGNAL + + ROUTED met2 ( 1563770 2289900 ) ( 1565840 * 0 ) + NEW met2 ( 1559630 2401200 ) ( 1563770 * ) + NEW met2 ( 1563770 2289900 ) ( * 2401200 ) + NEW met2 ( 1559630 2401200 ) ( * 3504210 ) + NEW met2 ( 2311730 3504210 ) ( * 3517980 0 ) + NEW met1 ( 1559630 3504210 ) ( 2311730 * ) + NEW met1 ( 1559630 3504210 ) M1M2_PR + NEW met1 ( 2311730 3504210 ) M1M2_PR ; + - io_oeb[17] ( PIN io_oeb[17] ) ( mprj io_oeb[17] ) + USE SIGNAL + + ROUTED met2 ( 1589300 2289900 0 ) ( 1590910 * ) + NEW met2 ( 1590910 2289900 ) ( * 2310810 ) + NEW met2 ( 1987430 2310810 ) ( * 3517980 0 ) + NEW met1 ( 1590910 2310810 ) ( 1987430 * ) + NEW met1 ( 1590910 2310810 ) M1M2_PR + NEW met1 ( 1987430 2310810 ) M1M2_PR ; + - io_oeb[18] ( PIN io_oeb[18] ) ( mprj io_oeb[18] ) + USE SIGNAL + + ROUTED met2 ( 1656690 3517980 ) ( 1661750 * ) + NEW met2 ( 1661750 3517300 ) ( * 3517980 ) + NEW met2 ( 1661750 3517300 ) ( 1662670 * ) + NEW met2 ( 1662670 3517300 ) ( * 3517980 0 ) + NEW met2 ( 1656690 2307750 ) ( * 3517980 ) + NEW met1 ( 1614370 2307750 ) ( 1656690 * ) + NEW met2 ( 1613220 2289900 0 ) ( 1614370 * ) + NEW met2 ( 1614370 2289900 ) ( * 2307750 ) + NEW met1 ( 1656690 2307750 ) M1M2_PR + NEW met1 ( 1614370 2307750 ) M1M2_PR ; + - io_oeb[19] ( PIN io_oeb[19] ) ( mprj io_oeb[19] ) + USE SIGNAL + + ROUTED met2 ( 1635530 2289900 ) ( 1636680 * 0 ) + NEW met2 ( 1635530 2289900 ) ( * 3500810 ) + NEW met1 ( 1338370 3500810 ) ( 1635530 * ) + NEW met2 ( 1338370 3500810 ) ( * 3517980 0 ) + NEW met1 ( 1635530 3500810 ) M1M2_PR + NEW met1 ( 1338370 3500810 ) M1M2_PR ; + - io_oeb[1] ( PIN io_oeb[1] ) ( mprj io_oeb[1] ) + USE SIGNAL + + ROUTED met3 ( 2901450 364820 ) ( 2917780 * 0 ) + NEW met2 ( 2901450 364820 ) ( * 2284460 ) + NEW met3 ( 1225900 2284460 ) ( * 2287180 ) + NEW met3 ( 1211870 2287180 ) ( 1225900 * ) + NEW met2 ( 1210260 2287180 0 ) ( 1211870 * ) + NEW met3 ( 1225900 2284460 ) ( 2901450 * ) + NEW met2 ( 2901450 364820 ) M2M3_PR + NEW met2 ( 2901450 2284460 ) M2M3_PR + NEW met2 ( 1211870 2287180 ) M2M3_PR ; + - io_oeb[20] ( PIN io_oeb[20] ) ( mprj io_oeb[20] ) + USE SIGNAL + + ROUTED met2 ( 1658530 2289900 ) ( 1660600 * 0 ) + NEW met2 ( 1658530 2289900 ) ( * 2304600 ) + NEW met2 ( 1656230 2304600 ) ( 1658530 * ) + NEW met2 ( 1656230 2304600 ) ( * 3504550 ) + NEW met1 ( 1014070 3504550 ) ( 1656230 * ) + NEW met2 ( 1014070 3504550 ) ( * 3517980 0 ) + NEW met1 ( 1656230 3504550 ) M1M2_PR + NEW met1 ( 1014070 3504550 ) M1M2_PR ; + - io_oeb[21] ( PIN io_oeb[21] ) ( mprj io_oeb[21] ) + USE SIGNAL + + ROUTED met2 ( 689310 3503190 ) ( * 3517980 0 ) + NEW met1 ( 689310 3503190 ) ( 1683830 * ) + NEW met2 ( 1683830 2289900 ) ( 1684060 * 0 ) + NEW met2 ( 1683830 2289900 ) ( * 3503190 ) + NEW met1 ( 689310 3503190 ) M1M2_PR + NEW met1 ( 1683830 3503190 ) M1M2_PR ; + - io_oeb[22] ( PIN io_oeb[22] ) ( mprj io_oeb[22] ) + USE SIGNAL + + ROUTED met1 ( 365010 3502170 ) ( 1704530 * ) + NEW met2 ( 365010 3502170 ) ( * 3517980 0 ) + NEW met2 ( 1705910 2289900 ) ( 1707980 * 0 ) + NEW met2 ( 1704530 2401200 ) ( 1705910 * ) + NEW met2 ( 1705910 2289900 ) ( * 2401200 ) + NEW met2 ( 1704530 2401200 ) ( * 3502170 ) + NEW met1 ( 365010 3502170 ) M1M2_PR + NEW met1 ( 1704530 3502170 ) M1M2_PR ; + - io_oeb[23] ( PIN io_oeb[23] ) ( mprj io_oeb[23] ) + USE SIGNAL + + ROUTED met2 ( 1725230 2401200 ) ( 1729370 * ) + NEW met2 ( 1725230 2401200 ) ( * 3501490 ) + NEW met1 ( 40710 3501490 ) ( 1725230 * ) + NEW met2 ( 40710 3501490 ) ( * 3517980 0 ) + NEW met2 ( 1729370 2289900 ) ( 1731440 * 0 ) + NEW met2 ( 1729370 2289900 ) ( * 2401200 ) + NEW met1 ( 1725230 3501490 ) M1M2_PR + NEW met1 ( 40710 3501490 ) M1M2_PR ; + - io_oeb[24] ( PIN io_oeb[24] ) ( mprj io_oeb[24] ) + USE SIGNAL + + ROUTED met3 ( 1380 3290860 0 ) ( 17250 * ) + NEW met2 ( 17250 3284570 ) ( * 3290860 ) + NEW met2 ( 1752830 2401200 ) ( 1753290 * ) + NEW met2 ( 1752830 2401200 ) ( * 3284570 ) + NEW met1 ( 17250 3284570 ) ( 1752830 * ) + NEW met2 ( 1753290 2289900 ) ( 1755360 * 0 ) + NEW met2 ( 1753290 2289900 ) ( * 2401200 ) + NEW met2 ( 17250 3290860 ) M2M3_PR + NEW met1 ( 17250 3284570 ) M1M2_PR + NEW met1 ( 1752830 3284570 ) M1M2_PR ; + - io_oeb[25] ( PIN io_oeb[25] ) ( mprj io_oeb[25] ) + USE SIGNAL + + ROUTED met3 ( 1380 3030420 0 ) ( 16330 * ) + NEW met2 ( 16330 3029230 ) ( * 3030420 ) + NEW met2 ( 1773530 2401200 ) ( 1776750 * ) + NEW met1 ( 16330 3029230 ) ( 1773530 * ) + NEW met2 ( 1773530 2401200 ) ( * 3029230 ) + NEW met2 ( 1776750 2289900 ) ( 1778820 * 0 ) + NEW met2 ( 1776750 2289900 ) ( * 2401200 ) + NEW met2 ( 16330 3030420 ) M2M3_PR + NEW met1 ( 16330 3029230 ) M1M2_PR + NEW met1 ( 1773530 3029230 ) M1M2_PR ; + - io_oeb[26] ( PIN io_oeb[26] ) ( mprj io_oeb[26] ) + USE SIGNAL + + ROUTED met3 ( 1380 2769300 0 ) ( 17250 * ) + NEW met2 ( 17250 2767090 ) ( * 2769300 ) + NEW met1 ( 17250 2767090 ) ( 1801130 * ) + NEW met2 ( 1801130 2289900 ) ( 1802740 * 0 ) + NEW met2 ( 1801130 2289900 ) ( * 2767090 ) + NEW met2 ( 17250 2769300 ) M2M3_PR + NEW met1 ( 17250 2767090 ) M1M2_PR + NEW met1 ( 1801130 2767090 ) M1M2_PR ; + - io_oeb[27] ( PIN io_oeb[27] ) ( mprj io_oeb[27] ) + USE SIGNAL + + ROUTED met3 ( 1380 2508860 0 ) ( 15410 * ) + NEW met2 ( 15410 2504950 ) ( * 2508860 ) + NEW met2 ( 1822290 2401200 ) ( 1824130 * ) + NEW met2 ( 1822290 2401200 ) ( * 2504950 ) + NEW met1 ( 15410 2504950 ) ( 1822290 * ) + NEW met2 ( 1824130 2289900 ) ( 1826200 * 0 ) + NEW met2 ( 1824130 2289900 ) ( * 2401200 ) + NEW met2 ( 15410 2508860 ) M2M3_PR + NEW met1 ( 15410 2504950 ) M1M2_PR + NEW met1 ( 1822290 2504950 ) M1M2_PR ; + - io_oeb[28] ( PIN io_oeb[28] ) ( mprj io_oeb[28] ) + USE SIGNAL + + ROUTED met3 ( 1380 2247740 0 ) ( 20470 * ) + NEW met2 ( 20470 2247740 ) ( * 2284290 ) + NEW met2 ( 1848510 2289050 ) ( * 2289220 ) + NEW met2 ( 1848510 2289220 ) ( 1850120 * 0 ) + NEW met1 ( 1791010 2284630 ) ( * 2287350 ) + NEW met2 ( 1791010 2287350 ) ( * 2289050 ) + NEW met1 ( 1791010 2289050 ) ( 1848510 * ) + NEW met1 ( 1787100 2284630 ) ( 1791010 * ) + NEW met1 ( 1787100 2283950 ) ( * 2284630 ) + NEW met1 ( 1780200 2283950 ) ( 1787100 * ) + NEW met1 ( 1780200 2283950 ) ( * 2284290 ) + NEW met1 ( 1773300 2284290 ) ( 1780200 * ) + NEW met1 ( 1773300 2283270 ) ( * 2284290 ) + NEW met1 ( 1766400 2283270 ) ( 1773300 * ) + NEW met1 ( 1766400 2283270 ) ( * 2284630 ) + NEW met1 ( 1746850 2284630 ) ( * 2287690 ) + NEW met1 ( 1746850 2284630 ) ( 1766400 * ) + NEW met1 ( 1738800 2287690 ) ( 1746850 * ) + NEW met1 ( 1738800 2284970 ) ( * 2287690 ) + NEW met1 ( 1731900 2284970 ) ( 1738800 * ) + NEW met1 ( 1731900 2283610 ) ( * 2284970 ) + NEW met1 ( 1725000 2283610 ) ( 1731900 * ) + NEW met1 ( 1725000 2283610 ) ( * 2284630 ) + NEW met1 ( 1690500 2284630 ) ( 1725000 * ) + NEW met1 ( 1690500 2283610 ) ( * 2284630 ) + NEW met1 ( 1676700 2283610 ) ( 1690500 * ) + NEW met1 ( 1676700 2283610 ) ( * 2284630 ) + NEW met1 ( 1612070 2284290 ) ( * 2286670 ) + NEW met1 ( 1612070 2286670 ) ( 1612530 * ) + NEW met1 ( 1612530 2286670 ) ( * 2287350 ) + NEW met2 ( 1612530 2287350 ) ( * 2287860 ) + NEW met3 ( 1612530 2287860 ) ( 1618510 * ) + NEW met2 ( 1618510 2287350 ) ( * 2287860 ) + NEW met1 ( 1618510 2284630 ) ( * 2287350 ) + NEW met1 ( 20470 2284290 ) ( 1612070 * ) + NEW met1 ( 1618510 2284630 ) ( 1676700 * ) + NEW met2 ( 20470 2247740 ) M2M3_PR + NEW met1 ( 20470 2284290 ) M1M2_PR + NEW met1 ( 1848510 2289050 ) M1M2_PR + NEW met1 ( 1791010 2287350 ) M1M2_PR + NEW met1 ( 1791010 2289050 ) M1M2_PR + NEW met1 ( 1612530 2287350 ) M1M2_PR + NEW met2 ( 1612530 2287860 ) M2M3_PR + NEW met2 ( 1618510 2287860 ) M2M3_PR + NEW met1 ( 1618510 2287350 ) M1M2_PR ; + - io_oeb[29] ( PIN io_oeb[29] ) ( mprj io_oeb[29] ) + USE SIGNAL + + ROUTED met3 ( 1380 1987300 0 ) ( 19090 * ) + NEW met2 ( 19090 1987300 ) ( * 2283950 ) + NEW met2 ( 1871970 2288540 ) ( * 2288710 ) + NEW met2 ( 1871970 2288540 ) ( 1873580 * 0 ) + NEW met1 ( 1837470 2283950 ) ( * 2287350 ) + NEW met1 ( 1837470 2287350 ) ( 1837930 * ) + NEW met1 ( 1837930 2287350 ) ( * 2287690 ) + NEW met1 ( 1837930 2287690 ) ( 1838850 * ) + NEW met2 ( 1838850 2287690 ) ( * 2288710 ) + NEW met1 ( 1838850 2288710 ) ( 1871970 * ) + NEW met1 ( 1835400 2283950 ) ( 1837470 * ) + NEW met1 ( 1835400 2283950 ) ( * 2284290 ) + NEW met1 ( 1828500 2284290 ) ( 1835400 * ) + NEW met1 ( 1828500 2284290 ) ( * 2284630 ) + NEW met1 ( 1821600 2284630 ) ( 1828500 * ) + NEW met1 ( 1821600 2282590 ) ( * 2284630 ) + NEW met1 ( 1814700 2282590 ) ( 1821600 * ) + NEW met1 ( 1814700 2282590 ) ( * 2282930 ) + NEW met1 ( 1807800 2282930 ) ( 1814700 * ) + NEW met1 ( 1807800 2282930 ) ( * 2283610 ) + NEW met1 ( 1780200 2283610 ) ( 1807800 * ) + NEW met1 ( 1780200 2282930 ) ( * 2283610 ) + NEW met1 ( 1773300 2282930 ) ( 1780200 * ) + NEW met1 ( 1773300 2282590 ) ( * 2282930 ) + NEW met1 ( 1766400 2282590 ) ( 1773300 * ) + NEW met1 ( 1763410 2282590 ) ( * 2282930 ) + NEW met1 ( 1763410 2282590 ) ( 1764330 * ) + NEW met1 ( 1764330 2282590 ) ( * 2282930 ) + NEW met1 ( 1764330 2282930 ) ( 1764790 * ) + NEW met1 ( 1764790 2282930 ) ( * 2283270 ) + NEW met1 ( 1764790 2283270 ) ( 1765710 * ) + NEW met1 ( 1765710 2282930 ) ( * 2283270 ) + NEW met1 ( 1765710 2282930 ) ( 1766400 * ) + NEW met1 ( 1766400 2282590 ) ( * 2282930 ) + NEW met1 ( 1759500 2282930 ) ( 1763410 * ) + NEW met1 ( 1759500 2282590 ) ( * 2282930 ) + NEW met1 ( 1752600 2282590 ) ( 1759500 * ) + NEW met1 ( 1752600 2282590 ) ( * 2282930 ) + NEW met1 ( 1745700 2282930 ) ( 1752600 * ) + NEW met1 ( 1745700 2282590 ) ( * 2282930 ) + NEW met1 ( 1738800 2282590 ) ( 1745700 * ) + NEW met1 ( 1738800 2282590 ) ( * 2282930 ) + NEW met1 ( 1731900 2282930 ) ( 1738800 * ) + NEW met1 ( 1731900 2282250 ) ( * 2282930 ) + NEW met1 ( 1725000 2282250 ) ( 1731900 * ) + NEW met1 ( 1725000 2281230 ) ( * 2282250 ) + NEW met1 ( 1711200 2281230 ) ( 1725000 * ) + NEW met1 ( 1711200 2281230 ) ( * 2283270 ) + NEW met1 ( 1704300 2283270 ) ( 1711200 * ) + NEW met1 ( 1704300 2283270 ) ( * 2283610 ) + NEW met1 ( 1697400 2283610 ) ( 1704300 * ) + NEW met1 ( 1697400 2283270 ) ( * 2283610 ) + NEW met1 ( 1683600 2283270 ) ( 1697400 * ) + NEW met1 ( 1683600 2282590 ) ( * 2283270 ) + NEW met1 ( 1676700 2282590 ) ( 1683600 * ) + NEW met1 ( 1676700 2282590 ) ( * 2282930 ) + NEW met1 ( 1669800 2282930 ) ( 1676700 * ) + NEW met1 ( 1669800 2282590 ) ( * 2282930 ) + NEW met1 ( 1662900 2282590 ) ( 1669800 * ) + NEW met1 ( 1662900 2282590 ) ( * 2283270 ) + NEW met1 ( 1656000 2283270 ) ( 1662900 * ) + NEW met1 ( 1656000 2282250 ) ( * 2283270 ) + NEW met1 ( 1617130 2283950 ) ( * 2287350 ) + NEW met2 ( 1617130 2287350 ) ( * 2289220 ) + NEW met2 ( 1617130 2289220 ) ( 1618050 * ) + NEW met2 ( 1618050 2287350 ) ( * 2289220 ) + NEW met1 ( 1618050 2282250 ) ( * 2287350 ) + NEW met1 ( 19090 2283950 ) ( 1617130 * ) + NEW met1 ( 1618050 2282250 ) ( 1656000 * ) + NEW met2 ( 19090 1987300 ) M2M3_PR + NEW met1 ( 19090 2283950 ) M1M2_PR + NEW met1 ( 1871970 2288710 ) M1M2_PR + NEW met1 ( 1838850 2287690 ) M1M2_PR + NEW met1 ( 1838850 2288710 ) M1M2_PR + NEW met1 ( 1617130 2287350 ) M1M2_PR + NEW met1 ( 1618050 2287350 ) M1M2_PR ; + - io_oeb[2] ( PIN io_oeb[2] ) ( mprj io_oeb[2] ) + USE SIGNAL + + ROUTED met1 ( 2888570 564910 ) ( 2902370 * ) + NEW met2 ( 2902370 564060 ) ( * 564910 ) + NEW met3 ( 2902370 564060 ) ( 2917780 * 0 ) + NEW met2 ( 2888570 564910 ) ( * 2285140 ) + NEW met3 ( 1242000 2285140 ) ( * 2287180 ) + NEW met3 ( 1234870 2287180 ) ( 1242000 * ) + NEW met2 ( 1234180 2287180 0 ) ( 1234870 * ) + NEW met3 ( 1242000 2285140 ) ( 2888570 * ) + NEW met1 ( 2888570 564910 ) M1M2_PR + NEW met1 ( 2902370 564910 ) M1M2_PR + NEW met2 ( 2902370 564060 ) M2M3_PR + NEW met2 ( 2888570 2285140 ) M2M3_PR + NEW met2 ( 1234870 2287180 ) M2M3_PR ; + - io_oeb[30] ( PIN io_oeb[30] ) ( mprj io_oeb[30] ) + USE SIGNAL + + ROUTED met3 ( 1380 1726860 0 ) ( 17710 * ) + NEW met2 ( 17710 1726860 ) ( * 2298230 ) + NEW met2 ( 1895890 2289900 ) ( 1897500 * 0 ) + NEW met2 ( 1895890 2289900 ) ( * 2298230 ) + NEW met1 ( 17710 2298230 ) ( 1895890 * ) + NEW met2 ( 17710 1726860 ) M2M3_PR + NEW met1 ( 17710 2298230 ) M1M2_PR + NEW met1 ( 1895890 2298230 ) M1M2_PR ; + - io_oeb[31] ( PIN io_oeb[31] ) ( mprj io_oeb[31] ) + USE SIGNAL + + ROUTED met3 ( 1380 1465740 0 ) ( 15410 * ) + NEW met2 ( 15410 1465740 ) ( * 1469650 ) + NEW met2 ( 1169090 1469650 ) ( * 2281740 ) + NEW met4 ( 1919580 2281740 ) ( * 2287860 ) + NEW met3 ( 1919580 2287860 ) ( 1919810 * ) + NEW met2 ( 1919810 2287860 ) ( 1920960 * 0 ) + NEW met1 ( 15410 1469650 ) ( 1169090 * ) + NEW met3 ( 1169090 2281740 ) ( 1919580 * ) + NEW met2 ( 15410 1465740 ) M2M3_PR + NEW met1 ( 15410 1469650 ) M1M2_PR + NEW met1 ( 1169090 1469650 ) M1M2_PR + NEW met2 ( 1169090 2281740 ) M2M3_PR + NEW met3 ( 1919580 2281740 ) M3M4_PR + NEW met3 ( 1919580 2287860 ) M3M4_PR + NEW met2 ( 1919810 2287860 ) M2M3_PR + NEW met3 ( 1919580 2287860 ) RECT ( -390 -150 0 150 ) ; + - io_oeb[32] ( PIN io_oeb[32] ) ( mprj io_oeb[32] ) + USE SIGNAL + + ROUTED met3 ( 1380 1205300 0 ) ( 17710 * ) + NEW met2 ( 17710 1205300 ) ( * 1207170 ) + NEW met2 ( 1172310 1207170 ) ( * 2281060 ) + NEW met4 ( 1943500 2281060 ) ( * 2287860 ) + NEW met3 ( 1943500 2287860 ) ( 1943730 * ) + NEW met2 ( 1943730 2287860 ) ( 1944880 * 0 ) + NEW met1 ( 17710 1207170 ) ( 1172310 * ) + NEW met3 ( 1172310 2281060 ) ( 1943500 * ) + NEW met2 ( 17710 1205300 ) M2M3_PR + NEW met1 ( 17710 1207170 ) M1M2_PR + NEW met1 ( 1172310 1207170 ) M1M2_PR + NEW met2 ( 1172310 2281060 ) M2M3_PR + NEW met3 ( 1943500 2281060 ) M3M4_PR + NEW met3 ( 1943500 2287860 ) M3M4_PR + NEW met2 ( 1943730 2287860 ) M2M3_PR + NEW met3 ( 1943500 2287860 ) RECT ( -390 -150 0 150 ) ; + - io_oeb[33] ( PIN io_oeb[33] ) ( mprj io_oeb[33] ) + USE SIGNAL + + ROUTED met3 ( 1380 944180 0 ) ( 17710 * ) + NEW met2 ( 17710 944180 ) ( * 945030 ) + NEW met2 ( 1171390 945030 ) ( * 2280380 ) + NEW met4 ( 1965580 2280380 ) ( * 2286500 ) + NEW met1 ( 17710 945030 ) ( 1171390 * ) + NEW met4 ( 1967420 2286500 ) ( * 2287180 ) + NEW met3 ( 1967420 2287180 ) ( 1967650 * ) + NEW met2 ( 1967650 2287180 ) ( 1968340 * 0 ) + NEW met4 ( 1965580 2286500 ) ( 1967420 * ) + NEW met3 ( 1171390 2280380 ) ( 1965580 * ) + NEW met2 ( 17710 944180 ) M2M3_PR + NEW met1 ( 17710 945030 ) M1M2_PR + NEW met1 ( 1171390 945030 ) M1M2_PR + NEW met2 ( 1171390 2280380 ) M2M3_PR + NEW met3 ( 1965580 2280380 ) M3M4_PR + NEW met3 ( 1967420 2287180 ) M3M4_PR + NEW met2 ( 1967650 2287180 ) M2M3_PR + NEW met3 ( 1967650 2287180 ) RECT ( 0 -150 390 150 ) ; + - io_oeb[34] ( PIN io_oeb[34] ) ( mprj io_oeb[34] ) + USE SIGNAL + + ROUTED met3 ( 1380 683740 0 ) ( 17710 * ) + NEW met2 ( 17710 683740 ) ( * 689690 ) + NEW met2 ( 1170470 689690 ) ( * 2294830 ) + NEW met1 ( 17710 689690 ) ( 1170470 * ) + NEW met2 ( 1990650 2289900 ) ( 1992260 * 0 ) + NEW met2 ( 1990650 2289900 ) ( * 2294830 ) + NEW met1 ( 1170470 2294830 ) ( 1990650 * ) + NEW met2 ( 17710 683740 ) M2M3_PR + NEW met1 ( 17710 689690 ) M1M2_PR + NEW met1 ( 1170470 689690 ) M1M2_PR + NEW met1 ( 1170470 2294830 ) M1M2_PR + NEW met1 ( 1990650 2294830 ) M1M2_PR ; + - io_oeb[35] ( PIN io_oeb[35] ) ( mprj io_oeb[35] ) + USE SIGNAL + + ROUTED met3 ( 1380 423300 0 ) ( 17710 * ) + NEW met2 ( 17710 423300 ) ( * 427550 ) + NEW met2 ( 1169550 427550 ) ( * 2293980 ) + NEW met2 ( 2015490 2289900 ) ( 2015720 * 0 ) + NEW met2 ( 2015490 2289900 ) ( * 2293980 ) + NEW met1 ( 17710 427550 ) ( 1169550 * ) + NEW met3 ( 1169550 2293980 ) ( 2015490 * ) + NEW met2 ( 17710 423300 ) M2M3_PR + NEW met1 ( 17710 427550 ) M1M2_PR + NEW met1 ( 1169550 427550 ) M1M2_PR + NEW met2 ( 1169550 2293980 ) M2M3_PR + NEW met2 ( 2015490 2293980 ) M2M3_PR ; + - io_oeb[36] ( PIN io_oeb[36] ) ( mprj io_oeb[36] ) + USE SIGNAL + + ROUTED met3 ( 1380 227460 0 ) ( 3220 * ) + NEW met3 ( 3220 226780 ) ( * 227460 ) + NEW met3 ( 1380 226780 ) ( 3220 * ) + NEW met3 ( 1380 224060 ) ( * 226780 ) + NEW met4 ( 1168860 221340 ) ( * 2292620 ) + NEW met2 ( 2038030 2289900 ) ( 2039640 * 0 ) + NEW met2 ( 2038030 2289900 ) ( * 2292620 ) + NEW met3 ( 1380 224060 ) ( 34500 * ) + NEW met3 ( 34500 221340 ) ( * 224060 ) + NEW met3 ( 34500 221340 ) ( 1168860 * ) + NEW met3 ( 1168860 2292620 ) ( 2038030 * ) + NEW met3 ( 1168860 221340 ) M3M4_PR + NEW met3 ( 1168860 2292620 ) M3M4_PR + NEW met2 ( 2038030 2292620 ) M2M3_PR ; + - io_oeb[37] ( PIN io_oeb[37] ) ( mprj io_oeb[37] ) + USE SIGNAL + + ROUTED met3 ( 1380 32300 0 ) ( 17250 * ) + NEW met2 ( 17250 32300 ) ( * 2302140 ) + NEW met2 ( 2061490 2289900 ) ( * 2302140 ) + NEW met2 ( 2061490 2289900 ) ( 2063100 * 0 ) + NEW met3 ( 17250 2302140 ) ( 2061490 * ) + NEW met2 ( 17250 32300 ) M2M3_PR + NEW met2 ( 17250 2302140 ) M2M3_PR + NEW met2 ( 2061490 2302140 ) M2M3_PR ; + - io_oeb[3] ( PIN io_oeb[3] ) ( mprj io_oeb[3] ) + USE SIGNAL + + ROUTED met1 ( 2889490 765850 ) ( 2903750 * ) + NEW met2 ( 2903750 763300 ) ( * 765850 ) + NEW met3 ( 2903750 763300 ) ( 2917780 * 0 ) + NEW met2 ( 1257640 2289900 0 ) ( 1259250 * ) + NEW met2 ( 1259250 2289900 ) ( * 2292110 ) + NEW met2 ( 2889490 765850 ) ( * 2292110 ) + NEW met1 ( 1259250 2292110 ) ( 2889490 * ) + NEW met1 ( 2889490 765850 ) M1M2_PR + NEW met1 ( 2903750 765850 ) M1M2_PR + NEW met2 ( 2903750 763300 ) M2M3_PR + NEW met1 ( 1259250 2292110 ) M1M2_PR + NEW met1 ( 2889490 2292110 ) M1M2_PR ; + - io_oeb[4] ( PIN io_oeb[4] ) ( mprj io_oeb[4] ) + USE SIGNAL + + ROUTED met1 ( 2890410 965770 ) ( 2898230 * ) + NEW met2 ( 2898230 962540 ) ( * 965770 ) + NEW met3 ( 2898230 962540 ) ( 2917780 * 0 ) + NEW met2 ( 1281560 2289900 0 ) ( 1283170 * ) + NEW met2 ( 1283170 2289900 ) ( * 2292450 ) + NEW met2 ( 2890410 965770 ) ( * 2292450 ) + NEW met1 ( 1283170 2292450 ) ( 2890410 * ) + NEW met1 ( 2890410 965770 ) M1M2_PR + NEW met1 ( 2898230 965770 ) M1M2_PR + NEW met2 ( 2898230 962540 ) M2M3_PR + NEW met1 ( 1283170 2292450 ) M1M2_PR + NEW met1 ( 2890410 2292450 ) M1M2_PR ; + - io_oeb[5] ( PIN io_oeb[5] ) ( mprj io_oeb[5] ) + USE SIGNAL + + ROUTED met1 ( 2890870 1166030 ) ( 2898230 * ) + NEW met2 ( 2898230 1161780 ) ( * 1166030 ) + NEW met3 ( 2898230 1161780 ) ( 2917780 * 0 ) + NEW met2 ( 2890870 1166030 ) ( * 2292790 ) + NEW met2 ( 1305020 2289900 0 ) ( 1306630 * ) + NEW met2 ( 1306630 2289900 ) ( * 2292790 ) + NEW met1 ( 1306630 2292790 ) ( 2890870 * ) + NEW met1 ( 2890870 1166030 ) M1M2_PR + NEW met1 ( 2898230 1166030 ) M1M2_PR + NEW met2 ( 2898230 1161780 ) M2M3_PR + NEW met1 ( 2890870 2292790 ) M1M2_PR + NEW met1 ( 1306630 2292790 ) M1M2_PR ; + - io_oeb[6] ( PIN io_oeb[6] ) ( mprj io_oeb[6] ) + USE SIGNAL + + ROUTED met1 ( 2887190 1365950 ) ( 2898230 * ) + NEW met2 ( 2898230 1361020 ) ( * 1365950 ) + NEW met3 ( 2898230 1361020 ) ( 2917780 * 0 ) + NEW met2 ( 2887190 1365950 ) ( * 2293130 ) + NEW met2 ( 1328940 2289900 0 ) ( 1330550 * ) + NEW met2 ( 1330550 2289900 ) ( * 2293130 ) + NEW met1 ( 1330550 2293130 ) ( 2887190 * ) + NEW met1 ( 2887190 1365950 ) M1M2_PR + NEW met1 ( 2898230 1365950 ) M1M2_PR + NEW met2 ( 2898230 1361020 ) M2M3_PR + NEW met1 ( 2887190 2293130 ) M1M2_PR + NEW met1 ( 1330550 2293130 ) M1M2_PR ; + - io_oeb[7] ( PIN io_oeb[7] ) ( mprj io_oeb[7] ) + USE SIGNAL + + ROUTED met2 ( 1352170 2289900 ) ( 1352400 * 0 ) + NEW met2 ( 1352170 2289900 ) ( * 2293470 ) + NEW met1 ( 2886730 1627410 ) ( 2900530 * ) + NEW met2 ( 2900530 1626220 ) ( * 1627410 ) + NEW met3 ( 2900530 1626220 ) ( 2917780 * 0 ) + NEW met2 ( 2886730 1627410 ) ( * 2293470 ) + NEW met1 ( 1352170 2293470 ) ( 2886730 * ) + NEW met1 ( 1352170 2293470 ) M1M2_PR + NEW met1 ( 2886730 1627410 ) M1M2_PR + NEW met1 ( 2900530 1627410 ) M1M2_PR + NEW met2 ( 2900530 1626220 ) M2M3_PR + NEW met1 ( 2886730 2293470 ) M1M2_PR ; + - io_oeb[8] ( PIN io_oeb[8] ) ( mprj io_oeb[8] ) + USE SIGNAL + + ROUTED met2 ( 1377930 2287180 ) ( * 2287350 ) + NEW met2 ( 1376320 2287180 0 ) ( 1377930 * ) + NEW met3 ( 2900990 1892100 ) ( 2917780 * 0 ) + NEW met2 ( 2900990 1892100 ) ( * 2285650 ) + NEW met1 ( 1377930 2287350 ) ( 1386900 * ) + NEW met1 ( 1386900 2285650 ) ( * 2287350 ) + NEW met1 ( 1890600 2285650 ) ( 2900990 * ) + NEW met2 ( 1866450 2287350 ) ( * 2288370 ) + NEW met1 ( 1866450 2287350 ) ( 1890600 * ) + NEW met1 ( 1890600 2285650 ) ( * 2287350 ) + NEW met1 ( 1780200 2288370 ) ( 1866450 * ) + NEW met1 ( 1780200 2288370 ) ( * 2288710 ) + NEW met1 ( 1704990 2285650 ) ( * 2287350 ) + NEW met2 ( 1704990 2287350 ) ( * 2288710 ) + NEW met1 ( 1704990 2288710 ) ( 1780200 * ) + NEW met1 ( 1601490 2285650 ) ( * 2288030 ) + NEW met1 ( 1601490 2288030 ) ( 1621270 * ) + NEW met1 ( 1621270 2285650 ) ( * 2288030 ) + NEW met1 ( 1386900 2285650 ) ( 1601490 * ) + NEW met1 ( 1621270 2285650 ) ( 1704990 * ) + NEW met1 ( 1377930 2287350 ) M1M2_PR + NEW met2 ( 2900990 1892100 ) M2M3_PR + NEW met1 ( 2900990 2285650 ) M1M2_PR + NEW met1 ( 1866450 2288370 ) M1M2_PR + NEW met1 ( 1866450 2287350 ) M1M2_PR + NEW met1 ( 1704990 2287350 ) M1M2_PR + NEW met1 ( 1704990 2288710 ) M1M2_PR ; + - io_oeb[9] ( PIN io_oeb[9] ) ( mprj io_oeb[9] ) + USE SIGNAL + + ROUTED met3 ( 2917780 2153220 ) ( * 2157300 ) + NEW met3 ( 2916860 2157300 ) ( 2917780 * ) + NEW met3 ( 2916860 2157300 ) ( * 2157980 ) + NEW met3 ( 2916860 2157980 ) ( 2917780 * 0 ) + NEW met4 ( 2049300 2296700 ) ( * 2301460 ) + NEW met4 ( 2048380 2296700 ) ( 2049300 * ) + NEW met4 ( 2048380 2153220 ) ( * 2296700 ) + NEW met3 ( 2048380 2153220 ) ( 2917780 * ) + NEW met2 ( 1399780 2289900 0 ) ( 1400470 * ) + NEW met2 ( 1400470 2289900 ) ( * 2301460 ) + NEW met3 ( 1400470 2301460 ) ( 2049300 * ) + NEW met3 ( 2048380 2153220 ) M3M4_PR + NEW met3 ( 2049300 2301460 ) M3M4_PR + NEW met2 ( 1400470 2301460 ) M2M3_PR ; + - io_out[0] ( PIN io_out[0] ) ( mprj io_out[0] ) + USE SIGNAL + + ROUTED met3 ( 2887420 98940 ) ( 2917780 * 0 ) + NEW met4 ( 2887420 98940 ) ( * 2291260 ) + NEW met2 ( 1194620 2289900 0 ) ( * 2291260 ) + NEW met3 ( 1194620 2291260 ) ( 2887420 * ) + NEW met3 ( 2887420 98940 ) M3M4_PR + NEW met3 ( 2887420 2291260 ) M3M4_PR + NEW met2 ( 1194620 2291260 ) M2M3_PR ; + - io_out[10] ( PIN io_out[10] ) ( mprj io_out[10] ) + USE SIGNAL + + ROUTED met2 ( 2900070 2352970 ) ( * 2357220 ) + NEW met3 ( 2900070 2357220 ) ( 2917780 * 0 ) + NEW met2 ( 1429450 2289900 ) ( 1431520 * 0 ) + NEW met2 ( 1429450 2289900 ) ( * 2352970 ) + NEW met1 ( 1429450 2352970 ) ( 2900070 * ) + NEW met1 ( 2900070 2352970 ) M1M2_PR + NEW met2 ( 2900070 2357220 ) M2M3_PR + NEW met1 ( 1429450 2352970 ) M1M2_PR ; + - io_out[11] ( PIN io_out[11] ) ( mprj io_out[11] ) + USE SIGNAL + + ROUTED met2 ( 2900990 2622250 ) ( * 2622420 ) + NEW met3 ( 2900990 2622420 ) ( 2917780 * 0 ) + NEW met2 ( 1452910 2289900 ) ( 1454980 * 0 ) + NEW met2 ( 1449230 2401200 ) ( 1452910 * ) + NEW met2 ( 1452910 2289900 ) ( * 2401200 ) + NEW met2 ( 1449230 2401200 ) ( * 2622250 ) + NEW met1 ( 1449230 2622250 ) ( 2900990 * ) + NEW met1 ( 1449230 2622250 ) M1M2_PR + NEW met1 ( 2900990 2622250 ) M1M2_PR + NEW met2 ( 2900990 2622420 ) M2M3_PR ; + - io_out[12] ( PIN io_out[12] ) ( mprj io_out[12] ) + USE SIGNAL + + ROUTED met2 ( 2900990 2884390 ) ( * 2888300 ) + NEW met3 ( 2900990 2888300 ) ( 2917780 * 0 ) + NEW met2 ( 1476830 2289900 ) ( 1478900 * 0 ) + NEW met2 ( 1476830 2289900 ) ( * 2884390 ) + NEW met1 ( 1476830 2884390 ) ( 2900990 * ) + NEW met1 ( 1476830 2884390 ) M1M2_PR + NEW met1 ( 2900990 2884390 ) M1M2_PR + NEW met2 ( 2900990 2888300 ) M2M3_PR ; + - io_out[13] ( PIN io_out[13] ) ( mprj io_out[13] ) + USE SIGNAL + + ROUTED met2 ( 2900990 3153330 ) ( * 3154180 ) + NEW met3 ( 2900990 3154180 ) ( 2917780 * 0 ) + NEW met2 ( 1500290 2289900 ) ( 1502360 * 0 ) + NEW met2 ( 1497990 2401200 ) ( 1500290 * ) + NEW met2 ( 1500290 2289900 ) ( * 2401200 ) + NEW met2 ( 1497990 2401200 ) ( * 3153330 ) + NEW met1 ( 1497990 3153330 ) ( 2900990 * ) + NEW met1 ( 2900990 3153330 ) M1M2_PR + NEW met2 ( 2900990 3154180 ) M2M3_PR + NEW met1 ( 1497990 3153330 ) M1M2_PR ; + - io_out[14] ( PIN io_out[14] ) ( mprj io_out[14] ) + USE SIGNAL + + ROUTED met2 ( 2900990 3416150 ) ( * 3419380 ) + NEW met3 ( 2900990 3419380 ) ( 2917780 * 0 ) + NEW met2 ( 1525130 2289900 ) ( 1526280 * 0 ) + NEW met2 ( 1525130 2289900 ) ( * 3416150 ) + NEW met1 ( 1525130 3416150 ) ( 2900990 * ) + NEW met1 ( 2900990 3416150 ) M1M2_PR + NEW met2 ( 2900990 3419380 ) M2M3_PR + NEW met1 ( 1525130 3416150 ) M1M2_PR ; + - io_out[15] ( PIN io_out[15] ) ( mprj io_out[15] ) + USE SIGNAL + + ROUTED met2 ( 1547670 2289900 ) ( 1549740 * 0 ) + NEW met2 ( 1545830 2401200 ) ( 1547670 * ) + NEW met2 ( 1547670 2289900 ) ( * 2401200 ) + NEW met2 ( 1545830 2401200 ) ( * 3502850 ) + NEW met2 ( 2717450 3502850 ) ( * 3517980 0 ) + NEW met1 ( 1545830 3502850 ) ( 2717450 * ) + NEW met1 ( 1545830 3502850 ) M1M2_PR + NEW met1 ( 2717450 3502850 ) M1M2_PR ; + - io_out[16] ( PIN io_out[16] ) ( mprj io_out[16] ) + USE SIGNAL + + ROUTED met2 ( 1573430 2289900 ) ( 1573660 * 0 ) + NEW met2 ( 1573430 2289900 ) ( * 3503870 ) + NEW met1 ( 1573430 3503870 ) ( 2392690 * ) + NEW met2 ( 2392690 3503870 ) ( * 3517980 0 ) + NEW met1 ( 1573430 3503870 ) M1M2_PR + NEW met1 ( 2392690 3503870 ) M1M2_PR ; + - io_out[17] ( PIN io_out[17] ) ( mprj io_out[17] ) + USE SIGNAL + + ROUTED met1 ( 1594130 3501150 ) ( 2068390 * ) + NEW met2 ( 1595050 2289900 ) ( 1597120 * 0 ) + NEW met2 ( 1594130 2401200 ) ( 1595050 * ) + NEW met2 ( 1595050 2289900 ) ( * 2401200 ) + NEW met2 ( 1594130 2401200 ) ( * 3501150 ) + NEW met2 ( 2068390 3501150 ) ( * 3517980 0 ) + NEW met1 ( 1594130 3501150 ) M1M2_PR + NEW met1 ( 2068390 3501150 ) M1M2_PR ; + - io_out[18] ( PIN io_out[18] ) ( mprj io_out[18] ) + USE SIGNAL + + ROUTED met2 ( 1739030 2302310 ) ( * 3512100 ) + NEW met2 ( 1739030 3512100 ) ( 1744090 * ) + NEW met2 ( 1744090 3512100 ) ( * 3517980 0 ) + NEW met2 ( 1620810 2289220 ) ( 1621040 * 0 ) + NEW met2 ( 1620810 2289220 ) ( * 2302310 ) + NEW met1 ( 1620810 2302310 ) ( 1739030 * ) + NEW met1 ( 1739030 2302310 ) M1M2_PR + NEW met1 ( 1620810 2302310 ) M1M2_PR ; + - io_out[19] ( PIN io_out[19] ) ( mprj io_out[19] ) + USE SIGNAL + + ROUTED met2 ( 1642890 2289900 ) ( 1644500 * 0 ) + NEW met2 ( 1642890 2289900 ) ( * 2301970 ) + NEW met2 ( 1414730 2301970 ) ( * 3512100 ) + NEW met2 ( 1414730 3512100 ) ( 1419330 * ) + NEW met2 ( 1419330 3512100 ) ( * 3517980 0 ) + NEW met1 ( 1414730 2301970 ) ( 1642890 * ) + NEW met1 ( 1642890 2301970 ) M1M2_PR + NEW met1 ( 1414730 2301970 ) M1M2_PR ; + - io_out[1] ( PIN io_out[1] ) ( mprj io_out[1] ) + USE SIGNAL + + ROUTED met1 ( 2888110 303450 ) ( 2899610 * ) + NEW met2 ( 2899610 298180 ) ( * 303450 ) + NEW met3 ( 2899610 298180 ) ( 2917780 * 0 ) + NEW met2 ( 2888110 303450 ) ( * 2291940 ) + NEW met2 ( 1218080 2289900 0 ) ( 1219690 * ) + NEW met2 ( 1219690 2289900 ) ( * 2291940 ) + NEW met3 ( 1219690 2291940 ) ( 2888110 * ) + NEW met1 ( 2888110 303450 ) M1M2_PR + NEW met1 ( 2899610 303450 ) M1M2_PR + NEW met2 ( 2899610 298180 ) M2M3_PR + NEW met2 ( 2888110 2291940 ) M2M3_PR + NEW met2 ( 1219690 2291940 ) M2M3_PR ; + - io_out[20] ( PIN io_out[20] ) ( mprj io_out[20] ) + USE SIGNAL + + ROUTED met2 ( 1095030 3504890 ) ( * 3517980 0 ) + NEW met2 ( 1666810 2289900 ) ( 1668420 * 0 ) + NEW met2 ( 1666810 2289900 ) ( * 2302650 ) + NEW met1 ( 1645650 2302650 ) ( 1666810 * ) + NEW met2 ( 1645650 2302650 ) ( * 3504890 ) + NEW met1 ( 1095030 3504890 ) ( 1645650 * ) + NEW met1 ( 1095030 3504890 ) M1M2_PR + NEW met1 ( 1645650 3504890 ) M1M2_PR + NEW met1 ( 1666810 2302650 ) M1M2_PR + NEW met1 ( 1645650 2302650 ) M1M2_PR ; + - io_out[21] ( PIN io_out[21] ) ( mprj io_out[21] ) + USE SIGNAL + + ROUTED met2 ( 770730 3503530 ) ( * 3517980 0 ) + NEW met2 ( 1666350 2301970 ) ( * 3503530 ) + NEW met1 ( 770730 3503530 ) ( 1666350 * ) + NEW met2 ( 1690730 2289900 ) ( 1691880 * 0 ) + NEW met2 ( 1690730 2289900 ) ( * 2301970 ) + NEW met1 ( 1666350 2301970 ) ( 1690730 * ) + NEW met1 ( 770730 3503530 ) M1M2_PR + NEW met1 ( 1666350 3503530 ) M1M2_PR + NEW met1 ( 1666350 2301970 ) M1M2_PR + NEW met1 ( 1690730 2301970 ) M1M2_PR ; + - io_out[22] ( PIN io_out[22] ) ( mprj io_out[22] ) + USE SIGNAL + + ROUTED met1 ( 445970 3502510 ) ( 1693950 * ) + NEW met2 ( 445970 3502510 ) ( * 3517980 0 ) + NEW met1 ( 1693950 2301970 ) ( 1714190 * ) + NEW met2 ( 1693950 2301970 ) ( * 3502510 ) + NEW met2 ( 1714190 2289900 ) ( 1715800 * 0 ) + NEW met2 ( 1714190 2289900 ) ( * 2301970 ) + NEW met1 ( 445970 3502510 ) M1M2_PR + NEW met1 ( 1693950 3502510 ) M1M2_PR + NEW met1 ( 1714190 2301970 ) M1M2_PR + NEW met1 ( 1693950 2301970 ) M1M2_PR ; + - io_out[23] ( PIN io_out[23] ) ( mprj io_out[23] ) + USE SIGNAL + + ROUTED met2 ( 121670 3501830 ) ( * 3517980 0 ) + NEW met2 ( 1739260 2289220 0 ) ( 1739950 * ) + NEW met2 ( 1739950 2289220 ) ( * 2302990 ) + NEW met1 ( 121670 3501830 ) ( 1714650 * ) + NEW met1 ( 1714650 2302990 ) ( 1739950 * ) + NEW met2 ( 1714650 2302990 ) ( * 3501830 ) + NEW met1 ( 121670 3501830 ) M1M2_PR + NEW met1 ( 1739950 2302990 ) M1M2_PR + NEW met1 ( 1714650 3501830 ) M1M2_PR + NEW met1 ( 1714650 2302990 ) M1M2_PR ; + - io_out[24] ( PIN io_out[24] ) ( mprj io_out[24] ) + USE SIGNAL + + ROUTED met3 ( 1380 3356140 0 ) ( 17710 * ) + NEW met2 ( 17710 3353590 ) ( * 3356140 ) + NEW met2 ( 1759730 2401200 ) ( 1761110 * ) + NEW met2 ( 1759730 2401200 ) ( * 3353590 ) + NEW met1 ( 17710 3353590 ) ( 1759730 * ) + NEW met2 ( 1761110 2289900 ) ( 1763180 * 0 ) + NEW met2 ( 1761110 2289900 ) ( * 2401200 ) + NEW met2 ( 17710 3356140 ) M2M3_PR + NEW met1 ( 17710 3353590 ) M1M2_PR + NEW met1 ( 1759730 3353590 ) M1M2_PR ; + - io_out[25] ( PIN io_out[25] ) ( mprj io_out[25] ) + USE SIGNAL + + ROUTED met3 ( 1380 3095700 0 ) ( 15870 * ) + NEW met2 ( 15870 3091450 ) ( * 3095700 ) + NEW met1 ( 15870 3091450 ) ( 1780430 * ) + NEW met2 ( 1780430 2401200 ) ( 1784570 * ) + NEW met2 ( 1780430 2401200 ) ( * 3091450 ) + NEW met2 ( 1784570 2289900 ) ( 1786640 * 0 ) + NEW met2 ( 1784570 2289900 ) ( * 2401200 ) + NEW met2 ( 15870 3095700 ) M2M3_PR + NEW met1 ( 15870 3091450 ) M1M2_PR + NEW met1 ( 1780430 3091450 ) M1M2_PR ; + - io_out[26] ( PIN io_out[26] ) ( mprj io_out[26] ) + USE SIGNAL + + ROUTED met3 ( 1380 2834580 0 ) ( 17250 * ) + NEW met2 ( 17250 2829310 ) ( * 2834580 ) + NEW met1 ( 17250 2829310 ) ( 1808030 * ) + NEW met2 ( 1808030 2401200 ) ( 1808490 * ) + NEW met2 ( 1808030 2401200 ) ( * 2829310 ) + NEW met2 ( 1808490 2289900 ) ( 1810560 * 0 ) + NEW met2 ( 1808490 2289900 ) ( * 2401200 ) + NEW met2 ( 17250 2834580 ) M2M3_PR + NEW met1 ( 17250 2829310 ) M1M2_PR + NEW met1 ( 1808030 2829310 ) M1M2_PR ; + - io_out[27] ( PIN io_out[27] ) ( mprj io_out[27] ) + USE SIGNAL + + ROUTED met3 ( 1380 2574140 0 ) ( 17250 * ) + NEW met2 ( 17250 2573970 ) ( * 2574140 ) + NEW met2 ( 1742250 2302310 ) ( * 2573970 ) + NEW met1 ( 17250 2573970 ) ( 1742250 * ) + NEW met1 ( 1742250 2302310 ) ( 1832410 * ) + NEW met2 ( 1832410 2289900 ) ( 1834020 * 0 ) + NEW met2 ( 1832410 2289900 ) ( * 2302310 ) + NEW met2 ( 17250 2574140 ) M2M3_PR + NEW met1 ( 17250 2573970 ) M1M2_PR + NEW met1 ( 1742250 2302310 ) M1M2_PR + NEW met1 ( 1742250 2573970 ) M1M2_PR + NEW met1 ( 1832410 2302310 ) M1M2_PR ; + - io_out[28] ( PIN io_out[28] ) ( mprj io_out[28] ) + USE SIGNAL + + ROUTED met3 ( 1380 2313020 0 ) ( 16330 * ) + NEW met2 ( 16330 2311830 ) ( * 2313020 ) + NEW met2 ( 1745470 2301970 ) ( * 2311830 ) + NEW met1 ( 16330 2311830 ) ( 1745470 * ) + NEW met1 ( 1745470 2301970 ) ( 1856330 * ) + NEW met2 ( 1856330 2289900 ) ( 1857940 * 0 ) + NEW met2 ( 1856330 2289900 ) ( * 2301970 ) + NEW met2 ( 16330 2313020 ) M2M3_PR + NEW met1 ( 16330 2311830 ) M1M2_PR + NEW met1 ( 1745470 2311830 ) M1M2_PR + NEW met1 ( 1745470 2301970 ) M1M2_PR + NEW met1 ( 1856330 2301970 ) M1M2_PR ; + - io_out[29] ( PIN io_out[29] ) ( mprj io_out[29] ) + USE SIGNAL + + ROUTED met3 ( 1380 2052580 0 ) ( 19550 * ) + NEW met2 ( 19550 2052580 ) ( * 2298570 ) + NEW met2 ( 1879790 2289900 ) ( 1881400 * 0 ) + NEW met2 ( 1879790 2289900 ) ( * 2298570 ) + NEW met1 ( 19550 2298570 ) ( 1879790 * ) + NEW met2 ( 19550 2052580 ) M2M3_PR + NEW met1 ( 19550 2298570 ) M1M2_PR + NEW met1 ( 1879790 2298570 ) M1M2_PR ; + - io_out[2] ( PIN io_out[2] ) ( mprj io_out[2] ) + USE SIGNAL + + ROUTED met1 ( 2887650 503370 ) ( 2899150 * ) + NEW met2 ( 2899150 497420 ) ( * 503370 ) + NEW met3 ( 2899150 497420 ) ( 2917780 * 0 ) + NEW met2 ( 2887650 503370 ) ( * 2291770 ) + NEW met2 ( 1241770 2289900 ) ( 1242000 * 0 ) + NEW met2 ( 1241770 2289900 ) ( * 2291770 ) + NEW met1 ( 1241770 2291770 ) ( 2887650 * ) + NEW met1 ( 2887650 503370 ) M1M2_PR + NEW met1 ( 2899150 503370 ) M1M2_PR + NEW met2 ( 2899150 497420 ) M2M3_PR + NEW met1 ( 2887650 2291770 ) M1M2_PR + NEW met1 ( 1241770 2291770 ) M1M2_PR ; + - io_out[30] ( PIN io_out[30] ) ( mprj io_out[30] ) + USE SIGNAL + + ROUTED met3 ( 1380 1792140 0 ) ( 18170 * ) + NEW met2 ( 18170 1792140 ) ( * 2297890 ) + NEW met2 ( 1904630 2289900 ) ( 1905320 * 0 ) + NEW met2 ( 1904630 2289900 ) ( * 2297890 ) + NEW met1 ( 18170 2297890 ) ( 1904630 * ) + NEW met2 ( 18170 1792140 ) M2M3_PR + NEW met1 ( 18170 2297890 ) M1M2_PR + NEW met1 ( 1904630 2297890 ) M1M2_PR ; + - io_out[31] ( PIN io_out[31] ) ( mprj io_out[31] ) + USE SIGNAL + + ROUTED met3 ( 1380 1531020 0 ) ( 17710 * ) + NEW met2 ( 17710 1531020 ) ( * 1531530 ) + NEW met2 ( 1157590 1531530 ) ( * 2295510 ) + NEW met2 ( 1927170 2289900 ) ( 1928780 * 0 ) + NEW met2 ( 1927170 2289900 ) ( * 2295510 ) + NEW met1 ( 17710 1531530 ) ( 1157590 * ) + NEW met1 ( 1157590 2295510 ) ( 1927170 * ) + NEW met2 ( 17710 1531020 ) M2M3_PR + NEW met1 ( 17710 1531530 ) M1M2_PR + NEW met1 ( 1157590 1531530 ) M1M2_PR + NEW met1 ( 1157590 2295510 ) M1M2_PR + NEW met1 ( 1927170 2295510 ) M1M2_PR ; + - io_out[32] ( PIN io_out[32] ) ( mprj io_out[32] ) + USE SIGNAL + + ROUTED met3 ( 1380 1270580 0 ) ( 15870 * ) + NEW met2 ( 15870 1270580 ) ( * 1276190 ) + NEW met2 ( 1157130 1276190 ) ( * 2295170 ) + NEW met2 ( 1951090 2289900 ) ( 1952700 * 0 ) + NEW met2 ( 1951090 2289900 ) ( * 2295170 ) + NEW met1 ( 15870 1276190 ) ( 1157130 * ) + NEW met1 ( 1157130 2295170 ) ( 1951090 * ) + NEW met2 ( 15870 1270580 ) M2M3_PR + NEW met1 ( 15870 1276190 ) M1M2_PR + NEW met1 ( 1157130 1276190 ) M1M2_PR + NEW met1 ( 1157130 2295170 ) M1M2_PR + NEW met1 ( 1951090 2295170 ) M1M2_PR ; + - io_out[33] ( PIN io_out[33] ) ( mprj io_out[33] ) + USE SIGNAL + + ROUTED met3 ( 1380 1009460 0 ) ( 15410 * ) + NEW met2 ( 15410 1009460 ) ( * 1014050 ) + NEW met2 ( 1156670 1014050 ) ( * 2294490 ) + NEW met1 ( 15410 1014050 ) ( 1156670 * ) + NEW met2 ( 1974550 2289900 ) ( 1976160 * 0 ) + NEW met2 ( 1974550 2289900 ) ( * 2294490 ) + NEW met1 ( 1156670 2294490 ) ( 1974550 * ) + NEW met2 ( 15410 1009460 ) M2M3_PR + NEW met1 ( 15410 1014050 ) M1M2_PR + NEW met1 ( 1156670 1014050 ) M1M2_PR + NEW met1 ( 1156670 2294490 ) M1M2_PR + NEW met1 ( 1974550 2294490 ) M1M2_PR ; + - io_out[34] ( PIN io_out[34] ) ( mprj io_out[34] ) + USE SIGNAL + + ROUTED met3 ( 1380 749020 0 ) ( 17710 * ) + NEW met2 ( 17710 749020 ) ( * 751910 ) + NEW met2 ( 1156210 751910 ) ( * 2294150 ) + NEW met1 ( 17710 751910 ) ( 1156210 * ) + NEW met2 ( 1998470 2289900 ) ( 2000080 * 0 ) + NEW met2 ( 1998470 2289900 ) ( * 2294150 ) + NEW met1 ( 1156210 2294150 ) ( 1998470 * ) + NEW met2 ( 17710 749020 ) M2M3_PR + NEW met1 ( 17710 751910 ) M1M2_PR + NEW met1 ( 1156210 751910 ) M1M2_PR + NEW met1 ( 1156210 2294150 ) M1M2_PR + NEW met1 ( 1998470 2294150 ) M1M2_PR ; + - io_out[35] ( PIN io_out[35] ) ( mprj io_out[35] ) + USE SIGNAL + + ROUTED met3 ( 1380 487900 0 ) ( 17710 * ) + NEW met2 ( 17710 487900 ) ( * 489770 ) + NEW met2 ( 1155750 489770 ) ( * 2293300 ) + NEW met2 ( 2021930 2289900 ) ( 2023540 * 0 ) + NEW met2 ( 2021930 2289900 ) ( * 2293300 ) + NEW met1 ( 17710 489770 ) ( 1155750 * ) + NEW met3 ( 1155750 2293300 ) ( 2021930 * ) + NEW met2 ( 17710 487900 ) M2M3_PR + NEW met1 ( 17710 489770 ) M1M2_PR + NEW met1 ( 1155750 489770 ) M1M2_PR + NEW met2 ( 1155750 2293300 ) M2M3_PR + NEW met2 ( 2021930 2293300 ) M2M3_PR ; + - io_out[36] ( PIN io_out[36] ) ( mprj io_out[36] ) + USE SIGNAL + + ROUTED met3 ( 1380 292740 0 ) ( 3220 * ) + NEW met3 ( 3220 292060 ) ( * 292740 ) + NEW met3 ( 1380 292060 ) ( 3220 * ) + NEW met3 ( 1380 290020 ) ( * 292060 ) + NEW met3 ( 2043780 2287180 ) ( 2045850 * ) + NEW met2 ( 2045850 2287180 ) ( 2047460 * 0 ) + NEW met4 ( 2043780 290020 ) ( * 2287180 ) + NEW met3 ( 1380 290020 ) ( 2043780 * ) + NEW met3 ( 2043780 290020 ) M3M4_PR + NEW met3 ( 2043780 2287180 ) M3M4_PR + NEW met2 ( 2045850 2287180 ) M2M3_PR ; + - io_out[37] ( PIN io_out[37] ) ( mprj io_out[37] ) + USE SIGNAL + + ROUTED met3 ( 1380 96900 0 ) ( 17710 * ) + NEW met2 ( 17710 96900 ) ( * 103190 ) + NEW met1 ( 17710 103190 ) ( 2074830 * ) + NEW met2 ( 2070920 2287180 0 ) ( 2074830 * ) + NEW met2 ( 2074830 103190 ) ( * 2287180 ) + NEW met2 ( 17710 96900 ) M2M3_PR + NEW met1 ( 17710 103190 ) M1M2_PR + NEW met1 ( 2074830 103190 ) M1M2_PR ; + - io_out[3] ( PIN io_out[3] ) ( mprj io_out[3] ) + USE SIGNAL + + ROUTED met1 ( 2889030 696830 ) ( 2898230 * ) + NEW met2 ( 2898230 696660 ) ( * 696830 ) + NEW met3 ( 2898230 696660 ) ( 2917780 * 0 ) + NEW met2 ( 1265460 2289900 0 ) ( 1267070 * ) + NEW met2 ( 1267070 2289900 ) ( * 2304690 ) + NEW met2 ( 2889030 696830 ) ( * 2304690 ) + NEW met1 ( 1267070 2304690 ) ( 2889030 * ) + NEW met1 ( 1267070 2304690 ) M1M2_PR + NEW met1 ( 2889030 696830 ) M1M2_PR + NEW met1 ( 2898230 696830 ) M1M2_PR + NEW met2 ( 2898230 696660 ) M2M3_PR + NEW met1 ( 2889030 2304690 ) M1M2_PR ; + - io_out[4] ( PIN io_out[4] ) ( mprj io_out[4] ) + USE SIGNAL + + ROUTED met1 ( 2889950 896750 ) ( 2898690 * ) + NEW met2 ( 2898690 895900 ) ( * 896750 ) + NEW met3 ( 2898690 895900 ) ( 2917780 * 0 ) + NEW met2 ( 1289380 2289900 0 ) ( 1290070 * ) + NEW met2 ( 1290070 2289900 ) ( * 2305030 ) + NEW met2 ( 2889950 896750 ) ( * 2305030 ) + NEW met1 ( 1290070 2305030 ) ( 2889950 * ) + NEW met1 ( 1290070 2305030 ) M1M2_PR + NEW met1 ( 2889950 896750 ) M1M2_PR + NEW met1 ( 2898690 896750 ) M1M2_PR + NEW met2 ( 2898690 895900 ) M2M3_PR + NEW met1 ( 2889950 2305030 ) M1M2_PR ; + - io_out[5] ( PIN io_out[5] ) ( mprj io_out[5] ) + USE SIGNAL + + ROUTED met3 ( 2894550 1095140 ) ( 2917780 * 0 ) + NEW met2 ( 2894550 1095140 ) ( * 2312170 ) + NEW met2 ( 1312840 2289900 0 ) ( 1314450 * ) + NEW met2 ( 1314450 2289900 ) ( * 2312170 ) + NEW met1 ( 1314450 2312170 ) ( 2894550 * ) + NEW met2 ( 2894550 1095140 ) M2M3_PR + NEW met1 ( 2894550 2312170 ) M1M2_PR + NEW met1 ( 1314450 2312170 ) M1M2_PR ; + - io_out[6] ( PIN io_out[6] ) ( mprj io_out[6] ) + USE SIGNAL + + ROUTED met2 ( 2121750 1296930 ) ( * 2299930 ) + NEW met2 ( 2899150 1294380 ) ( * 1296930 ) + NEW met3 ( 2899150 1294380 ) ( 2917780 * 0 ) + NEW met2 ( 1336760 2289900 0 ) ( 1337450 * ) + NEW met2 ( 1337450 2289900 ) ( * 2299930 ) + NEW met1 ( 2121750 1296930 ) ( 2899150 * ) + NEW met1 ( 1337450 2299930 ) ( 2121750 * ) + NEW met1 ( 2121750 1296930 ) M1M2_PR + NEW met1 ( 2121750 2299930 ) M1M2_PR + NEW met1 ( 2899150 1296930 ) M1M2_PR + NEW met2 ( 2899150 1294380 ) M2M3_PR + NEW met1 ( 1337450 2299930 ) M1M2_PR ; + - io_out[7] ( PIN io_out[7] ) ( mprj io_out[7] ) + USE SIGNAL + + ROUTED met3 ( 2895010 1560260 ) ( 2917780 * 0 ) + NEW met2 ( 1360220 2289900 0 ) ( 1361830 * ) + NEW met2 ( 1361830 2289900 ) ( * 2312510 ) + NEW met2 ( 2895010 1560260 ) ( * 2312510 ) + NEW met1 ( 1361830 2312510 ) ( 2895010 * ) + NEW met1 ( 1361830 2312510 ) M1M2_PR + NEW met2 ( 2895010 1560260 ) M2M3_PR + NEW met1 ( 2895010 2312510 ) M1M2_PR ; + - io_out[8] ( PIN io_out[8] ) ( mprj io_out[8] ) + USE SIGNAL + + ROUTED met2 ( 2900990 1825460 ) ( * 1828350 ) + NEW met3 ( 2900990 1825460 ) ( 2917780 * 0 ) + NEW met2 ( 1384140 2289900 0 ) ( 1385290 * ) + NEW met2 ( 1385290 2289900 ) ( * 2300950 ) + NEW met2 ( 2128650 1828350 ) ( * 2300950 ) + NEW met1 ( 2128650 1828350 ) ( 2900990 * ) + NEW met1 ( 1385290 2300950 ) ( 2128650 * ) + NEW met1 ( 2128650 1828350 ) M1M2_PR + NEW met1 ( 2900990 1828350 ) M1M2_PR + NEW met2 ( 2900990 1825460 ) M2M3_PR + NEW met1 ( 1385290 2300950 ) M1M2_PR + NEW met1 ( 2128650 2300950 ) M1M2_PR ; + - io_out[9] ( PIN io_out[9] ) ( mprj io_out[9] ) + USE SIGNAL + + ROUTED met2 ( 2142450 2097290 ) ( * 2301630 ) + NEW met2 ( 2900070 2091340 ) ( * 2097290 ) + NEW met3 ( 2900070 2091340 ) ( 2917780 * 0 ) + NEW met2 ( 1407370 2289900 ) ( 1407600 * 0 ) + NEW met2 ( 1407370 2289900 ) ( * 2301630 ) + NEW met1 ( 2142450 2097290 ) ( 2900070 * ) + NEW met1 ( 1407370 2301630 ) ( 2142450 * ) + NEW met1 ( 2142450 2097290 ) M1M2_PR + NEW met1 ( 2142450 2301630 ) M1M2_PR + NEW met1 ( 2900070 2097290 ) M1M2_PR + NEW met2 ( 2900070 2091340 ) M2M3_PR + NEW met1 ( 1407370 2301630 ) M1M2_PR ; + - la_data_in[0] ( PIN la_data_in[0] ) ( mprj la_data_in[0] ) + USE SIGNAL + + ROUTED met2 ( 1367810 1688780 ) ( 1368890 * ) + NEW met2 ( 1368890 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1367810 81090 ) ( * 1688780 ) + NEW met2 ( 628130 1700 ) ( 629510 * 0 ) + NEW met2 ( 628130 1700 ) ( * 81090 ) + NEW met1 ( 628130 81090 ) ( 1367810 * ) + NEW met1 ( 1367810 81090 ) M1M2_PR + NEW met1 ( 628130 81090 ) M1M2_PR ; + - la_data_in[100] ( PIN la_data_in[100] ) ( mprj la_data_in[100] ) + USE SIGNAL + + ROUTED met2 ( 2402810 1700 0 ) ( * 57630 ) + NEW met2 ( 1912450 57630 ) ( * 1580100 ) + NEW met2 ( 1912450 1580100 ) ( 1913370 * ) + NEW met2 ( 1913370 1688780 ) ( 1916750 * ) + NEW met2 ( 1916750 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1913370 1580100 ) ( * 1688780 ) + NEW met1 ( 1912450 57630 ) ( 2402810 * ) + NEW met1 ( 2402810 57630 ) M1M2_PR + NEW met1 ( 1912450 57630 ) M1M2_PR ; + - la_data_in[101] ( PIN la_data_in[101] ) ( mprj la_data_in[101] ) + USE SIGNAL + + ROUTED met2 ( 1919810 57970 ) ( * 1580100 ) + NEW met2 ( 1919810 1580100 ) ( 1922110 * ) + NEW met2 ( 1922110 1688780 ) ( 1922270 * ) + NEW met2 ( 1922270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1922110 1580100 ) ( * 1688780 ) + NEW met2 ( 2420290 1700 0 ) ( * 57970 ) + NEW met1 ( 1919810 57970 ) ( 2420290 * ) + NEW met1 ( 1919810 57970 ) M1M2_PR + NEW met1 ( 2420290 57970 ) M1M2_PR ; + - la_data_in[102] ( PIN la_data_in[102] ) ( mprj la_data_in[102] ) + USE SIGNAL + + ROUTED met2 ( 2435930 1700 ) ( 2438230 * 0 ) + NEW met2 ( 1926710 1688780 ) ( 1927790 * ) + NEW met2 ( 1927790 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1926710 62050 ) ( * 1688780 ) + NEW met2 ( 2435930 1700 ) ( * 62050 ) + NEW met1 ( 1926710 62050 ) ( 2435930 * ) + NEW met1 ( 1926710 62050 ) M1M2_PR + NEW met1 ( 2435930 62050 ) M1M2_PR ; + - la_data_in[103] ( PIN la_data_in[103] ) ( mprj la_data_in[103] ) + USE SIGNAL + + ROUTED met2 ( 1932690 1688780 ) ( 1933310 * ) + NEW met2 ( 1933310 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1932690 61710 ) ( * 1688780 ) + NEW met2 ( 2453870 1700 ) ( 2455710 * 0 ) + NEW met2 ( 2453870 1700 ) ( * 16830 ) + NEW met1 ( 2449730 16830 ) ( 2453870 * ) + NEW met1 ( 1932690 61710 ) ( 2449730 * ) + NEW met2 ( 2449730 16830 ) ( * 61710 ) + NEW met1 ( 1932690 61710 ) M1M2_PR + NEW met1 ( 2453870 16830 ) M1M2_PR + NEW met1 ( 2449730 16830 ) M1M2_PR + NEW met1 ( 2449730 61710 ) M1M2_PR ; + - la_data_in[104] ( PIN la_data_in[104] ) ( mprj la_data_in[104] ) + USE SIGNAL + + ROUTED met1 ( 1933150 1652570 ) ( 1938670 * ) + NEW met2 ( 1933150 60690 ) ( * 1652570 ) + NEW met2 ( 1938670 1688780 ) ( 1938830 * ) + NEW met2 ( 1938830 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1938670 1652570 ) ( * 1688780 ) + NEW met1 ( 1933150 60690 ) ( 2473650 * ) + NEW met2 ( 2473650 1700 0 ) ( * 60690 ) + NEW met1 ( 1933150 1652570 ) M1M2_PR + NEW met1 ( 1938670 1652570 ) M1M2_PR + NEW met1 ( 1933150 60690 ) M1M2_PR + NEW met1 ( 2473650 60690 ) M1M2_PR ; + - la_data_in[105] ( PIN la_data_in[105] ) ( mprj la_data_in[105] ) + USE SIGNAL + + ROUTED met1 ( 1939130 1683510 ) ( 1944190 * ) + NEW met2 ( 1944190 1683510 ) ( * 1688780 ) + NEW met2 ( 1944190 1688780 ) ( 1944350 * ) + NEW met2 ( 1944350 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1939130 23290 ) ( * 1683510 ) + NEW met2 ( 2491130 1700 0 ) ( * 23290 ) + NEW met1 ( 1939130 23290 ) ( 2491130 * ) + NEW met1 ( 1939130 23290 ) M1M2_PR + NEW met1 ( 1939130 1683510 ) M1M2_PR + NEW met1 ( 1944190 1683510 ) M1M2_PR + NEW met1 ( 2491130 23290 ) M1M2_PR ; + - la_data_in[106] ( PIN la_data_in[106] ) ( mprj la_data_in[106] ) + USE SIGNAL + + ROUTED met1 ( 1946030 1652570 ) ( 1949710 * ) + NEW met2 ( 2509070 1700 0 ) ( * 23630 ) + NEW met2 ( 1946030 23630 ) ( * 1652570 ) + NEW met2 ( 1949710 1688780 ) ( 1949870 * ) + NEW met2 ( 1949870 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1949710 1652570 ) ( * 1688780 ) + NEW met1 ( 1946030 23630 ) ( 2509070 * ) + NEW met1 ( 1946030 23630 ) M1M2_PR + NEW met1 ( 1946030 1652570 ) M1M2_PR + NEW met1 ( 1949710 1652570 ) M1M2_PR + NEW met1 ( 2509070 23630 ) M1M2_PR ; + - la_data_in[107] ( PIN la_data_in[107] ) ( mprj la_data_in[107] ) + USE SIGNAL + + ROUTED met2 ( 2527010 1700 0 ) ( * 27370 ) + NEW met1 ( 1952930 1689290 ) ( 1955390 * ) + NEW met2 ( 1955390 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1952930 27370 ) ( * 1689290 ) + NEW met1 ( 1952930 27370 ) ( 2527010 * ) + NEW met1 ( 1952930 27370 ) M1M2_PR + NEW met1 ( 2527010 27370 ) M1M2_PR + NEW met1 ( 1952930 1689290 ) M1M2_PR + NEW met1 ( 1955390 1689290 ) M1M2_PR ; + - la_data_in[108] ( PIN la_data_in[108] ) ( mprj la_data_in[108] ) + USE SIGNAL + + ROUTED met2 ( 2544490 1700 0 ) ( * 27030 ) + NEW met2 ( 1960290 1688780 ) ( 1960450 * ) + NEW met2 ( 1960450 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1960290 27030 ) ( * 1688780 ) + NEW met1 ( 1960290 27030 ) ( 2544490 * ) + NEW met1 ( 1960290 27030 ) M1M2_PR + NEW met1 ( 2544490 27030 ) M1M2_PR ; + - la_data_in[109] ( PIN la_data_in[109] ) ( mprj la_data_in[109] ) + USE SIGNAL + + ROUTED met1 ( 1959830 1688950 ) ( 1965970 * ) + NEW met2 ( 1965970 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1959830 26690 ) ( * 1688950 ) + NEW met2 ( 2562430 1700 0 ) ( * 26690 ) + NEW met1 ( 1959830 26690 ) ( 2562430 * ) + NEW met1 ( 1959830 26690 ) M1M2_PR + NEW met1 ( 1959830 1688950 ) M1M2_PR + NEW met1 ( 1965970 1688950 ) M1M2_PR + NEW met1 ( 2562430 26690 ) M1M2_PR ; + - la_data_in[10] ( PIN la_data_in[10] ) ( mprj la_data_in[10] ) + USE SIGNAL + + ROUTED met2 ( 806610 1700 0 ) ( * 81770 ) + NEW met1 ( 806610 81770 ) ( 1423010 * ) + NEW met2 ( 1423010 1688780 ) ( 1423630 * ) + NEW met2 ( 1423630 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1423010 81770 ) ( * 1688780 ) + NEW met1 ( 806610 81770 ) M1M2_PR + NEW met1 ( 1423010 81770 ) M1M2_PR ; + - la_data_in[110] ( PIN la_data_in[110] ) ( mprj la_data_in[110] ) + USE SIGNAL + + ROUTED met2 ( 2579910 1700 0 ) ( * 26350 ) + NEW met1 ( 1966730 26350 ) ( 2579910 * ) + NEW met1 ( 1966730 1688950 ) ( 1971490 * ) + NEW met2 ( 1971490 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1966730 26350 ) ( * 1688950 ) + NEW met1 ( 1966730 26350 ) M1M2_PR + NEW met1 ( 2579910 26350 ) M1M2_PR + NEW met1 ( 1966730 1688950 ) M1M2_PR + NEW met1 ( 1971490 1688950 ) M1M2_PR ; + - la_data_in[111] ( PIN la_data_in[111] ) ( mprj la_data_in[111] ) + USE SIGNAL + + ROUTED met2 ( 2597850 1700 0 ) ( * 26010 ) + NEW met1 ( 1973630 26010 ) ( 2597850 * ) + NEW met1 ( 1973630 1683510 ) ( 1976850 * ) + NEW met2 ( 1976850 1683510 ) ( * 1688780 ) + NEW met2 ( 1976850 1688780 ) ( 1977010 * ) + NEW met2 ( 1977010 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1973630 26010 ) ( * 1683510 ) + NEW met1 ( 2597850 26010 ) M1M2_PR + NEW met1 ( 1973630 26010 ) M1M2_PR + NEW met1 ( 1973630 1683510 ) M1M2_PR + NEW met1 ( 1976850 1683510 ) M1M2_PR ; + - la_data_in[112] ( PIN la_data_in[112] ) ( mprj la_data_in[112] ) + USE SIGNAL + + ROUTED met2 ( 2615330 1700 0 ) ( * 25670 ) + NEW met1 ( 1980530 1652910 ) ( 1982370 * ) + NEW met1 ( 1980530 25670 ) ( 2615330 * ) + NEW met2 ( 1980530 25670 ) ( * 1652910 ) + NEW met2 ( 1982370 1688780 ) ( 1982530 * ) + NEW met2 ( 1982530 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1982370 1652910 ) ( * 1688780 ) + NEW met1 ( 2615330 25670 ) M1M2_PR + NEW met1 ( 1980530 25670 ) M1M2_PR + NEW met1 ( 1980530 1652910 ) M1M2_PR + NEW met1 ( 1982370 1652910 ) M1M2_PR ; + - la_data_in[113] ( PIN la_data_in[113] ) ( mprj la_data_in[113] ) + USE SIGNAL + + ROUTED met2 ( 2633270 1700 0 ) ( * 25330 ) + NEW met1 ( 1987430 25330 ) ( 2633270 * ) + NEW met2 ( 1987430 1688780 ) ( 1988050 * ) + NEW met2 ( 1988050 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1987430 25330 ) ( * 1688780 ) + NEW met1 ( 2633270 25330 ) M1M2_PR + NEW met1 ( 1987430 25330 ) M1M2_PR ; + - la_data_in[114] ( PIN la_data_in[114] ) ( mprj la_data_in[114] ) + USE SIGNAL + + ROUTED met1 ( 1987890 1652570 ) ( 1993410 * ) + NEW met2 ( 2650750 1700 0 ) ( * 24140 ) + NEW met3 ( 1987890 24140 ) ( 2650750 * ) + NEW met2 ( 1987890 24140 ) ( * 1652570 ) + NEW met2 ( 1993410 1688780 ) ( 1993570 * ) + NEW met2 ( 1993570 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1993410 1652570 ) ( * 1688780 ) + NEW met2 ( 1987890 24140 ) M2M3_PR + NEW met1 ( 1987890 1652570 ) M1M2_PR + NEW met1 ( 1993410 1652570 ) M1M2_PR + NEW met2 ( 2650750 24140 ) M2M3_PR ; + - la_data_in[115] ( PIN la_data_in[115] ) ( mprj la_data_in[115] ) + USE SIGNAL + + ROUTED met2 ( 2668690 1700 0 ) ( * 24990 ) + NEW met1 ( 1994330 24990 ) ( 2668690 * ) + NEW met1 ( 1994330 1688950 ) ( 1999090 * ) + NEW met2 ( 1999090 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1994330 24990 ) ( * 1688950 ) + NEW met1 ( 1994330 24990 ) M1M2_PR + NEW met1 ( 2668690 24990 ) M1M2_PR + NEW met1 ( 1994330 1688950 ) M1M2_PR + NEW met1 ( 1999090 1688950 ) M1M2_PR ; + - la_data_in[116] ( PIN la_data_in[116] ) ( mprj la_data_in[116] ) + USE SIGNAL + + ROUTED met2 ( 2686170 1700 0 ) ( * 24650 ) + NEW met1 ( 2001230 24650 ) ( 2686170 * ) + NEW met1 ( 2001230 1683510 ) ( 2004450 * ) + NEW met2 ( 2004450 1683510 ) ( * 1688780 ) + NEW met2 ( 2004450 1688780 ) ( 2004610 * ) + NEW met2 ( 2004610 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2001230 24650 ) ( * 1683510 ) + NEW met1 ( 2001230 24650 ) M1M2_PR + NEW met1 ( 2686170 24650 ) M1M2_PR + NEW met1 ( 2001230 1683510 ) M1M2_PR + NEW met1 ( 2004450 1683510 ) M1M2_PR ; + - la_data_in[117] ( PIN la_data_in[117] ) ( mprj la_data_in[117] ) + USE SIGNAL + + ROUTED met2 ( 2704110 1700 0 ) ( * 24310 ) + NEW met1 ( 2008130 24310 ) ( 2704110 * ) + NEW met1 ( 2008130 1688270 ) ( * 1688610 ) + NEW met1 ( 2008130 1688610 ) ( 2010130 * ) + NEW met1 ( 2010130 1688610 ) ( * 1689290 ) + NEW met2 ( 2010130 1689290 ) ( * 1690140 0 ) + NEW met2 ( 2008130 24310 ) ( * 1688270 ) + NEW met1 ( 2704110 24310 ) M1M2_PR + NEW met1 ( 2008130 24310 ) M1M2_PR + NEW met1 ( 2008130 1688270 ) M1M2_PR + NEW met1 ( 2010130 1689290 ) M1M2_PR ; + - la_data_in[118] ( PIN la_data_in[118] ) ( mprj la_data_in[118] ) + USE SIGNAL + + ROUTED met2 ( 2722050 1700 0 ) ( * 23970 ) + NEW met2 ( 2015030 1688780 ) ( 2015650 * ) + NEW met2 ( 2015650 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2015030 23970 ) ( * 1688780 ) + NEW met1 ( 2015030 23970 ) ( 2722050 * ) + NEW met1 ( 2015030 23970 ) M1M2_PR + NEW met1 ( 2722050 23970 ) M1M2_PR ; + - la_data_in[119] ( PIN la_data_in[119] ) ( mprj la_data_in[119] ) + USE SIGNAL + + ROUTED met1 ( 2015950 1652570 ) ( 2020550 * ) + NEW met2 ( 2015950 58990 ) ( * 1652570 ) + NEW met2 ( 2020550 1688780 ) ( 2020710 * ) + NEW met2 ( 2020710 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2020550 1652570 ) ( * 1688780 ) + NEW met1 ( 2015950 58990 ) ( 2739530 * ) + NEW met2 ( 2739530 1700 0 ) ( * 58990 ) + NEW met1 ( 2015950 1652570 ) M1M2_PR + NEW met1 ( 2020550 1652570 ) M1M2_PR + NEW met1 ( 2015950 58990 ) M1M2_PR + NEW met1 ( 2739530 58990 ) M1M2_PR ; + - la_data_in[11] ( PIN la_data_in[11] ) ( mprj la_data_in[11] ) + USE SIGNAL + + ROUTED met2 ( 822250 1700 ) ( 824550 * 0 ) + NEW met2 ( 822250 1700 ) ( * 82110 ) + NEW met1 ( 822250 82110 ) ( 1429450 * ) + NEW met2 ( 1429220 1688780 ) ( 1429450 * ) + NEW met2 ( 1429220 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1429450 82110 ) ( * 1688780 ) + NEW met1 ( 822250 82110 ) M1M2_PR + NEW met1 ( 1429450 82110 ) M1M2_PR ; + - la_data_in[120] ( PIN la_data_in[120] ) ( mprj la_data_in[120] ) + USE SIGNAL + + ROUTED met2 ( 2023310 1688780 ) ( 2026230 * ) + NEW met2 ( 2026230 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2023310 58650 ) ( * 1688780 ) + NEW met2 ( 2755170 1700 ) ( 2757470 * 0 ) + NEW met1 ( 2023310 58650 ) ( 2755170 * ) + NEW met2 ( 2755170 1700 ) ( * 58650 ) + NEW met1 ( 2023310 58650 ) M1M2_PR + NEW met1 ( 2755170 58650 ) M1M2_PR ; + - la_data_in[121] ( PIN la_data_in[121] ) ( mprj la_data_in[121] ) + USE SIGNAL + + ROUTED met1 ( 2029750 1652570 ) ( 2031590 * ) + NEW met2 ( 2029750 65450 ) ( * 1652570 ) + NEW met2 ( 2031590 1688780 ) ( 2031750 * ) + NEW met2 ( 2031750 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2031590 1652570 ) ( * 1688780 ) + NEW met2 ( 2774030 1700 ) ( 2774950 * 0 ) + NEW met1 ( 2029750 65450 ) ( 2774030 * ) + NEW met2 ( 2774030 1700 ) ( * 65450 ) + NEW met1 ( 2029750 1652570 ) M1M2_PR + NEW met1 ( 2031590 1652570 ) M1M2_PR + NEW met1 ( 2029750 65450 ) M1M2_PR + NEW met1 ( 2774030 65450 ) M1M2_PR ; + - la_data_in[122] ( PIN la_data_in[122] ) ( mprj la_data_in[122] ) + USE SIGNAL + + ROUTED met2 ( 2792890 1700 0 ) ( * 32130 ) + NEW met2 ( 2035730 1688780 ) ( 2037270 * ) + NEW met2 ( 2037270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2035730 32130 ) ( * 1688780 ) + NEW met1 ( 2035730 32130 ) ( 2792890 * ) + NEW met1 ( 2035730 32130 ) M1M2_PR + NEW met1 ( 2792890 32130 ) M1M2_PR ; + - la_data_in[123] ( PIN la_data_in[123] ) ( mprj la_data_in[123] ) + USE SIGNAL + + ROUTED met2 ( 2810370 1700 0 ) ( * 31790 ) + NEW met2 ( 2042630 1688780 ) ( 2042790 * ) + NEW met2 ( 2042790 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2042630 31790 ) ( * 1688780 ) + NEW met1 ( 2042630 31790 ) ( 2810370 * ) + NEW met1 ( 2042630 31790 ) M1M2_PR + NEW met1 ( 2810370 31790 ) M1M2_PR ; + - la_data_in[124] ( PIN la_data_in[124] ) ( mprj la_data_in[124] ) + USE SIGNAL + + ROUTED met1 ( 2043090 1652570 ) ( 2048150 * ) + NEW met2 ( 2828310 1700 0 ) ( * 31450 ) + NEW met2 ( 2043090 31450 ) ( * 1652570 ) + NEW met2 ( 2048150 1688780 ) ( 2048310 * ) + NEW met2 ( 2048310 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2048150 1652570 ) ( * 1688780 ) + NEW met1 ( 2043090 31450 ) ( 2828310 * ) + NEW met1 ( 2043090 31450 ) M1M2_PR + NEW met1 ( 2043090 1652570 ) M1M2_PR + NEW met1 ( 2048150 1652570 ) M1M2_PR + NEW met1 ( 2828310 31450 ) M1M2_PR ; + - la_data_in[125] ( PIN la_data_in[125] ) ( mprj la_data_in[125] ) + USE SIGNAL + + ROUTED met1 ( 2049530 1689290 ) ( 2053830 * ) + NEW met2 ( 2053830 1689290 ) ( * 1690140 0 ) + NEW met2 ( 2049530 31110 ) ( * 1689290 ) + NEW met2 ( 2845790 1700 0 ) ( * 31110 ) + NEW met1 ( 2049530 31110 ) ( 2845790 * ) + NEW met1 ( 2049530 31110 ) M1M2_PR + NEW met1 ( 2049530 1689290 ) M1M2_PR + NEW met1 ( 2053830 1689290 ) M1M2_PR + NEW met1 ( 2845790 31110 ) M1M2_PR ; + - la_data_in[126] ( PIN la_data_in[126] ) ( mprj la_data_in[126] ) + USE SIGNAL + + ROUTED met2 ( 2056890 30940 ) ( * 1676700 ) + NEW met2 ( 2056890 1676700 ) ( 2058270 * ) + NEW met2 ( 2058270 1676700 ) ( * 1688780 ) + NEW met2 ( 2058270 1688780 ) ( 2059350 * ) + NEW met2 ( 2059350 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2863730 1700 0 ) ( * 30940 ) + NEW met3 ( 2056890 30940 ) ( 2863730 * ) + NEW met2 ( 2056890 30940 ) M2M3_PR + NEW met2 ( 2863730 30940 ) M2M3_PR ; + - la_data_in[127] ( PIN la_data_in[127] ) ( mprj la_data_in[127] ) + USE SIGNAL + + ROUTED met2 ( 2881670 1700 0 ) ( * 30770 ) + NEW met1 ( 2063330 30770 ) ( 2881670 * ) + NEW met2 ( 2063330 1688780 ) ( 2064870 * ) + NEW met2 ( 2064870 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2063330 30770 ) ( * 1688780 ) + NEW met1 ( 2063330 30770 ) M1M2_PR + NEW met1 ( 2881670 30770 ) M1M2_PR ; + - la_data_in[12] ( PIN la_data_in[12] ) ( mprj la_data_in[12] ) + USE SIGNAL + + ROUTED met2 ( 842030 1700 0 ) ( * 82450 ) + NEW met1 ( 842030 82450 ) ( 1429910 * ) + NEW met2 ( 1429910 1688780 ) ( 1434670 * ) + NEW met2 ( 1434670 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1429910 82450 ) ( * 1688780 ) + NEW met1 ( 842030 82450 ) M1M2_PR + NEW met1 ( 1429910 82450 ) M1M2_PR ; + - la_data_in[13] ( PIN la_data_in[13] ) ( mprj la_data_in[13] ) + USE SIGNAL + + ROUTED met2 ( 859970 1700 0 ) ( * 82790 ) + NEW met2 ( 1436810 1688780 ) ( 1440190 * ) + NEW met2 ( 1440190 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1436810 82790 ) ( * 1688780 ) + NEW met1 ( 859970 82790 ) ( 1436810 * ) + NEW met1 ( 859970 82790 ) M1M2_PR + NEW met1 ( 1436810 82790 ) M1M2_PR ; + - la_data_in[14] ( PIN la_data_in[14] ) ( mprj la_data_in[14] ) + USE SIGNAL + + ROUTED met2 ( 877450 1700 0 ) ( * 23290 ) + NEW met2 ( 1445550 1677730 ) ( * 1688780 ) + NEW met2 ( 1445550 1688780 ) ( 1445710 * ) + NEW met2 ( 1445710 1688780 ) ( * 1690140 0 ) + NEW met1 ( 877450 23290 ) ( 1294210 * ) + NEW met2 ( 1294210 23290 ) ( * 1677730 ) + NEW met1 ( 1294210 1677730 ) ( 1445550 * ) + NEW met1 ( 877450 23290 ) M1M2_PR + NEW met1 ( 1445550 1677730 ) M1M2_PR + NEW met1 ( 1294210 23290 ) M1M2_PR + NEW met1 ( 1294210 1677730 ) M1M2_PR ; + - la_data_in[15] ( PIN la_data_in[15] ) ( mprj la_data_in[15] ) + USE SIGNAL + + ROUTED met2 ( 895390 1700 0 ) ( * 22950 ) + NEW met2 ( 1451070 1678750 ) ( * 1688780 ) + NEW met2 ( 1451070 1688780 ) ( 1451230 * ) + NEW met2 ( 1451230 1688780 ) ( * 1690140 0 ) + NEW met1 ( 895390 22950 ) ( 1293750 * ) + NEW met2 ( 1293750 22950 ) ( * 1678750 ) + NEW met1 ( 1293750 1678750 ) ( 1451070 * ) + NEW met1 ( 895390 22950 ) M1M2_PR + NEW met1 ( 1451070 1678750 ) M1M2_PR + NEW met1 ( 1293750 22950 ) M1M2_PR + NEW met1 ( 1293750 1678750 ) M1M2_PR ; + - la_data_in[16] ( PIN la_data_in[16] ) ( mprj la_data_in[16] ) + USE SIGNAL + + ROUTED met2 ( 1456590 1688780 ) ( 1456750 * ) + NEW met2 ( 1456750 1688780 ) ( * 1690140 0 ) + NEW met2 ( 912870 1700 0 ) ( * 24650 ) + NEW met1 ( 912870 24650 ) ( 1456590 * ) + NEW met2 ( 1456590 24650 ) ( * 1688780 ) + NEW met1 ( 912870 24650 ) M1M2_PR + NEW met1 ( 1456590 24650 ) M1M2_PR ; + - la_data_in[17] ( PIN la_data_in[17] ) ( mprj la_data_in[17] ) + USE SIGNAL + + ROUTED met1 ( 1457050 1649510 ) ( 1462110 * ) + NEW met2 ( 1462110 1688780 ) ( 1462270 * ) + NEW met2 ( 1462270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1462110 1649510 ) ( * 1688780 ) + NEW met2 ( 930810 1700 0 ) ( * 24990 ) + NEW met1 ( 930810 24990 ) ( 1457050 * ) + NEW met2 ( 1457050 24990 ) ( * 1649510 ) + NEW met1 ( 1457050 1649510 ) M1M2_PR + NEW met1 ( 1462110 1649510 ) M1M2_PR + NEW met1 ( 930810 24990 ) M1M2_PR + NEW met1 ( 1457050 24990 ) M1M2_PR ; + - la_data_in[18] ( PIN la_data_in[18] ) ( mprj la_data_in[18] ) + USE SIGNAL + + ROUTED met1 ( 1463030 1688950 ) ( 1467790 * ) + NEW met2 ( 1467790 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1463030 25330 ) ( * 1688950 ) + NEW met2 ( 948750 1700 0 ) ( * 25330 ) + NEW met1 ( 948750 25330 ) ( 1463030 * ) + NEW met1 ( 1463030 25330 ) M1M2_PR + NEW met1 ( 1463030 1688950 ) M1M2_PR + NEW met1 ( 1467790 1688950 ) M1M2_PR + NEW met1 ( 948750 25330 ) M1M2_PR ; + - la_data_in[19] ( PIN la_data_in[19] ) ( mprj la_data_in[19] ) + USE SIGNAL + + ROUTED met2 ( 966230 1700 0 ) ( * 25670 ) + NEW met1 ( 1469930 1683510 ) ( 1473150 * ) + NEW met2 ( 1473150 1683510 ) ( * 1688780 ) + NEW met2 ( 1473150 1688780 ) ( 1473310 * ) + NEW met2 ( 1473310 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1469930 25670 ) ( * 1683510 ) + NEW met1 ( 966230 25670 ) ( 1469930 * ) + NEW met1 ( 966230 25670 ) M1M2_PR + NEW met1 ( 1469930 25670 ) M1M2_PR + NEW met1 ( 1469930 1683510 ) M1M2_PR + NEW met1 ( 1473150 1683510 ) M1M2_PR ; + - la_data_in[1] ( PIN la_data_in[1] ) ( mprj la_data_in[1] ) + USE SIGNAL + + ROUTED met2 ( 1373330 1688780 ) ( 1374410 * ) + NEW met2 ( 1374410 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1373330 23970 ) ( * 1688780 ) + NEW met2 ( 646990 1700 0 ) ( * 23970 ) + NEW met1 ( 646990 23970 ) ( 1373330 * ) + NEW met1 ( 1373330 23970 ) M1M2_PR + NEW met1 ( 646990 23970 ) M1M2_PR ; + - la_data_in[20] ( PIN la_data_in[20] ) ( mprj la_data_in[20] ) + USE SIGNAL + + ROUTED met2 ( 984170 1700 0 ) ( * 26010 ) + NEW met2 ( 1476830 1688780 ) ( 1478370 * ) + NEW met2 ( 1478370 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1476830 26010 ) ( * 1688780 ) + NEW met1 ( 984170 26010 ) ( 1476830 * ) + NEW met1 ( 984170 26010 ) M1M2_PR + NEW met1 ( 1476830 26010 ) M1M2_PR ; + - la_data_in[21] ( PIN la_data_in[21] ) ( mprj la_data_in[21] ) + USE SIGNAL + + ROUTED met2 ( 1001650 1700 0 ) ( * 26350 ) + NEW met2 ( 1484190 82800 ) ( 1484650 * ) + NEW met2 ( 1484650 26350 ) ( * 82800 ) + NEW met2 ( 1483960 1688780 ) ( 1484190 * ) + NEW met2 ( 1483960 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1484190 82800 ) ( * 1688780 ) + NEW met1 ( 1001650 26350 ) ( 1484650 * ) + NEW met1 ( 1001650 26350 ) M1M2_PR + NEW met1 ( 1484650 26350 ) M1M2_PR ; + - la_data_in[22] ( PIN la_data_in[22] ) ( mprj la_data_in[22] ) + USE SIGNAL + + ROUTED met2 ( 1483270 26690 ) ( * 27540 ) + NEW met2 ( 1019590 1700 0 ) ( * 26690 ) + NEW met2 ( 1483270 27540 ) ( 1483730 * ) + NEW met1 ( 1483730 1645770 ) ( 1489250 * ) + NEW met2 ( 1483730 27540 ) ( * 1645770 ) + NEW met2 ( 1489250 1688780 ) ( 1489410 * ) + NEW met2 ( 1489410 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1489250 1645770 ) ( * 1688780 ) + NEW met1 ( 1019590 26690 ) ( 1483270 * ) + NEW met1 ( 1483270 26690 ) M1M2_PR + NEW met1 ( 1019590 26690 ) M1M2_PR + NEW met1 ( 1483730 1645770 ) M1M2_PR + NEW met1 ( 1489250 1645770 ) M1M2_PR ; + - la_data_in[23] ( PIN la_data_in[23] ) ( mprj la_data_in[23] ) + USE SIGNAL + + ROUTED met2 ( 1037070 1700 0 ) ( * 24140 ) + NEW met3 ( 1037070 24140 ) ( 1386900 * ) + NEW met3 ( 1386900 24140 ) ( * 24820 ) + NEW met2 ( 1490170 1652060 ) ( 1490630 * ) + NEW met2 ( 1490170 1652060 ) ( * 1652740 ) + NEW met2 ( 1490170 1652740 ) ( 1491090 * ) + NEW met2 ( 1490630 24820 ) ( * 1652060 ) + NEW met1 ( 1491090 1688270 ) ( 1494930 * ) + NEW met1 ( 1494930 1688270 ) ( * 1689290 ) + NEW met2 ( 1494930 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1491090 1652740 ) ( * 1688270 ) + NEW met3 ( 1386900 24820 ) ( 1490630 * ) + NEW met2 ( 1037070 24140 ) M2M3_PR + NEW met2 ( 1490630 24820 ) M2M3_PR + NEW met1 ( 1491090 1688270 ) M1M2_PR + NEW met1 ( 1494930 1689290 ) M1M2_PR ; + - la_data_in[24] ( PIN la_data_in[24] ) ( mprj la_data_in[24] ) + USE SIGNAL + + ROUTED met2 ( 1055010 1700 0 ) ( * 27030 ) + NEW met1 ( 1497530 1689290 ) ( 1500450 * ) + NEW met2 ( 1500450 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1497530 27030 ) ( * 1689290 ) + NEW met1 ( 1055010 27030 ) ( 1497530 * ) + NEW met1 ( 1055010 27030 ) M1M2_PR + NEW met1 ( 1497530 27030 ) M1M2_PR + NEW met1 ( 1497530 1689290 ) M1M2_PR + NEW met1 ( 1500450 1689290 ) M1M2_PR ; + - la_data_in[25] ( PIN la_data_in[25] ) ( mprj la_data_in[25] ) + USE SIGNAL + + ROUTED met2 ( 1072490 1700 0 ) ( * 27370 ) + NEW met2 ( 1504430 1689460 ) ( 1505970 * ) + NEW met2 ( 1505970 1689460 ) ( * 1690140 0 ) + NEW met2 ( 1504430 27370 ) ( * 1689460 ) + NEW met1 ( 1072490 27370 ) ( 1504430 * ) + NEW met1 ( 1072490 27370 ) M1M2_PR + NEW met1 ( 1504430 27370 ) M1M2_PR ; + - la_data_in[26] ( PIN la_data_in[26] ) ( mprj la_data_in[26] ) + USE SIGNAL + + ROUTED met2 ( 1090430 1700 0 ) ( * 23630 ) + NEW met2 ( 1511330 1688780 ) ( 1511490 * ) + NEW met2 ( 1511490 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1511330 23630 ) ( * 1688780 ) + NEW met1 ( 1090430 23630 ) ( 1511330 * ) + NEW met1 ( 1090430 23630 ) M1M2_PR + NEW met1 ( 1511330 23630 ) M1M2_PR ; + - la_data_in[27] ( PIN la_data_in[27] ) ( mprj la_data_in[27] ) + USE SIGNAL + + ROUTED met2 ( 1105610 1700 ) ( 1107910 * 0 ) + NEW met2 ( 1105610 1700 ) ( * 79050 ) + NEW met1 ( 1105610 79050 ) ( 1512710 * ) + NEW met2 ( 1512710 79050 ) ( * 1580100 ) + NEW met2 ( 1512710 1580100 ) ( 1516850 * ) + NEW met2 ( 1516850 1688780 ) ( 1517010 * ) + NEW met2 ( 1517010 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1516850 1580100 ) ( * 1688780 ) + NEW met1 ( 1105610 79050 ) M1M2_PR + NEW met1 ( 1512710 79050 ) M1M2_PR ; + - la_data_in[28] ( PIN la_data_in[28] ) ( mprj la_data_in[28] ) + USE SIGNAL + + ROUTED met2 ( 1125850 1700 0 ) ( * 78710 ) + NEW met1 ( 1125850 78710 ) ( 1519610 * ) + NEW met2 ( 1519610 78710 ) ( * 1580100 ) + NEW met2 ( 1519610 1580100 ) ( 1522370 * ) + NEW met2 ( 1522370 1688780 ) ( 1522530 * ) + NEW met2 ( 1522530 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1522370 1580100 ) ( * 1688780 ) + NEW met1 ( 1125850 78710 ) M1M2_PR + NEW met1 ( 1519610 78710 ) M1M2_PR ; + - la_data_in[29] ( PIN la_data_in[29] ) ( mprj la_data_in[29] ) + USE SIGNAL + + ROUTED met2 ( 1141490 1700 ) ( 1143790 * 0 ) + NEW met2 ( 1141490 1700 ) ( * 78370 ) + NEW met1 ( 1141490 78370 ) ( 1526510 * ) + NEW met2 ( 1526510 1688780 ) ( 1528050 * ) + NEW met2 ( 1528050 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1526510 78370 ) ( * 1688780 ) + NEW met1 ( 1141490 78370 ) M1M2_PR + NEW met1 ( 1526510 78370 ) M1M2_PR ; + - la_data_in[2] ( PIN la_data_in[2] ) ( mprj la_data_in[2] ) + USE SIGNAL + + ROUTED met2 ( 664930 1700 0 ) ( * 24310 ) + NEW met1 ( 1373790 1652570 ) ( 1379770 * ) + NEW met2 ( 1373790 24310 ) ( * 1652570 ) + NEW met2 ( 1379770 1688780 ) ( 1379930 * ) + NEW met2 ( 1379930 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1379770 1652570 ) ( * 1688780 ) + NEW met1 ( 664930 24310 ) ( 1373790 * ) + NEW met1 ( 664930 24310 ) M1M2_PR + NEW met1 ( 1373790 24310 ) M1M2_PR + NEW met1 ( 1373790 1652570 ) M1M2_PR + NEW met1 ( 1379770 1652570 ) M1M2_PR ; + - la_data_in[30] ( PIN la_data_in[30] ) ( mprj la_data_in[30] ) + USE SIGNAL + + ROUTED met2 ( 1161270 1700 0 ) ( * 29750 ) + NEW met2 ( 1532490 1688780 ) ( 1533570 * ) + NEW met2 ( 1533570 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1532490 29750 ) ( * 1688780 ) + NEW met1 ( 1161270 29750 ) ( 1290300 * ) + NEW met1 ( 1290300 29070 ) ( * 29750 ) + NEW met1 ( 1290300 29070 ) ( 1414500 * ) + NEW met1 ( 1414500 29070 ) ( * 29750 ) + NEW met1 ( 1414500 29750 ) ( 1532490 * ) + NEW met1 ( 1161270 29750 ) M1M2_PR + NEW met1 ( 1532490 29750 ) M1M2_PR ; + - la_data_in[31] ( PIN la_data_in[31] ) ( mprj la_data_in[31] ) + USE SIGNAL + + ROUTED met2 ( 1179210 1700 0 ) ( * 31110 ) + NEW met1 ( 1532030 1652230 ) ( 1538470 * ) + NEW met2 ( 1532030 31110 ) ( * 1652230 ) + NEW met2 ( 1538470 1688780 ) ( 1538630 * ) + NEW met2 ( 1538630 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1538470 1652230 ) ( * 1688780 ) + NEW met1 ( 1179210 31110 ) ( 1532030 * ) + NEW met1 ( 1179210 31110 ) M1M2_PR + NEW met1 ( 1532030 31110 ) M1M2_PR + NEW met1 ( 1532030 1652230 ) M1M2_PR + NEW met1 ( 1538470 1652230 ) M1M2_PR ; + - la_data_in[32] ( PIN la_data_in[32] ) ( mprj la_data_in[32] ) + USE SIGNAL + + ROUTED met1 ( 1538930 1683850 ) ( 1543990 * ) + NEW met2 ( 1543990 1683850 ) ( * 1688780 ) + NEW met2 ( 1543990 1688780 ) ( 1544150 * ) + NEW met2 ( 1544150 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1538930 31790 ) ( * 1683850 ) + NEW met2 ( 1196690 1700 0 ) ( * 31790 ) + NEW met1 ( 1196690 31790 ) ( 1538930 * ) + NEW met1 ( 1538930 31790 ) M1M2_PR + NEW met1 ( 1538930 1683850 ) M1M2_PR + NEW met1 ( 1543990 1683850 ) M1M2_PR + NEW met1 ( 1196690 31790 ) M1M2_PR ; + - la_data_in[33] ( PIN la_data_in[33] ) ( mprj la_data_in[33] ) + USE SIGNAL + + ROUTED met1 ( 1546290 1652570 ) ( 1549510 * ) + NEW met2 ( 1546290 17510 ) ( * 1652570 ) + NEW met2 ( 1549510 1688780 ) ( 1549670 * ) + NEW met2 ( 1549670 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1549510 1652570 ) ( * 1688780 ) + NEW met2 ( 1214630 1700 0 ) ( * 17510 ) + NEW met1 ( 1214630 17510 ) ( 1546290 * ) + NEW met1 ( 1546290 17510 ) M1M2_PR + NEW met1 ( 1546290 1652570 ) M1M2_PR + NEW met1 ( 1549510 1652570 ) M1M2_PR + NEW met1 ( 1214630 17510 ) M1M2_PR ; + - la_data_in[34] ( PIN la_data_in[34] ) ( mprj la_data_in[34] ) + USE SIGNAL + + ROUTED met1 ( 1552730 1688950 ) ( 1555190 * ) + NEW met2 ( 1555190 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1552730 17850 ) ( * 1688950 ) + NEW met2 ( 1232110 1700 0 ) ( * 17850 ) + NEW met1 ( 1232110 17850 ) ( 1552730 * ) + NEW met1 ( 1552730 17850 ) M1M2_PR + NEW met1 ( 1552730 1688950 ) M1M2_PR + NEW met1 ( 1555190 1688950 ) M1M2_PR + NEW met1 ( 1232110 17850 ) M1M2_PR ; + - la_data_in[35] ( PIN la_data_in[35] ) ( mprj la_data_in[35] ) + USE SIGNAL + + ROUTED met2 ( 1250050 1700 0 ) ( * 20230 ) + NEW met2 ( 1559630 1680110 ) ( * 1689460 ) + NEW met2 ( 1559630 1689460 ) ( 1560710 * ) + NEW met2 ( 1560710 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1250050 20230 ) ( 1300650 * ) + NEW met2 ( 1300650 20230 ) ( * 1680110 ) + NEW met1 ( 1300650 1680110 ) ( 1559630 * ) + NEW met1 ( 1250050 20230 ) M1M2_PR + NEW met1 ( 1559630 1680110 ) M1M2_PR + NEW met1 ( 1300650 20230 ) M1M2_PR + NEW met1 ( 1300650 1680110 ) M1M2_PR ; + - la_data_in[36] ( PIN la_data_in[36] ) ( mprj la_data_in[36] ) + USE SIGNAL + + ROUTED met2 ( 1267530 1700 0 ) ( * 16490 ) + NEW met2 ( 1555030 1680620 ) ( * 1680790 ) + NEW met2 ( 1555030 1680620 ) ( 1555950 * ) + NEW met2 ( 1555950 1680450 ) ( * 1680620 ) + NEW met1 ( 1555950 1680450 ) ( 1566070 * ) + NEW met2 ( 1566070 1680450 ) ( * 1688780 ) + NEW met2 ( 1566070 1688780 ) ( 1566230 * ) + NEW met2 ( 1566230 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1267530 16490 ) ( 1307550 * ) + NEW met2 ( 1307550 16490 ) ( * 1680790 ) + NEW met1 ( 1307550 1680790 ) ( 1555030 * ) + NEW met1 ( 1267530 16490 ) M1M2_PR + NEW met1 ( 1555030 1680790 ) M1M2_PR + NEW met1 ( 1555950 1680450 ) M1M2_PR + NEW met1 ( 1566070 1680450 ) M1M2_PR + NEW met1 ( 1307550 16490 ) M1M2_PR + NEW met1 ( 1307550 1680790 ) M1M2_PR ; + - la_data_in[37] ( PIN la_data_in[37] ) ( mprj la_data_in[37] ) + USE SIGNAL + + ROUTED met2 ( 1285470 1700 0 ) ( * 15810 ) + NEW met1 ( 1552270 1681130 ) ( * 1681470 ) + NEW met1 ( 1552270 1681470 ) ( 1571590 * ) + NEW met2 ( 1571590 1681470 ) ( * 1688780 ) + NEW met2 ( 1571590 1688780 ) ( 1571750 * ) + NEW met2 ( 1571750 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1285470 15810 ) ( 1321350 * ) + NEW met2 ( 1321350 15810 ) ( * 1681130 ) + NEW met1 ( 1321350 1681130 ) ( 1552270 * ) + NEW met1 ( 1285470 15810 ) M1M2_PR + NEW met1 ( 1571590 1681470 ) M1M2_PR + NEW met1 ( 1321350 15810 ) M1M2_PR + NEW met1 ( 1321350 1681130 ) M1M2_PR ; + - la_data_in[38] ( PIN la_data_in[38] ) ( mprj la_data_in[38] ) + USE SIGNAL + + ROUTED met2 ( 1574810 21930 ) ( * 1580100 ) + NEW met2 ( 1574810 1580100 ) ( 1576190 * ) + NEW met2 ( 1576190 1688780 ) ( 1577270 * ) + NEW met2 ( 1577270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1576190 1580100 ) ( * 1688780 ) + NEW met2 ( 1303410 1700 0 ) ( * 19890 ) + NEW met2 ( 1456590 19890 ) ( * 21930 ) + NEW met1 ( 1303410 19890 ) ( 1456590 * ) + NEW met1 ( 1456590 21930 ) ( 1574810 * ) + NEW met1 ( 1574810 21930 ) M1M2_PR + NEW met1 ( 1303410 19890 ) M1M2_PR + NEW met1 ( 1456590 19890 ) M1M2_PR + NEW met1 ( 1456590 21930 ) M1M2_PR ; + - la_data_in[39] ( PIN la_data_in[39] ) ( mprj la_data_in[39] ) + USE SIGNAL + + ROUTED met2 ( 1320890 1700 0 ) ( * 20230 ) + NEW met1 ( 1580790 1688950 ) ( * 1689290 ) + NEW met1 ( 1580790 1689290 ) ( 1582790 * ) + NEW met2 ( 1582790 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1580790 22610 ) ( * 1688950 ) + NEW met2 ( 1457050 20230 ) ( * 22610 ) + NEW met1 ( 1320890 20230 ) ( 1457050 * ) + NEW met1 ( 1457050 22610 ) ( 1580790 * ) + NEW met1 ( 1320890 20230 ) M1M2_PR + NEW met1 ( 1580790 22610 ) M1M2_PR + NEW met1 ( 1580790 1688950 ) M1M2_PR + NEW met1 ( 1582790 1689290 ) M1M2_PR + NEW met1 ( 1457050 20230 ) M1M2_PR + NEW met1 ( 1457050 22610 ) M1M2_PR ; + - la_data_in[3] ( PIN la_data_in[3] ) ( mprj la_data_in[3] ) + USE SIGNAL + + ROUTED met2 ( 682410 1700 0 ) ( * 30430 ) + NEW met1 ( 1380690 1688950 ) ( 1385450 * ) + NEW met2 ( 1385450 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1380690 30430 ) ( * 1688950 ) + NEW met1 ( 682410 30430 ) ( 1380690 * ) + NEW met1 ( 682410 30430 ) M1M2_PR + NEW met1 ( 1380690 30430 ) M1M2_PR + NEW met1 ( 1380690 1688950 ) M1M2_PR + NEW met1 ( 1385450 1688950 ) M1M2_PR ; + - la_data_in[40] ( PIN la_data_in[40] ) ( mprj la_data_in[40] ) + USE SIGNAL + + ROUTED met2 ( 1338830 1700 0 ) ( * 16830 ) + NEW met2 ( 1469930 16830 ) ( * 22270 ) + NEW met1 ( 1469930 22270 ) ( 1588150 * ) + NEW met2 ( 1588150 1688780 ) ( 1588310 * ) + NEW met2 ( 1588310 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1588150 22270 ) ( * 1688780 ) + NEW met1 ( 1338830 16830 ) ( 1469930 * ) + NEW met1 ( 1338830 16830 ) M1M2_PR + NEW met1 ( 1469930 16830 ) M1M2_PR + NEW met1 ( 1469930 22270 ) M1M2_PR + NEW met1 ( 1588150 22270 ) M1M2_PR ; + - la_data_in[41] ( PIN la_data_in[41] ) ( mprj la_data_in[41] ) + USE SIGNAL + + ROUTED met2 ( 1356310 1700 0 ) ( * 20570 ) + NEW met2 ( 1490170 20570 ) ( * 26690 ) + NEW met1 ( 1490170 26690 ) ( 1587690 * ) + NEW met1 ( 1587690 1688950 ) ( 1593830 * ) + NEW met2 ( 1593830 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1587690 26690 ) ( * 1688950 ) + NEW met1 ( 1356310 20570 ) ( 1490170 * ) + NEW met1 ( 1356310 20570 ) M1M2_PR + NEW met1 ( 1490170 20570 ) M1M2_PR + NEW met1 ( 1490170 26690 ) M1M2_PR + NEW met1 ( 1587690 26690 ) M1M2_PR + NEW met1 ( 1587690 1688950 ) M1M2_PR + NEW met1 ( 1593830 1688950 ) M1M2_PR ; + - la_data_in[42] ( PIN la_data_in[42] ) ( mprj la_data_in[42] ) + USE SIGNAL + + ROUTED met2 ( 1374250 1700 0 ) ( * 23970 ) + NEW met1 ( 1594590 1688950 ) ( 1598890 * ) + NEW met2 ( 1598890 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1594590 23970 ) ( * 1688950 ) + NEW met1 ( 1374250 23970 ) ( 1594590 * ) + NEW met1 ( 1374250 23970 ) M1M2_PR + NEW met1 ( 1594590 23970 ) M1M2_PR + NEW met1 ( 1594590 1688950 ) M1M2_PR + NEW met1 ( 1598890 1688950 ) M1M2_PR ; + - la_data_in[43] ( PIN la_data_in[43] ) ( mprj la_data_in[43] ) + USE SIGNAL + + ROUTED met2 ( 1391730 1700 0 ) ( * 24310 ) + NEW met2 ( 1601950 1688780 ) ( 1604410 * ) + NEW met2 ( 1604410 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1601950 24310 ) ( * 1688780 ) + NEW met1 ( 1391730 24310 ) ( 1601950 * ) + NEW met1 ( 1391730 24310 ) M1M2_PR + NEW met1 ( 1601950 24310 ) M1M2_PR ; + - la_data_in[44] ( PIN la_data_in[44] ) ( mprj la_data_in[44] ) + USE SIGNAL + + ROUTED met2 ( 1409670 1700 0 ) ( * 15810 ) + NEW met2 ( 1489710 15810 ) ( * 26010 ) + NEW met1 ( 1489710 26010 ) ( 1608850 * ) + NEW met2 ( 1608850 1688780 ) ( 1609930 * ) + NEW met2 ( 1609930 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1608850 26010 ) ( * 1688780 ) + NEW met1 ( 1409670 15810 ) ( 1489710 * ) + NEW met1 ( 1409670 15810 ) M1M2_PR + NEW met1 ( 1489710 15810 ) M1M2_PR + NEW met1 ( 1489710 26010 ) M1M2_PR + NEW met1 ( 1608850 26010 ) M1M2_PR ; + - la_data_in[45] ( PIN la_data_in[45] ) ( mprj la_data_in[45] ) + USE SIGNAL + + ROUTED met2 ( 1615290 1688780 ) ( 1615450 * ) + NEW met2 ( 1615450 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1615290 23290 ) ( * 1688780 ) + NEW met2 ( 1427150 1700 0 ) ( * 23290 ) + NEW met1 ( 1427150 23290 ) ( 1615290 * ) + NEW met1 ( 1615290 23290 ) M1M2_PR + NEW met1 ( 1427150 23290 ) M1M2_PR ; + - la_data_in[46] ( PIN la_data_in[46] ) ( mprj la_data_in[46] ) + USE SIGNAL + + ROUTED met1 ( 1615750 1652570 ) ( 1620810 * ) + NEW met2 ( 1615750 22950 ) ( * 1652570 ) + NEW met2 ( 1620810 1688780 ) ( 1620970 * ) + NEW met2 ( 1620970 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1620810 1652570 ) ( * 1688780 ) + NEW met2 ( 1445090 1700 0 ) ( * 22950 ) + NEW met1 ( 1445090 22950 ) ( 1615750 * ) + NEW met1 ( 1615750 22950 ) M1M2_PR + NEW met1 ( 1615750 1652570 ) M1M2_PR + NEW met1 ( 1620810 1652570 ) M1M2_PR + NEW met1 ( 1445090 22950 ) M1M2_PR ; + - la_data_in[47] ( PIN la_data_in[47] ) ( mprj la_data_in[47] ) + USE SIGNAL + + ROUTED met2 ( 1463030 1700 0 ) ( * 24650 ) + NEW met1 ( 1463030 24650 ) ( 1622190 * ) + NEW met1 ( 1622190 1688950 ) ( 1626490 * ) + NEW met2 ( 1626490 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1622190 24650 ) ( * 1688950 ) + NEW met1 ( 1463030 24650 ) M1M2_PR + NEW met1 ( 1622190 24650 ) M1M2_PR + NEW met1 ( 1622190 1688950 ) M1M2_PR + NEW met1 ( 1626490 1688950 ) M1M2_PR ; + - la_data_in[48] ( PIN la_data_in[48] ) ( mprj la_data_in[48] ) + USE SIGNAL + + ROUTED met2 ( 1480510 1700 0 ) ( * 24990 ) + NEW met2 ( 1629090 1688780 ) ( 1632010 * ) + NEW met2 ( 1632010 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1629090 24990 ) ( * 1688780 ) + NEW met1 ( 1480510 24990 ) ( 1629090 * ) + NEW met1 ( 1480510 24990 ) M1M2_PR + NEW met1 ( 1629090 24990 ) M1M2_PR ; + - la_data_in[49] ( PIN la_data_in[49] ) ( mprj la_data_in[49] ) + USE SIGNAL + + ROUTED met2 ( 1636450 1688780 ) ( 1637530 * ) + NEW met2 ( 1637530 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1636450 25330 ) ( * 1688780 ) + NEW met2 ( 1498450 1700 0 ) ( * 25330 ) + NEW met1 ( 1498450 25330 ) ( 1636450 * ) + NEW met1 ( 1636450 25330 ) M1M2_PR + NEW met1 ( 1498450 25330 ) M1M2_PR ; + - la_data_in[4] ( PIN la_data_in[4] ) ( mprj la_data_in[4] ) + USE SIGNAL + + ROUTED met2 ( 700350 1700 0 ) ( * 30090 ) + NEW met1 ( 1362290 29410 ) ( * 30090 ) + NEW met1 ( 700350 30090 ) ( 1362290 * ) + NEW met1 ( 1362290 29410 ) ( 1387130 * ) + NEW met1 ( 1387130 1652570 ) ( 1390810 * ) + NEW met2 ( 1387130 29410 ) ( * 1652570 ) + NEW met2 ( 1390810 1688780 ) ( 1390970 * ) + NEW met2 ( 1390970 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1390810 1652570 ) ( * 1688780 ) + NEW met1 ( 700350 30090 ) M1M2_PR + NEW met1 ( 1387130 29410 ) M1M2_PR + NEW met1 ( 1387130 1652570 ) M1M2_PR + NEW met1 ( 1390810 1652570 ) M1M2_PR ; + - la_data_in[50] ( PIN la_data_in[50] ) ( mprj la_data_in[50] ) + USE SIGNAL + + ROUTED met2 ( 1643120 1688780 ) ( 1643350 * ) + NEW met2 ( 1643120 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1643350 25670 ) ( * 1688780 ) + NEW met2 ( 1515930 1700 0 ) ( * 25670 ) + NEW met1 ( 1515930 25670 ) ( 1643350 * ) + NEW met1 ( 1643350 25670 ) M1M2_PR + NEW met1 ( 1515930 25670 ) M1M2_PR ; + - la_data_in[51] ( PIN la_data_in[51] ) ( mprj la_data_in[51] ) + USE SIGNAL + + ROUTED met2 ( 1533870 1700 0 ) ( * 26350 ) + NEW met2 ( 1643810 1688780 ) ( 1648570 * ) + NEW met2 ( 1648570 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1643810 26350 ) ( * 1688780 ) + NEW met1 ( 1533870 26350 ) ( 1643810 * ) + NEW met1 ( 1533870 26350 ) M1M2_PR + NEW met1 ( 1643810 26350 ) M1M2_PR ; + - la_data_in[52] ( PIN la_data_in[52] ) ( mprj la_data_in[52] ) + USE SIGNAL + + ROUTED met2 ( 1549050 1700 ) ( 1551350 * 0 ) + NEW met2 ( 1549050 1700 ) ( * 3060 ) + NEW met2 ( 1545830 3060 ) ( 1549050 * ) + NEW met2 ( 1545830 3060 ) ( * 1679770 ) + NEW met2 ( 1653930 1679770 ) ( * 1688780 ) + NEW met2 ( 1653930 1688780 ) ( 1654090 * ) + NEW met2 ( 1654090 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1545830 1679770 ) ( 1653930 * ) + NEW met1 ( 1545830 1679770 ) M1M2_PR + NEW met1 ( 1653930 1679770 ) M1M2_PR ; + - la_data_in[53] ( PIN la_data_in[53] ) ( mprj la_data_in[53] ) + USE SIGNAL + + ROUTED met2 ( 1569290 1700 0 ) ( * 17340 ) + NEW met2 ( 1566530 17340 ) ( 1569290 * ) + NEW met2 ( 1566530 17340 ) ( * 1680110 ) + NEW met2 ( 1658990 1680110 ) ( * 1688780 ) + NEW met2 ( 1658990 1688780 ) ( 1659150 * ) + NEW met2 ( 1659150 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1566530 1680110 ) ( 1658990 * ) + NEW met1 ( 1566530 1680110 ) M1M2_PR + NEW met1 ( 1658990 1680110 ) M1M2_PR ; + - la_data_in[54] ( PIN la_data_in[54] ) ( mprj la_data_in[54] ) + USE SIGNAL + + ROUTED met2 ( 1664510 1681130 ) ( * 1688780 ) + NEW met2 ( 1664510 1688780 ) ( 1664670 * ) + NEW met2 ( 1664670 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1582170 82800 ) ( 1586770 * ) + NEW met2 ( 1586770 1700 0 ) ( * 82800 ) + NEW met1 ( 1628400 1681130 ) ( 1664510 * ) + NEW met1 ( 1582170 1681470 ) ( 1628400 * ) + NEW met1 ( 1628400 1681130 ) ( * 1681470 ) + NEW met2 ( 1582170 82800 ) ( * 1681470 ) + NEW met1 ( 1664510 1681130 ) M1M2_PR + NEW met1 ( 1582170 1681470 ) M1M2_PR ; + - la_data_in[55] ( PIN la_data_in[55] ) ( mprj la_data_in[55] ) + USE SIGNAL + + ROUTED met2 ( 1670260 1688780 ) ( 1671410 * ) + NEW met2 ( 1670260 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1671410 16490 ) ( * 1688780 ) + NEW met2 ( 1604710 1700 0 ) ( * 16490 ) + NEW met1 ( 1604710 16490 ) ( 1671410 * ) + NEW met1 ( 1671410 16490 ) M1M2_PR + NEW met1 ( 1604710 16490 ) M1M2_PR ; + - la_data_in[56] ( PIN la_data_in[56] ) ( mprj la_data_in[56] ) + USE SIGNAL + + ROUTED met1 ( 1645190 15470 ) ( * 16150 ) + NEW met1 ( 1645190 15470 ) ( 1670950 * ) + NEW met1 ( 1670950 1652230 ) ( 1675550 * ) + NEW met2 ( 1670950 15470 ) ( * 1652230 ) + NEW met2 ( 1675550 1688780 ) ( 1675710 * ) + NEW met2 ( 1675710 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1675550 1652230 ) ( * 1688780 ) + NEW met2 ( 1622190 1700 0 ) ( * 16150 ) + NEW met1 ( 1622190 16150 ) ( 1645190 * ) + NEW met1 ( 1670950 15470 ) M1M2_PR + NEW met1 ( 1670950 1652230 ) M1M2_PR + NEW met1 ( 1675550 1652230 ) M1M2_PR + NEW met1 ( 1622190 16150 ) M1M2_PR ; + - la_data_in[57] ( PIN la_data_in[57] ) ( mprj la_data_in[57] ) + USE SIGNAL + + ROUTED met2 ( 1640130 1700 0 ) ( * 17340 ) + NEW met2 ( 1635530 17340 ) ( 1640130 * ) + NEW met2 ( 1635530 17340 ) ( * 1680790 ) + NEW met2 ( 1679690 1680790 ) ( * 1689290 ) + NEW met2 ( 1679690 1689290 ) ( 1681230 * ) + NEW met2 ( 1681230 1689290 ) ( * 1690140 0 ) + NEW met1 ( 1635530 1680790 ) ( 1679690 * ) + NEW met1 ( 1635530 1680790 ) M1M2_PR + NEW met1 ( 1679690 1680790 ) M1M2_PR ; + - la_data_in[58] ( PIN la_data_in[58] ) ( mprj la_data_in[58] ) + USE SIGNAL + + ROUTED met2 ( 1658070 1700 0 ) ( * 19550 ) + NEW met1 ( 1658070 19550 ) ( 1684290 * ) + NEW met1 ( 1684290 1688950 ) ( 1686750 * ) + NEW met2 ( 1686750 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1684290 19550 ) ( * 1688950 ) + NEW met1 ( 1658070 19550 ) M1M2_PR + NEW met1 ( 1684290 19550 ) M1M2_PR + NEW met1 ( 1684290 1688950 ) M1M2_PR + NEW met1 ( 1686750 1688950 ) M1M2_PR ; + - la_data_in[59] ( PIN la_data_in[59] ) ( mprj la_data_in[59] ) + USE SIGNAL + + ROUTED met2 ( 1675550 1700 0 ) ( * 18530 ) + NEW met1 ( 1675550 18530 ) ( 1691190 * ) + NEW met2 ( 1691190 1688780 ) ( 1692270 * ) + NEW met2 ( 1692270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1691190 18530 ) ( * 1688780 ) + NEW met1 ( 1675550 18530 ) M1M2_PR + NEW met1 ( 1691190 18530 ) M1M2_PR ; + - la_data_in[5] ( PIN la_data_in[5] ) ( mprj la_data_in[5] ) + USE SIGNAL + + ROUTED met2 ( 717830 1700 0 ) ( * 34500 ) + NEW met2 ( 717830 34500 ) ( 718290 * ) + NEW met2 ( 718290 34500 ) ( * 81430 ) + NEW met1 ( 718290 81430 ) ( 1394030 * ) + NEW met1 ( 1394030 1689290 ) ( 1396490 * ) + NEW met2 ( 1396490 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1394030 81430 ) ( * 1689290 ) + NEW met1 ( 718290 81430 ) M1M2_PR + NEW met1 ( 1394030 81430 ) M1M2_PR + NEW met1 ( 1394030 1689290 ) M1M2_PR + NEW met1 ( 1396490 1689290 ) M1M2_PR ; + - la_data_in[60] ( PIN la_data_in[60] ) ( mprj la_data_in[60] ) + USE SIGNAL + + ROUTED met2 ( 1693490 1700 0 ) ( * 17510 ) + NEW met1 ( 1693490 17510 ) ( 1698090 * ) + NEW met2 ( 1697860 1688780 ) ( 1698090 * ) + NEW met2 ( 1697860 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1698090 17510 ) ( * 1688780 ) + NEW met1 ( 1693490 17510 ) M1M2_PR + NEW met1 ( 1698090 17510 ) M1M2_PR ; + - la_data_in[61] ( PIN la_data_in[61] ) ( mprj la_data_in[61] ) + USE SIGNAL + + ROUTED met2 ( 1706830 82800 ) ( 1710970 * ) + NEW met2 ( 1710970 1700 0 ) ( * 82800 ) + NEW met1 ( 1703610 1679770 ) ( 1706830 * ) + NEW met2 ( 1703610 1679770 ) ( * 1688780 ) + NEW met2 ( 1703380 1688780 ) ( 1703610 * ) + NEW met2 ( 1703380 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1706830 82800 ) ( * 1679770 ) + NEW met1 ( 1706830 1679770 ) M1M2_PR + NEW met1 ( 1703610 1679770 ) M1M2_PR ; + - la_data_in[62] ( PIN la_data_in[62] ) ( mprj la_data_in[62] ) + USE SIGNAL + + ROUTED met2 ( 1728910 1700 0 ) ( * 19550 ) + NEW met1 ( 1706370 19550 ) ( 1728910 * ) + NEW met2 ( 1706370 1688780 ) ( 1708830 * ) + NEW met2 ( 1708830 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1706370 19550 ) ( * 1688780 ) + NEW met1 ( 1728910 19550 ) M1M2_PR + NEW met1 ( 1706370 19550 ) M1M2_PR ; + - la_data_in[63] ( PIN la_data_in[63] ) ( mprj la_data_in[63] ) + USE SIGNAL + + ROUTED met2 ( 1746390 1700 0 ) ( * 14790 ) + NEW met1 ( 1711890 14790 ) ( 1746390 * ) + NEW met1 ( 1711890 1689290 ) ( 1714350 * ) + NEW met2 ( 1714350 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1711890 14790 ) ( * 1689290 ) + NEW met1 ( 1746390 14790 ) M1M2_PR + NEW met1 ( 1711890 14790 ) M1M2_PR + NEW met1 ( 1711890 1689290 ) M1M2_PR + NEW met1 ( 1714350 1689290 ) M1M2_PR ; + - la_data_in[64] ( PIN la_data_in[64] ) ( mprj la_data_in[64] ) + USE SIGNAL + + ROUTED met2 ( 1764330 1700 0 ) ( * 16830 ) + NEW met1 ( 1728450 16830 ) ( 1764330 * ) + NEW met2 ( 1728450 16830 ) ( * 1676710 ) + NEW met1 ( 1725000 1676710 ) ( 1728450 * ) + NEW met1 ( 1725000 1676710 ) ( * 1677390 ) + NEW met1 ( 1719710 1677390 ) ( 1725000 * ) + NEW met2 ( 1719710 1677390 ) ( * 1689290 ) + NEW met2 ( 1719480 1689290 ) ( 1719710 * ) + NEW met2 ( 1719480 1689290 ) ( * 1690140 0 ) + NEW met1 ( 1764330 16830 ) M1M2_PR + NEW met1 ( 1728450 16830 ) M1M2_PR + NEW met1 ( 1728450 1676710 ) M1M2_PR + NEW met1 ( 1719710 1677390 ) M1M2_PR ; + - la_data_in[65] ( PIN la_data_in[65] ) ( mprj la_data_in[65] ) + USE SIGNAL + + ROUTED met1 ( 1718790 1651890 ) ( 1724770 * ) + NEW met2 ( 1781810 1700 0 ) ( * 19890 ) + NEW met1 ( 1718790 19890 ) ( 1781810 * ) + NEW met2 ( 1718790 19890 ) ( * 1651890 ) + NEW met2 ( 1724770 1688780 ) ( 1724930 * ) + NEW met2 ( 1724930 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1724770 1651890 ) ( * 1688780 ) + NEW met1 ( 1718790 19890 ) M1M2_PR + NEW met1 ( 1718790 1651890 ) M1M2_PR + NEW met1 ( 1724770 1651890 ) M1M2_PR + NEW met1 ( 1781810 19890 ) M1M2_PR ; + - la_data_in[66] ( PIN la_data_in[66] ) ( mprj la_data_in[66] ) + USE SIGNAL + + ROUTED met2 ( 1725690 1683340 ) ( 1728910 * ) + NEW met2 ( 1728910 1683340 ) ( * 1688780 ) + NEW met2 ( 1728910 1688780 ) ( 1730450 * ) + NEW met2 ( 1730450 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1725690 14450 ) ( * 1683340 ) + NEW met2 ( 1799750 1700 0 ) ( * 14450 ) + NEW met1 ( 1725690 14450 ) ( 1799750 * ) + NEW met1 ( 1725690 14450 ) M1M2_PR + NEW met1 ( 1799750 14450 ) M1M2_PR ; + - la_data_in[67] ( PIN la_data_in[67] ) ( mprj la_data_in[67] ) + USE SIGNAL + + ROUTED met1 ( 1732590 1652570 ) ( 1735810 * ) + NEW met2 ( 1732590 19550 ) ( * 1652570 ) + NEW met2 ( 1735810 1688780 ) ( 1735970 * ) + NEW met2 ( 1735970 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1735810 1652570 ) ( * 1688780 ) + NEW met2 ( 1817690 1700 0 ) ( * 19550 ) + NEW met1 ( 1732590 19550 ) ( 1817690 * ) + NEW met1 ( 1732590 19550 ) M1M2_PR + NEW met1 ( 1732590 1652570 ) M1M2_PR + NEW met1 ( 1735810 1652570 ) M1M2_PR + NEW met1 ( 1817690 19550 ) M1M2_PR ; + - la_data_in[68] ( PIN la_data_in[68] ) ( mprj la_data_in[68] ) + USE SIGNAL + + ROUTED met2 ( 1835170 1700 0 ) ( * 19210 ) + NEW met2 ( 1739030 19210 ) ( * 1676700 ) + NEW met2 ( 1739030 1676700 ) ( 1740870 * ) + NEW met2 ( 1740870 1676700 ) ( * 1688780 ) + NEW met2 ( 1740870 1688780 ) ( 1741490 * ) + NEW met2 ( 1741490 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1739030 19210 ) ( 1835170 * ) + NEW met1 ( 1739030 19210 ) M1M2_PR + NEW met1 ( 1835170 19210 ) M1M2_PR ; + - la_data_in[69] ( PIN la_data_in[69] ) ( mprj la_data_in[69] ) + USE SIGNAL + + ROUTED met2 ( 1853110 1700 0 ) ( * 18190 ) + NEW met2 ( 1745930 1688780 ) ( 1747010 * ) + NEW met2 ( 1747010 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1745930 18190 ) ( * 1688780 ) + NEW met1 ( 1745930 18190 ) ( 1853110 * ) + NEW met1 ( 1745930 18190 ) M1M2_PR + NEW met1 ( 1853110 18190 ) M1M2_PR ; + - la_data_in[6] ( PIN la_data_in[6] ) ( mprj la_data_in[6] ) + USE SIGNAL + + ROUTED met1 ( 731630 86870 ) ( 1401850 * ) + NEW met2 ( 731630 82800 ) ( * 86870 ) + NEW met2 ( 731630 82800 ) ( 735770 * ) + NEW met2 ( 735770 1700 0 ) ( * 82800 ) + NEW met2 ( 1401850 1688780 ) ( 1402010 * ) + NEW met2 ( 1402010 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1401850 86870 ) ( * 1688780 ) + NEW met1 ( 731630 86870 ) M1M2_PR + NEW met1 ( 1401850 86870 ) M1M2_PR ; + - la_data_in[70] ( PIN la_data_in[70] ) ( mprj la_data_in[70] ) + USE SIGNAL + + ROUTED met2 ( 1752370 1676710 ) ( * 1688780 ) + NEW met2 ( 1752370 1688780 ) ( 1752530 * ) + NEW met2 ( 1752530 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1776750 16150 ) ( 1812630 * ) + NEW met2 ( 1812630 16150 ) ( * 20230 ) + NEW met2 ( 1870590 1700 0 ) ( * 20230 ) + NEW met1 ( 1812630 20230 ) ( 1870590 * ) + NEW met1 ( 1752370 1676710 ) ( 1776750 * ) + NEW met2 ( 1776750 16150 ) ( * 1676710 ) + NEW met1 ( 1752370 1676710 ) M1M2_PR + NEW met1 ( 1776750 16150 ) M1M2_PR + NEW met1 ( 1812630 16150 ) M1M2_PR + NEW met1 ( 1812630 20230 ) M1M2_PR + NEW met1 ( 1870590 20230 ) M1M2_PR + NEW met1 ( 1776750 1676710 ) M1M2_PR ; + - la_data_in[71] ( PIN la_data_in[71] ) ( mprj la_data_in[71] ) + USE SIGNAL + + ROUTED met2 ( 1758350 1677050 ) ( * 1688780 ) + NEW met2 ( 1758120 1688780 ) ( 1758350 * ) + NEW met2 ( 1758120 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1783650 20230 ) ( 1802050 * ) + NEW met1 ( 1802050 19890 ) ( * 20230 ) + NEW met2 ( 1888530 1700 0 ) ( * 19890 ) + NEW met1 ( 1802050 19890 ) ( 1888530 * ) + NEW met1 ( 1758350 1677050 ) ( 1783650 * ) + NEW met2 ( 1783650 20230 ) ( * 1677050 ) + NEW met1 ( 1758350 1677050 ) M1M2_PR + NEW met1 ( 1783650 20230 ) M1M2_PR + NEW met1 ( 1888530 19890 ) M1M2_PR + NEW met1 ( 1783650 1677050 ) M1M2_PR ; + - la_data_in[72] ( PIN la_data_in[72] ) ( mprj la_data_in[72] ) + USE SIGNAL + + ROUTED met2 ( 1763870 1678750 ) ( * 1688780 ) + NEW met2 ( 1763640 1688780 ) ( 1763870 * ) + NEW met2 ( 1763640 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1790550 19890 ) ( 1794230 * ) + NEW met2 ( 1794230 18530 ) ( * 19890 ) + NEW met2 ( 1906010 1700 0 ) ( * 18530 ) + NEW met1 ( 1794230 18530 ) ( 1906010 * ) + NEW met1 ( 1763870 1678750 ) ( 1790550 * ) + NEW met2 ( 1790550 19890 ) ( * 1678750 ) + NEW met1 ( 1763870 1678750 ) M1M2_PR + NEW met1 ( 1790550 19890 ) M1M2_PR + NEW met1 ( 1794230 19890 ) M1M2_PR + NEW met1 ( 1794230 18530 ) M1M2_PR + NEW met1 ( 1906010 18530 ) M1M2_PR + NEW met1 ( 1790550 1678750 ) M1M2_PR ; + - la_data_in[73] ( PIN la_data_in[73] ) ( mprj la_data_in[73] ) + USE SIGNAL + + ROUTED met2 ( 1923950 1700 0 ) ( * 20570 ) + NEW met2 ( 1769390 1679430 ) ( * 1688780 ) + NEW met2 ( 1769160 1688780 ) ( 1769390 * ) + NEW met2 ( 1769160 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1811250 20230 ) ( 1812170 * ) + NEW met1 ( 1812170 20230 ) ( * 20570 ) + NEW met1 ( 1812170 20570 ) ( 1923950 * ) + NEW met2 ( 1811250 20230 ) ( * 1676700 ) + NEW met2 ( 1810790 1676700 ) ( * 1679430 ) + NEW met2 ( 1810790 1676700 ) ( 1811250 * ) + NEW met1 ( 1769390 1679430 ) ( 1810790 * ) + NEW met1 ( 1923950 20570 ) M1M2_PR + NEW met1 ( 1769390 1679430 ) M1M2_PR + NEW met1 ( 1811250 20230 ) M1M2_PR + NEW met1 ( 1810790 1679430 ) M1M2_PR ; + - la_data_in[74] ( PIN la_data_in[74] ) ( mprj la_data_in[74] ) + USE SIGNAL + + ROUTED met2 ( 1941430 1700 0 ) ( * 16490 ) + NEW met2 ( 1832410 16490 ) ( * 1683170 ) + NEW met1 ( 1832410 16490 ) ( 1941430 * ) + NEW met2 ( 1774910 1683170 ) ( * 1688780 ) + NEW met2 ( 1774680 1688780 ) ( 1774910 * ) + NEW met2 ( 1774680 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1774910 1683170 ) ( 1832410 * ) + NEW met1 ( 1832410 16490 ) M1M2_PR + NEW met1 ( 1941430 16490 ) M1M2_PR + NEW met1 ( 1832410 1683170 ) M1M2_PR + NEW met1 ( 1774910 1683170 ) M1M2_PR ; + - la_data_in[75] ( PIN la_data_in[75] ) ( mprj la_data_in[75] ) + USE SIGNAL + + ROUTED met2 ( 1959370 1700 0 ) ( * 19550 ) + NEW met2 ( 1832870 19550 ) ( * 1682830 ) + NEW met1 ( 1832870 19550 ) ( 1959370 * ) + NEW met2 ( 1779970 1682830 ) ( * 1688780 ) + NEW met2 ( 1779740 1688780 ) ( 1779970 * ) + NEW met2 ( 1779740 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1779970 1682830 ) ( 1832870 * ) + NEW met1 ( 1832870 19550 ) M1M2_PR + NEW met1 ( 1959370 19550 ) M1M2_PR + NEW met1 ( 1832870 1682830 ) M1M2_PR + NEW met1 ( 1779970 1682830 ) M1M2_PR ; + - la_data_in[76] ( PIN la_data_in[76] ) ( mprj la_data_in[76] ) + USE SIGNAL + + ROUTED met2 ( 1845750 16830 ) ( * 1678410 ) + NEW met2 ( 1976850 1700 0 ) ( * 16830 ) + NEW met1 ( 1845750 16830 ) ( 1976850 * ) + NEW met2 ( 1785490 1678410 ) ( * 1688780 ) + NEW met2 ( 1785260 1688780 ) ( 1785490 * ) + NEW met2 ( 1785260 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1785490 1678410 ) ( 1845750 * ) + NEW met1 ( 1845750 16830 ) M1M2_PR + NEW met1 ( 1845750 1678410 ) M1M2_PR + NEW met1 ( 1976850 16830 ) M1M2_PR + NEW met1 ( 1785490 1678410 ) M1M2_PR ; + - la_data_in[77] ( PIN la_data_in[77] ) ( mprj la_data_in[77] ) + USE SIGNAL + + ROUTED met1 ( 1787790 1652230 ) ( * 1653250 ) + NEW met2 ( 1994790 1700 0 ) ( * 23970 ) + NEW met1 ( 1787790 23970 ) ( 1994790 * ) + NEW met2 ( 1787790 23970 ) ( * 1652230 ) + NEW met1 ( 1787790 1689290 ) ( 1790710 * ) + NEW met2 ( 1790710 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1787790 1653250 ) ( * 1689290 ) + NEW met1 ( 1787790 23970 ) M1M2_PR + NEW met1 ( 1787790 1652230 ) M1M2_PR + NEW met1 ( 1787790 1653250 ) M1M2_PR + NEW met1 ( 1994790 23970 ) M1M2_PR + NEW met1 ( 1787790 1689290 ) M1M2_PR + NEW met1 ( 1790710 1689290 ) M1M2_PR ; + - la_data_in[78] ( PIN la_data_in[78] ) ( mprj la_data_in[78] ) + USE SIGNAL + + ROUTED met2 ( 2012730 1700 0 ) ( * 22270 ) + NEW met1 ( 1795150 22270 ) ( 2012730 * ) + NEW met2 ( 1795150 22270 ) ( * 1580100 ) + NEW met2 ( 1795150 1580100 ) ( 1796070 * ) + NEW met2 ( 1796070 1688780 ) ( 1796230 * ) + NEW met2 ( 1796230 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1796070 1580100 ) ( * 1688780 ) + NEW met1 ( 1795150 22270 ) M1M2_PR + NEW met1 ( 2012730 22270 ) M1M2_PR ; + - la_data_in[79] ( PIN la_data_in[79] ) ( mprj la_data_in[79] ) + USE SIGNAL + + ROUTED met2 ( 2030210 1700 0 ) ( * 22950 ) + NEW met1 ( 1801130 22950 ) ( 2030210 * ) + NEW met2 ( 1801130 1688780 ) ( 1801750 * ) + NEW met2 ( 1801750 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1801130 22950 ) ( * 1688780 ) + NEW met1 ( 2030210 22950 ) M1M2_PR + NEW met1 ( 1801130 22950 ) M1M2_PR ; + - la_data_in[7] ( PIN la_data_in[7] ) ( mprj la_data_in[7] ) + USE SIGNAL + + ROUTED met1 ( 752330 87550 ) ( 1402310 * ) + NEW met1 ( 1402310 1642370 ) ( 1407370 * ) + NEW met2 ( 752330 82800 ) ( * 87550 ) + NEW met2 ( 752330 82800 ) ( 753250 * ) + NEW met2 ( 753250 1700 0 ) ( * 82800 ) + NEW met2 ( 1402310 87550 ) ( * 1642370 ) + NEW met2 ( 1407370 1688780 ) ( 1407530 * ) + NEW met2 ( 1407530 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1407370 1642370 ) ( * 1688780 ) + NEW met1 ( 752330 87550 ) M1M2_PR + NEW met1 ( 1402310 87550 ) M1M2_PR + NEW met1 ( 1402310 1642370 ) M1M2_PR + NEW met1 ( 1407370 1642370 ) M1M2_PR ; + - la_data_in[80] ( PIN la_data_in[80] ) ( mprj la_data_in[80] ) + USE SIGNAL + + ROUTED met2 ( 2048150 1700 0 ) ( * 30770 ) + NEW met1 ( 1801590 1652570 ) ( 1807110 * ) + NEW met1 ( 1801590 30770 ) ( 2048150 * ) + NEW met2 ( 1801590 30770 ) ( * 1652570 ) + NEW met2 ( 1807110 1688780 ) ( 1807270 * ) + NEW met2 ( 1807270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1807110 1652570 ) ( * 1688780 ) + NEW met1 ( 2048150 30770 ) M1M2_PR + NEW met1 ( 1801590 30770 ) M1M2_PR + NEW met1 ( 1801590 1652570 ) M1M2_PR + NEW met1 ( 1807110 1652570 ) M1M2_PR ; + - la_data_in[81] ( PIN la_data_in[81] ) ( mprj la_data_in[81] ) + USE SIGNAL + + ROUTED met2 ( 2065630 1700 0 ) ( * 29410 ) + NEW met1 ( 1808030 29410 ) ( 2065630 * ) + NEW met1 ( 1808030 1688950 ) ( 1812790 * ) + NEW met2 ( 1812790 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1808030 29410 ) ( * 1688950 ) + NEW met1 ( 1808030 29410 ) M1M2_PR + NEW met1 ( 2065630 29410 ) M1M2_PR + NEW met1 ( 1808030 1688950 ) M1M2_PR + NEW met1 ( 1812790 1688950 ) M1M2_PR ; + - la_data_in[82] ( PIN la_data_in[82] ) ( mprj la_data_in[82] ) + USE SIGNAL + + ROUTED met2 ( 2083570 1700 0 ) ( * 27710 ) + NEW met1 ( 2077590 27710 ) ( 2083570 * ) + NEW met2 ( 2077590 27710 ) ( * 34170 ) + NEW met1 ( 1815390 34170 ) ( 2077590 * ) + NEW met2 ( 1815390 34170 ) ( * 1676700 ) + NEW met2 ( 1815390 1676700 ) ( 1817230 * ) + NEW met2 ( 1817230 1676700 ) ( * 1688780 ) + NEW met2 ( 1817230 1688780 ) ( 1818310 * ) + NEW met2 ( 1818310 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1815390 34170 ) M1M2_PR + NEW met1 ( 2083570 27710 ) M1M2_PR + NEW met1 ( 2077590 27710 ) M1M2_PR + NEW met1 ( 2077590 34170 ) M1M2_PR ; + - la_data_in[83] ( PIN la_data_in[83] ) ( mprj la_data_in[83] ) + USE SIGNAL + + ROUTED met2 ( 1821830 29750 ) ( * 1676700 ) + NEW met2 ( 1821830 1676700 ) ( 1823670 * ) + NEW met2 ( 1823670 1676700 ) ( * 1688780 ) + NEW met2 ( 1823670 1688780 ) ( 1823830 * ) + NEW met2 ( 1823830 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2101050 1700 0 ) ( * 29750 ) + NEW met1 ( 1821830 29750 ) ( 2101050 * ) + NEW met1 ( 1821830 29750 ) M1M2_PR + NEW met1 ( 2101050 29750 ) M1M2_PR ; + - la_data_in[84] ( PIN la_data_in[84] ) ( mprj la_data_in[84] ) + USE SIGNAL + + ROUTED met2 ( 2118990 1700 0 ) ( * 30090 ) + NEW met2 ( 1829420 1688780 ) ( 1829650 * ) + NEW met2 ( 1829420 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1829650 30090 ) ( * 1688780 ) + NEW met1 ( 1829650 30090 ) ( 2118990 * ) + NEW met1 ( 1829650 30090 ) M1M2_PR + NEW met1 ( 2118990 30090 ) M1M2_PR ; + - la_data_in[85] ( PIN la_data_in[85] ) ( mprj la_data_in[85] ) + USE SIGNAL + + ROUTED met1 ( 1829190 1652570 ) ( 1834710 * ) + NEW met2 ( 2136470 1700 0 ) ( * 30430 ) + NEW met2 ( 1829190 30430 ) ( * 1652570 ) + NEW met2 ( 1834710 1688780 ) ( 1834870 * ) + NEW met2 ( 1834870 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1834710 1652570 ) ( * 1688780 ) + NEW met1 ( 1829190 30430 ) ( 2136470 * ) + NEW met1 ( 1829190 30430 ) M1M2_PR + NEW met1 ( 1829190 1652570 ) M1M2_PR + NEW met1 ( 1834710 1652570 ) M1M2_PR + NEW met1 ( 2136470 30430 ) M1M2_PR ; + - la_data_in[86] ( PIN la_data_in[86] ) ( mprj la_data_in[86] ) + USE SIGNAL + + ROUTED met2 ( 1836090 1652740 ) ( 1837010 * ) + NEW met2 ( 2154410 1700 0 ) ( * 33830 ) + NEW met2 ( 1836090 33830 ) ( * 1652740 ) + NEW met1 ( 1837010 1689290 ) ( 1839930 * ) + NEW met2 ( 1839930 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1837010 1652740 ) ( * 1689290 ) + NEW met1 ( 1836090 33830 ) ( 2154410 * ) + NEW met1 ( 1836090 33830 ) M1M2_PR + NEW met1 ( 2154410 33830 ) M1M2_PR + NEW met1 ( 1837010 1689290 ) M1M2_PR + NEW met1 ( 1839930 1689290 ) M1M2_PR ; + - la_data_in[87] ( PIN la_data_in[87] ) ( mprj la_data_in[87] ) + USE SIGNAL + + ROUTED met1 ( 1842530 1689290 ) ( 1845450 * ) + NEW met2 ( 1845450 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1842530 33490 ) ( * 1689290 ) + NEW met2 ( 2172350 1700 0 ) ( * 33490 ) + NEW met1 ( 1842530 33490 ) ( 2172350 * ) + NEW met1 ( 1842530 33490 ) M1M2_PR + NEW met1 ( 1842530 1689290 ) M1M2_PR + NEW met1 ( 1845450 1689290 ) M1M2_PR + NEW met1 ( 2172350 33490 ) M1M2_PR ; + - la_data_in[88] ( PIN la_data_in[88] ) ( mprj la_data_in[88] ) + USE SIGNAL + + ROUTED met2 ( 2189830 1700 0 ) ( * 33150 ) + NEW met1 ( 1849430 33150 ) ( 2189830 * ) + NEW met2 ( 1849430 1688780 ) ( 1850970 * ) + NEW met2 ( 1850970 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1849430 33150 ) ( * 1688780 ) + NEW met1 ( 1849430 33150 ) M1M2_PR + NEW met1 ( 2189830 33150 ) M1M2_PR ; + - la_data_in[89] ( PIN la_data_in[89] ) ( mprj la_data_in[89] ) + USE SIGNAL + + ROUTED met2 ( 2207770 1700 0 ) ( * 32810 ) + NEW met1 ( 1856790 32810 ) ( 2207770 * ) + NEW met2 ( 1856560 1688780 ) ( 1856790 * ) + NEW met2 ( 1856560 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1856790 32810 ) ( * 1688780 ) + NEW met1 ( 1856790 32810 ) M1M2_PR + NEW met1 ( 2207770 32810 ) M1M2_PR ; + - la_data_in[8] ( PIN la_data_in[8] ) ( mprj la_data_in[8] ) + USE SIGNAL + + ROUTED met2 ( 768890 1700 ) ( 771190 * 0 ) + NEW met2 ( 766130 82800 ) ( * 88230 ) + NEW met2 ( 766130 82800 ) ( 768890 * ) + NEW met2 ( 768890 1700 ) ( * 82800 ) + NEW met1 ( 766130 88230 ) ( 1407830 * ) + NEW met1 ( 1407830 1652570 ) ( 1412890 * ) + NEW met2 ( 1407830 88230 ) ( * 1652570 ) + NEW met2 ( 1412890 1688780 ) ( 1413050 * ) + NEW met2 ( 1413050 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1412890 1652570 ) ( * 1688780 ) + NEW met1 ( 766130 88230 ) M1M2_PR + NEW met1 ( 1407830 88230 ) M1M2_PR + NEW met1 ( 1407830 1652570 ) M1M2_PR + NEW met1 ( 1412890 1652570 ) M1M2_PR ; + - la_data_in[90] ( PIN la_data_in[90] ) ( mprj la_data_in[90] ) + USE SIGNAL + + ROUTED met1 ( 1856330 1652570 ) ( 1861850 * ) + NEW met2 ( 2225250 1700 0 ) ( * 32470 ) + NEW met2 ( 1856330 32470 ) ( * 1652570 ) + NEW met1 ( 1856330 32470 ) ( 2225250 * ) + NEW met2 ( 1861850 1688780 ) ( 1862010 * ) + NEW met2 ( 1862010 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1861850 1652570 ) ( * 1688780 ) + NEW met1 ( 1856330 32470 ) M1M2_PR + NEW met1 ( 1856330 1652570 ) M1M2_PR + NEW met1 ( 1861850 1652570 ) M1M2_PR + NEW met1 ( 2225250 32470 ) M1M2_PR ; + - la_data_in[91] ( PIN la_data_in[91] ) ( mprj la_data_in[91] ) + USE SIGNAL + + ROUTED met2 ( 2243190 1700 0 ) ( * 15300 ) + NEW met2 ( 2242730 15300 ) ( 2243190 * ) + NEW met2 ( 2242730 15300 ) ( * 68510 ) + NEW met1 ( 1864150 68510 ) ( 2242730 * ) + NEW met2 ( 1864150 1681300 ) ( 1866450 * ) + NEW met2 ( 1866450 1681300 ) ( * 1688780 ) + NEW met2 ( 1866450 1688780 ) ( 1867530 * ) + NEW met2 ( 1867530 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1864150 68510 ) ( * 1681300 ) + NEW met1 ( 1864150 68510 ) M1M2_PR + NEW met1 ( 2242730 68510 ) M1M2_PR ; + - la_data_in[92] ( PIN la_data_in[92] ) ( mprj la_data_in[92] ) + USE SIGNAL + + ROUTED met2 ( 2258370 1700 ) ( 2260670 * 0 ) + NEW met1 ( 1871050 68170 ) ( 2258370 * ) + NEW met2 ( 2258370 1700 ) ( * 68170 ) + NEW met2 ( 1871050 1688780 ) ( 1873050 * ) + NEW met2 ( 1873050 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1871050 68170 ) ( * 1688780 ) + NEW met1 ( 1871050 68170 ) M1M2_PR + NEW met1 ( 2258370 68170 ) M1M2_PR ; + - la_data_in[93] ( PIN la_data_in[93] ) ( mprj la_data_in[93] ) + USE SIGNAL + + ROUTED met1 ( 1877490 67830 ) ( 2278610 * ) + NEW met2 ( 2278610 1700 0 ) ( * 67830 ) + NEW met2 ( 1877490 1688780 ) ( 1878570 * ) + NEW met2 ( 1878570 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1877490 67830 ) ( * 1688780 ) + NEW met1 ( 1877490 67830 ) M1M2_PR + NEW met1 ( 2278610 67830 ) M1M2_PR ; + - la_data_in[94] ( PIN la_data_in[94] ) ( mprj la_data_in[94] ) + USE SIGNAL + + ROUTED met1 ( 1884850 67490 ) ( 2296090 * ) + NEW met2 ( 2296090 1700 0 ) ( * 67490 ) + NEW met2 ( 1884160 1688780 ) ( 1884850 * ) + NEW met2 ( 1884160 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1884850 67490 ) ( * 1688780 ) + NEW met1 ( 1884850 67490 ) M1M2_PR + NEW met1 ( 2296090 67490 ) M1M2_PR ; + - la_data_in[95] ( PIN la_data_in[95] ) ( mprj la_data_in[95] ) + USE SIGNAL + + ROUTED met2 ( 2311730 1700 ) ( 2314030 * 0 ) + NEW met2 ( 2311730 1700 ) ( * 67150 ) + NEW met1 ( 1884390 1652230 ) ( 1889450 * ) + NEW met2 ( 1884390 67150 ) ( * 1652230 ) + NEW met1 ( 1884390 67150 ) ( 2311730 * ) + NEW met2 ( 1889450 1688780 ) ( 1889610 * ) + NEW met2 ( 1889610 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1889450 1652230 ) ( * 1688780 ) + NEW met1 ( 2311730 67150 ) M1M2_PR + NEW met1 ( 1884390 1652230 ) M1M2_PR + NEW met1 ( 1889450 1652230 ) M1M2_PR + NEW met1 ( 1884390 67150 ) M1M2_PR ; + - la_data_in[96] ( PIN la_data_in[96] ) ( mprj la_data_in[96] ) + USE SIGNAL + + ROUTED met2 ( 2331510 1700 0 ) ( * 36890 ) + NEW met1 ( 1890830 36890 ) ( 2331510 * ) + NEW met1 ( 1890830 1688950 ) ( 1895130 * ) + NEW met2 ( 1895130 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1890830 36890 ) ( * 1688950 ) + NEW met1 ( 2331510 36890 ) M1M2_PR + NEW met1 ( 1890830 36890 ) M1M2_PR + NEW met1 ( 1890830 1688950 ) M1M2_PR + NEW met1 ( 1895130 1688950 ) M1M2_PR ; + - la_data_in[97] ( PIN la_data_in[97] ) ( mprj la_data_in[97] ) + USE SIGNAL + + ROUTED met2 ( 2349450 1700 0 ) ( * 37230 ) + NEW met2 ( 1898190 37230 ) ( * 1676700 ) + NEW met2 ( 1898190 1676700 ) ( 1899110 * ) + NEW met2 ( 1899110 1676700 ) ( * 1688780 ) + NEW met2 ( 1899110 1688780 ) ( 1900190 * ) + NEW met2 ( 1900190 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1898190 37230 ) ( 2349450 * ) + NEW met1 ( 2349450 37230 ) M1M2_PR + NEW met1 ( 1898190 37230 ) M1M2_PR ; + - la_data_in[98] ( PIN la_data_in[98] ) ( mprj la_data_in[98] ) + USE SIGNAL + + ROUTED met2 ( 1905090 1688780 ) ( 1905710 * ) + NEW met2 ( 1905710 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1905090 37570 ) ( * 1688780 ) + NEW met1 ( 1905090 37570 ) ( 2367390 * ) + NEW met2 ( 2367390 1700 0 ) ( * 37570 ) + NEW met1 ( 1905090 37570 ) M1M2_PR + NEW met1 ( 2367390 37570 ) M1M2_PR ; + - la_data_in[99] ( PIN la_data_in[99] ) ( mprj la_data_in[99] ) + USE SIGNAL + + ROUTED met1 ( 1904630 1652570 ) ( 1911070 * ) + NEW met2 ( 1904630 41310 ) ( * 1652570 ) + NEW met2 ( 1911070 1688780 ) ( 1911230 * ) + NEW met2 ( 1911230 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1911070 1652570 ) ( * 1688780 ) + NEW met1 ( 1904630 41310 ) ( 2384870 * ) + NEW met2 ( 2384870 1700 0 ) ( * 41310 ) + NEW met1 ( 1904630 1652570 ) M1M2_PR + NEW met1 ( 1911070 1652570 ) M1M2_PR + NEW met1 ( 1904630 41310 ) M1M2_PR + NEW met1 ( 2384870 41310 ) M1M2_PR ; + - la_data_in[9] ( PIN la_data_in[9] ) ( mprj la_data_in[9] ) + USE SIGNAL + + ROUTED met2 ( 789130 1700 0 ) ( * 38930 ) + NEW met1 ( 1414730 1652570 ) ( 1417950 * ) + NEW met2 ( 1417950 1688780 ) ( 1418110 * ) + NEW met2 ( 1418110 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1417950 1652570 ) ( * 1688780 ) + NEW met1 ( 789130 38930 ) ( 1414730 * ) + NEW met2 ( 1414730 38930 ) ( * 1652570 ) + NEW met1 ( 789130 38930 ) M1M2_PR + NEW met1 ( 1414730 1652570 ) M1M2_PR + NEW met1 ( 1417950 1652570 ) M1M2_PR + NEW met1 ( 1414730 38930 ) M1M2_PR ; + - la_data_out[0] ( PIN la_data_out[0] ) ( mprj la_data_out[0] ) + USE SIGNAL + + ROUTED met1 ( 1366890 1652570 ) ( 1370570 * ) + NEW met2 ( 1366890 37910 ) ( * 1652570 ) + NEW met2 ( 1370570 1688780 ) ( 1370730 * ) + NEW met2 ( 1370730 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1370570 1652570 ) ( * 1688780 ) + NEW met2 ( 635030 1700 0 ) ( * 17340 ) + NEW met2 ( 635030 17340 ) ( 635490 * ) + NEW met2 ( 635490 17340 ) ( * 37910 ) + NEW met1 ( 635490 37910 ) ( 1366890 * ) + NEW met1 ( 1366890 1652570 ) M1M2_PR + NEW met1 ( 1370570 1652570 ) M1M2_PR + NEW met1 ( 1366890 37910 ) M1M2_PR + NEW met1 ( 635490 37910 ) M1M2_PR ; + - la_data_out[100] ( PIN la_data_out[100] ) ( mprj la_data_out[100] ) + USE SIGNAL + + ROUTED met2 ( 1918660 1688780 ) ( 1918890 * ) + NEW met2 ( 1918660 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1918890 40970 ) ( * 1688780 ) + NEW met2 ( 2408790 1700 0 ) ( * 40970 ) + NEW met1 ( 1918890 40970 ) ( 2408790 * ) + NEW met1 ( 1918890 40970 ) M1M2_PR + NEW met1 ( 2408790 40970 ) M1M2_PR ; + - la_data_out[101] ( PIN la_data_out[101] ) ( mprj la_data_out[101] ) + USE SIGNAL + + ROUTED met1 ( 1918430 1652570 ) ( 1923950 * ) + NEW met2 ( 1918430 40630 ) ( * 1652570 ) + NEW met2 ( 1923950 1688780 ) ( 1924110 * ) + NEW met2 ( 1924110 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1923950 1652570 ) ( * 1688780 ) + NEW met2 ( 2426270 1700 0 ) ( * 40630 ) + NEW met1 ( 1918430 40630 ) ( 2426270 * ) + NEW met1 ( 1918430 1652570 ) M1M2_PR + NEW met1 ( 1923950 1652570 ) M1M2_PR + NEW met1 ( 1918430 40630 ) M1M2_PR + NEW met1 ( 2426270 40630 ) M1M2_PR ; + - la_data_out[102] ( PIN la_data_out[102] ) ( mprj la_data_out[102] ) + USE SIGNAL + + ROUTED met1 ( 1925330 1688950 ) ( 1929630 * ) + NEW met2 ( 1929630 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1925330 40290 ) ( * 1688950 ) + NEW met2 ( 2444210 1700 0 ) ( * 40290 ) + NEW met1 ( 1925330 40290 ) ( 2444210 * ) + NEW met1 ( 1925330 40290 ) M1M2_PR + NEW met1 ( 1925330 1688950 ) M1M2_PR + NEW met1 ( 1929630 1688950 ) M1M2_PR + NEW met1 ( 2444210 40290 ) M1M2_PR ; + - la_data_out[103] ( PIN la_data_out[103] ) ( mprj la_data_out[103] ) + USE SIGNAL + + ROUTED met1 ( 1932230 1689290 ) ( 1935150 * ) + NEW met2 ( 1935150 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1932230 39950 ) ( * 1689290 ) + NEW met1 ( 1932230 39950 ) ( 2461690 * ) + NEW met2 ( 2461690 1700 0 ) ( * 39950 ) + NEW met1 ( 1932230 39950 ) M1M2_PR + NEW met1 ( 1932230 1689290 ) M1M2_PR + NEW met1 ( 1935150 1689290 ) M1M2_PR + NEW met1 ( 2461690 39950 ) M1M2_PR ; + - la_data_out[104] ( PIN la_data_out[104] ) ( mprj la_data_out[104] ) + USE SIGNAL + + ROUTED met2 ( 1939590 1688780 ) ( 1940670 * ) + NEW met2 ( 1940670 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1939590 39610 ) ( * 1688780 ) + NEW met1 ( 1939590 39610 ) ( 2479630 * ) + NEW met2 ( 2479630 1700 0 ) ( * 39610 ) + NEW met1 ( 1939590 39610 ) M1M2_PR + NEW met1 ( 2479630 39610 ) M1M2_PR ; + - la_data_out[105] ( PIN la_data_out[105] ) ( mprj la_data_out[105] ) + USE SIGNAL + + ROUTED met2 ( 1946260 1688780 ) ( 1946490 * ) + NEW met2 ( 1946260 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1946490 39270 ) ( * 1688780 ) + NEW met1 ( 1946490 39270 ) ( 2497110 * ) + NEW met2 ( 2497110 1700 0 ) ( * 39270 ) + NEW met1 ( 1946490 39270 ) M1M2_PR + NEW met1 ( 2497110 39270 ) M1M2_PR ; + - la_data_out[106] ( PIN la_data_out[106] ) ( mprj la_data_out[106] ) + USE SIGNAL + + ROUTED met1 ( 1946950 1688950 ) ( 1951710 * ) + NEW met2 ( 1951710 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1946950 38930 ) ( * 1688950 ) + NEW met2 ( 2515050 1700 0 ) ( * 38930 ) + NEW met1 ( 1946950 38930 ) ( 2515050 * ) + NEW met1 ( 1946950 38930 ) M1M2_PR + NEW met1 ( 1946950 1688950 ) M1M2_PR + NEW met1 ( 1951710 1688950 ) M1M2_PR + NEW met1 ( 2515050 38930 ) M1M2_PR ; + - la_data_out[107] ( PIN la_data_out[107] ) ( mprj la_data_out[107] ) + USE SIGNAL + + ROUTED met1 ( 1953390 1688270 ) ( 1956770 * ) + NEW met1 ( 1956770 1688270 ) ( * 1689290 ) + NEW met2 ( 1956770 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1953390 38590 ) ( * 1688270 ) + NEW met2 ( 2532530 1700 0 ) ( * 38590 ) + NEW met1 ( 1953390 38590 ) ( 2532530 * ) + NEW met1 ( 1953390 38590 ) M1M2_PR + NEW met1 ( 1953390 1688270 ) M1M2_PR + NEW met1 ( 1956770 1689290 ) M1M2_PR + NEW met1 ( 2532530 38590 ) M1M2_PR ; + - la_data_out[108] ( PIN la_data_out[108] ) ( mprj la_data_out[108] ) + USE SIGNAL + + ROUTED met2 ( 1960750 1688780 ) ( 1962290 * ) + NEW met2 ( 1962290 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1960750 38250 ) ( * 1688780 ) + NEW met1 ( 1960750 38250 ) ( 2550470 * ) + NEW met2 ( 2550470 1700 0 ) ( * 38250 ) + NEW met1 ( 1960750 38250 ) M1M2_PR + NEW met1 ( 2550470 38250 ) M1M2_PR ; + - la_data_out[109] ( PIN la_data_out[109] ) ( mprj la_data_out[109] ) + USE SIGNAL + + ROUTED met2 ( 1967190 1688780 ) ( 1967810 * ) + NEW met2 ( 1967810 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1967190 37910 ) ( * 1688780 ) + NEW met1 ( 1967190 37910 ) ( 2567950 * ) + NEW met2 ( 2567950 1700 0 ) ( * 37910 ) + NEW met1 ( 1967190 37910 ) M1M2_PR + NEW met1 ( 2567950 37910 ) M1M2_PR ; + - la_data_out[10] ( PIN la_data_out[10] ) ( mprj la_data_out[10] ) + USE SIGNAL + + ROUTED met1 ( 1421630 1637610 ) ( 1425310 * ) + NEW met2 ( 812590 1700 0 ) ( * 37740 ) + NEW met2 ( 1425310 1688780 ) ( 1425470 * ) + NEW met2 ( 1425470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1425310 1637610 ) ( * 1688780 ) + NEW met3 ( 812590 37740 ) ( 1421630 * ) + NEW met2 ( 1421630 37740 ) ( * 1637610 ) + NEW met1 ( 1421630 1637610 ) M1M2_PR + NEW met1 ( 1425310 1637610 ) M1M2_PR + NEW met2 ( 812590 37740 ) M2M3_PR + NEW met2 ( 1421630 37740 ) M2M3_PR ; + - la_data_out[110] ( PIN la_data_out[110] ) ( mprj la_data_out[110] ) + USE SIGNAL + + ROUTED met1 ( 1967650 1652570 ) ( 1973170 * ) + NEW met2 ( 1967650 66810 ) ( * 1652570 ) + NEW met2 ( 1973170 1688780 ) ( 1973330 * ) + NEW met2 ( 1973330 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1973170 1652570 ) ( * 1688780 ) + NEW met1 ( 1967650 66810 ) ( 2585890 * ) + NEW met2 ( 2585890 1700 0 ) ( * 66810 ) + NEW met1 ( 1967650 1652570 ) M1M2_PR + NEW met1 ( 1973170 1652570 ) M1M2_PR + NEW met1 ( 1967650 66810 ) M1M2_PR + NEW met1 ( 2585890 66810 ) M1M2_PR ; + - la_data_out[111] ( PIN la_data_out[111] ) ( mprj la_data_out[111] ) + USE SIGNAL + + ROUTED met2 ( 2601530 1700 ) ( 2603830 * 0 ) + NEW met2 ( 2601530 1700 ) ( * 66470 ) + NEW met1 ( 1974090 1688950 ) ( 1978850 * ) + NEW met2 ( 1978850 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1974090 66470 ) ( * 1688950 ) + NEW met1 ( 1974090 66470 ) ( 2601530 * ) + NEW met1 ( 2601530 66470 ) M1M2_PR + NEW met1 ( 1974090 66470 ) M1M2_PR + NEW met1 ( 1974090 1688950 ) M1M2_PR + NEW met1 ( 1978850 1688950 ) M1M2_PR ; + - la_data_out[112] ( PIN la_data_out[112] ) ( mprj la_data_out[112] ) + USE SIGNAL + + ROUTED met2 ( 2619010 1700 ) ( 2621310 * 0 ) + NEW met2 ( 2619010 1700 ) ( * 66130 ) + NEW met1 ( 1980990 1652570 ) ( 1984210 * ) + NEW met2 ( 1980990 66130 ) ( * 1652570 ) + NEW met2 ( 1984210 1688780 ) ( 1984370 * ) + NEW met2 ( 1984370 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1984210 1652570 ) ( * 1688780 ) + NEW met1 ( 1980990 66130 ) ( 2619010 * ) + NEW met1 ( 2619010 66130 ) M1M2_PR + NEW met1 ( 1980990 1652570 ) M1M2_PR + NEW met1 ( 1984210 1652570 ) M1M2_PR + NEW met1 ( 1980990 66130 ) M1M2_PR ; + - la_data_out[113] ( PIN la_data_out[113] ) ( mprj la_data_out[113] ) + USE SIGNAL + + ROUTED met2 ( 2639250 1700 0 ) ( * 65790 ) + NEW met2 ( 1988350 1688780 ) ( 1989890 * ) + NEW met2 ( 1989890 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1988350 65790 ) ( * 1688780 ) + NEW met1 ( 1988350 65790 ) ( 2639250 * ) + NEW met1 ( 2639250 65790 ) M1M2_PR + NEW met1 ( 1988350 65790 ) M1M2_PR ; + - la_data_out[114] ( PIN la_data_out[114] ) ( mprj la_data_out[114] ) + USE SIGNAL + + ROUTED met2 ( 1994790 1688780 ) ( 1995410 * ) + NEW met2 ( 1995410 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1994790 44030 ) ( * 1688780 ) + NEW met1 ( 1994790 44030 ) ( 2656730 * ) + NEW met2 ( 2656730 1700 0 ) ( * 44030 ) + NEW met1 ( 1994790 44030 ) M1M2_PR + NEW met1 ( 2656730 44030 ) M1M2_PR ; + - la_data_out[115] ( PIN la_data_out[115] ) ( mprj la_data_out[115] ) + USE SIGNAL + + ROUTED met1 ( 1995250 1652570 ) ( 2000770 * ) + NEW met2 ( 1995250 44370 ) ( * 1652570 ) + NEW met2 ( 2000770 1688780 ) ( 2000930 * ) + NEW met2 ( 2000930 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2000770 1652570 ) ( * 1688780 ) + NEW met1 ( 1995250 44370 ) ( 2674670 * ) + NEW met2 ( 2674670 1700 0 ) ( * 44370 ) + NEW met1 ( 1995250 1652570 ) M1M2_PR + NEW met1 ( 2000770 1652570 ) M1M2_PR + NEW met1 ( 1995250 44370 ) M1M2_PR + NEW met1 ( 2674670 44370 ) M1M2_PR ; + - la_data_out[116] ( PIN la_data_out[116] ) ( mprj la_data_out[116] ) + USE SIGNAL + + ROUTED met2 ( 2692150 1700 0 ) ( * 48110 ) + NEW met1 ( 2001690 1688950 ) ( 2006450 * ) + NEW met2 ( 2006450 1688950 ) ( * 1690140 0 ) + NEW met2 ( 2001690 48110 ) ( * 1688950 ) + NEW met1 ( 2001690 48110 ) ( 2692150 * ) + NEW met1 ( 2692150 48110 ) M1M2_PR + NEW met1 ( 2001690 48110 ) M1M2_PR + NEW met1 ( 2001690 1688950 ) M1M2_PR + NEW met1 ( 2006450 1688950 ) M1M2_PR ; + - la_data_out[117] ( PIN la_data_out[117] ) ( mprj la_data_out[117] ) + USE SIGNAL + + ROUTED met2 ( 2710090 1700 0 ) ( * 47770 ) + NEW met1 ( 2008590 1688270 ) ( 2011970 * ) + NEW met1 ( 2011970 1688270 ) ( * 1689290 ) + NEW met2 ( 2011970 1689290 ) ( * 1690140 0 ) + NEW met2 ( 2008590 47770 ) ( * 1688270 ) + NEW met1 ( 2008590 47770 ) ( 2710090 * ) + NEW met1 ( 2710090 47770 ) M1M2_PR + NEW met1 ( 2008590 47770 ) M1M2_PR + NEW met1 ( 2008590 1688270 ) M1M2_PR + NEW met1 ( 2011970 1689290 ) M1M2_PR ; + - la_data_out[118] ( PIN la_data_out[118] ) ( mprj la_data_out[118] ) + USE SIGNAL + + ROUTED met2 ( 2015490 47430 ) ( * 1676700 ) + NEW met2 ( 2015490 1676700 ) ( 2015950 * ) + NEW met2 ( 2015950 1676700 ) ( * 1689460 ) + NEW met2 ( 2015950 1689460 ) ( 2017030 * ) + NEW met2 ( 2017030 1689460 ) ( * 1690140 0 ) + NEW met2 ( 2727570 1700 0 ) ( * 47430 ) + NEW met1 ( 2015490 47430 ) ( 2727570 * ) + NEW met1 ( 2015490 47430 ) M1M2_PR + NEW met1 ( 2727570 47430 ) M1M2_PR ; + - la_data_out[119] ( PIN la_data_out[119] ) ( mprj la_data_out[119] ) + USE SIGNAL + + ROUTED met2 ( 2022390 1688780 ) ( 2022550 * ) + NEW met2 ( 2022550 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2022390 47090 ) ( * 1688780 ) + NEW met1 ( 2022390 47090 ) ( 2745510 * ) + NEW met2 ( 2745510 1700 0 ) ( * 47090 ) + NEW met1 ( 2022390 47090 ) M1M2_PR + NEW met1 ( 2745510 47090 ) M1M2_PR ; + - la_data_out[11] ( PIN la_data_out[11] ) ( mprj la_data_out[11] ) + USE SIGNAL + + ROUTED met2 ( 830530 1700 0 ) ( * 39270 ) + NEW met1 ( 1428530 1689290 ) ( 1430990 * ) + NEW met2 ( 1430990 1689290 ) ( * 1690140 0 ) + NEW met1 ( 830530 39270 ) ( 1428530 * ) + NEW met2 ( 1428530 39270 ) ( * 1689290 ) + NEW met1 ( 830530 39270 ) M1M2_PR + NEW met1 ( 1428530 1689290 ) M1M2_PR + NEW met1 ( 1430990 1689290 ) M1M2_PR + NEW met1 ( 1428530 39270 ) M1M2_PR ; + - la_data_out[120] ( PIN la_data_out[120] ) ( mprj la_data_out[120] ) + USE SIGNAL + + ROUTED met1 ( 2022850 1652570 ) ( 2027910 * ) + NEW met2 ( 2022850 46750 ) ( * 1652570 ) + NEW met2 ( 2027910 1688780 ) ( 2028070 * ) + NEW met2 ( 2028070 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2027910 1652570 ) ( * 1688780 ) + NEW met1 ( 2022850 46750 ) ( 2763450 * ) + NEW met2 ( 2763450 1700 0 ) ( * 46750 ) + NEW met1 ( 2022850 1652570 ) M1M2_PR + NEW met1 ( 2027910 1652570 ) M1M2_PR + NEW met1 ( 2022850 46750 ) M1M2_PR + NEW met1 ( 2763450 46750 ) M1M2_PR ; + - la_data_out[121] ( PIN la_data_out[121] ) ( mprj la_data_out[121] ) + USE SIGNAL + + ROUTED met1 ( 2029290 1688950 ) ( 2033590 * ) + NEW met2 ( 2033590 1688950 ) ( * 1690140 0 ) + NEW met2 ( 2029290 46410 ) ( * 1688950 ) + NEW met1 ( 2029290 46410 ) ( 2780930 * ) + NEW met2 ( 2780930 1700 0 ) ( * 46410 ) + NEW met1 ( 2029290 46410 ) M1M2_PR + NEW met1 ( 2029290 1688950 ) M1M2_PR + NEW met1 ( 2033590 1688950 ) M1M2_PR + NEW met1 ( 2780930 46410 ) M1M2_PR ; + - la_data_out[122] ( PIN la_data_out[122] ) ( mprj la_data_out[122] ) + USE SIGNAL + + ROUTED met2 ( 2036190 46070 ) ( * 1580100 ) + NEW met2 ( 2036190 1580100 ) ( 2038490 * ) + NEW met2 ( 2038490 1688780 ) ( 2039110 * ) + NEW met2 ( 2039110 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2038490 1580100 ) ( * 1688780 ) + NEW met2 ( 2798870 1700 0 ) ( * 46070 ) + NEW met1 ( 2036190 46070 ) ( 2798870 * ) + NEW met1 ( 2036190 46070 ) M1M2_PR + NEW met1 ( 2798870 46070 ) M1M2_PR ; + - la_data_out[123] ( PIN la_data_out[123] ) ( mprj la_data_out[123] ) + USE SIGNAL + + ROUTED met2 ( 2043550 1689460 ) ( 2044630 * ) + NEW met2 ( 2044630 1689460 ) ( * 1690140 0 ) + NEW met2 ( 2043550 45730 ) ( * 1689460 ) + NEW met2 ( 2816350 1700 0 ) ( * 45730 ) + NEW met1 ( 2043550 45730 ) ( 2816350 * ) + NEW met1 ( 2043550 45730 ) M1M2_PR + NEW met1 ( 2816350 45730 ) M1M2_PR ; + - la_data_out[124] ( PIN la_data_out[124] ) ( mprj la_data_out[124] ) + USE SIGNAL + + ROUTED met2 ( 2049990 1688780 ) ( 2050150 * ) + NEW met2 ( 2050150 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2049990 45390 ) ( * 1688780 ) + NEW met2 ( 2834290 1700 0 ) ( * 45390 ) + NEW met1 ( 2049990 45390 ) ( 2834290 * ) + NEW met1 ( 2049990 45390 ) M1M2_PR + NEW met1 ( 2834290 45390 ) M1M2_PR ; + - la_data_out[125] ( PIN la_data_out[125] ) ( mprj la_data_out[125] ) + USE SIGNAL + + ROUTED met2 ( 2050450 45050 ) ( * 1580100 ) + NEW met2 ( 2050450 1580100 ) ( 2052750 * ) + NEW met2 ( 2052750 1688780 ) ( 2055670 * ) + NEW met2 ( 2055670 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2052750 1580100 ) ( * 1688780 ) + NEW met1 ( 2050450 45050 ) ( 2851770 * ) + NEW met2 ( 2851770 1700 0 ) ( * 45050 ) + NEW met1 ( 2050450 45050 ) M1M2_PR + NEW met1 ( 2851770 45050 ) M1M2_PR ; + - la_data_out[126] ( PIN la_data_out[126] ) ( mprj la_data_out[126] ) + USE SIGNAL + + ROUTED met2 ( 2057350 44710 ) ( * 1580100 ) + NEW met2 ( 2057350 1580100 ) ( 2061030 * ) + NEW met2 ( 2061030 1688780 ) ( 2061190 * ) + NEW met2 ( 2061190 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2061030 1580100 ) ( * 1688780 ) + NEW met1 ( 2057350 44710 ) ( 2869710 * ) + NEW met2 ( 2869710 1700 0 ) ( * 44710 ) + NEW met1 ( 2057350 44710 ) M1M2_PR + NEW met1 ( 2869710 44710 ) M1M2_PR ; + - la_data_out[127] ( PIN la_data_out[127] ) ( mprj la_data_out[127] ) + USE SIGNAL + + ROUTED met2 ( 2887190 1700 0 ) ( * 44540 ) + NEW met2 ( 2063790 44540 ) ( * 1676700 ) + NEW met2 ( 2063790 1676700 ) ( 2065630 * ) + NEW met2 ( 2065630 1676700 ) ( * 1688780 ) + NEW met2 ( 2065630 1688780 ) ( 2066710 * ) + NEW met2 ( 2066710 1688780 ) ( * 1690140 0 ) + NEW met3 ( 2063790 44540 ) ( 2887190 * ) + NEW met2 ( 2887190 44540 ) M2M3_PR + NEW met2 ( 2063790 44540 ) M2M3_PR ; + - la_data_out[12] ( PIN la_data_out[12] ) ( mprj la_data_out[12] ) + USE SIGNAL + + ROUTED met2 ( 1435430 1688780 ) ( 1436510 * ) + NEW met2 ( 1436510 1688780 ) ( * 1690140 0 ) + NEW met2 ( 848010 1700 0 ) ( * 39610 ) + NEW met1 ( 848010 39610 ) ( 1435430 * ) + NEW met2 ( 1435430 39610 ) ( * 1688780 ) + NEW met1 ( 848010 39610 ) M1M2_PR + NEW met1 ( 1435430 39610 ) M1M2_PR ; + - la_data_out[13] ( PIN la_data_out[13] ) ( mprj la_data_out[13] ) + USE SIGNAL + + ROUTED met1 ( 1435890 1652570 ) ( 1441870 * ) + NEW met2 ( 865950 1700 0 ) ( * 39950 ) + NEW met2 ( 1441870 1688780 ) ( 1442030 * ) + NEW met2 ( 1442030 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1441870 1652570 ) ( * 1688780 ) + NEW met1 ( 865950 39950 ) ( 1435890 * ) + NEW met2 ( 1435890 39950 ) ( * 1652570 ) + NEW met1 ( 1435890 1652570 ) M1M2_PR + NEW met1 ( 1441870 1652570 ) M1M2_PR + NEW met1 ( 865950 39950 ) M1M2_PR + NEW met1 ( 1435890 39950 ) M1M2_PR ; + - la_data_out[14] ( PIN la_data_out[14] ) ( mprj la_data_out[14] ) + USE SIGNAL + + ROUTED met2 ( 883430 1700 0 ) ( * 17340 ) + NEW met2 ( 883430 17340 ) ( 883890 * ) + NEW met2 ( 883890 17340 ) ( * 40290 ) + NEW met2 ( 1443250 1580100 ) ( 1446930 * ) + NEW met2 ( 1446930 1688780 ) ( 1447550 * ) + NEW met2 ( 1447550 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1446930 1580100 ) ( * 1688780 ) + NEW met1 ( 883890 40290 ) ( 1443250 * ) + NEW met2 ( 1443250 40290 ) ( * 1580100 ) + NEW met1 ( 883890 40290 ) M1M2_PR + NEW met1 ( 1443250 40290 ) M1M2_PR ; + - la_data_out[15] ( PIN la_data_out[15] ) ( mprj la_data_out[15] ) + USE SIGNAL + + ROUTED met2 ( 901370 1700 0 ) ( * 40630 ) + NEW met2 ( 1450610 1580100 ) ( 1452450 * ) + NEW met2 ( 1452450 1688780 ) ( 1453070 * ) + NEW met2 ( 1453070 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1452450 1580100 ) ( * 1688780 ) + NEW met1 ( 901370 40630 ) ( 1450610 * ) + NEW met2 ( 1450610 40630 ) ( * 1580100 ) + NEW met1 ( 901370 40630 ) M1M2_PR + NEW met1 ( 1450610 40630 ) M1M2_PR ; + - la_data_out[16] ( PIN la_data_out[16] ) ( mprj la_data_out[16] ) + USE SIGNAL + + ROUTED met2 ( 1457510 1688780 ) ( 1458590 * ) + NEW met2 ( 1458590 1688780 ) ( * 1690140 0 ) + NEW met2 ( 918850 1700 0 ) ( * 40970 ) + NEW met1 ( 918850 40970 ) ( 1457510 * ) + NEW met2 ( 1457510 40970 ) ( * 1688780 ) + NEW met1 ( 918850 40970 ) M1M2_PR + NEW met1 ( 1457510 40970 ) M1M2_PR ; + - la_data_out[17] ( PIN la_data_out[17] ) ( mprj la_data_out[17] ) + USE SIGNAL + + ROUTED met2 ( 1463490 1688780 ) ( 1464110 * ) + NEW met2 ( 1464110 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1463490 41310 ) ( * 1688780 ) + NEW met2 ( 936790 1700 0 ) ( * 41310 ) + NEW met1 ( 936790 41310 ) ( 1463490 * ) + NEW met1 ( 1463490 41310 ) M1M2_PR + NEW met1 ( 936790 41310 ) M1M2_PR ; + - la_data_out[18] ( PIN la_data_out[18] ) ( mprj la_data_out[18] ) + USE SIGNAL + + ROUTED met1 ( 1463950 1643730 ) ( 1469470 * ) + NEW met2 ( 954270 1700 0 ) ( * 37570 ) + NEW met2 ( 1463950 37570 ) ( * 1643730 ) + NEW met2 ( 1469470 1688780 ) ( 1469630 * ) + NEW met2 ( 1469630 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1469470 1643730 ) ( * 1688780 ) + NEW met1 ( 954270 37570 ) ( 1463950 * ) + NEW met1 ( 1463950 1643730 ) M1M2_PR + NEW met1 ( 1469470 1643730 ) M1M2_PR + NEW met1 ( 954270 37570 ) M1M2_PR + NEW met1 ( 1463950 37570 ) M1M2_PR ; + - la_data_out[19] ( PIN la_data_out[19] ) ( mprj la_data_out[19] ) + USE SIGNAL + + ROUTED met2 ( 972210 1700 0 ) ( * 37230 ) + NEW met1 ( 1470390 1688950 ) ( 1475150 * ) + NEW met2 ( 1475150 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1470390 37230 ) ( * 1688950 ) + NEW met1 ( 972210 37230 ) ( 1470390 * ) + NEW met1 ( 972210 37230 ) M1M2_PR + NEW met1 ( 1470390 37230 ) M1M2_PR + NEW met1 ( 1470390 1688950 ) M1M2_PR + NEW met1 ( 1475150 1688950 ) M1M2_PR ; + - la_data_out[1] ( PIN la_data_out[1] ) ( mprj la_data_out[1] ) + USE SIGNAL + + ROUTED met1 ( 1374250 1688270 ) ( 1376250 * ) + NEW met1 ( 1376250 1688270 ) ( * 1689290 ) + NEW met2 ( 1376250 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1374250 38250 ) ( * 1688270 ) + NEW met2 ( 652970 1700 0 ) ( * 38250 ) + NEW met1 ( 652970 38250 ) ( 1374250 * ) + NEW met1 ( 1374250 38250 ) M1M2_PR + NEW met1 ( 1374250 1688270 ) M1M2_PR + NEW met1 ( 1376250 1689290 ) M1M2_PR + NEW met1 ( 652970 38250 ) M1M2_PR ; + - la_data_out[20] ( PIN la_data_out[20] ) ( mprj la_data_out[20] ) + USE SIGNAL + + ROUTED met2 ( 989690 1700 0 ) ( * 36890 ) + NEW met2 ( 1477290 36890 ) ( * 1676700 ) + NEW met2 ( 1477290 1676700 ) ( 1480050 * ) + NEW met2 ( 1480050 1676700 ) ( * 1688780 ) + NEW met2 ( 1480050 1688780 ) ( 1480210 * ) + NEW met2 ( 1480210 1688780 ) ( * 1690140 0 ) + NEW met1 ( 989690 36890 ) ( 1477290 * ) + NEW met1 ( 989690 36890 ) M1M2_PR + NEW met1 ( 1477290 36890 ) M1M2_PR ; + - la_data_out[21] ( PIN la_data_out[21] ) ( mprj la_data_out[21] ) + USE SIGNAL + + ROUTED met1 ( 1008090 89250 ) ( 1484650 * ) + NEW met2 ( 1007630 1700 0 ) ( * 34500 ) + NEW met2 ( 1007630 34500 ) ( 1008090 * ) + NEW met2 ( 1008090 34500 ) ( * 89250 ) + NEW met2 ( 1484650 1688780 ) ( 1485730 * ) + NEW met2 ( 1485730 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1484650 89250 ) ( * 1688780 ) + NEW met1 ( 1008090 89250 ) M1M2_PR + NEW met1 ( 1484650 89250 ) M1M2_PR ; + - la_data_out[22] ( PIN la_data_out[22] ) ( mprj la_data_out[22] ) + USE SIGNAL + + ROUTED met1 ( 1021430 89590 ) ( 1491550 * ) + NEW met2 ( 1021430 82800 ) ( * 89590 ) + NEW met2 ( 1021430 82800 ) ( 1025570 * ) + NEW met2 ( 1025570 1700 0 ) ( * 82800 ) + NEW met2 ( 1491320 1688780 ) ( 1491550 * ) + NEW met2 ( 1491320 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1491550 89590 ) ( * 1688780 ) + NEW met1 ( 1021430 89590 ) M1M2_PR + NEW met1 ( 1491550 89590 ) M1M2_PR ; + - la_data_out[23] ( PIN la_data_out[23] ) ( mprj la_data_out[23] ) + USE SIGNAL + + ROUTED met1 ( 1042130 85850 ) ( 1492010 * ) + NEW met2 ( 1042130 82800 ) ( * 85850 ) + NEW met2 ( 1042130 82800 ) ( 1043050 * ) + NEW met2 ( 1043050 1700 0 ) ( * 82800 ) + NEW met2 ( 1492010 1688780 ) ( 1496770 * ) + NEW met2 ( 1496770 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1492010 85850 ) ( * 1688780 ) + NEW met1 ( 1042130 85850 ) M1M2_PR + NEW met1 ( 1492010 85850 ) M1M2_PR ; + - la_data_out[24] ( PIN la_data_out[24] ) ( mprj la_data_out[24] ) + USE SIGNAL + + ROUTED met2 ( 1058690 1700 ) ( 1060990 * 0 ) + NEW met2 ( 1055930 82800 ) ( * 85510 ) + NEW met2 ( 1055930 82800 ) ( 1058690 * ) + NEW met2 ( 1058690 1700 ) ( * 82800 ) + NEW met1 ( 1055930 85510 ) ( 1498910 * ) + NEW met2 ( 1498910 1688780 ) ( 1502290 * ) + NEW met2 ( 1502290 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1498910 85510 ) ( * 1688780 ) + NEW met1 ( 1055930 85510 ) M1M2_PR + NEW met1 ( 1498910 85510 ) M1M2_PR ; + - la_data_out[25] ( PIN la_data_out[25] ) ( mprj la_data_out[25] ) + USE SIGNAL + + ROUTED met2 ( 1076630 1700 ) ( 1078470 * 0 ) + NEW met2 ( 1076630 1700 ) ( * 85170 ) + NEW met1 ( 1076630 85170 ) ( 1505350 * ) + NEW met2 ( 1505350 1688780 ) ( 1507810 * ) + NEW met2 ( 1507810 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1505350 85170 ) ( * 1688780 ) + NEW met1 ( 1076630 85170 ) M1M2_PR + NEW met1 ( 1505350 85170 ) M1M2_PR ; + - la_data_out[26] ( PIN la_data_out[26] ) ( mprj la_data_out[26] ) + USE SIGNAL + + ROUTED met2 ( 1096410 1700 0 ) ( * 47770 ) + NEW met2 ( 1511790 1688780 ) ( 1513330 * ) + NEW met2 ( 1513330 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1511790 47770 ) ( * 1688780 ) + NEW met1 ( 1096410 47770 ) ( 1511790 * ) + NEW met1 ( 1096410 47770 ) M1M2_PR + NEW met1 ( 1511790 47770 ) M1M2_PR ; + - la_data_out[27] ( PIN la_data_out[27] ) ( mprj la_data_out[27] ) + USE SIGNAL + + ROUTED met2 ( 1113890 1700 0 ) ( * 48110 ) + NEW met2 ( 1518690 1688780 ) ( 1518850 * ) + NEW met2 ( 1518850 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1518690 48110 ) ( * 1688780 ) + NEW met1 ( 1113890 48110 ) ( 1518690 * ) + NEW met1 ( 1113890 48110 ) M1M2_PR + NEW met1 ( 1518690 48110 ) M1M2_PR ; + - la_data_out[28] ( PIN la_data_out[28] ) ( mprj la_data_out[28] ) + USE SIGNAL + + ROUTED met2 ( 1131830 1700 0 ) ( * 17340 ) + NEW met2 ( 1131830 17340 ) ( 1132290 * ) + NEW met2 ( 1132290 17340 ) ( * 44370 ) + NEW met1 ( 1518230 1688950 ) ( 1524370 * ) + NEW met2 ( 1524370 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1518230 44370 ) ( * 1688950 ) + NEW met1 ( 1132290 44370 ) ( 1518230 * ) + NEW met1 ( 1132290 44370 ) M1M2_PR + NEW met1 ( 1518230 44370 ) M1M2_PR + NEW met1 ( 1518230 1688950 ) M1M2_PR + NEW met1 ( 1524370 1688950 ) M1M2_PR ; + - la_data_out[29] ( PIN la_data_out[29] ) ( mprj la_data_out[29] ) + USE SIGNAL + + ROUTED met2 ( 1149310 1700 0 ) ( * 44030 ) + NEW met1 ( 1525130 1688950 ) ( 1529890 * ) + NEW met2 ( 1529890 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1525130 44030 ) ( * 1688950 ) + NEW met1 ( 1149310 44030 ) ( 1525130 * ) + NEW met1 ( 1149310 44030 ) M1M2_PR + NEW met1 ( 1525130 44030 ) M1M2_PR + NEW met1 ( 1525130 1688950 ) M1M2_PR + NEW met1 ( 1529890 1688950 ) M1M2_PR ; + - la_data_out[2] ( PIN la_data_out[2] ) ( mprj la_data_out[2] ) + USE SIGNAL + + ROUTED met2 ( 670910 1700 0 ) ( * 38590 ) + NEW met2 ( 1381150 1688780 ) ( 1381770 * ) + NEW met2 ( 1381770 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1381150 38590 ) ( * 1688780 ) + NEW met1 ( 670910 38590 ) ( 1381150 * ) + NEW met1 ( 670910 38590 ) M1M2_PR + NEW met1 ( 1381150 38590 ) M1M2_PR ; + - la_data_out[30] ( PIN la_data_out[30] ) ( mprj la_data_out[30] ) + USE SIGNAL + + ROUTED met2 ( 1167250 1700 0 ) ( * 43690 ) + NEW met2 ( 1532950 43690 ) ( * 1676700 ) + NEW met2 ( 1532950 1676700 ) ( 1534790 * ) + NEW met2 ( 1534790 1676700 ) ( * 1688780 ) + NEW met2 ( 1534790 1688780 ) ( 1535410 * ) + NEW met2 ( 1535410 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1167250 43690 ) ( 1532950 * ) + NEW met1 ( 1167250 43690 ) M1M2_PR + NEW met1 ( 1532950 43690 ) M1M2_PR ; + - la_data_out[31] ( PIN la_data_out[31] ) ( mprj la_data_out[31] ) + USE SIGNAL + + ROUTED met2 ( 1185190 1700 0 ) ( * 30770 ) + NEW met2 ( 1539390 1688780 ) ( 1540470 * ) + NEW met2 ( 1540470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1539390 30770 ) ( * 1688780 ) + NEW met1 ( 1185190 30770 ) ( 1539390 * ) + NEW met1 ( 1185190 30770 ) M1M2_PR + NEW met1 ( 1539390 30770 ) M1M2_PR ; + - la_data_out[32] ( PIN la_data_out[32] ) ( mprj la_data_out[32] ) + USE SIGNAL + + ROUTED met2 ( 1546290 1653420 ) ( 1547210 * ) + NEW met2 ( 1547210 31450 ) ( * 1653420 ) + NEW met2 ( 1546060 1688780 ) ( 1546290 * ) + NEW met2 ( 1546060 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1546290 1653420 ) ( * 1688780 ) + NEW met2 ( 1202670 1700 0 ) ( * 31450 ) + NEW met1 ( 1202670 31450 ) ( 1547210 * ) + NEW met1 ( 1547210 31450 ) M1M2_PR + NEW met1 ( 1202670 31450 ) M1M2_PR ; + - la_data_out[33] ( PIN la_data_out[33] ) ( mprj la_data_out[33] ) + USE SIGNAL + + ROUTED met2 ( 1551350 1682830 ) ( * 1688780 ) + NEW met2 ( 1551350 1688780 ) ( 1551510 * ) + NEW met2 ( 1551510 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1220610 1700 0 ) ( * 16830 ) + NEW met1 ( 1220610 16830 ) ( 1328250 * ) + NEW met2 ( 1328250 16830 ) ( * 1682830 ) + NEW met1 ( 1328250 1682830 ) ( 1551350 * ) + NEW met1 ( 1551350 1682830 ) M1M2_PR + NEW met1 ( 1220610 16830 ) M1M2_PR + NEW met1 ( 1328250 16830 ) M1M2_PR + NEW met1 ( 1328250 1682830 ) M1M2_PR ; + - la_data_out[34] ( PIN la_data_out[34] ) ( mprj la_data_out[34] ) + USE SIGNAL + + ROUTED met1 ( 1553190 1639650 ) ( 1556870 * ) + NEW met2 ( 1553190 24140 ) ( * 1639650 ) + NEW met2 ( 1556870 1688780 ) ( 1557030 * ) + NEW met2 ( 1557030 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1556870 1639650 ) ( * 1688780 ) + NEW met2 ( 1238090 1700 0 ) ( * 18190 ) + NEW met2 ( 1495230 18190 ) ( * 24140 ) + NEW met3 ( 1495230 24140 ) ( 1553190 * ) + NEW met1 ( 1238090 18190 ) ( 1495230 * ) + NEW met2 ( 1553190 24140 ) M2M3_PR + NEW met1 ( 1553190 1639650 ) M1M2_PR + NEW met1 ( 1556870 1639650 ) M1M2_PR + NEW met1 ( 1238090 18190 ) M1M2_PR + NEW met1 ( 1495230 18190 ) M1M2_PR + NEW met2 ( 1495230 24140 ) M2M3_PR ; + - la_data_out[35] ( PIN la_data_out[35] ) ( mprj la_data_out[35] ) + USE SIGNAL + + ROUTED met2 ( 1256030 1700 0 ) ( * 32130 ) + NEW met2 ( 1560550 1688780 ) ( 1562550 * ) + NEW met2 ( 1562550 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1560550 32130 ) ( * 1688780 ) + NEW met1 ( 1256030 32130 ) ( 1560550 * ) + NEW met1 ( 1256030 32130 ) M1M2_PR + NEW met1 ( 1560550 32130 ) M1M2_PR ; + - la_data_out[36] ( PIN la_data_out[36] ) ( mprj la_data_out[36] ) + USE SIGNAL + + ROUTED met2 ( 1273510 1700 0 ) ( * 32470 ) + NEW met2 ( 1566990 1688780 ) ( 1568070 * ) + NEW met2 ( 1568070 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1566990 32470 ) ( * 1688780 ) + NEW met1 ( 1273510 32470 ) ( 1566990 * ) + NEW met1 ( 1273510 32470 ) M1M2_PR + NEW met1 ( 1566990 32470 ) M1M2_PR ; + - la_data_out[37] ( PIN la_data_out[37] ) ( mprj la_data_out[37] ) + USE SIGNAL + + ROUTED met2 ( 1573660 1688780 ) ( 1573890 * ) + NEW met2 ( 1573660 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1573890 32810 ) ( * 1688780 ) + NEW met2 ( 1291450 1700 0 ) ( * 32810 ) + NEW met1 ( 1291450 32810 ) ( 1573890 * ) + NEW met1 ( 1573890 32810 ) M1M2_PR + NEW met1 ( 1291450 32810 ) M1M2_PR ; + - la_data_out[38] ( PIN la_data_out[38] ) ( mprj la_data_out[38] ) + USE SIGNAL + + ROUTED met1 ( 1574350 1688950 ) ( 1579110 * ) + NEW met2 ( 1579110 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1574350 33150 ) ( * 1688950 ) + NEW met2 ( 1308930 1700 0 ) ( * 33150 ) + NEW met1 ( 1308930 33150 ) ( 1574350 * ) + NEW met1 ( 1574350 33150 ) M1M2_PR + NEW met1 ( 1574350 1688950 ) M1M2_PR + NEW met1 ( 1579110 1688950 ) M1M2_PR + NEW met1 ( 1308930 33150 ) M1M2_PR ; + - la_data_out[39] ( PIN la_data_out[39] ) ( mprj la_data_out[39] ) + USE SIGNAL + + ROUTED met2 ( 1326870 1700 0 ) ( * 33490 ) + NEW met2 ( 1581250 1688780 ) ( 1584630 * ) + NEW met2 ( 1584630 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1581250 33490 ) ( * 1688780 ) + NEW met1 ( 1326870 33490 ) ( 1581250 * ) + NEW met1 ( 1326870 33490 ) M1M2_PR + NEW met1 ( 1581250 33490 ) M1M2_PR ; + - la_data_out[3] ( PIN la_data_out[3] ) ( mprj la_data_out[3] ) + USE SIGNAL + + ROUTED met2 ( 688390 1700 0 ) ( * 47090 ) + NEW met1 ( 688390 47090 ) ( 1387590 * ) + NEW met2 ( 1387360 1688780 ) ( 1387590 * ) + NEW met2 ( 1387360 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1387590 47090 ) ( * 1688780 ) + NEW met1 ( 688390 47090 ) M1M2_PR + NEW met1 ( 1387590 47090 ) M1M2_PR ; + - la_data_out[40] ( PIN la_data_out[40] ) ( mprj la_data_out[40] ) + USE SIGNAL + + ROUTED met2 ( 1344350 1700 0 ) ( * 33830 ) + NEW met2 ( 1588610 1688780 ) ( 1590150 * ) + NEW met2 ( 1590150 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1588610 33830 ) ( * 1688780 ) + NEW met1 ( 1344350 33830 ) ( 1588610 * ) + NEW met1 ( 1344350 33830 ) M1M2_PR + NEW met1 ( 1588610 33830 ) M1M2_PR ; + - la_data_out[41] ( PIN la_data_out[41] ) ( mprj la_data_out[41] ) + USE SIGNAL + + ROUTED met2 ( 1362290 1700 0 ) ( * 34170 ) + NEW met2 ( 1595050 1688780 ) ( 1595670 * ) + NEW met2 ( 1595670 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1595050 34170 ) ( * 1688780 ) + NEW met1 ( 1362290 34170 ) ( 1595050 * ) + NEW met1 ( 1362290 34170 ) M1M2_PR + NEW met1 ( 1595050 34170 ) M1M2_PR ; + - la_data_out[42] ( PIN la_data_out[42] ) ( mprj la_data_out[42] ) + USE SIGNAL + + ROUTED met2 ( 1380230 1700 0 ) ( * 30090 ) + NEW met1 ( 1380230 30090 ) ( 1386900 * ) + NEW met1 ( 1386900 30090 ) ( * 30430 ) + NEW met1 ( 1595510 1652570 ) ( 1600570 * ) + NEW met2 ( 1595510 30430 ) ( * 1652570 ) + NEW met2 ( 1600570 1688780 ) ( 1600730 * ) + NEW met2 ( 1600730 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1600570 1652570 ) ( * 1688780 ) + NEW met1 ( 1386900 30430 ) ( 1595510 * ) + NEW met1 ( 1380230 30090 ) M1M2_PR + NEW met1 ( 1595510 30430 ) M1M2_PR + NEW met1 ( 1595510 1652570 ) M1M2_PR + NEW met1 ( 1600570 1652570 ) M1M2_PR ; + - la_data_out[43] ( PIN la_data_out[43] ) ( mprj la_data_out[43] ) + USE SIGNAL + + ROUTED met2 ( 1397710 1700 0 ) ( * 30090 ) + NEW met1 ( 1601490 1688950 ) ( 1606250 * ) + NEW met2 ( 1606250 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1601490 30090 ) ( * 1688950 ) + NEW met1 ( 1397710 30090 ) ( 1601490 * ) + NEW met1 ( 1397710 30090 ) M1M2_PR + NEW met1 ( 1601490 30090 ) M1M2_PR + NEW met1 ( 1601490 1688950 ) M1M2_PR + NEW met1 ( 1606250 1688950 ) M1M2_PR ; + - la_data_out[44] ( PIN la_data_out[44] ) ( mprj la_data_out[44] ) + USE SIGNAL + + ROUTED met2 ( 1609310 18530 ) ( * 1580100 ) + NEW met2 ( 1609310 1580100 ) ( 1610230 * ) + NEW met2 ( 1610230 1688780 ) ( 1611770 * ) + NEW met2 ( 1611770 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1610230 1580100 ) ( * 1688780 ) + NEW met2 ( 1415650 1700 0 ) ( * 18530 ) + NEW met1 ( 1415650 18530 ) ( 1609310 * ) + NEW met1 ( 1609310 18530 ) M1M2_PR + NEW met1 ( 1415650 18530 ) M1M2_PR ; + - la_data_out[45] ( PIN la_data_out[45] ) ( mprj la_data_out[45] ) + USE SIGNAL + + ROUTED met2 ( 1528810 16490 ) ( * 1678750 ) + NEW met2 ( 1615750 1678750 ) ( * 1689460 ) + NEW met2 ( 1615750 1689460 ) ( 1617290 * ) + NEW met2 ( 1617290 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1528810 1678750 ) ( 1615750 * ) + NEW met2 ( 1433130 1700 0 ) ( * 16490 ) + NEW met1 ( 1433130 16490 ) ( 1528810 * ) + NEW met1 ( 1528810 16490 ) M1M2_PR + NEW met1 ( 1528810 1678750 ) M1M2_PR + NEW met1 ( 1615750 1678750 ) M1M2_PR + NEW met1 ( 1433130 16490 ) M1M2_PR ; + - la_data_out[46] ( PIN la_data_out[46] ) ( mprj la_data_out[46] ) + USE SIGNAL + + ROUTED met2 ( 1622650 1688780 ) ( 1622810 * ) + NEW met2 ( 1622810 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1622650 19550 ) ( * 1688780 ) + NEW met2 ( 1451070 1700 0 ) ( * 19550 ) + NEW met1 ( 1451070 19550 ) ( 1622650 * ) + NEW met1 ( 1622650 19550 ) M1M2_PR + NEW met1 ( 1451070 19550 ) M1M2_PR ; + - la_data_out[47] ( PIN la_data_out[47] ) ( mprj la_data_out[47] ) + USE SIGNAL + + ROUTED met2 ( 1468550 1700 0 ) ( * 20230 ) + NEW met1 ( 1468550 20230 ) ( 1528350 * ) + NEW met2 ( 1528350 20230 ) ( * 1679090 ) + NEW met2 ( 1628170 1679090 ) ( * 1688780 ) + NEW met2 ( 1628170 1688780 ) ( 1628330 * ) + NEW met2 ( 1628330 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1528350 1679090 ) ( 1628170 * ) + NEW met1 ( 1468550 20230 ) M1M2_PR + NEW met1 ( 1528350 20230 ) M1M2_PR + NEW met1 ( 1528350 1679090 ) M1M2_PR + NEW met1 ( 1628170 1679090 ) M1M2_PR ; + - la_data_out[48] ( PIN la_data_out[48] ) ( mprj la_data_out[48] ) + USE SIGNAL + + ROUTED met2 ( 1562850 15470 ) ( * 1680790 ) + NEW met2 ( 1633690 1680790 ) ( * 1688780 ) + NEW met2 ( 1633690 1688780 ) ( 1633850 * ) + NEW met2 ( 1633850 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1486490 1700 0 ) ( * 15470 ) + NEW met1 ( 1486490 15470 ) ( 1562850 * ) + NEW met1 ( 1562850 1680790 ) ( 1633690 * ) + NEW met1 ( 1562850 15470 ) M1M2_PR + NEW met1 ( 1562850 1680790 ) M1M2_PR + NEW met1 ( 1633690 1680790 ) M1M2_PR + NEW met1 ( 1486490 15470 ) M1M2_PR ; + - la_data_out[49] ( PIN la_data_out[49] ) ( mprj la_data_out[49] ) + USE SIGNAL + + ROUTED met2 ( 1535250 20570 ) ( * 1580100 ) + NEW met2 ( 1535250 1580100 ) ( 1535710 * ) + NEW met2 ( 1535710 1580100 ) ( * 1679430 ) + NEW met2 ( 1639210 1679430 ) ( * 1688780 ) + NEW met2 ( 1639210 1688780 ) ( 1639370 * ) + NEW met2 ( 1639370 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1503970 1700 0 ) ( * 20570 ) + NEW met1 ( 1503970 20570 ) ( 1535250 * ) + NEW met1 ( 1535710 1679430 ) ( 1639210 * ) + NEW met1 ( 1535250 20570 ) M1M2_PR + NEW met1 ( 1535710 1679430 ) M1M2_PR + NEW met1 ( 1639210 1679430 ) M1M2_PR + NEW met1 ( 1503970 20570 ) M1M2_PR ; + - la_data_out[4] ( PIN la_data_out[4] ) ( mprj la_data_out[4] ) + USE SIGNAL + + ROUTED met2 ( 706330 1700 0 ) ( * 47430 ) + NEW met1 ( 706330 47430 ) ( 1388050 * ) + NEW met1 ( 1388050 1688950 ) ( 1392810 * ) + NEW met2 ( 1392810 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1388050 47430 ) ( * 1688950 ) + NEW met1 ( 706330 47430 ) M1M2_PR + NEW met1 ( 1388050 47430 ) M1M2_PR + NEW met1 ( 1388050 1688950 ) M1M2_PR + NEW met1 ( 1392810 1688950 ) M1M2_PR ; + - la_data_out[50] ( PIN la_data_out[50] ) ( mprj la_data_out[50] ) + USE SIGNAL + + ROUTED met2 ( 1642430 1652740 ) ( 1642890 * ) + NEW met2 ( 1642890 18190 ) ( * 1652740 ) + NEW met1 ( 1642430 1689290 ) ( 1644890 * ) + NEW met2 ( 1644890 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1642430 1652740 ) ( * 1689290 ) + NEW met2 ( 1521910 1700 0 ) ( * 18190 ) + NEW met1 ( 1521910 18190 ) ( 1642890 * ) + NEW met1 ( 1642890 18190 ) M1M2_PR + NEW met1 ( 1642430 1689290 ) M1M2_PR + NEW met1 ( 1644890 1689290 ) M1M2_PR + NEW met1 ( 1521910 18190 ) M1M2_PR ; + - la_data_out[51] ( PIN la_data_out[51] ) ( mprj la_data_out[51] ) + USE SIGNAL + + ROUTED met2 ( 1539850 1700 0 ) ( * 20230 ) + NEW met2 ( 1649790 1688780 ) ( 1650410 * ) + NEW met2 ( 1650410 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1649790 20230 ) ( * 1688780 ) + NEW met1 ( 1539850 20230 ) ( 1649790 * ) + NEW met1 ( 1539850 20230 ) M1M2_PR + NEW met1 ( 1649790 20230 ) M1M2_PR ; + - la_data_out[52] ( PIN la_data_out[52] ) ( mprj la_data_out[52] ) + USE SIGNAL + + ROUTED met2 ( 1557330 1700 0 ) ( * 17170 ) + NEW met1 ( 1650250 1652570 ) ( 1655310 * ) + NEW met2 ( 1650250 17170 ) ( * 1652570 ) + NEW met2 ( 1655310 1688780 ) ( 1655470 * ) + NEW met2 ( 1655470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1655310 1652570 ) ( * 1688780 ) + NEW met1 ( 1557330 17170 ) ( 1650250 * ) + NEW met1 ( 1557330 17170 ) M1M2_PR + NEW met1 ( 1650250 17170 ) M1M2_PR + NEW met1 ( 1650250 1652570 ) M1M2_PR + NEW met1 ( 1655310 1652570 ) M1M2_PR ; + - la_data_out[53] ( PIN la_data_out[53] ) ( mprj la_data_out[53] ) + USE SIGNAL + + ROUTED met2 ( 1575270 1700 0 ) ( * 17850 ) + NEW met1 ( 1656690 1688950 ) ( 1660990 * ) + NEW met2 ( 1660990 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1656690 17850 ) ( * 1688950 ) + NEW met1 ( 1575270 17850 ) ( 1656690 * ) + NEW met1 ( 1575270 17850 ) M1M2_PR + NEW met1 ( 1656690 17850 ) M1M2_PR + NEW met1 ( 1656690 1688950 ) M1M2_PR + NEW met1 ( 1660990 1688950 ) M1M2_PR ; + - la_data_out[54] ( PIN la_data_out[54] ) ( mprj la_data_out[54] ) + USE SIGNAL + + ROUTED met2 ( 1666350 1680450 ) ( * 1688780 ) + NEW met2 ( 1666350 1688780 ) ( 1666510 * ) + NEW met2 ( 1666510 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1590450 1700 ) ( 1592750 * 0 ) + NEW met2 ( 1590450 1700 ) ( * 5780 ) + NEW met2 ( 1587230 5780 ) ( 1590450 * ) + NEW met2 ( 1587230 5780 ) ( * 1680450 ) + NEW met1 ( 1587230 1680450 ) ( 1666350 * ) + NEW met1 ( 1666350 1680450 ) M1M2_PR + NEW met1 ( 1587230 1680450 ) M1M2_PR ; + - la_data_out[55] ( PIN la_data_out[55] ) ( mprj la_data_out[55] ) + USE SIGNAL + + ROUTED met1 ( 1670490 1652570 ) ( 1671870 * ) + NEW met2 ( 1670490 15130 ) ( * 1652570 ) + NEW met2 ( 1671870 1688780 ) ( 1672030 * ) + NEW met2 ( 1672030 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1671870 1652570 ) ( * 1688780 ) + NEW met2 ( 1610690 1700 0 ) ( * 15130 ) + NEW met1 ( 1610690 15130 ) ( 1670490 * ) + NEW met1 ( 1670490 15130 ) M1M2_PR + NEW met1 ( 1670490 1652570 ) M1M2_PR + NEW met1 ( 1671870 1652570 ) M1M2_PR + NEW met1 ( 1610690 15130 ) M1M2_PR ; + - la_data_out[56] ( PIN la_data_out[56] ) ( mprj la_data_out[56] ) + USE SIGNAL + + ROUTED met2 ( 1628170 1700 0 ) ( * 18870 ) + NEW met1 ( 1628170 18870 ) ( 1677390 * ) + NEW met2 ( 1677390 1688780 ) ( 1677550 * ) + NEW met2 ( 1677550 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1677390 18870 ) ( * 1688780 ) + NEW met1 ( 1628170 18870 ) M1M2_PR + NEW met1 ( 1677390 18870 ) M1M2_PR ; + - la_data_out[57] ( PIN la_data_out[57] ) ( mprj la_data_out[57] ) + USE SIGNAL + + ROUTED met2 ( 1646110 1700 0 ) ( * 15810 ) + NEW met1 ( 1646110 15810 ) ( 1678770 * ) + NEW met2 ( 1678770 15810 ) ( * 1580100 ) + NEW met2 ( 1678770 1580100 ) ( 1680150 * ) + NEW met2 ( 1680150 1688780 ) ( 1683070 * ) + NEW met2 ( 1683070 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1680150 1580100 ) ( * 1688780 ) + NEW met1 ( 1646110 15810 ) M1M2_PR + NEW met1 ( 1678770 15810 ) M1M2_PR ; + - la_data_out[58] ( PIN la_data_out[58] ) ( mprj la_data_out[58] ) + USE SIGNAL + + ROUTED met2 ( 1663130 82800 ) ( 1663590 * ) + NEW met2 ( 1663590 1700 0 ) ( * 82800 ) + NEW met2 ( 1663130 82800 ) ( * 1676710 ) + NEW met2 ( 1688430 1676710 ) ( * 1688780 ) + NEW met2 ( 1688430 1688780 ) ( 1688590 * ) + NEW met2 ( 1688590 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1663130 1676710 ) ( 1688430 * ) + NEW met1 ( 1663130 1676710 ) M1M2_PR + NEW met1 ( 1688430 1676710 ) M1M2_PR ; + - la_data_out[59] ( PIN la_data_out[59] ) ( mprj la_data_out[59] ) + USE SIGNAL + + ROUTED met2 ( 1681530 1700 0 ) ( * 14450 ) + NEW met1 ( 1681530 14450 ) ( 1690730 * ) + NEW met2 ( 1690730 1689290 ) ( 1691190 * ) + NEW met1 ( 1691190 1689290 ) ( 1694110 * ) + NEW met2 ( 1694110 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1690730 14450 ) ( * 1689290 ) + NEW met1 ( 1681530 14450 ) M1M2_PR + NEW met1 ( 1690730 14450 ) M1M2_PR + NEW met1 ( 1691190 1689290 ) M1M2_PR + NEW met1 ( 1694110 1689290 ) M1M2_PR ; + - la_data_out[5] ( PIN la_data_out[5] ) ( mprj la_data_out[5] ) + USE SIGNAL + + ROUTED met1 ( 717830 86530 ) ( 1394950 * ) + NEW met1 ( 717830 58310 ) ( 723810 * ) + NEW met2 ( 717830 58310 ) ( * 86530 ) + NEW met2 ( 723810 1700 0 ) ( * 58310 ) + NEW met2 ( 1394950 1688780 ) ( 1398330 * ) + NEW met2 ( 1398330 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1394950 86530 ) ( * 1688780 ) + NEW met1 ( 717830 86530 ) M1M2_PR + NEW met1 ( 1394950 86530 ) M1M2_PR + NEW met1 ( 717830 58310 ) M1M2_PR + NEW met1 ( 723810 58310 ) M1M2_PR ; + - la_data_out[60] ( PIN la_data_out[60] ) ( mprj la_data_out[60] ) + USE SIGNAL + + ROUTED met2 ( 1697630 1700 ) ( 1699470 * 0 ) + NEW met1 ( 1697630 1688270 ) ( * 1689290 ) + NEW met1 ( 1697630 1689290 ) ( 1699630 * ) + NEW met2 ( 1699630 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1697630 1700 ) ( * 1688270 ) + NEW met1 ( 1697630 1688270 ) M1M2_PR + NEW met1 ( 1699630 1689290 ) M1M2_PR ; + - la_data_out[61] ( PIN la_data_out[61] ) ( mprj la_data_out[61] ) + USE SIGNAL + + ROUTED met2 ( 1716950 1700 0 ) ( * 15810 ) + NEW met1 ( 1705450 15810 ) ( 1716950 * ) + NEW met2 ( 1705220 1688780 ) ( 1705450 * ) + NEW met2 ( 1705220 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1705450 15810 ) ( * 1688780 ) + NEW met1 ( 1716950 15810 ) M1M2_PR + NEW met1 ( 1705450 15810 ) M1M2_PR ; + - la_data_out[62] ( PIN la_data_out[62] ) ( mprj la_data_out[62] ) + USE SIGNAL + + ROUTED met2 ( 1734890 1700 0 ) ( * 15130 ) + NEW met1 ( 1705910 15130 ) ( 1734890 * ) + NEW met1 ( 1705910 1688950 ) ( 1710670 * ) + NEW met2 ( 1710670 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1705910 15130 ) ( * 1688950 ) + NEW met1 ( 1734890 15130 ) M1M2_PR + NEW met1 ( 1705910 15130 ) M1M2_PR + NEW met1 ( 1705910 1688950 ) M1M2_PR + NEW met1 ( 1710670 1688950 ) M1M2_PR ; + - la_data_out[63] ( PIN la_data_out[63] ) ( mprj la_data_out[63] ) + USE SIGNAL + + ROUTED met2 ( 1752370 1700 0 ) ( * 15470 ) + NEW met1 ( 1712810 15470 ) ( 1752370 * ) + NEW met2 ( 1712810 1688780 ) ( 1715730 * ) + NEW met2 ( 1715730 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1712810 15470 ) ( * 1688780 ) + NEW met1 ( 1752370 15470 ) M1M2_PR + NEW met1 ( 1712810 15470 ) M1M2_PR ; + - la_data_out[64] ( PIN la_data_out[64] ) ( mprj la_data_out[64] ) + USE SIGNAL + + ROUTED met2 ( 1770310 1700 0 ) ( * 16490 ) + NEW met1 ( 1718330 16490 ) ( 1770310 * ) + NEW met1 ( 1718330 1688950 ) ( 1721250 * ) + NEW met2 ( 1721250 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1718330 16490 ) ( * 1688950 ) + NEW met1 ( 1770310 16490 ) M1M2_PR + NEW met1 ( 1718330 16490 ) M1M2_PR + NEW met1 ( 1718330 1688950 ) M1M2_PR + NEW met1 ( 1721250 1688950 ) M1M2_PR ; + - la_data_out[65] ( PIN la_data_out[65] ) ( mprj la_data_out[65] ) + USE SIGNAL + + ROUTED met2 ( 1731210 1681810 ) ( * 1689290 ) + NEW met1 ( 1726840 1689290 ) ( 1731210 * ) + NEW met2 ( 1726840 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1787790 1700 0 ) ( * 16830 ) + NEW met1 ( 1777210 16830 ) ( 1787790 * ) + NEW met1 ( 1731210 1681810 ) ( 1777210 * ) + NEW met2 ( 1777210 16830 ) ( * 1681810 ) + NEW met1 ( 1731210 1681810 ) M1M2_PR + NEW met1 ( 1731210 1689290 ) M1M2_PR + NEW met1 ( 1726840 1689290 ) M1M2_PR + NEW met1 ( 1787790 16830 ) M1M2_PR + NEW met1 ( 1777210 16830 ) M1M2_PR + NEW met1 ( 1777210 1681810 ) M1M2_PR ; + - la_data_out[66] ( PIN la_data_out[66] ) ( mprj la_data_out[66] ) + USE SIGNAL + + ROUTED met1 ( 1732130 16150 ) ( 1770770 * ) + NEW met1 ( 1770770 16150 ) ( * 16830 ) + NEW met2 ( 1732130 1688780 ) ( 1732290 * ) + NEW met2 ( 1732290 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1732130 16150 ) ( * 1688780 ) + NEW met1 ( 1770770 16830 ) ( 1773300 * ) + NEW met2 ( 1805730 1700 0 ) ( * 16490 ) + NEW met1 ( 1773300 16490 ) ( 1805730 * ) + NEW met1 ( 1773300 16490 ) ( * 16830 ) + NEW met1 ( 1732130 16150 ) M1M2_PR + NEW met1 ( 1805730 16490 ) M1M2_PR ; + - la_data_out[67] ( PIN la_data_out[67] ) ( mprj la_data_out[67] ) + USE SIGNAL + + ROUTED met2 ( 1823210 1700 0 ) ( * 16830 ) + NEW met2 ( 1738110 1682150 ) ( * 1688780 ) + NEW met2 ( 1737880 1688780 ) ( 1738110 * ) + NEW met2 ( 1737880 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1812170 16830 ) ( 1823210 * ) + NEW met2 ( 1811710 82800 ) ( 1812170 * ) + NEW met2 ( 1812170 16830 ) ( * 82800 ) + NEW met1 ( 1738110 1682150 ) ( 1811710 * ) + NEW met2 ( 1811710 82800 ) ( * 1682150 ) + NEW met1 ( 1823210 16830 ) M1M2_PR + NEW met1 ( 1738110 1682150 ) M1M2_PR + NEW met1 ( 1812170 16830 ) M1M2_PR + NEW met1 ( 1811710 1682150 ) M1M2_PR ; + - la_data_out[68] ( PIN la_data_out[68] ) ( mprj la_data_out[68] ) + USE SIGNAL + + ROUTED met2 ( 1838850 1700 ) ( 1841150 * 0 ) + NEW met2 ( 1838850 1700 ) ( * 3060 ) + NEW met2 ( 1835630 3060 ) ( 1838850 * ) + NEW met2 ( 1743630 1680110 ) ( * 1688780 ) + NEW met2 ( 1743400 1688780 ) ( 1743630 * ) + NEW met2 ( 1743400 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1835630 3060 ) ( * 1680110 ) + NEW met1 ( 1743630 1680110 ) ( 1835630 * ) + NEW met1 ( 1743630 1680110 ) M1M2_PR + NEW met1 ( 1835630 1680110 ) M1M2_PR ; + - la_data_out[69] ( PIN la_data_out[69] ) ( mprj la_data_out[69] ) + USE SIGNAL + + ROUTED met2 ( 1858630 1700 0 ) ( * 15810 ) + NEW met1 ( 1831950 15810 ) ( 1858630 * ) + NEW met2 ( 1749150 1680790 ) ( * 1688780 ) + NEW met2 ( 1748920 1688780 ) ( 1749150 * ) + NEW met2 ( 1748920 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1831950 15810 ) ( * 1680790 ) + NEW met1 ( 1749150 1680790 ) ( 1831950 * ) + NEW met1 ( 1858630 15810 ) M1M2_PR + NEW met1 ( 1831950 15810 ) M1M2_PR + NEW met1 ( 1749150 1680790 ) M1M2_PR + NEW met1 ( 1831950 1680790 ) M1M2_PR ; + - la_data_out[6] ( PIN la_data_out[6] ) ( mprj la_data_out[6] ) + USE SIGNAL + + ROUTED met2 ( 739450 1700 ) ( 741750 * 0 ) + NEW met1 ( 738530 87210 ) ( 1401390 * ) + NEW met2 ( 738530 82800 ) ( * 87210 ) + NEW met2 ( 738530 82800 ) ( 739450 * ) + NEW met2 ( 739450 1700 ) ( * 82800 ) + NEW met1 ( 1401390 1689290 ) ( 1403850 * ) + NEW met2 ( 1403850 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1401390 87210 ) ( * 1689290 ) + NEW met1 ( 738530 87210 ) M1M2_PR + NEW met1 ( 1401390 87210 ) M1M2_PR + NEW met1 ( 1401390 1689290 ) M1M2_PR + NEW met1 ( 1403850 1689290 ) M1M2_PR ; + - la_data_out[70] ( PIN la_data_out[70] ) ( mprj la_data_out[70] ) + USE SIGNAL + + ROUTED met2 ( 1754670 1682490 ) ( * 1688780 ) + NEW met2 ( 1754440 1688780 ) ( 1754670 * ) + NEW met2 ( 1754440 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1825050 16150 ) ( * 1580100 ) + NEW met2 ( 1825050 1580100 ) ( 1825510 * ) + NEW met2 ( 1825510 1580100 ) ( * 1682490 ) + NEW met2 ( 1876570 1700 0 ) ( * 16150 ) + NEW met1 ( 1825050 16150 ) ( 1876570 * ) + NEW met1 ( 1754670 1682490 ) ( 1825510 * ) + NEW met1 ( 1825050 16150 ) M1M2_PR + NEW met1 ( 1754670 1682490 ) M1M2_PR + NEW met1 ( 1825510 1682490 ) M1M2_PR + NEW met1 ( 1876570 16150 ) M1M2_PR ; + - la_data_out[71] ( PIN la_data_out[71] ) ( mprj la_data_out[71] ) + USE SIGNAL + + ROUTED met2 ( 1759730 1688780 ) ( 1759890 * ) + NEW met2 ( 1759890 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1759730 26350 ) ( * 1688780 ) + NEW met2 ( 1894510 1700 0 ) ( * 26350 ) + NEW met1 ( 1759730 26350 ) ( 1894510 * ) + NEW met1 ( 1759730 26350 ) M1M2_PR + NEW met1 ( 1894510 26350 ) M1M2_PR ; + - la_data_out[72] ( PIN la_data_out[72] ) ( mprj la_data_out[72] ) + USE SIGNAL + + ROUTED met2 ( 1760190 26010 ) ( * 1580100 ) + NEW met2 ( 1760190 1580100 ) ( 1764790 * ) + NEW met2 ( 1764790 1688780 ) ( 1765410 * ) + NEW met2 ( 1765410 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1764790 1580100 ) ( * 1688780 ) + NEW met2 ( 1911990 1700 0 ) ( * 26010 ) + NEW met1 ( 1760190 26010 ) ( 1911990 * ) + NEW met1 ( 1760190 26010 ) M1M2_PR + NEW met1 ( 1911990 26010 ) M1M2_PR ; + - la_data_out[73] ( PIN la_data_out[73] ) ( mprj la_data_out[73] ) + USE SIGNAL + + ROUTED met2 ( 1929930 1700 0 ) ( * 25670 ) + NEW met2 ( 1767090 25670 ) ( * 1580100 ) + NEW met2 ( 1767090 1580100 ) ( 1770310 * ) + NEW met2 ( 1770310 1688780 ) ( 1770930 * ) + NEW met2 ( 1770930 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1770310 1580100 ) ( * 1688780 ) + NEW met1 ( 1767090 25670 ) ( 1929930 * ) + NEW met1 ( 1767090 25670 ) M1M2_PR + NEW met1 ( 1929930 25670 ) M1M2_PR ; + - la_data_out[74] ( PIN la_data_out[74] ) ( mprj la_data_out[74] ) + USE SIGNAL + + ROUTED met2 ( 1947410 1700 0 ) ( * 25330 ) + NEW met1 ( 1773530 25330 ) ( 1947410 * ) + NEW met2 ( 1773530 25330 ) ( * 1580100 ) + NEW met2 ( 1773530 1580100 ) ( 1775370 * ) + NEW met2 ( 1775370 1688780 ) ( 1775990 * ) + NEW met2 ( 1775990 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1775370 1580100 ) ( * 1688780 ) + NEW met1 ( 1947410 25330 ) M1M2_PR + NEW met1 ( 1773530 25330 ) M1M2_PR ; + - la_data_out[75] ( PIN la_data_out[75] ) ( mprj la_data_out[75] ) + USE SIGNAL + + ROUTED met2 ( 1965350 1700 0 ) ( * 24990 ) + NEW met1 ( 1780890 24990 ) ( 1965350 * ) + NEW met2 ( 1780890 1688780 ) ( 1781510 * ) + NEW met2 ( 1781510 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1780890 24990 ) ( * 1688780 ) + NEW met1 ( 1965350 24990 ) M1M2_PR + NEW met1 ( 1780890 24990 ) M1M2_PR ; + - la_data_out[76] ( PIN la_data_out[76] ) ( mprj la_data_out[76] ) + USE SIGNAL + + ROUTED met2 ( 1982830 1700 0 ) ( * 24650 ) + NEW met1 ( 1780430 24650 ) ( 1982830 * ) + NEW met1 ( 1780430 1688950 ) ( 1787030 * ) + NEW met2 ( 1787030 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1780430 24650 ) ( * 1688950 ) + NEW met1 ( 1780430 24650 ) M1M2_PR + NEW met1 ( 1982830 24650 ) M1M2_PR + NEW met1 ( 1780430 1688950 ) M1M2_PR + NEW met1 ( 1787030 1688950 ) M1M2_PR ; + - la_data_out[77] ( PIN la_data_out[77] ) ( mprj la_data_out[77] ) + USE SIGNAL + + ROUTED met2 ( 2000770 1700 0 ) ( * 24310 ) + NEW met1 ( 1788250 24310 ) ( 2000770 * ) + NEW met2 ( 1788250 24310 ) ( * 1580100 ) + NEW met2 ( 1788250 1580100 ) ( 1788710 * ) + NEW met2 ( 1788710 1580100 ) ( * 1676700 ) + NEW met2 ( 1788710 1676700 ) ( 1789170 * ) + NEW met2 ( 1789170 1676700 ) ( * 1688780 ) + NEW met2 ( 1789170 1688780 ) ( 1792550 * ) + NEW met2 ( 1792550 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1788250 24310 ) M1M2_PR + NEW met1 ( 2000770 24310 ) M1M2_PR ; + - la_data_out[78] ( PIN la_data_out[78] ) ( mprj la_data_out[78] ) + USE SIGNAL + + ROUTED met2 ( 2018250 1700 0 ) ( * 22610 ) + NEW met1 ( 1794690 22610 ) ( 2018250 * ) + NEW met1 ( 1794690 1688950 ) ( 1798070 * ) + NEW met2 ( 1798070 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1794690 22610 ) ( * 1688950 ) + NEW met1 ( 2018250 22610 ) M1M2_PR + NEW met1 ( 1794690 22610 ) M1M2_PR + NEW met1 ( 1794690 1688950 ) M1M2_PR + NEW met1 ( 1798070 1688950 ) M1M2_PR ; + - la_data_out[79] ( PIN la_data_out[79] ) ( mprj la_data_out[79] ) + USE SIGNAL + + ROUTED met2 ( 2036190 1700 0 ) ( * 31110 ) + NEW met1 ( 1802050 31110 ) ( 2036190 * ) + NEW met2 ( 1802050 1688780 ) ( 1803590 * ) + NEW met2 ( 1803590 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1802050 31110 ) ( * 1688780 ) + NEW met1 ( 2036190 31110 ) M1M2_PR + NEW met1 ( 1802050 31110 ) M1M2_PR ; + - la_data_out[7] ( PIN la_data_out[7] ) ( mprj la_data_out[7] ) + USE SIGNAL + + ROUTED met2 ( 759230 1700 0 ) ( * 34500 ) + NEW met2 ( 759230 34500 ) ( 759690 * ) + NEW met2 ( 759690 34500 ) ( * 87890 ) + NEW met1 ( 759690 87890 ) ( 1408290 * ) + NEW met2 ( 1408290 1688780 ) ( 1409370 * ) + NEW met2 ( 1409370 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1408290 87890 ) ( * 1688780 ) + NEW met1 ( 759690 87890 ) M1M2_PR + NEW met1 ( 1408290 87890 ) M1M2_PR ; + - la_data_out[80] ( PIN la_data_out[80] ) ( mprj la_data_out[80] ) + USE SIGNAL + + ROUTED met2 ( 2054130 1700 0 ) ( * 29070 ) + NEW met1 ( 1808490 29070 ) ( 2054130 * ) + NEW met2 ( 1808490 1688780 ) ( 1809110 * ) + NEW met2 ( 1809110 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1808490 29070 ) ( * 1688780 ) + NEW met1 ( 2054130 29070 ) M1M2_PR + NEW met1 ( 1808490 29070 ) M1M2_PR ; + - la_data_out[81] ( PIN la_data_out[81] ) ( mprj la_data_out[81] ) + USE SIGNAL + + ROUTED met1 ( 1808950 1652570 ) ( 1814470 * ) + NEW met2 ( 1808950 43690 ) ( * 1652570 ) + NEW met2 ( 1814470 1688780 ) ( 1814630 * ) + NEW met2 ( 1814630 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1814470 1652570 ) ( * 1688780 ) + NEW met1 ( 1808950 43690 ) ( 2071610 * ) + NEW met2 ( 2071610 1700 0 ) ( * 43690 ) + NEW met1 ( 1808950 1652570 ) M1M2_PR + NEW met1 ( 1814470 1652570 ) M1M2_PR + NEW met1 ( 1808950 43690 ) M1M2_PR + NEW met1 ( 2071610 43690 ) M1M2_PR ; + - la_data_out[82] ( PIN la_data_out[82] ) ( mprj la_data_out[82] ) + USE SIGNAL + + ROUTED met2 ( 2087250 1700 ) ( 2089550 * 0 ) + NEW met2 ( 1815850 64430 ) ( * 1580100 ) + NEW met2 ( 1815850 1580100 ) ( 1819990 * ) + NEW met2 ( 1819990 1688780 ) ( 1820150 * ) + NEW met2 ( 1820150 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1819990 1580100 ) ( * 1688780 ) + NEW met1 ( 1815850 64430 ) ( 2087250 * ) + NEW met2 ( 2087250 1700 ) ( * 64430 ) + NEW met1 ( 1815850 64430 ) M1M2_PR + NEW met1 ( 2087250 64430 ) M1M2_PR ; + - la_data_out[83] ( PIN la_data_out[83] ) ( mprj la_data_out[83] ) + USE SIGNAL + + ROUTED met2 ( 1822290 64770 ) ( * 1580100 ) + NEW met2 ( 1822290 1580100 ) ( 1824590 * ) + NEW met2 ( 1824590 1688780 ) ( 1825670 * ) + NEW met2 ( 1825670 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1824590 1580100 ) ( * 1688780 ) + NEW met2 ( 2104730 1700 ) ( 2107030 * 0 ) + NEW met1 ( 1822290 64770 ) ( 2104730 * ) + NEW met2 ( 2104730 1700 ) ( * 64770 ) + NEW met1 ( 1822290 64770 ) M1M2_PR + NEW met1 ( 2104730 64770 ) M1M2_PR ; + - la_data_out[84] ( PIN la_data_out[84] ) ( mprj la_data_out[84] ) + USE SIGNAL + + ROUTED met2 ( 2124970 1700 0 ) ( * 16830 ) + NEW met1 ( 2118530 16830 ) ( 2124970 * ) + NEW met2 ( 1830110 1688780 ) ( 1831190 * ) + NEW met2 ( 1831190 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1830110 65110 ) ( * 1688780 ) + NEW met2 ( 2118530 16830 ) ( * 65110 ) + NEW met1 ( 1830110 65110 ) ( 2118530 * ) + NEW met1 ( 2124970 16830 ) M1M2_PR + NEW met1 ( 2118530 16830 ) M1M2_PR + NEW met1 ( 1830110 65110 ) M1M2_PR + NEW met1 ( 2118530 65110 ) M1M2_PR ; + - la_data_out[85] ( PIN la_data_out[85] ) ( mprj la_data_out[85] ) + USE SIGNAL + + ROUTED met1 ( 1836550 1652230 ) ( * 1653250 ) + NEW met2 ( 1836550 68850 ) ( * 1652230 ) + NEW met2 ( 1836320 1688780 ) ( 1836550 * ) + NEW met2 ( 1836320 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1836550 1653250 ) ( * 1688780 ) + NEW met2 ( 2142450 1700 0 ) ( * 68850 ) + NEW met1 ( 1836550 68850 ) ( 2142450 * ) + NEW met1 ( 1836550 1652230 ) M1M2_PR + NEW met1 ( 1836550 1653250 ) M1M2_PR + NEW met1 ( 1836550 68850 ) M1M2_PR + NEW met1 ( 2142450 68850 ) M1M2_PR ; + - la_data_out[86] ( PIN la_data_out[86] ) ( mprj la_data_out[86] ) + USE SIGNAL + + ROUTED met2 ( 1837010 71230 ) ( * 1580100 ) + NEW met2 ( 1837010 1580100 ) ( 1838850 * ) + NEW met2 ( 1838850 1688780 ) ( 1841770 * ) + NEW met2 ( 1841770 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1838850 1580100 ) ( * 1688780 ) + NEW met1 ( 1837010 71230 ) ( 2160390 * ) + NEW met2 ( 2160390 1700 0 ) ( * 71230 ) + NEW met1 ( 1837010 71230 ) M1M2_PR + NEW met1 ( 2160390 71230 ) M1M2_PR ; + - la_data_out[87] ( PIN la_data_out[87] ) ( mprj la_data_out[87] ) + USE SIGNAL + + ROUTED met2 ( 1842990 50490 ) ( * 1676700 ) + NEW met2 ( 1842990 1676700 ) ( 1845290 * ) + NEW met2 ( 1845290 1676700 ) ( * 1688780 ) + NEW met2 ( 1845290 1688780 ) ( 1847290 * ) + NEW met2 ( 1847290 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2175570 1700 ) ( 2177870 * 0 ) + NEW met1 ( 1842990 50490 ) ( 2175570 * ) + NEW met2 ( 2175570 1700 ) ( * 50490 ) + NEW met1 ( 1842990 50490 ) M1M2_PR + NEW met1 ( 2175570 50490 ) M1M2_PR ; + - la_data_out[88] ( PIN la_data_out[88] ) ( mprj la_data_out[88] ) + USE SIGNAL + + ROUTED met2 ( 1849890 50830 ) ( * 1580100 ) + NEW met2 ( 1849890 1580100 ) ( 1852190 * ) + NEW met1 ( 1849890 50830 ) ( 2195810 * ) + NEW met2 ( 2195810 1700 0 ) ( * 50830 ) + NEW met2 ( 1852190 1688780 ) ( 1852810 * ) + NEW met2 ( 1852810 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1852190 1580100 ) ( * 1688780 ) + NEW met1 ( 1849890 50830 ) M1M2_PR + NEW met1 ( 2195810 50830 ) M1M2_PR ; + - la_data_out[89] ( PIN la_data_out[89] ) ( mprj la_data_out[89] ) + USE SIGNAL + + ROUTED met2 ( 2213290 1700 0 ) ( * 17340 ) + NEW met2 ( 2210990 17340 ) ( 2213290 * ) + NEW met2 ( 2210990 17340 ) ( * 51170 ) + NEW met1 ( 1857250 51170 ) ( 2210990 * ) + NEW met2 ( 1857250 1688780 ) ( 1858330 * ) + NEW met2 ( 1858330 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1857250 51170 ) ( * 1688780 ) + NEW met1 ( 1857250 51170 ) M1M2_PR + NEW met1 ( 2210990 51170 ) M1M2_PR ; + - la_data_out[8] ( PIN la_data_out[8] ) ( mprj la_data_out[8] ) + USE SIGNAL + + ROUTED met2 ( 777170 1700 0 ) ( * 52870 ) + NEW met2 ( 1414960 1688780 ) ( 1415650 * ) + NEW met2 ( 1414960 1688780 ) ( * 1690140 0 ) + NEW met1 ( 777170 52870 ) ( 1415650 * ) + NEW met2 ( 1415650 52870 ) ( * 1688780 ) + NEW met1 ( 777170 52870 ) M1M2_PR + NEW met1 ( 1415650 52870 ) M1M2_PR ; + - la_data_out[90] ( PIN la_data_out[90] ) ( mprj la_data_out[90] ) + USE SIGNAL + + ROUTED met2 ( 2228930 1700 ) ( 2231230 * 0 ) + NEW met2 ( 2228930 1700 ) ( * 54910 ) + NEW met1 ( 1863230 54910 ) ( 2228930 * ) + NEW met2 ( 1863230 1688780 ) ( 1863850 * ) + NEW met2 ( 1863850 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1863230 54910 ) ( * 1688780 ) + NEW met1 ( 1863230 54910 ) M1M2_PR + NEW met1 ( 2228930 54910 ) M1M2_PR ; + - la_data_out[91] ( PIN la_data_out[91] ) ( mprj la_data_out[91] ) + USE SIGNAL + + ROUTED met1 ( 1863690 1652570 ) ( 1869210 * ) + NEW met2 ( 2249170 1700 0 ) ( * 16150 ) + NEW met1 ( 2243190 16150 ) ( 2249170 * ) + NEW met2 ( 1863690 54570 ) ( * 1652570 ) + NEW met2 ( 2243190 16150 ) ( * 54570 ) + NEW met1 ( 1863690 54570 ) ( 2243190 * ) + NEW met2 ( 1869210 1688780 ) ( 1869370 * ) + NEW met2 ( 1869370 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1869210 1652570 ) ( * 1688780 ) + NEW met1 ( 1863690 1652570 ) M1M2_PR + NEW met1 ( 1869210 1652570 ) M1M2_PR + NEW met1 ( 2249170 16150 ) M1M2_PR + NEW met1 ( 2243190 16150 ) M1M2_PR + NEW met1 ( 1863690 54570 ) M1M2_PR + NEW met1 ( 2243190 54570 ) M1M2_PR ; + - la_data_out[92] ( PIN la_data_out[92] ) ( mprj la_data_out[92] ) + USE SIGNAL + + ROUTED met1 ( 1870590 54230 ) ( 2266650 * ) + NEW met2 ( 2266650 1700 0 ) ( * 54230 ) + NEW met1 ( 1870590 1688950 ) ( 1874890 * ) + NEW met2 ( 1874890 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1870590 54230 ) ( * 1688950 ) + NEW met1 ( 1870590 54230 ) M1M2_PR + NEW met1 ( 2266650 54230 ) M1M2_PR + NEW met1 ( 1870590 1688950 ) M1M2_PR + NEW met1 ( 1874890 1688950 ) M1M2_PR ; + - la_data_out[93] ( PIN la_data_out[93] ) ( mprj la_data_out[93] ) + USE SIGNAL + + ROUTED met1 ( 1877030 53890 ) ( 2284590 * ) + NEW met2 ( 2284590 1700 0 ) ( * 53890 ) + NEW met1 ( 1877030 1688950 ) ( 1880410 * ) + NEW met2 ( 1880410 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1877030 53890 ) ( * 1688950 ) + NEW met1 ( 1877030 53890 ) M1M2_PR + NEW met1 ( 2284590 53890 ) M1M2_PR + NEW met1 ( 1877030 1688950 ) M1M2_PR + NEW met1 ( 1880410 1688950 ) M1M2_PR ; + - la_data_out[94] ( PIN la_data_out[94] ) ( mprj la_data_out[94] ) + USE SIGNAL + + ROUTED met1 ( 1883930 1652570 ) ( 1885770 * ) + NEW met2 ( 2299770 1700 ) ( 2302070 * 0 ) + NEW met2 ( 1883930 53550 ) ( * 1652570 ) + NEW met1 ( 1883930 53550 ) ( 2299770 * ) + NEW met2 ( 2299770 1700 ) ( * 53550 ) + NEW met2 ( 1885770 1688780 ) ( 1885930 * ) + NEW met2 ( 1885930 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1885770 1652570 ) ( * 1688780 ) + NEW met1 ( 1883930 1652570 ) M1M2_PR + NEW met1 ( 1885770 1652570 ) M1M2_PR + NEW met1 ( 1883930 53550 ) M1M2_PR + NEW met1 ( 2299770 53550 ) M1M2_PR ; + - la_data_out[95] ( PIN la_data_out[95] ) ( mprj la_data_out[95] ) + USE SIGNAL + + ROUTED met2 ( 2320010 1700 0 ) ( * 53210 ) + NEW met1 ( 1891290 53210 ) ( 2320010 * ) + NEW met2 ( 1891290 1688780 ) ( 1891450 * ) + NEW met2 ( 1891450 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1891290 53210 ) ( * 1688780 ) + NEW met1 ( 2320010 53210 ) M1M2_PR + NEW met1 ( 1891290 53210 ) M1M2_PR ; + - la_data_out[96] ( PIN la_data_out[96] ) ( mprj la_data_out[96] ) + USE SIGNAL + + ROUTED met2 ( 2337490 1700 0 ) ( * 52870 ) + NEW met1 ( 1891750 1652570 ) ( 1896350 * ) + NEW met2 ( 1891750 52870 ) ( * 1652570 ) + NEW met1 ( 1891750 52870 ) ( 2337490 * ) + NEW met2 ( 1896350 1688780 ) ( 1896510 * ) + NEW met2 ( 1896510 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1896350 1652570 ) ( * 1688780 ) + NEW met1 ( 2337490 52870 ) M1M2_PR + NEW met1 ( 1891750 1652570 ) M1M2_PR + NEW met1 ( 1896350 1652570 ) M1M2_PR + NEW met1 ( 1891750 52870 ) M1M2_PR ; + - la_data_out[97] ( PIN la_data_out[97] ) ( mprj la_data_out[97] ) + USE SIGNAL + + ROUTED met2 ( 2353130 1700 ) ( 2355430 * 0 ) + NEW met2 ( 1898650 52530 ) ( * 1580100 ) + NEW met2 ( 1898650 1580100 ) ( 1901870 * ) + NEW met2 ( 1901870 1688780 ) ( 1902030 * ) + NEW met2 ( 1902030 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1901870 1580100 ) ( * 1688780 ) + NEW met1 ( 1898650 52530 ) ( 2353130 * ) + NEW met2 ( 2353130 1700 ) ( * 52530 ) + NEW met1 ( 1898650 52530 ) M1M2_PR + NEW met1 ( 2353130 52530 ) M1M2_PR ; + - la_data_out[98] ( PIN la_data_out[98] ) ( mprj la_data_out[98] ) + USE SIGNAL + + ROUTED met2 ( 2370610 1700 ) ( 2372910 * 0 ) + NEW met2 ( 1905550 52190 ) ( * 1580100 ) + NEW met2 ( 1905550 1580100 ) ( 1907390 * ) + NEW met2 ( 1907390 1688780 ) ( 1907550 * ) + NEW met2 ( 1907550 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1907390 1580100 ) ( * 1688780 ) + NEW met1 ( 1905550 52190 ) ( 2370610 * ) + NEW met2 ( 2370610 1700 ) ( * 52190 ) + NEW met1 ( 1905550 52190 ) M1M2_PR + NEW met1 ( 2370610 52190 ) M1M2_PR ; + - la_data_out[99] ( PIN la_data_out[99] ) ( mprj la_data_out[99] ) + USE SIGNAL + + ROUTED met2 ( 1911990 1688780 ) ( 1913070 * ) + NEW met2 ( 1913070 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1911990 51850 ) ( * 1688780 ) + NEW met1 ( 1911990 51850 ) ( 2390850 * ) + NEW met2 ( 2390850 1700 0 ) ( * 51850 ) + NEW met1 ( 1911990 51850 ) M1M2_PR + NEW met1 ( 2390850 51850 ) M1M2_PR ; + - la_data_out[9] ( PIN la_data_out[9] ) ( mprj la_data_out[9] ) + USE SIGNAL + + ROUTED met2 ( 794650 1700 0 ) ( * 53210 ) + NEW met1 ( 1415190 1652230 ) ( 1419790 * ) + NEW met2 ( 1419790 1688780 ) ( 1419950 * ) + NEW met2 ( 1419950 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1419790 1652230 ) ( * 1688780 ) + NEW met1 ( 794650 53210 ) ( 1415190 * ) + NEW met2 ( 1415190 53210 ) ( * 1652230 ) + NEW met1 ( 794650 53210 ) M1M2_PR + NEW met1 ( 1415190 1652230 ) M1M2_PR + NEW met1 ( 1419790 1652230 ) M1M2_PR + NEW met1 ( 1415190 53210 ) M1M2_PR ; + - la_oenb[0] ( PIN la_oenb[0] ) ( mprj la_oenb[0] ) + USE SIGNAL + + ROUTED met1 ( 1367350 1688950 ) ( 1372570 * ) + NEW met2 ( 1372570 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1367350 52530 ) ( * 1688950 ) + NEW met2 ( 641010 1700 0 ) ( * 20910 ) + NEW met1 ( 635030 20910 ) ( 641010 * ) + NEW met2 ( 635030 20910 ) ( * 52530 ) + NEW met1 ( 635030 52530 ) ( 1367350 * ) + NEW met1 ( 1367350 52530 ) M1M2_PR + NEW met1 ( 1367350 1688950 ) M1M2_PR + NEW met1 ( 1372570 1688950 ) M1M2_PR + NEW met1 ( 641010 20910 ) M1M2_PR + NEW met1 ( 635030 20910 ) M1M2_PR + NEW met1 ( 635030 52530 ) M1M2_PR ; + - la_oenb[100] ( PIN la_oenb[100] ) ( mprj la_oenb[100] ) + USE SIGNAL + + ROUTED met2 ( 2412010 1700 ) ( 2414310 * 0 ) + NEW met2 ( 1919350 1688780 ) ( 1920430 * ) + NEW met2 ( 1920430 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1919350 51510 ) ( * 1688780 ) + NEW met2 ( 2412010 1700 ) ( * 51510 ) + NEW met1 ( 1919350 51510 ) ( 2412010 * ) + NEW met1 ( 1919350 51510 ) M1M2_PR + NEW met1 ( 2412010 51510 ) M1M2_PR ; + - la_oenb[101] ( PIN la_oenb[101] ) ( mprj la_oenb[101] ) + USE SIGNAL + + ROUTED met2 ( 1926020 1688780 ) ( 1926250 * ) + NEW met2 ( 1926020 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1926250 58310 ) ( * 1688780 ) + NEW met2 ( 2432250 1700 0 ) ( * 58310 ) + NEW met1 ( 1926250 58310 ) ( 2432250 * ) + NEW met1 ( 1926250 58310 ) M1M2_PR + NEW met1 ( 2432250 58310 ) M1M2_PR ; + - la_oenb[102] ( PIN la_oenb[102] ) ( mprj la_oenb[102] ) + USE SIGNAL + + ROUTED met1 ( 1925790 1652570 ) ( 1931310 * ) + NEW met2 ( 1925790 61370 ) ( * 1652570 ) + NEW met2 ( 1931310 1688780 ) ( 1931470 * ) + NEW met2 ( 1931470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1931310 1652570 ) ( * 1688780 ) + NEW met2 ( 2449730 1700 0 ) ( * 15980 ) + NEW met2 ( 2449730 15980 ) ( 2450190 * ) + NEW met1 ( 1925790 61370 ) ( 2450190 * ) + NEW met2 ( 2450190 15980 ) ( * 61370 ) + NEW met1 ( 1925790 1652570 ) M1M2_PR + NEW met1 ( 1931310 1652570 ) M1M2_PR + NEW met1 ( 1925790 61370 ) M1M2_PR + NEW met1 ( 2450190 61370 ) M1M2_PR ; + - la_oenb[103] ( PIN la_oenb[103] ) ( mprj la_oenb[103] ) + USE SIGNAL + + ROUTED met2 ( 1933610 1688780 ) ( 1936990 * ) + NEW met2 ( 1936990 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1933610 61030 ) ( * 1688780 ) + NEW met2 ( 2465370 1700 ) ( 2467670 * 0 ) + NEW met1 ( 1933610 61030 ) ( 2465370 * ) + NEW met2 ( 2465370 1700 ) ( * 61030 ) + NEW met1 ( 1933610 61030 ) M1M2_PR + NEW met1 ( 2465370 61030 ) M1M2_PR ; + - la_oenb[104] ( PIN la_oenb[104] ) ( mprj la_oenb[104] ) + USE SIGNAL + + ROUTED met2 ( 1940050 60350 ) ( * 1580100 ) + NEW met2 ( 1940050 1580100 ) ( 1941890 * ) + NEW met2 ( 1941890 1688780 ) ( 1942510 * ) + NEW met2 ( 1942510 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1941890 1580100 ) ( * 1688780 ) + NEW met1 ( 1940050 60350 ) ( 2485610 * ) + NEW met2 ( 2485610 1700 0 ) ( * 60350 ) + NEW met1 ( 1940050 60350 ) M1M2_PR + NEW met1 ( 2485610 60350 ) M1M2_PR ; + - la_oenb[105] ( PIN la_oenb[105] ) ( mprj la_oenb[105] ) + USE SIGNAL + + ROUTED met2 ( 1947410 1688780 ) ( 1948030 * ) + NEW met2 ( 1948030 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1947410 60010 ) ( * 1688780 ) + NEW met2 ( 2503090 1700 0 ) ( * 60010 ) + NEW met1 ( 1947410 60010 ) ( 2503090 * ) + NEW met1 ( 1947410 60010 ) M1M2_PR + NEW met1 ( 2503090 60010 ) M1M2_PR ; + - la_oenb[106] ( PIN la_oenb[106] ) ( mprj la_oenb[106] ) + USE SIGNAL + + ROUTED met2 ( 2518730 1700 ) ( 2521030 * 0 ) + NEW met2 ( 1953620 1688780 ) ( 1953850 * ) + NEW met2 ( 1953620 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1953850 59670 ) ( * 1688780 ) + NEW met2 ( 2518730 1700 ) ( * 59670 ) + NEW met1 ( 1953850 59670 ) ( 2518730 * ) + NEW met1 ( 1953850 59670 ) M1M2_PR + NEW met1 ( 2518730 59670 ) M1M2_PR ; + - la_oenb[107] ( PIN la_oenb[107] ) ( mprj la_oenb[107] ) + USE SIGNAL + + ROUTED met2 ( 2536210 1700 ) ( 2538510 * 0 ) + NEW met2 ( 1954310 1688780 ) ( 1958610 * ) + NEW met2 ( 1958610 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1954310 71570 ) ( * 1688780 ) + NEW met2 ( 2536210 1700 ) ( * 71570 ) + NEW met1 ( 1954310 71570 ) ( 2536210 * ) + NEW met1 ( 1954310 71570 ) M1M2_PR + NEW met1 ( 2536210 71570 ) M1M2_PR ; + - la_oenb[108] ( PIN la_oenb[108] ) ( mprj la_oenb[108] ) + USE SIGNAL + + ROUTED met2 ( 1961210 59330 ) ( * 1580100 ) + NEW met2 ( 1961210 1580100 ) ( 1963510 * ) + NEW met2 ( 1963510 1688780 ) ( 1964130 * ) + NEW met2 ( 1964130 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1963510 1580100 ) ( * 1688780 ) + NEW met1 ( 1961210 59330 ) ( 2556450 * ) + NEW met2 ( 2556450 1700 0 ) ( * 59330 ) + NEW met1 ( 1961210 59330 ) M1M2_PR + NEW met1 ( 2556450 59330 ) M1M2_PR ; + - la_oenb[109] ( PIN la_oenb[109] ) ( mprj la_oenb[109] ) + USE SIGNAL + + ROUTED met2 ( 1968110 1688780 ) ( 1969650 * ) + NEW met2 ( 1969650 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1968110 71910 ) ( * 1688780 ) + NEW met1 ( 1968110 71910 ) ( 2573930 * ) + NEW met2 ( 2573930 1700 0 ) ( * 71910 ) + NEW met1 ( 1968110 71910 ) M1M2_PR + NEW met1 ( 2573930 71910 ) M1M2_PR ; + - la_oenb[10] ( PIN la_oenb[10] ) ( mprj la_oenb[10] ) + USE SIGNAL + + ROUTED met2 ( 818570 1700 0 ) ( * 17340 ) + NEW met2 ( 817190 17340 ) ( 818570 * ) + NEW met1 ( 1422090 1652570 ) ( 1427150 * ) + NEW met2 ( 817190 17340 ) ( * 53550 ) + NEW met2 ( 1427150 1688780 ) ( 1427310 * ) + NEW met2 ( 1427310 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1427150 1652570 ) ( * 1688780 ) + NEW met1 ( 817190 53550 ) ( 1422090 * ) + NEW met2 ( 1422090 53550 ) ( * 1652570 ) + NEW met1 ( 1422090 1652570 ) M1M2_PR + NEW met1 ( 1427150 1652570 ) M1M2_PR + NEW met1 ( 817190 53550 ) M1M2_PR + NEW met1 ( 1422090 53550 ) M1M2_PR ; + - la_oenb[110] ( PIN la_oenb[110] ) ( mprj la_oenb[110] ) + USE SIGNAL + + ROUTED met2 ( 2589570 1700 ) ( 2591870 * 0 ) + NEW met2 ( 1974550 1688780 ) ( 1975170 * ) + NEW met2 ( 1975170 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1974550 75650 ) ( * 1688780 ) + NEW met1 ( 1974550 75650 ) ( 2589570 * ) + NEW met2 ( 2589570 1700 ) ( * 75650 ) + NEW met1 ( 1974550 75650 ) M1M2_PR + NEW met1 ( 2589570 75650 ) M1M2_PR ; + - la_oenb[111] ( PIN la_oenb[111] ) ( mprj la_oenb[111] ) + USE SIGNAL + + ROUTED met2 ( 2608430 1700 ) ( 2609350 * 0 ) + NEW met2 ( 2608430 1700 ) ( * 75310 ) + NEW met2 ( 1981450 1652740 ) ( 1981910 * ) + NEW met2 ( 1981910 75310 ) ( * 1652740 ) + NEW met2 ( 1980760 1688780 ) ( 1981450 * ) + NEW met2 ( 1980760 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1981450 1652740 ) ( * 1688780 ) + NEW met1 ( 1981910 75310 ) ( 2608430 * ) + NEW met1 ( 2608430 75310 ) M1M2_PR + NEW met1 ( 1981910 75310 ) M1M2_PR ; + - la_oenb[112] ( PIN la_oenb[112] ) ( mprj la_oenb[112] ) + USE SIGNAL + + ROUTED met2 ( 2627290 1700 0 ) ( * 74970 ) + NEW met1 ( 1981450 1652230 ) ( 1986050 * ) + NEW met2 ( 1981450 74970 ) ( * 1652230 ) + NEW met2 ( 1986050 1688780 ) ( 1986210 * ) + NEW met2 ( 1986210 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1986050 1652230 ) ( * 1688780 ) + NEW met1 ( 1981450 74970 ) ( 2627290 * ) + NEW met1 ( 2627290 74970 ) M1M2_PR + NEW met1 ( 1981450 1652230 ) M1M2_PR + NEW met1 ( 1986050 1652230 ) M1M2_PR + NEW met1 ( 1981450 74970 ) M1M2_PR ; + - la_oenb[113] ( PIN la_oenb[113] ) ( mprj la_oenb[113] ) + USE SIGNAL + + ROUTED met2 ( 2642930 1700 ) ( 2645230 * 0 ) + NEW met2 ( 1988810 74630 ) ( * 1580100 ) + NEW met2 ( 1988810 1580100 ) ( 1990190 * ) + NEW met2 ( 1990190 1688780 ) ( 1991730 * ) + NEW met2 ( 1991730 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1990190 1580100 ) ( * 1688780 ) + NEW met1 ( 1988810 74630 ) ( 2642930 * ) + NEW met2 ( 2642930 1700 ) ( * 74630 ) + NEW met1 ( 1988810 74630 ) M1M2_PR + NEW met1 ( 2642930 74630 ) M1M2_PR ; + - la_oenb[114] ( PIN la_oenb[114] ) ( mprj la_oenb[114] ) + USE SIGNAL + + ROUTED met2 ( 2660410 1700 ) ( 2662710 * 0 ) + NEW met2 ( 1995710 1688780 ) ( 1997250 * ) + NEW met2 ( 1997250 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1995710 74290 ) ( * 1688780 ) + NEW met1 ( 1995710 74290 ) ( 2660410 * ) + NEW met2 ( 2660410 1700 ) ( * 74290 ) + NEW met1 ( 1995710 74290 ) M1M2_PR + NEW met1 ( 2660410 74290 ) M1M2_PR ; + - la_oenb[115] ( PIN la_oenb[115] ) ( mprj la_oenb[115] ) + USE SIGNAL + + ROUTED met2 ( 2002150 1688780 ) ( 2002770 * ) + NEW met2 ( 2002770 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2002150 73950 ) ( * 1688780 ) + NEW met1 ( 2002150 73950 ) ( 2680650 * ) + NEW met2 ( 2680650 1700 0 ) ( * 73950 ) + NEW met1 ( 2002150 73950 ) M1M2_PR + NEW met1 ( 2680650 73950 ) M1M2_PR ; + - la_oenb[116] ( PIN la_oenb[116] ) ( mprj la_oenb[116] ) + USE SIGNAL + + ROUTED met2 ( 2698130 1700 0 ) ( * 73610 ) + NEW met2 ( 2008360 1688780 ) ( 2009050 * ) + NEW met2 ( 2008360 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2009050 73610 ) ( * 1688780 ) + NEW met1 ( 2009050 73610 ) ( 2698130 * ) + NEW met1 ( 2698130 73610 ) M1M2_PR + NEW met1 ( 2009050 73610 ) M1M2_PR ; + - la_oenb[117] ( PIN la_oenb[117] ) ( mprj la_oenb[117] ) + USE SIGNAL + + ROUTED met2 ( 2713770 1700 ) ( 2716070 * 0 ) + NEW met2 ( 2713770 1700 ) ( * 73270 ) + NEW met2 ( 2009510 1688780 ) ( 2013810 * ) + NEW met2 ( 2013810 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2009510 73270 ) ( * 1688780 ) + NEW met1 ( 2009510 73270 ) ( 2713770 * ) + NEW met1 ( 2713770 73270 ) M1M2_PR + NEW met1 ( 2009510 73270 ) M1M2_PR ; + - la_oenb[118] ( PIN la_oenb[118] ) ( mprj la_oenb[118] ) + USE SIGNAL + + ROUTED met2 ( 2732630 1700 ) ( 2733550 * 0 ) + NEW met2 ( 2016410 1688780 ) ( 2018870 * ) + NEW met2 ( 2018870 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2016410 72930 ) ( * 1688780 ) + NEW met2 ( 2732630 1700 ) ( * 72930 ) + NEW met1 ( 2016410 72930 ) ( 2732630 * ) + NEW met1 ( 2016410 72930 ) M1M2_PR + NEW met1 ( 2732630 72930 ) M1M2_PR ; + - la_oenb[119] ( PIN la_oenb[119] ) ( mprj la_oenb[119] ) + USE SIGNAL + + ROUTED met1 ( 2021930 1689290 ) ( 2024390 * ) + NEW met2 ( 2024390 1689290 ) ( * 1690140 0 ) + NEW met2 ( 2021930 18190 ) ( * 1689290 ) + NEW met2 ( 2751490 1700 0 ) ( * 18190 ) + NEW met1 ( 2021930 18190 ) ( 2751490 * ) + NEW met1 ( 2021930 18190 ) M1M2_PR + NEW met1 ( 2021930 1689290 ) M1M2_PR + NEW met1 ( 2024390 1689290 ) M1M2_PR + NEW met1 ( 2751490 18190 ) M1M2_PR ; + - la_oenb[11] ( PIN la_oenb[11] ) ( mprj la_oenb[11] ) + USE SIGNAL + + ROUTED met2 ( 836050 1700 0 ) ( * 53890 ) + NEW met1 ( 1428990 1688270 ) ( 1432830 * ) + NEW met1 ( 1432830 1688270 ) ( * 1689290 ) + NEW met2 ( 1432830 1689290 ) ( * 1690140 0 ) + NEW met1 ( 836050 53890 ) ( 1428990 * ) + NEW met2 ( 1428990 53890 ) ( * 1688270 ) + NEW met1 ( 836050 53890 ) M1M2_PR + NEW met1 ( 1428990 1688270 ) M1M2_PR + NEW met1 ( 1432830 1689290 ) M1M2_PR + NEW met1 ( 1428990 53890 ) M1M2_PR ; + - la_oenb[120] ( PIN la_oenb[120] ) ( mprj la_oenb[120] ) + USE SIGNAL + + ROUTED met2 ( 2029980 1688780 ) ( 2030210 * ) + NEW met2 ( 2029980 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2030210 72590 ) ( * 1688780 ) + NEW met1 ( 2030210 72590 ) ( 2768970 * ) + NEW met2 ( 2768970 1700 0 ) ( * 72590 ) + NEW met1 ( 2030210 72590 ) M1M2_PR + NEW met1 ( 2768970 72590 ) M1M2_PR ; + - la_oenb[121] ( PIN la_oenb[121] ) ( mprj la_oenb[121] ) + USE SIGNAL + + ROUTED met1 ( 2028830 1689290 ) ( 2035430 * ) + NEW met2 ( 2035430 1689290 ) ( * 1690140 0 ) + NEW met2 ( 2028830 17510 ) ( * 1689290 ) + NEW met2 ( 2786910 1700 0 ) ( * 17510 ) + NEW met1 ( 2028830 17510 ) ( 2786910 * ) + NEW met1 ( 2028830 17510 ) M1M2_PR + NEW met1 ( 2028830 1689290 ) M1M2_PR + NEW met1 ( 2035430 1689290 ) M1M2_PR + NEW met1 ( 2786910 17510 ) M1M2_PR ; + - la_oenb[122] ( PIN la_oenb[122] ) ( mprj la_oenb[122] ) + USE SIGNAL + + ROUTED met2 ( 2804390 1700 0 ) ( * 18870 ) + NEW met2 ( 2041250 1679430 ) ( * 1688780 ) + NEW met2 ( 2041020 1688780 ) ( 2041250 * ) + NEW met2 ( 2041020 1688780 ) ( * 1690140 0 ) + NEW met1 ( 2094610 18870 ) ( 2804390 * ) + NEW met1 ( 2041250 1679430 ) ( 2094610 * ) + NEW met2 ( 2094610 18870 ) ( * 1679430 ) + NEW met1 ( 2804390 18870 ) M1M2_PR + NEW met1 ( 2041250 1679430 ) M1M2_PR + NEW met1 ( 2094610 18870 ) M1M2_PR + NEW met1 ( 2094610 1679430 ) M1M2_PR ; + - la_oenb[123] ( PIN la_oenb[123] ) ( mprj la_oenb[123] ) + USE SIGNAL + + ROUTED met2 ( 2044010 1688780 ) ( 2046470 * ) + NEW met2 ( 2046470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2044010 72250 ) ( * 1688780 ) + NEW met2 ( 2822330 1700 0 ) ( * 72250 ) + NEW met1 ( 2044010 72250 ) ( 2822330 * ) + NEW met1 ( 2044010 72250 ) M1M2_PR + NEW met1 ( 2822330 72250 ) M1M2_PR ; + - la_oenb[124] ( PIN la_oenb[124] ) ( mprj la_oenb[124] ) + USE SIGNAL + + ROUTED met2 ( 2052290 1679090 ) ( * 1688780 ) + NEW met2 ( 2052060 1688780 ) ( 2052290 * ) + NEW met2 ( 2052060 1688780 ) ( * 1690140 0 ) + NEW met1 ( 2094150 20570 ) ( 2095530 * ) + NEW met2 ( 2095530 17850 ) ( * 20570 ) + NEW met2 ( 2840270 1700 0 ) ( * 17850 ) + NEW met1 ( 2095530 17850 ) ( 2840270 * ) + NEW met1 ( 2052290 1679090 ) ( 2094150 * ) + NEW met2 ( 2094150 20570 ) ( * 1679090 ) + NEW met1 ( 2052290 1679090 ) M1M2_PR + NEW met1 ( 2094150 20570 ) M1M2_PR + NEW met1 ( 2095530 20570 ) M1M2_PR + NEW met1 ( 2095530 17850 ) M1M2_PR + NEW met1 ( 2840270 17850 ) M1M2_PR + NEW met1 ( 2094150 1679090 ) M1M2_PR ; + - la_oenb[125] ( PIN la_oenb[125] ) ( mprj la_oenb[125] ) + USE SIGNAL + + ROUTED met2 ( 2056430 1688780 ) ( 2057510 * ) + NEW met2 ( 2057510 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2056430 17170 ) ( * 1688780 ) + NEW met2 ( 2857750 1700 0 ) ( * 17170 ) + NEW met1 ( 2056430 17170 ) ( 2857750 * ) + NEW met1 ( 2056430 17170 ) M1M2_PR + NEW met1 ( 2857750 17170 ) M1M2_PR ; + - la_oenb[126] ( PIN la_oenb[126] ) ( mprj la_oenb[126] ) + USE SIGNAL + + ROUTED met2 ( 2062870 1679770 ) ( * 1688780 ) + NEW met2 ( 2062870 1688780 ) ( 2063030 * ) + NEW met2 ( 2063030 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2156250 18530 ) ( * 1679770 ) + NEW met2 ( 2875690 1700 0 ) ( * 18530 ) + NEW met1 ( 2156250 18530 ) ( 2875690 * ) + NEW met1 ( 2062870 1679770 ) ( 2156250 * ) + NEW met1 ( 2156250 18530 ) M1M2_PR + NEW met1 ( 2062870 1679770 ) M1M2_PR + NEW met1 ( 2156250 1679770 ) M1M2_PR + NEW met1 ( 2875690 18530 ) M1M2_PR ; + - la_oenb[127] ( PIN la_oenb[127] ) ( mprj la_oenb[127] ) + USE SIGNAL + + ROUTED met2 ( 2893170 1700 0 ) ( * 79390 ) + NEW met2 ( 2064250 79390 ) ( * 1580100 ) + NEW met2 ( 2064250 1580100 ) ( 2068390 * ) + NEW met2 ( 2068390 1688780 ) ( 2068550 * ) + NEW met2 ( 2068550 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2068390 1580100 ) ( * 1688780 ) + NEW met1 ( 2064250 79390 ) ( 2893170 * ) + NEW met1 ( 2893170 79390 ) M1M2_PR + NEW met1 ( 2064250 79390 ) M1M2_PR ; + - la_oenb[12] ( PIN la_oenb[12] ) ( mprj la_oenb[12] ) + USE SIGNAL + + ROUTED met1 ( 1436350 1688270 ) ( * 1689290 ) + NEW met1 ( 1436350 1689290 ) ( 1438350 * ) + NEW met2 ( 1438350 1689290 ) ( * 1690140 0 ) + NEW met2 ( 851690 1700 ) ( 853990 * 0 ) + NEW met2 ( 851690 1700 ) ( * 54230 ) + NEW met1 ( 851690 54230 ) ( 1436350 * ) + NEW met2 ( 1436350 54230 ) ( * 1688270 ) + NEW met1 ( 1436350 1688270 ) M1M2_PR + NEW met1 ( 1438350 1689290 ) M1M2_PR + NEW met1 ( 851690 54230 ) M1M2_PR + NEW met1 ( 1436350 54230 ) M1M2_PR ; + - la_oenb[13] ( PIN la_oenb[13] ) ( mprj la_oenb[13] ) + USE SIGNAL + + ROUTED met2 ( 869630 1700 ) ( 871470 * 0 ) + NEW met2 ( 869630 1700 ) ( * 54570 ) + NEW met2 ( 1442790 1688780 ) ( 1443870 * ) + NEW met2 ( 1443870 1688780 ) ( * 1690140 0 ) + NEW met1 ( 869630 54570 ) ( 1442790 * ) + NEW met2 ( 1442790 54570 ) ( * 1688780 ) + NEW met1 ( 869630 54570 ) M1M2_PR + NEW met1 ( 1442790 54570 ) M1M2_PR ; + - la_oenb[14] ( PIN la_oenb[14] ) ( mprj la_oenb[14] ) + USE SIGNAL + + ROUTED met2 ( 889410 1700 0 ) ( * 20910 ) + NEW met1 ( 883430 20910 ) ( 889410 * ) + NEW met2 ( 883430 20910 ) ( * 54910 ) + NEW met2 ( 1449460 1688780 ) ( 1449690 * ) + NEW met2 ( 1449460 1688780 ) ( * 1690140 0 ) + NEW met1 ( 883430 54910 ) ( 1449690 * ) + NEW met2 ( 1449690 54910 ) ( * 1688780 ) + NEW met1 ( 889410 20910 ) M1M2_PR + NEW met1 ( 883430 20910 ) M1M2_PR + NEW met1 ( 883430 54910 ) M1M2_PR + NEW met1 ( 1449690 54910 ) M1M2_PR ; + - la_oenb[15] ( PIN la_oenb[15] ) ( mprj la_oenb[15] ) + USE SIGNAL + + ROUTED met1 ( 1450150 1688950 ) ( 1454910 * ) + NEW met2 ( 1454910 1688950 ) ( * 1690140 0 ) + NEW met2 ( 905050 1700 ) ( 907350 * 0 ) + NEW met2 ( 905050 1700 ) ( * 51170 ) + NEW met1 ( 905050 51170 ) ( 1450150 * ) + NEW met2 ( 1450150 51170 ) ( * 1688950 ) + NEW met1 ( 1450150 1688950 ) M1M2_PR + NEW met1 ( 1454910 1688950 ) M1M2_PR + NEW met1 ( 905050 51170 ) M1M2_PR + NEW met1 ( 1450150 51170 ) M1M2_PR ; + - la_oenb[16] ( PIN la_oenb[16] ) ( mprj la_oenb[16] ) + USE SIGNAL + + ROUTED met2 ( 1457970 82800 ) ( 1458890 * ) + NEW met2 ( 1457970 82800 ) ( * 1580100 ) + NEW met2 ( 1457970 1580100 ) ( 1459810 * ) + NEW met2 ( 1459810 1688780 ) ( 1460430 * ) + NEW met2 ( 1460430 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1459810 1580100 ) ( * 1688780 ) + NEW met2 ( 924830 1700 0 ) ( * 50830 ) + NEW met1 ( 924830 50830 ) ( 1458890 * ) + NEW met2 ( 1458890 50830 ) ( * 82800 ) + NEW met1 ( 924830 50830 ) M1M2_PR + NEW met1 ( 1458890 50830 ) M1M2_PR ; + - la_oenb[17] ( PIN la_oenb[17] ) ( mprj la_oenb[17] ) + USE SIGNAL + + ROUTED met2 ( 1464410 1688780 ) ( 1465950 * ) + NEW met2 ( 1465950 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1464410 50490 ) ( * 1688780 ) + NEW met2 ( 942770 1700 0 ) ( * 17340 ) + NEW met2 ( 941390 17340 ) ( 942770 * ) + NEW met2 ( 941390 17340 ) ( * 50490 ) + NEW met1 ( 941390 50490 ) ( 1464410 * ) + NEW met1 ( 1464410 50490 ) M1M2_PR + NEW met1 ( 941390 50490 ) M1M2_PR ; + - la_oenb[18] ( PIN la_oenb[18] ) ( mprj la_oenb[18] ) + USE SIGNAL + + ROUTED met2 ( 959330 82800 ) ( * 88570 ) + NEW met2 ( 959330 82800 ) ( 960250 * ) + NEW met2 ( 960250 1700 0 ) ( * 82800 ) + NEW met2 ( 1471310 1688780 ) ( 1471470 * ) + NEW met2 ( 1471470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1471310 88570 ) ( * 1688780 ) + NEW met1 ( 959330 88570 ) ( 1471310 * ) + NEW met1 ( 959330 88570 ) M1M2_PR + NEW met1 ( 1471310 88570 ) M1M2_PR ; + - la_oenb[19] ( PIN la_oenb[19] ) ( mprj la_oenb[19] ) + USE SIGNAL + + ROUTED met2 ( 975890 1700 ) ( 978190 * 0 ) + NEW met2 ( 973130 82800 ) ( * 88910 ) + NEW met2 ( 973130 82800 ) ( 975890 * ) + NEW met2 ( 975890 1700 ) ( * 82800 ) + NEW met1 ( 1470850 1689290 ) ( 1476530 * ) + NEW met2 ( 1476530 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1470850 88910 ) ( * 1689290 ) + NEW met1 ( 973130 88910 ) ( 1470850 * ) + NEW met1 ( 973130 88910 ) M1M2_PR + NEW met1 ( 1470850 88910 ) M1M2_PR + NEW met1 ( 1470850 1689290 ) M1M2_PR + NEW met1 ( 1476530 1689290 ) M1M2_PR ; + - la_oenb[1] ( PIN la_oenb[1] ) ( mprj la_oenb[1] ) + USE SIGNAL + + ROUTED met2 ( 1374710 1688780 ) ( 1378090 * ) + NEW met2 ( 1378090 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1374710 86020 ) ( * 1688780 ) + NEW met2 ( 656650 1700 ) ( 658950 * 0 ) + NEW met3 ( 655730 86020 ) ( 1374710 * ) + NEW met2 ( 655730 82800 ) ( * 86020 ) + NEW met2 ( 655730 82800 ) ( 656650 * ) + NEW met2 ( 656650 1700 ) ( * 82800 ) + NEW met2 ( 1374710 86020 ) M2M3_PR + NEW met2 ( 655730 86020 ) M2M3_PR ; + - la_oenb[20] ( PIN la_oenb[20] ) ( mprj la_oenb[20] ) + USE SIGNAL + + ROUTED met2 ( 993830 1700 ) ( 995670 * 0 ) + NEW met2 ( 993830 1700 ) ( * 92310 ) + NEW met2 ( 1477750 92310 ) ( * 1580100 ) + NEW met2 ( 1477750 1580100 ) ( 1481890 * ) + NEW met2 ( 1481890 1688780 ) ( 1482050 * ) + NEW met2 ( 1482050 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1481890 1580100 ) ( * 1688780 ) + NEW met1 ( 993830 92310 ) ( 1477750 * ) + NEW met1 ( 993830 92310 ) M1M2_PR + NEW met1 ( 1477750 92310 ) M1M2_PR ; + - la_oenb[21] ( PIN la_oenb[21] ) ( mprj la_oenb[21] ) + USE SIGNAL + + ROUTED met1 ( 1007630 91970 ) ( 1485110 * ) + NEW met1 ( 1007630 58310 ) ( 1013610 * ) + NEW met2 ( 1007630 58310 ) ( * 91970 ) + NEW met2 ( 1013610 1700 0 ) ( * 58310 ) + NEW met2 ( 1485110 91970 ) ( * 1580100 ) + NEW met2 ( 1485110 1580100 ) ( 1486950 * ) + NEW met2 ( 1486950 1688780 ) ( 1487570 * ) + NEW met2 ( 1487570 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1486950 1580100 ) ( * 1688780 ) + NEW met1 ( 1007630 91970 ) M1M2_PR + NEW met1 ( 1485110 91970 ) M1M2_PR + NEW met1 ( 1007630 58310 ) M1M2_PR + NEW met1 ( 1013610 58310 ) M1M2_PR ; + - la_oenb[22] ( PIN la_oenb[22] ) ( mprj la_oenb[22] ) + USE SIGNAL + + ROUTED met1 ( 1490630 1651890 ) ( * 1653930 ) + NEW met1 ( 1490630 1651890 ) ( 1491090 * ) + NEW met2 ( 1031090 1700 0 ) ( * 60350 ) + NEW met2 ( 1491090 60350 ) ( * 1651890 ) + NEW met1 ( 1490630 1689290 ) ( 1493090 * ) + NEW met2 ( 1493090 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1490630 1653930 ) ( * 1689290 ) + NEW met1 ( 1031090 60350 ) ( 1491090 * ) + NEW met1 ( 1490630 1653930 ) M1M2_PR + NEW met1 ( 1491090 1651890 ) M1M2_PR + NEW met1 ( 1031090 60350 ) M1M2_PR + NEW met1 ( 1491090 60350 ) M1M2_PR + NEW met1 ( 1490630 1689290 ) M1M2_PR + NEW met1 ( 1493090 1689290 ) M1M2_PR ; + - la_oenb[23] ( PIN la_oenb[23] ) ( mprj la_oenb[23] ) + USE SIGNAL + + ROUTED met2 ( 1049030 1700 0 ) ( * 60690 ) + NEW met2 ( 1498450 1688780 ) ( 1498610 * ) + NEW met2 ( 1498610 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1498450 60690 ) ( * 1688780 ) + NEW met1 ( 1049030 60690 ) ( 1498450 * ) + NEW met1 ( 1049030 60690 ) M1M2_PR + NEW met1 ( 1498450 60690 ) M1M2_PR ; + - la_oenb[24] ( PIN la_oenb[24] ) ( mprj la_oenb[24] ) + USE SIGNAL + + ROUTED met2 ( 1066970 1700 0 ) ( * 61030 ) + NEW met1 ( 1497990 1652570 ) ( 1503970 * ) + NEW met2 ( 1497990 61030 ) ( * 1652570 ) + NEW met2 ( 1503970 1688780 ) ( 1504130 * ) + NEW met2 ( 1504130 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1503970 1652570 ) ( * 1688780 ) + NEW met1 ( 1066970 61030 ) ( 1497990 * ) + NEW met1 ( 1066970 61030 ) M1M2_PR + NEW met1 ( 1497990 1652570 ) M1M2_PR + NEW met1 ( 1503970 1652570 ) M1M2_PR + NEW met1 ( 1497990 61030 ) M1M2_PR ; + - la_oenb[25] ( PIN la_oenb[25] ) ( mprj la_oenb[25] ) + USE SIGNAL + + ROUTED met2 ( 1084450 1700 0 ) ( * 61370 ) + NEW met1 ( 1504890 1688950 ) ( 1509650 * ) + NEW met2 ( 1509650 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1504890 61370 ) ( * 1688950 ) + NEW met1 ( 1084450 61370 ) ( 1504890 * ) + NEW met1 ( 1084450 61370 ) M1M2_PR + NEW met1 ( 1504890 61370 ) M1M2_PR + NEW met1 ( 1504890 1688950 ) M1M2_PR + NEW met1 ( 1509650 1688950 ) M1M2_PR ; + - la_oenb[26] ( PIN la_oenb[26] ) ( mprj la_oenb[26] ) + USE SIGNAL + + ROUTED met2 ( 1100090 1700 ) ( 1102390 * 0 ) + NEW met2 ( 1100090 1700 ) ( * 61710 ) + NEW met2 ( 1512250 61710 ) ( * 1676700 ) + NEW met2 ( 1512250 1676700 ) ( 1515010 * ) + NEW met2 ( 1515010 1676700 ) ( * 1688780 ) + NEW met2 ( 1515010 1688780 ) ( 1515170 * ) + NEW met2 ( 1515170 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1100090 61710 ) ( 1512250 * ) + NEW met1 ( 1100090 61710 ) M1M2_PR + NEW met1 ( 1512250 61710 ) M1M2_PR ; + - la_oenb[27] ( PIN la_oenb[27] ) ( mprj la_oenb[27] ) + USE SIGNAL + + ROUTED met2 ( 1118030 1700 ) ( 1119870 * 0 ) + NEW met2 ( 1118030 1700 ) ( * 62050 ) + NEW met2 ( 1519150 1688780 ) ( 1520690 * ) + NEW met2 ( 1520690 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1519150 62050 ) ( * 1688780 ) + NEW met1 ( 1118030 62050 ) ( 1519150 * ) + NEW met1 ( 1118030 62050 ) M1M2_PR + NEW met1 ( 1519150 62050 ) M1M2_PR ; + - la_oenb[28] ( PIN la_oenb[28] ) ( mprj la_oenb[28] ) + USE SIGNAL + + ROUTED met2 ( 1137810 1700 0 ) ( * 20910 ) + NEW met1 ( 1131830 20910 ) ( 1137810 * ) + NEW met2 ( 1131830 20910 ) ( * 58310 ) + NEW met2 ( 1525590 1688780 ) ( 1526210 * ) + NEW met2 ( 1526210 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1525590 58310 ) ( * 1688780 ) + NEW met1 ( 1131830 58310 ) ( 1525590 * ) + NEW met1 ( 1137810 20910 ) M1M2_PR + NEW met1 ( 1131830 20910 ) M1M2_PR + NEW met1 ( 1131830 58310 ) M1M2_PR + NEW met1 ( 1525590 58310 ) M1M2_PR ; + - la_oenb[29] ( PIN la_oenb[29] ) ( mprj la_oenb[29] ) + USE SIGNAL + + ROUTED met2 ( 1155290 1700 0 ) ( * 57970 ) + NEW met1 ( 1526050 1652570 ) ( 1531570 * ) + NEW met2 ( 1526050 57970 ) ( * 1652570 ) + NEW met2 ( 1531570 1688780 ) ( 1531730 * ) + NEW met2 ( 1531730 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1531570 1652570 ) ( * 1688780 ) + NEW met1 ( 1155290 57970 ) ( 1526050 * ) + NEW met1 ( 1155290 57970 ) M1M2_PR + NEW met1 ( 1526050 1652570 ) M1M2_PR + NEW met1 ( 1531570 1652570 ) M1M2_PR + NEW met1 ( 1526050 57970 ) M1M2_PR ; + - la_oenb[2] ( PIN la_oenb[2] ) ( mprj la_oenb[2] ) + USE SIGNAL + + ROUTED met2 ( 676430 1700 0 ) ( * 59670 ) + NEW met2 ( 1381610 59670 ) ( * 1580100 ) + NEW met2 ( 1381610 1580100 ) ( 1382990 * ) + NEW met2 ( 1382990 1688780 ) ( 1383610 * ) + NEW met2 ( 1383610 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1382990 1580100 ) ( * 1688780 ) + NEW met1 ( 676430 59670 ) ( 1381610 * ) + NEW met1 ( 676430 59670 ) M1M2_PR + NEW met1 ( 1381610 59670 ) M1M2_PR ; + - la_oenb[30] ( PIN la_oenb[30] ) ( mprj la_oenb[30] ) + USE SIGNAL + + ROUTED met2 ( 1173230 1700 0 ) ( * 17340 ) + NEW met2 ( 1173230 17340 ) ( 1174610 * ) + NEW met1 ( 1533410 1652570 ) ( 1536630 * ) + NEW met2 ( 1174610 17340 ) ( * 57630 ) + NEW met2 ( 1533410 57630 ) ( * 1652570 ) + NEW met2 ( 1536630 1688780 ) ( 1536790 * ) + NEW met2 ( 1536790 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1536630 1652570 ) ( * 1688780 ) + NEW met1 ( 1174610 57630 ) ( 1533410 * ) + NEW met1 ( 1533410 1652570 ) M1M2_PR + NEW met1 ( 1536630 1652570 ) M1M2_PR + NEW met1 ( 1174610 57630 ) M1M2_PR + NEW met1 ( 1533410 57630 ) M1M2_PR ; + - la_oenb[31] ( PIN la_oenb[31] ) ( mprj la_oenb[31] ) + USE SIGNAL + + ROUTED met2 ( 1190710 1700 0 ) ( * 44710 ) + NEW met2 ( 1539850 44710 ) ( * 1580100 ) + NEW met2 ( 1539850 1580100 ) ( 1541230 * ) + NEW met2 ( 1541230 1688780 ) ( 1542310 * ) + NEW met2 ( 1542310 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1541230 1580100 ) ( * 1688780 ) + NEW met1 ( 1190710 44710 ) ( 1539850 * ) + NEW met1 ( 1190710 44710 ) M1M2_PR + NEW met1 ( 1539850 44710 ) M1M2_PR ; + - la_oenb[32] ( PIN la_oenb[32] ) ( mprj la_oenb[32] ) + USE SIGNAL + + ROUTED met1 ( 1546750 1652910 ) ( * 1653930 ) + NEW met2 ( 1546750 17170 ) ( * 1652910 ) + NEW met2 ( 1546750 1688780 ) ( 1547830 * ) + NEW met2 ( 1547830 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1546750 1653930 ) ( * 1688780 ) + NEW met2 ( 1208650 1700 0 ) ( * 17170 ) + NEW met1 ( 1208650 17170 ) ( 1546750 * ) + NEW met1 ( 1546750 17170 ) M1M2_PR + NEW met1 ( 1546750 1652910 ) M1M2_PR + NEW met1 ( 1546750 1653930 ) M1M2_PR + NEW met1 ( 1208650 17170 ) M1M2_PR ; + - la_oenb[33] ( PIN la_oenb[33] ) ( mprj la_oenb[33] ) + USE SIGNAL + + ROUTED met2 ( 1372870 18530 ) ( * 37910 ) + NEW met2 ( 1553420 1688780 ) ( 1554110 * ) + NEW met2 ( 1553420 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1554110 37910 ) ( * 1688780 ) + NEW met2 ( 1226130 1700 0 ) ( * 18530 ) + NEW met1 ( 1226130 18530 ) ( 1372870 * ) + NEW met1 ( 1372870 37910 ) ( 1554110 * ) + NEW met1 ( 1372870 18530 ) M1M2_PR + NEW met1 ( 1372870 37910 ) M1M2_PR + NEW met1 ( 1554110 37910 ) M1M2_PR + NEW met1 ( 1226130 18530 ) M1M2_PR ; + - la_oenb[34] ( PIN la_oenb[34] ) ( mprj la_oenb[34] ) + USE SIGNAL + + ROUTED met2 ( 1244070 1700 0 ) ( * 19550 ) + NEW met1 ( 1553650 1652570 ) ( 1558710 * ) + NEW met2 ( 1376550 19550 ) ( * 38250 ) + NEW met2 ( 1553650 38250 ) ( * 1652570 ) + NEW met2 ( 1558710 1688780 ) ( 1558870 * ) + NEW met2 ( 1558870 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1558710 1652570 ) ( * 1688780 ) + NEW met1 ( 1244070 19550 ) ( 1376550 * ) + NEW met1 ( 1376550 38250 ) ( 1553650 * ) + NEW met1 ( 1244070 19550 ) M1M2_PR + NEW met1 ( 1376550 19550 ) M1M2_PR + NEW met1 ( 1553650 1652570 ) M1M2_PR + NEW met1 ( 1558710 1652570 ) M1M2_PR + NEW met1 ( 1376550 38250 ) M1M2_PR + NEW met1 ( 1553650 38250 ) M1M2_PR ; + - la_oenb[35] ( PIN la_oenb[35] ) ( mprj la_oenb[35] ) + USE SIGNAL + + ROUTED met2 ( 1262010 1700 0 ) ( * 19210 ) + NEW met1 ( 1560090 1688950 ) ( 1564390 * ) + NEW met2 ( 1564390 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1560090 38590 ) ( * 1688950 ) + NEW met1 ( 1262010 19210 ) ( 1387590 * ) + NEW met2 ( 1387590 19210 ) ( * 38590 ) + NEW met1 ( 1387590 38590 ) ( 1560090 * ) + NEW met1 ( 1262010 19210 ) M1M2_PR + NEW met1 ( 1560090 38590 ) M1M2_PR + NEW met1 ( 1560090 1688950 ) M1M2_PR + NEW met1 ( 1564390 1688950 ) M1M2_PR + NEW met1 ( 1387590 19210 ) M1M2_PR + NEW met1 ( 1387590 38590 ) M1M2_PR ; + - la_oenb[36] ( PIN la_oenb[36] ) ( mprj la_oenb[36] ) + USE SIGNAL + + ROUTED met2 ( 1279490 1700 0 ) ( * 18870 ) + NEW met2 ( 1567450 38930 ) ( * 1580100 ) + NEW met2 ( 1567450 1580100 ) ( 1569290 * ) + NEW met2 ( 1569290 1688780 ) ( 1569910 * ) + NEW met2 ( 1569910 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1569290 1580100 ) ( * 1688780 ) + NEW met2 ( 1419330 18870 ) ( * 38930 ) + NEW met1 ( 1279490 18870 ) ( 1419330 * ) + NEW met1 ( 1419330 38930 ) ( 1567450 * ) + NEW met1 ( 1279490 18870 ) M1M2_PR + NEW met1 ( 1567450 38930 ) M1M2_PR + NEW met1 ( 1419330 18870 ) M1M2_PR + NEW met1 ( 1419330 38930 ) M1M2_PR ; + - la_oenb[37] ( PIN la_oenb[37] ) ( mprj la_oenb[37] ) + USE SIGNAL + + ROUTED met2 ( 1342050 16150 ) ( * 1681810 ) + NEW met2 ( 1532030 1678070 ) ( * 1681810 ) + NEW met1 ( 1532030 1678070 ) ( 1575270 * ) + NEW met2 ( 1575270 1678070 ) ( * 1688780 ) + NEW met2 ( 1575270 1688780 ) ( 1575430 * ) + NEW met2 ( 1575430 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1297430 1700 0 ) ( * 16150 ) + NEW met1 ( 1297430 16150 ) ( 1342050 * ) + NEW met1 ( 1342050 1681810 ) ( 1532030 * ) + NEW met1 ( 1342050 16150 ) M1M2_PR + NEW met1 ( 1342050 1681810 ) M1M2_PR + NEW met1 ( 1532030 1681810 ) M1M2_PR + NEW met1 ( 1532030 1678070 ) M1M2_PR + NEW met1 ( 1575270 1678070 ) M1M2_PR + NEW met1 ( 1297430 16150 ) M1M2_PR ; + - la_oenb[38] ( PIN la_oenb[38] ) ( mprj la_oenb[38] ) + USE SIGNAL + + ROUTED met2 ( 1312610 1700 ) ( 1314910 * 0 ) + NEW met2 ( 1312610 1700 ) ( * 2380 ) + NEW met2 ( 1311230 2380 ) ( 1312610 * ) + NEW met2 ( 1311230 2380 ) ( * 1679940 ) + NEW met2 ( 1580330 1679940 ) ( * 1689460 ) + NEW met2 ( 1580330 1689460 ) ( 1580950 * ) + NEW met2 ( 1580950 1689460 ) ( * 1690140 0 ) + NEW met3 ( 1311230 1679940 ) ( 1580330 * ) + NEW met2 ( 1311230 1679940 ) M2M3_PR + NEW met2 ( 1580330 1679940 ) M2M3_PR ; + - la_oenb[39] ( PIN la_oenb[39] ) ( mprj la_oenb[39] ) + USE SIGNAL + + ROUTED met1 ( 1555490 1680450 ) ( * 1681130 ) + NEW met2 ( 1332850 1700 0 ) ( 1333770 * ) + NEW met2 ( 1333770 1700 ) ( * 1680450 ) + NEW met1 ( 1333770 1680450 ) ( 1555490 * ) + NEW met2 ( 1586310 1681130 ) ( * 1688780 ) + NEW met2 ( 1586310 1688780 ) ( 1586470 * ) + NEW met2 ( 1586470 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1555490 1681130 ) ( 1586310 * ) + NEW met1 ( 1333770 1680450 ) M1M2_PR + NEW met1 ( 1586310 1681130 ) M1M2_PR ; + - la_oenb[3] ( PIN la_oenb[3] ) ( mprj la_oenb[3] ) + USE SIGNAL + + ROUTED met2 ( 694370 1700 0 ) ( * 60010 ) + NEW met1 ( 694370 60010 ) ( 1388510 * ) + NEW met2 ( 1388510 1688780 ) ( 1389130 * ) + NEW met2 ( 1389130 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1388510 60010 ) ( * 1688780 ) + NEW met1 ( 694370 60010 ) M1M2_PR + NEW met1 ( 1388510 60010 ) M1M2_PR ; + - la_oenb[40] ( PIN la_oenb[40] ) ( mprj la_oenb[40] ) + USE SIGNAL + + ROUTED met2 ( 1347110 82800 ) ( 1350330 * ) + NEW met2 ( 1350330 1700 0 ) ( * 82800 ) + NEW met2 ( 1347110 82800 ) ( * 1681470 ) + NEW met1 ( 1532490 1681470 ) ( * 1681810 ) + NEW met1 ( 1532490 1681810 ) ( 1551350 * ) + NEW met2 ( 1551350 1681810 ) ( * 1681980 ) + NEW met2 ( 1551350 1681980 ) ( 1551810 * ) + NEW met2 ( 1551810 1681980 ) ( * 1682830 ) + NEW met1 ( 1347110 1681470 ) ( 1532490 * ) + NEW met2 ( 1591830 1682830 ) ( * 1688780 ) + NEW met2 ( 1591830 1688780 ) ( 1591990 * ) + NEW met2 ( 1591990 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1551810 1682830 ) ( 1591830 * ) + NEW met1 ( 1347110 1681470 ) M1M2_PR + NEW met1 ( 1551350 1681810 ) M1M2_PR + NEW met1 ( 1551810 1682830 ) M1M2_PR + NEW met1 ( 1591830 1682830 ) M1M2_PR ; + - la_oenb[41] ( PIN la_oenb[41] ) ( mprj la_oenb[41] ) + USE SIGNAL + + ROUTED met2 ( 1368270 1700 0 ) ( * 1682150 ) + NEW met2 ( 1596890 1682150 ) ( * 1688780 ) + NEW met2 ( 1596890 1688780 ) ( 1597050 * ) + NEW met2 ( 1597050 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1368270 1682150 ) ( 1596890 * ) + NEW met1 ( 1368270 1682150 ) M1M2_PR + NEW met1 ( 1596890 1682150 ) M1M2_PR ; + - la_oenb[42] ( PIN la_oenb[42] ) ( mprj la_oenb[42] ) + USE SIGNAL + + ROUTED met2 ( 1383910 1700 ) ( 1385750 * 0 ) + NEW met1 ( 1380230 58650 ) ( 1383910 * ) + NEW met2 ( 1383910 1700 ) ( * 58650 ) + NEW met2 ( 1380230 58650 ) ( * 1682490 ) + NEW met2 ( 1601030 1682490 ) ( * 1689460 ) + NEW met2 ( 1601030 1689460 ) ( 1602570 * ) + NEW met2 ( 1602570 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1380230 1682490 ) ( 1601030 * ) + NEW met1 ( 1380230 58650 ) M1M2_PR + NEW met1 ( 1383910 58650 ) M1M2_PR + NEW met1 ( 1380230 1682490 ) M1M2_PR + NEW met1 ( 1601030 1682490 ) M1M2_PR ; + - la_oenb[43] ( PIN la_oenb[43] ) ( mprj la_oenb[43] ) + USE SIGNAL + + ROUTED met2 ( 1400930 82800 ) ( 1403690 * ) + NEW met2 ( 1403690 1700 0 ) ( * 82800 ) + NEW met2 ( 1400930 82800 ) ( * 1683170 ) + NEW met2 ( 1607930 1683170 ) ( * 1689460 ) + NEW met2 ( 1607930 1689460 ) ( 1608090 * ) + NEW met2 ( 1608090 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1400930 1683170 ) ( 1607930 * ) + NEW met1 ( 1400930 1683170 ) M1M2_PR + NEW met1 ( 1607930 1683170 ) M1M2_PR ; + - la_oenb[44] ( PIN la_oenb[44] ) ( mprj la_oenb[44] ) + USE SIGNAL + + ROUTED met1 ( 1608390 1688950 ) ( 1613610 * ) + NEW met2 ( 1613610 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1608390 18870 ) ( * 1688950 ) + NEW met2 ( 1421630 1700 0 ) ( * 18870 ) + NEW met1 ( 1421630 18870 ) ( 1608390 * ) + NEW met1 ( 1608390 18870 ) M1M2_PR + NEW met1 ( 1608390 1688950 ) M1M2_PR + NEW met1 ( 1613610 1688950 ) M1M2_PR + NEW met1 ( 1421630 18870 ) M1M2_PR ; + - la_oenb[45] ( PIN la_oenb[45] ) ( mprj la_oenb[45] ) + USE SIGNAL + + ROUTED met2 ( 1616210 1688780 ) ( 1619130 * ) + NEW met2 ( 1619130 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1616210 19210 ) ( * 1688780 ) + NEW met2 ( 1439110 1700 0 ) ( * 19210 ) + NEW met1 ( 1439110 19210 ) ( 1616210 * ) + NEW met1 ( 1616210 19210 ) M1M2_PR + NEW met1 ( 1439110 19210 ) M1M2_PR ; + - la_oenb[46] ( PIN la_oenb[46] ) ( mprj la_oenb[46] ) + USE SIGNAL + + ROUTED met1 ( 1456130 1683510 ) ( 1469470 * ) + NEW met1 ( 1469470 1683510 ) ( * 1683850 ) + NEW met1 ( 1469470 1683850 ) ( 1473610 * ) + NEW met1 ( 1473610 1683510 ) ( * 1683850 ) + NEW met2 ( 1624490 1683510 ) ( * 1688780 ) + NEW met2 ( 1624490 1688780 ) ( 1624650 * ) + NEW met2 ( 1624650 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1473610 1683510 ) ( 1624490 * ) + NEW met2 ( 1457050 1700 0 ) ( * 13800 ) + NEW met2 ( 1456130 13800 ) ( 1457050 * ) + NEW met2 ( 1456130 13800 ) ( * 1683510 ) + NEW met1 ( 1456130 1683510 ) M1M2_PR + NEW met1 ( 1624490 1683510 ) M1M2_PR ; + - la_oenb[47] ( PIN la_oenb[47] ) ( mprj la_oenb[47] ) + USE SIGNAL + + ROUTED met2 ( 1474530 1700 0 ) ( * 16150 ) + NEW met2 ( 1563310 82800 ) ( 1563770 * ) + NEW met2 ( 1563770 16150 ) ( * 82800 ) + NEW met2 ( 1563310 82800 ) ( * 1678410 ) + NEW met2 ( 1628630 1678410 ) ( * 1689460 ) + NEW met2 ( 1628630 1689460 ) ( 1630170 * ) + NEW met2 ( 1630170 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1474530 16150 ) ( 1563770 * ) + NEW met1 ( 1563310 1678410 ) ( 1628630 * ) + NEW met1 ( 1474530 16150 ) M1M2_PR + NEW met1 ( 1563770 16150 ) M1M2_PR + NEW met1 ( 1563310 1678410 ) M1M2_PR + NEW met1 ( 1628630 1678410 ) M1M2_PR ; + - la_oenb[48] ( PIN la_oenb[48] ) ( mprj la_oenb[48] ) + USE SIGNAL + + ROUTED met2 ( 1576650 16830 ) ( * 1681810 ) + NEW met2 ( 1635530 1681810 ) ( * 1689460 ) + NEW met2 ( 1635530 1689460 ) ( 1635690 * ) + NEW met2 ( 1635690 1689460 ) ( * 1690140 0 ) + NEW met2 ( 1492470 1700 0 ) ( * 16830 ) + NEW met1 ( 1492470 16830 ) ( 1576650 * ) + NEW met1 ( 1576650 1681810 ) ( 1635530 * ) + NEW met1 ( 1576650 16830 ) M1M2_PR + NEW met1 ( 1576650 1681810 ) M1M2_PR + NEW met1 ( 1635530 1681810 ) M1M2_PR + NEW met1 ( 1492470 16830 ) M1M2_PR ; + - la_oenb[49] ( PIN la_oenb[49] ) ( mprj la_oenb[49] ) + USE SIGNAL + + ROUTED met1 ( 1635990 1688950 ) ( 1641210 * ) + NEW met2 ( 1641210 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1635990 18020 ) ( * 1688950 ) + NEW met2 ( 1509950 1700 0 ) ( * 16660 ) + NEW met3 ( 1509950 16660 ) ( 1580100 * ) + NEW met3 ( 1580100 16660 ) ( * 18020 ) + NEW met3 ( 1580100 18020 ) ( 1635990 * ) + NEW met2 ( 1635990 18020 ) M2M3_PR + NEW met1 ( 1635990 1688950 ) M1M2_PR + NEW met1 ( 1641210 1688950 ) M1M2_PR + NEW met2 ( 1509950 16660 ) M2M3_PR ; + - la_oenb[4] ( PIN la_oenb[4] ) ( mprj la_oenb[4] ) + USE SIGNAL + + ROUTED met2 ( 710930 1700 ) ( 712310 * 0 ) + NEW met1 ( 710930 86190 ) ( 1394490 * ) + NEW met2 ( 710930 1700 ) ( * 86190 ) + NEW met2 ( 1394490 1688780 ) ( 1394650 * ) + NEW met2 ( 1394650 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1394490 86190 ) ( * 1688780 ) + NEW met1 ( 710930 86190 ) M1M2_PR + NEW met1 ( 1394490 86190 ) M1M2_PR ; + - la_oenb[50] ( PIN la_oenb[50] ) ( mprj la_oenb[50] ) + USE SIGNAL + + ROUTED met1 ( 1642430 1652230 ) ( * 1653250 ) + NEW met1 ( 1642430 1653250 ) ( 1642890 * ) + NEW met2 ( 1642430 19890 ) ( * 1652230 ) + NEW met1 ( 1642890 1688270 ) ( 1646730 * ) + NEW met1 ( 1646730 1688270 ) ( * 1689290 ) + NEW met2 ( 1646730 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1642890 1653250 ) ( * 1688270 ) + NEW met2 ( 1527890 1700 0 ) ( * 19890 ) + NEW met1 ( 1527890 19890 ) ( 1642430 * ) + NEW met1 ( 1642430 19890 ) M1M2_PR + NEW met1 ( 1642430 1652230 ) M1M2_PR + NEW met1 ( 1642890 1653250 ) M1M2_PR + NEW met1 ( 1642890 1688270 ) M1M2_PR + NEW met1 ( 1646730 1689290 ) M1M2_PR + NEW met1 ( 1527890 19890 ) M1M2_PR ; + - la_oenb[51] ( PIN la_oenb[51] ) ( mprj la_oenb[51] ) + USE SIGNAL + + ROUTED met2 ( 1545370 1700 0 ) ( * 20570 ) + NEW met2 ( 1650710 1688780 ) ( 1652250 * ) + NEW met2 ( 1652250 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1650710 20570 ) ( * 1688780 ) + NEW met1 ( 1545370 20570 ) ( 1650710 * ) + NEW met1 ( 1545370 20570 ) M1M2_PR + NEW met1 ( 1650710 20570 ) M1M2_PR ; + - la_oenb[52] ( PIN la_oenb[52] ) ( mprj la_oenb[52] ) + USE SIGNAL + + ROUTED met2 ( 1563310 1700 0 ) ( * 17510 ) + NEW met2 ( 1657610 17510 ) ( * 34500 ) + NEW met2 ( 1657610 34500 ) ( 1658070 * ) + NEW met2 ( 1657380 1688780 ) ( 1658070 * ) + NEW met2 ( 1657380 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1658070 34500 ) ( * 1688780 ) + NEW met1 ( 1563310 17510 ) ( 1657610 * ) + NEW met1 ( 1563310 17510 ) M1M2_PR + NEW met1 ( 1657610 17510 ) M1M2_PR ; + - la_oenb[53] ( PIN la_oenb[53] ) ( mprj la_oenb[53] ) + USE SIGNAL + + ROUTED met1 ( 1657150 1652570 ) ( 1662670 * ) + NEW met2 ( 1657150 16830 ) ( * 1652570 ) + NEW met2 ( 1662670 1688780 ) ( 1662830 * ) + NEW met2 ( 1662830 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1662670 1652570 ) ( * 1688780 ) + NEW met2 ( 1581250 1700 0 ) ( * 16830 ) + NEW met1 ( 1581250 16830 ) ( 1657150 * ) + NEW met1 ( 1657150 16830 ) M1M2_PR + NEW met1 ( 1657150 1652570 ) M1M2_PR + NEW met1 ( 1662670 1652570 ) M1M2_PR + NEW met1 ( 1581250 16830 ) M1M2_PR ; + - la_oenb[54] ( PIN la_oenb[54] ) ( mprj la_oenb[54] ) + USE SIGNAL + + ROUTED met2 ( 1668190 1682830 ) ( * 1688780 ) + NEW met2 ( 1668190 1688780 ) ( 1668350 * ) + NEW met2 ( 1668350 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1595970 82800 ) ( 1598730 * ) + NEW met2 ( 1598730 1700 0 ) ( * 82800 ) + NEW met2 ( 1595970 82800 ) ( * 1682830 ) + NEW met1 ( 1595970 1682830 ) ( 1668190 * ) + NEW met1 ( 1668190 1682830 ) M1M2_PR + NEW met1 ( 1595970 1682830 ) M1M2_PR ; + - la_oenb[55] ( PIN la_oenb[55] ) ( mprj la_oenb[55] ) + USE SIGNAL + + ROUTED met2 ( 1644730 15810 ) ( * 18190 ) + NEW met1 ( 1644730 18190 ) ( 1670030 * ) + NEW met1 ( 1670030 1652910 ) ( 1673710 * ) + NEW met2 ( 1670030 18190 ) ( * 1652910 ) + NEW met2 ( 1673710 1688780 ) ( 1673870 * ) + NEW met2 ( 1673870 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1673710 1652910 ) ( * 1688780 ) + NEW met2 ( 1616670 1700 0 ) ( * 15810 ) + NEW met1 ( 1616670 15810 ) ( 1644730 * ) + NEW met1 ( 1644730 15810 ) M1M2_PR + NEW met1 ( 1644730 18190 ) M1M2_PR + NEW met1 ( 1670030 18190 ) M1M2_PR + NEW met1 ( 1670030 1652910 ) M1M2_PR + NEW met1 ( 1673710 1652910 ) M1M2_PR + NEW met1 ( 1616670 15810 ) M1M2_PR ; + - la_oenb[56] ( PIN la_oenb[56] ) ( mprj la_oenb[56] ) + USE SIGNAL + + ROUTED met2 ( 1634150 1700 0 ) ( * 19550 ) + NEW met1 ( 1634150 19550 ) ( 1642890 * ) + NEW met1 ( 1642890 19550 ) ( * 19890 ) + NEW met1 ( 1642890 19890 ) ( 1677850 * ) + NEW met2 ( 1677850 1688780 ) ( 1679390 * ) + NEW met2 ( 1679390 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1677850 19890 ) ( * 1688780 ) + NEW met1 ( 1634150 19550 ) M1M2_PR + NEW met1 ( 1677850 19890 ) M1M2_PR ; + - la_oenb[57] ( PIN la_oenb[57] ) ( mprj la_oenb[57] ) + USE SIGNAL + + ROUTED met2 ( 1652090 1700 0 ) ( * 20230 ) + NEW met1 ( 1652090 20230 ) ( 1684750 * ) + NEW met2 ( 1684750 1688780 ) ( 1684910 * ) + NEW met2 ( 1684910 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1684750 20230 ) ( * 1688780 ) + NEW met1 ( 1652090 20230 ) M1M2_PR + NEW met1 ( 1684750 20230 ) M1M2_PR ; + - la_oenb[58] ( PIN la_oenb[58] ) ( mprj la_oenb[58] ) + USE SIGNAL + + ROUTED met2 ( 1669570 1700 0 ) ( * 20570 ) + NEW met1 ( 1669570 20570 ) ( 1685210 * ) + NEW met2 ( 1685210 20570 ) ( * 1580100 ) + NEW met2 ( 1685210 1580100 ) ( 1690270 * ) + NEW met2 ( 1690270 1688780 ) ( 1690430 * ) + NEW met2 ( 1690430 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1690270 1580100 ) ( * 1688780 ) + NEW met1 ( 1669570 20570 ) M1M2_PR + NEW met1 ( 1685210 20570 ) M1M2_PR ; + - la_oenb[59] ( PIN la_oenb[59] ) ( mprj la_oenb[59] ) + USE SIGNAL + + ROUTED met2 ( 1687510 1700 0 ) ( * 17510 ) + NEW met1 ( 1687510 17510 ) ( 1691650 * ) + NEW met2 ( 1691650 17510 ) ( * 1580100 ) + NEW met2 ( 1691650 1580100 ) ( 1693950 * ) + NEW met2 ( 1693950 1688780 ) ( 1695950 * ) + NEW met2 ( 1695950 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1693950 1580100 ) ( * 1688780 ) + NEW met1 ( 1687510 17510 ) M1M2_PR + NEW met1 ( 1691650 17510 ) M1M2_PR ; + - la_oenb[5] ( PIN la_oenb[5] ) ( mprj la_oenb[5] ) + USE SIGNAL + + ROUTED met2 ( 727490 1700 ) ( 729790 * 0 ) + NEW met1 ( 724730 96050 ) ( 1395410 * ) + NEW met2 ( 724730 82800 ) ( * 96050 ) + NEW met2 ( 724730 82800 ) ( 727490 * ) + NEW met2 ( 727490 1700 ) ( * 82800 ) + NEW met2 ( 1395410 96050 ) ( * 1580100 ) + NEW met2 ( 1395410 1580100 ) ( 1399550 * ) + NEW met2 ( 1399550 1688780 ) ( 1400170 * ) + NEW met2 ( 1400170 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1399550 1580100 ) ( * 1688780 ) + NEW met1 ( 724730 96050 ) M1M2_PR + NEW met1 ( 1395410 96050 ) M1M2_PR ; + - la_oenb[60] ( PIN la_oenb[60] ) ( mprj la_oenb[60] ) + USE SIGNAL + + ROUTED met2 ( 1704990 1700 0 ) ( * 16830 ) + NEW met1 ( 1698550 16830 ) ( 1704990 * ) + NEW met2 ( 1698550 1688780 ) ( 1701470 * ) + NEW met2 ( 1701470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1698550 16830 ) ( * 1688780 ) + NEW met1 ( 1704990 16830 ) M1M2_PR + NEW met1 ( 1698550 16830 ) M1M2_PR ; + - la_oenb[61] ( PIN la_oenb[61] ) ( mprj la_oenb[61] ) + USE SIGNAL + + ROUTED met2 ( 1722930 1700 0 ) ( * 17510 ) + NEW met1 ( 1704990 17510 ) ( 1722930 * ) + NEW met2 ( 1704990 17510 ) ( * 1676700 ) + NEW met2 ( 1704530 1676700 ) ( 1704990 * ) + NEW met2 ( 1704530 1676700 ) ( * 1689290 ) + NEW met1 ( 1704530 1689290 ) ( 1706990 * ) + NEW met2 ( 1706990 1689290 ) ( * 1690140 0 ) + NEW met1 ( 1722930 17510 ) M1M2_PR + NEW met1 ( 1704990 17510 ) M1M2_PR + NEW met1 ( 1704530 1689290 ) M1M2_PR + NEW met1 ( 1706990 1689290 ) M1M2_PR ; + - la_oenb[62] ( PIN la_oenb[62] ) ( mprj la_oenb[62] ) + USE SIGNAL + + ROUTED met2 ( 1740410 1700 0 ) ( * 17850 ) + NEW met1 ( 1712350 17850 ) ( 1740410 * ) + NEW met2 ( 1712350 1688780 ) ( 1712510 * ) + NEW met2 ( 1712510 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1712350 17850 ) ( * 1688780 ) + NEW met1 ( 1740410 17850 ) M1M2_PR + NEW met1 ( 1712350 17850 ) M1M2_PR ; + - la_oenb[63] ( PIN la_oenb[63] ) ( mprj la_oenb[63] ) + USE SIGNAL + + ROUTED met2 ( 1758350 1700 0 ) ( * 15810 ) + NEW met1 ( 1725000 15810 ) ( 1758350 * ) + NEW met1 ( 1711430 16150 ) ( 1725000 * ) + NEW met1 ( 1725000 15810 ) ( * 16150 ) + NEW met1 ( 1711430 1688950 ) ( 1717570 * ) + NEW met2 ( 1717570 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1711430 16150 ) ( * 1688950 ) + NEW met1 ( 1758350 15810 ) M1M2_PR + NEW met1 ( 1711430 16150 ) M1M2_PR + NEW met1 ( 1711430 1688950 ) M1M2_PR + NEW met1 ( 1717570 1688950 ) M1M2_PR ; + - la_oenb[64] ( PIN la_oenb[64] ) ( mprj la_oenb[64] ) + USE SIGNAL + + ROUTED met2 ( 1776290 1700 0 ) ( * 20230 ) + NEW met1 ( 1719250 20230 ) ( 1776290 * ) + NEW met2 ( 1719250 20230 ) ( * 1676700 ) + NEW met2 ( 1719250 1676700 ) ( 1722930 * ) + NEW met2 ( 1722930 1676700 ) ( * 1688780 ) + NEW met2 ( 1722930 1688780 ) ( 1723090 * ) + NEW met2 ( 1723090 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1719250 20230 ) M1M2_PR + NEW met1 ( 1776290 20230 ) M1M2_PR ; + - la_oenb[65] ( PIN la_oenb[65] ) ( mprj la_oenb[65] ) + USE SIGNAL + + ROUTED met2 ( 1725230 1688780 ) ( 1728610 * ) + NEW met2 ( 1728610 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1725230 18530 ) ( * 1688780 ) + NEW met2 ( 1793770 1700 0 ) ( * 18530 ) + NEW met1 ( 1725230 18530 ) ( 1793770 * ) + NEW met1 ( 1725230 18530 ) M1M2_PR + NEW met1 ( 1793770 18530 ) M1M2_PR ; + - la_oenb[66] ( PIN la_oenb[66] ) ( mprj la_oenb[66] ) + USE SIGNAL + + ROUTED met2 ( 1733050 1688780 ) ( 1734130 * ) + NEW met2 ( 1734130 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1733050 20570 ) ( * 1688780 ) + NEW met2 ( 1811710 1700 0 ) ( * 20570 ) + NEW met1 ( 1733050 20570 ) ( 1811710 * ) + NEW met1 ( 1733050 20570 ) M1M2_PR + NEW met1 ( 1811710 20570 ) M1M2_PR ; + - la_oenb[67] ( PIN la_oenb[67] ) ( mprj la_oenb[67] ) + USE SIGNAL + + ROUTED met2 ( 1829190 1700 0 ) ( * 16490 ) + NEW met2 ( 1739950 1683510 ) ( * 1689460 ) + NEW met2 ( 1739720 1689460 ) ( 1739950 * ) + NEW met2 ( 1739720 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1797450 16830 ) ( 1806190 * ) + NEW met1 ( 1806190 16490 ) ( * 16830 ) + NEW met1 ( 1806190 16490 ) ( 1829190 * ) + NEW met1 ( 1739950 1683510 ) ( 1797450 * ) + NEW met2 ( 1797450 16830 ) ( * 1683510 ) + NEW met1 ( 1829190 16490 ) M1M2_PR + NEW met1 ( 1739950 1683510 ) M1M2_PR + NEW met1 ( 1797450 16830 ) M1M2_PR + NEW met1 ( 1797450 1683510 ) M1M2_PR ; + - la_oenb[68] ( PIN la_oenb[68] ) ( mprj la_oenb[68] ) + USE SIGNAL + + ROUTED met2 ( 1847130 1700 0 ) ( * 18870 ) + NEW met2 ( 1739490 18870 ) ( * 1580100 ) + NEW met2 ( 1739490 1580100 ) ( 1744550 * ) + NEW met2 ( 1744550 1688780 ) ( 1745170 * ) + NEW met2 ( 1745170 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1744550 1580100 ) ( * 1688780 ) + NEW met1 ( 1739490 18870 ) ( 1847130 * ) + NEW met1 ( 1739490 18870 ) M1M2_PR + NEW met1 ( 1847130 18870 ) M1M2_PR ; + - la_oenb[69] ( PIN la_oenb[69] ) ( mprj la_oenb[69] ) + USE SIGNAL + + ROUTED met2 ( 1864610 1700 0 ) ( * 17850 ) + NEW met2 ( 1746390 17850 ) ( * 1580100 ) + NEW met2 ( 1746390 1580100 ) ( 1750070 * ) + NEW met2 ( 1750070 1688780 ) ( 1750690 * ) + NEW met2 ( 1750690 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1750070 1580100 ) ( * 1688780 ) + NEW met1 ( 1746390 17850 ) ( 1864610 * ) + NEW met1 ( 1746390 17850 ) M1M2_PR + NEW met1 ( 1864610 17850 ) M1M2_PR ; + - la_oenb[6] ( PIN la_oenb[6] ) ( mprj la_oenb[6] ) + USE SIGNAL + + ROUTED met1 ( 745430 96390 ) ( 1402770 * ) + NEW met2 ( 745430 82800 ) ( * 96390 ) + NEW met2 ( 745430 82800 ) ( 747730 * ) + NEW met2 ( 747730 1700 0 ) ( * 82800 ) + NEW met2 ( 1402770 1688780 ) ( 1405690 * ) + NEW met2 ( 1405690 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1402770 96390 ) ( * 1688780 ) + NEW met1 ( 745430 96390 ) M1M2_PR + NEW met1 ( 1402770 96390 ) M1M2_PR ; + - la_oenb[70] ( PIN la_oenb[70] ) ( mprj la_oenb[70] ) + USE SIGNAL + + ROUTED met2 ( 1752830 17170 ) ( * 1580100 ) + NEW met2 ( 1752830 1580100 ) ( 1755590 * ) + NEW met2 ( 1755590 1688780 ) ( 1756210 * ) + NEW met2 ( 1756210 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1755590 1580100 ) ( * 1688780 ) + NEW met2 ( 1882550 1700 0 ) ( * 17170 ) + NEW met1 ( 1752830 17170 ) ( 1882550 * ) + NEW met1 ( 1752830 17170 ) M1M2_PR + NEW met1 ( 1882550 17170 ) M1M2_PR ; + - la_oenb[71] ( PIN la_oenb[71] ) ( mprj la_oenb[71] ) + USE SIGNAL + + ROUTED met2 ( 1762030 1681470 ) ( * 1688780 ) + NEW met2 ( 1761800 1688780 ) ( 1762030 * ) + NEW met2 ( 1761800 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1900030 1700 0 ) ( * 18870 ) + NEW met1 ( 1852650 18870 ) ( 1900030 * ) + NEW met1 ( 1762030 1681470 ) ( 1852650 * ) + NEW met2 ( 1852650 18870 ) ( * 1681470 ) + NEW met1 ( 1852650 18870 ) M1M2_PR + NEW met1 ( 1762030 1681470 ) M1M2_PR + NEW met1 ( 1900030 18870 ) M1M2_PR + NEW met1 ( 1852650 1681470 ) M1M2_PR ; + - la_oenb[72] ( PIN la_oenb[72] ) ( mprj la_oenb[72] ) + USE SIGNAL + + ROUTED met2 ( 1766630 1688780 ) ( 1767250 * ) + NEW met2 ( 1767250 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1766630 17510 ) ( * 1688780 ) + NEW met2 ( 1917970 1700 0 ) ( * 17510 ) + NEW met1 ( 1766630 17510 ) ( 1917970 * ) + NEW met1 ( 1766630 17510 ) M1M2_PR + NEW met1 ( 1917970 17510 ) M1M2_PR ; + - la_oenb[73] ( PIN la_oenb[73] ) ( mprj la_oenb[73] ) + USE SIGNAL + + ROUTED met2 ( 1935910 1700 0 ) ( * 15470 ) + NEW met2 ( 1773070 1681130 ) ( * 1688780 ) + NEW met2 ( 1772840 1688780 ) ( 1773070 * ) + NEW met2 ( 1772840 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1918200 15470 ) ( 1935910 * ) + NEW met1 ( 1918200 15130 ) ( * 15470 ) + NEW met1 ( 1859550 15130 ) ( 1918200 * ) + NEW met1 ( 1773070 1681130 ) ( 1859550 * ) + NEW met2 ( 1859550 15130 ) ( * 1681130 ) + NEW met1 ( 1859550 15130 ) M1M2_PR + NEW met1 ( 1935910 15470 ) M1M2_PR + NEW met1 ( 1773070 1681130 ) M1M2_PR + NEW met1 ( 1859550 1681130 ) M1M2_PR ; + - la_oenb[74] ( PIN la_oenb[74] ) ( mprj la_oenb[74] ) + USE SIGNAL + + ROUTED met2 ( 1953390 1700 0 ) ( * 15810 ) + NEW met1 ( 1866450 15470 ) ( 1869900 * ) + NEW met1 ( 1869900 15470 ) ( * 15810 ) + NEW met1 ( 1869900 15810 ) ( 1877030 * ) + NEW met2 ( 1877030 15810 ) ( * 15980 ) + NEW met2 ( 1877030 15980 ) ( 1878410 * ) + NEW met2 ( 1878410 15810 ) ( * 15980 ) + NEW met1 ( 1878410 15810 ) ( 1953390 * ) + NEW met2 ( 1778130 1680450 ) ( * 1688780 ) + NEW met2 ( 1777900 1688780 ) ( 1778130 * ) + NEW met2 ( 1777900 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1778130 1680450 ) ( 1866450 * ) + NEW met2 ( 1866450 15470 ) ( * 1680450 ) + NEW met1 ( 1866450 15470 ) M1M2_PR + NEW met1 ( 1953390 15810 ) M1M2_PR + NEW met1 ( 1877030 15810 ) M1M2_PR + NEW met1 ( 1878410 15810 ) M1M2_PR + NEW met1 ( 1778130 1680450 ) M1M2_PR + NEW met1 ( 1866450 1680450 ) M1M2_PR ; + - la_oenb[75] ( PIN la_oenb[75] ) ( mprj la_oenb[75] ) + USE SIGNAL + + ROUTED met1 ( 1873350 15470 ) ( 1877490 * ) + NEW met1 ( 1877490 15470 ) ( * 16150 ) + NEW met2 ( 1971330 1700 0 ) ( * 16150 ) + NEW met1 ( 1877490 16150 ) ( 1971330 * ) + NEW met2 ( 1783650 1681810 ) ( * 1688780 ) + NEW met2 ( 1783420 1688780 ) ( 1783650 * ) + NEW met2 ( 1783420 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1783650 1681810 ) ( 1873350 * ) + NEW met2 ( 1873350 15470 ) ( * 1681810 ) + NEW met1 ( 1873350 15470 ) M1M2_PR + NEW met1 ( 1971330 16150 ) M1M2_PR + NEW met1 ( 1783650 1681810 ) M1M2_PR + NEW met1 ( 1873350 1681810 ) M1M2_PR ; + - la_oenb[76] ( PIN la_oenb[76] ) ( mprj la_oenb[76] ) + USE SIGNAL + + ROUTED met2 ( 1787330 1652740 ) ( 1788250 * ) + NEW met2 ( 1988810 1700 0 ) ( * 21930 ) + NEW met1 ( 1787330 21930 ) ( 1988810 * ) + NEW met2 ( 1787330 21930 ) ( * 1652740 ) + NEW met2 ( 1788250 1688780 ) ( 1788870 * ) + NEW met2 ( 1788870 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1788250 1652740 ) ( * 1688780 ) + NEW met1 ( 1787330 21930 ) M1M2_PR + NEW met1 ( 1988810 21930 ) M1M2_PR ; + - la_oenb[77] ( PIN la_oenb[77] ) ( mprj la_oenb[77] ) + USE SIGNAL + + ROUTED met2 ( 2006750 1700 0 ) ( * 18190 ) + NEW met1 ( 1860010 18190 ) ( 2006750 * ) + NEW met2 ( 1794230 1678750 ) ( * 1689460 ) + NEW met2 ( 1794230 1689460 ) ( 1794390 * ) + NEW met2 ( 1794390 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1794230 1678750 ) ( 1860010 * ) + NEW met2 ( 1860010 18190 ) ( * 1678750 ) + NEW met1 ( 1860010 18190 ) M1M2_PR + NEW met1 ( 2006750 18190 ) M1M2_PR + NEW met1 ( 1794230 1678750 ) M1M2_PR + NEW met1 ( 1860010 1678750 ) M1M2_PR ; + - la_oenb[78] ( PIN la_oenb[78] ) ( mprj la_oenb[78] ) + USE SIGNAL + + ROUTED met2 ( 2024230 1700 0 ) ( * 16660 ) + NEW met2 ( 1794230 22100 ) ( 1794690 * ) + NEW met2 ( 1794690 16660 ) ( * 22100 ) + NEW met1 ( 1794230 1652570 ) ( 1799750 * ) + NEW met3 ( 1794690 16660 ) ( 2024230 * ) + NEW met2 ( 1794230 22100 ) ( * 1652570 ) + NEW met2 ( 1799750 1688780 ) ( 1799910 * ) + NEW met2 ( 1799910 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1799750 1652570 ) ( * 1688780 ) + NEW met2 ( 2024230 16660 ) M2M3_PR + NEW met2 ( 1794690 16660 ) M2M3_PR + NEW met1 ( 1794230 1652570 ) M1M2_PR + NEW met1 ( 1799750 1652570 ) M1M2_PR ; + - la_oenb[79] ( PIN la_oenb[79] ) ( mprj la_oenb[79] ) + USE SIGNAL + + ROUTED met2 ( 2042170 1700 0 ) ( * 17170 ) + NEW met1 ( 1887150 17170 ) ( 2042170 * ) + NEW met2 ( 1805730 1679090 ) ( * 1688780 ) + NEW met2 ( 1805500 1688780 ) ( 1805730 * ) + NEW met2 ( 1805500 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1805730 1679090 ) ( 1887150 * ) + NEW met2 ( 1887150 17170 ) ( * 1679090 ) + NEW met1 ( 2042170 17170 ) M1M2_PR + NEW met1 ( 1887150 17170 ) M1M2_PR + NEW met1 ( 1805730 1679090 ) M1M2_PR + NEW met1 ( 1887150 1679090 ) M1M2_PR ; + - la_oenb[7] ( PIN la_oenb[7] ) ( mprj la_oenb[7] ) + USE SIGNAL + + ROUTED met2 ( 759230 48300 ) ( * 92650 ) + NEW met2 ( 765210 1700 0 ) ( * 48110 ) + NEW met1 ( 759230 92650 ) ( 1408750 * ) + NEW met2 ( 758770 48110 ) ( * 48300 ) + NEW met1 ( 758770 48110 ) ( 765210 * ) + NEW met2 ( 758770 48300 ) ( 759230 * ) + NEW met2 ( 1408750 92650 ) ( * 1580100 ) + NEW met2 ( 1408750 1580100 ) ( 1410590 * ) + NEW met2 ( 1410590 1688780 ) ( 1411210 * ) + NEW met2 ( 1411210 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1410590 1580100 ) ( * 1688780 ) + NEW met1 ( 759230 92650 ) M1M2_PR + NEW met1 ( 765210 48110 ) M1M2_PR + NEW met1 ( 1408750 92650 ) M1M2_PR + NEW met1 ( 758770 48110 ) M1M2_PR ; + - la_oenb[80] ( PIN la_oenb[80] ) ( mprj la_oenb[80] ) + USE SIGNAL + + ROUTED met2 ( 2059650 1700 0 ) ( * 18870 ) + NEW met1 ( 1908310 18870 ) ( 2059650 * ) + NEW met2 ( 1811250 1679770 ) ( * 1688780 ) + NEW met2 ( 1811020 1688780 ) ( 1811250 * ) + NEW met2 ( 1811020 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1908310 18870 ) ( * 1679770 ) + NEW met1 ( 1811250 1679770 ) ( 1908310 * ) + NEW met1 ( 2059650 18870 ) M1M2_PR + NEW met1 ( 1908310 18870 ) M1M2_PR + NEW met1 ( 1811250 1679770 ) M1M2_PR + NEW met1 ( 1908310 1679770 ) M1M2_PR ; + - la_oenb[81] ( PIN la_oenb[81] ) ( mprj la_oenb[81] ) + USE SIGNAL + + ROUTED met2 ( 1938670 20570 ) ( * 26690 ) + NEW met1 ( 1814930 26690 ) ( 1938670 * ) + NEW met2 ( 2077590 1700 0 ) ( * 20570 ) + NEW met1 ( 1938670 20570 ) ( 2077590 * ) + NEW met2 ( 1814930 1688780 ) ( 1816470 * ) + NEW met2 ( 1816470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1814930 26690 ) ( * 1688780 ) + NEW met1 ( 1938670 26690 ) M1M2_PR + NEW met1 ( 1938670 20570 ) M1M2_PR + NEW met1 ( 1814930 26690 ) M1M2_PR + NEW met1 ( 2077590 20570 ) M1M2_PR ; + - la_oenb[82] ( PIN la_oenb[82] ) ( mprj la_oenb[82] ) + USE SIGNAL + + ROUTED met2 ( 1822290 1679430 ) ( * 1689460 ) + NEW met2 ( 1822060 1689460 ) ( 1822290 * ) + NEW met2 ( 1822060 1689460 ) ( * 1690140 0 ) + NEW met2 ( 2095070 1700 0 ) ( * 17850 ) + NEW met1 ( 1907850 17850 ) ( 2095070 * ) + NEW met2 ( 1907850 17850 ) ( * 1679430 ) + NEW met1 ( 1822290 1679430 ) ( 1907850 * ) + NEW met1 ( 1822290 1679430 ) M1M2_PR + NEW met1 ( 1907850 17850 ) M1M2_PR + NEW met1 ( 2095070 17850 ) M1M2_PR + NEW met1 ( 1907850 1679430 ) M1M2_PR ; + - la_oenb[83] ( PIN la_oenb[83] ) ( mprj la_oenb[83] ) + USE SIGNAL + + ROUTED met1 ( 1956150 18530 ) ( 1959830 * ) + NEW met2 ( 1959830 18530 ) ( * 19550 ) + NEW met2 ( 2113010 1700 0 ) ( * 19550 ) + NEW met1 ( 1844370 1683510 ) ( * 1683850 ) + NEW met1 ( 1843450 1683850 ) ( 1844370 * ) + NEW met1 ( 1843450 1683510 ) ( * 1683850 ) + NEW met1 ( 1827810 1683510 ) ( 1843450 * ) + NEW met2 ( 1827810 1683510 ) ( * 1688780 ) + NEW met2 ( 1827580 1688780 ) ( 1827810 * ) + NEW met2 ( 1827580 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1938670 1683510 ) ( * 1683850 ) + NEW met1 ( 1938670 1683850 ) ( 1944650 * ) + NEW met1 ( 1944650 1683510 ) ( * 1683850 ) + NEW met1 ( 1944650 1683510 ) ( 1956150 * ) + NEW met2 ( 1956150 18530 ) ( * 1683510 ) + NEW met1 ( 1959830 19550 ) ( 2113010 * ) + NEW met1 ( 1844370 1683510 ) ( 1938670 * ) + NEW met1 ( 1956150 18530 ) M1M2_PR + NEW met1 ( 1959830 18530 ) M1M2_PR + NEW met1 ( 1959830 19550 ) M1M2_PR + NEW met1 ( 2113010 19550 ) M1M2_PR + NEW met1 ( 1827810 1683510 ) M1M2_PR + NEW met1 ( 1956150 1683510 ) M1M2_PR ; + - la_oenb[84] ( PIN la_oenb[84] ) ( mprj la_oenb[84] ) + USE SIGNAL + + ROUTED met2 ( 1942350 17510 ) ( * 27030 ) + NEW met1 ( 1942350 17510 ) ( 1960290 * ) + NEW met2 ( 1960290 17510 ) ( * 18530 ) + NEW met2 ( 2130950 1700 0 ) ( * 18530 ) + NEW met1 ( 1828730 1688950 ) ( 1833030 * ) + NEW met2 ( 1833030 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1828730 27030 ) ( * 1688950 ) + NEW met1 ( 1828730 27030 ) ( 1942350 * ) + NEW met1 ( 1960290 18530 ) ( 2130950 * ) + NEW met1 ( 1828730 27030 ) M1M2_PR + NEW met1 ( 1942350 27030 ) M1M2_PR + NEW met1 ( 1942350 17510 ) M1M2_PR + NEW met1 ( 1960290 17510 ) M1M2_PR + NEW met1 ( 1960290 18530 ) M1M2_PR + NEW met1 ( 2130950 18530 ) M1M2_PR + NEW met1 ( 1828730 1688950 ) M1M2_PR + NEW met1 ( 1833030 1688950 ) M1M2_PR ; + - la_oenb[85] ( PIN la_oenb[85] ) ( mprj la_oenb[85] ) + USE SIGNAL + + ROUTED met2 ( 2148430 1700 0 ) ( * 15810 ) + NEW met1 ( 2114850 15810 ) ( 2148430 * ) + NEW met1 ( 1848050 1682830 ) ( * 1683170 ) + NEW met1 ( 1838390 1682830 ) ( 1848050 * ) + NEW met2 ( 1838390 1682830 ) ( * 1688780 ) + NEW met2 ( 1838160 1688780 ) ( 1838390 * ) + NEW met2 ( 1838160 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2114850 15810 ) ( * 1683170 ) + NEW met1 ( 1848050 1683170 ) ( 2114850 * ) + NEW met1 ( 2148430 15810 ) M1M2_PR + NEW met1 ( 2114850 15810 ) M1M2_PR + NEW met1 ( 1838390 1682830 ) M1M2_PR + NEW met1 ( 2114850 1683170 ) M1M2_PR ; + - la_oenb[86] ( PIN la_oenb[86] ) ( mprj la_oenb[86] ) + USE SIGNAL + + ROUTED met2 ( 2128650 15130 ) ( * 1682830 ) + NEW met2 ( 2166370 1700 0 ) ( * 15130 ) + NEW met1 ( 2128650 15130 ) ( 2166370 * ) + NEW met1 ( 1848510 1682490 ) ( * 1682830 ) + NEW met1 ( 1843910 1682490 ) ( 1848510 * ) + NEW met2 ( 1843910 1682490 ) ( * 1688780 ) + NEW met2 ( 1843680 1688780 ) ( 1843910 * ) + NEW met2 ( 1843680 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1848510 1682830 ) ( 2128650 * ) + NEW met1 ( 2128650 15130 ) M1M2_PR + NEW met1 ( 2128650 1682830 ) M1M2_PR + NEW met1 ( 2166370 15130 ) M1M2_PR + NEW met1 ( 1843910 1682490 ) M1M2_PR ; + - la_oenb[87] ( PIN la_oenb[87] ) ( mprj la_oenb[87] ) + USE SIGNAL + + ROUTED met2 ( 2129110 19550 ) ( * 1682490 ) + NEW met2 ( 2183850 1700 0 ) ( * 19550 ) + NEW met1 ( 2129110 19550 ) ( 2183850 * ) + NEW met1 ( 1865530 1682150 ) ( * 1682490 ) + NEW met1 ( 1848970 1682150 ) ( 1865530 * ) + NEW met2 ( 1848970 1682150 ) ( * 1688780 ) + NEW met2 ( 1848970 1688780 ) ( 1849130 * ) + NEW met2 ( 1849130 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1865530 1682490 ) ( 2129110 * ) + NEW met1 ( 2129110 19550 ) M1M2_PR + NEW met1 ( 2129110 1682490 ) M1M2_PR + NEW met1 ( 2183850 19550 ) M1M2_PR + NEW met1 ( 1848970 1682150 ) M1M2_PR ; + - la_oenb[88] ( PIN la_oenb[88] ) ( mprj la_oenb[88] ) + USE SIGNAL + + ROUTED met2 ( 2201790 1700 0 ) ( * 16490 ) + NEW met1 ( 2163610 16490 ) ( 2201790 * ) + NEW met2 ( 2163610 16490 ) ( * 1680790 ) + NEW met2 ( 1854950 1680790 ) ( * 1688780 ) + NEW met2 ( 1854720 1688780 ) ( 1854950 * ) + NEW met2 ( 1854720 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1854950 1680790 ) ( 2163610 * ) + NEW met1 ( 2201790 16490 ) M1M2_PR + NEW met1 ( 2163610 16490 ) M1M2_PR + NEW met1 ( 2163610 1680790 ) M1M2_PR + NEW met1 ( 1854950 1680790 ) M1M2_PR ; + - la_oenb[89] ( PIN la_oenb[89] ) ( mprj la_oenb[89] ) + USE SIGNAL + + ROUTED met2 ( 2216970 1700 ) ( 2219270 * 0 ) + NEW met2 ( 1857710 80070 ) ( * 1580100 ) + NEW met2 ( 1857710 1580100 ) ( 1858630 * ) + NEW met2 ( 2216970 1700 ) ( * 80070 ) + NEW met1 ( 1857710 80070 ) ( 2216970 * ) + NEW met2 ( 1858630 1688780 ) ( 1860170 * ) + NEW met2 ( 1860170 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1858630 1580100 ) ( * 1688780 ) + NEW met1 ( 1857710 80070 ) M1M2_PR + NEW met1 ( 2216970 80070 ) M1M2_PR ; + - la_oenb[8] ( PIN la_oenb[8] ) ( mprj la_oenb[8] ) + USE SIGNAL + + ROUTED met2 ( 780850 1700 ) ( 783150 * 0 ) + NEW met2 ( 780850 1700 ) ( * 64770 ) + NEW met1 ( 780850 64770 ) ( 1416110 * ) + NEW met2 ( 1416110 1688780 ) ( 1416270 * ) + NEW met2 ( 1416270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1416110 64770 ) ( * 1688780 ) + NEW met1 ( 780850 64770 ) M1M2_PR + NEW met1 ( 1416110 64770 ) M1M2_PR ; + - la_oenb[90] ( PIN la_oenb[90] ) ( mprj la_oenb[90] ) + USE SIGNAL + + ROUTED met2 ( 2237210 1700 0 ) ( * 20570 ) + NEW met1 ( 2163150 20570 ) ( 2237210 * ) + NEW met2 ( 2163150 20570 ) ( * 1682150 ) + NEW met2 ( 1865990 1682150 ) ( * 1689460 ) + NEW met2 ( 1865760 1689460 ) ( 1865990 * ) + NEW met2 ( 1865760 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1865990 1682150 ) ( 2163150 * ) + NEW met1 ( 2237210 20570 ) M1M2_PR + NEW met1 ( 2163150 20570 ) M1M2_PR + NEW met1 ( 2163150 1682150 ) M1M2_PR + NEW met1 ( 1865990 1682150 ) M1M2_PR ; + - la_oenb[91] ( PIN la_oenb[91] ) ( mprj la_oenb[91] ) + USE SIGNAL + + ROUTED met2 ( 2254690 1700 0 ) ( * 19210 ) + NEW met1 ( 1870130 19210 ) ( 2254690 * ) + NEW met2 ( 1870130 1689460 ) ( 1871210 * ) + NEW met2 ( 1871210 1689460 ) ( * 1690140 0 ) + NEW met2 ( 1870130 19210 ) ( * 1689460 ) + NEW met1 ( 2254690 19210 ) M1M2_PR + NEW met1 ( 1870130 19210 ) M1M2_PR ; + - la_oenb[92] ( PIN la_oenb[92] ) ( mprj la_oenb[92] ) + USE SIGNAL + + ROUTED met2 ( 2272630 1700 0 ) ( * 19550 ) + NEW met1 ( 2184310 19550 ) ( 2272630 * ) + NEW met2 ( 2183850 82800 ) ( 2184310 * ) + NEW met2 ( 2184310 19550 ) ( * 82800 ) + NEW met2 ( 2183850 82800 ) ( * 1681130 ) + NEW met2 ( 1876570 1681130 ) ( * 1689460 ) + NEW met2 ( 1876570 1689460 ) ( 1876730 * ) + NEW met2 ( 1876730 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1876570 1681130 ) ( 2183850 * ) + NEW met1 ( 2184310 19550 ) M1M2_PR + NEW met1 ( 2272630 19550 ) M1M2_PR + NEW met1 ( 2183850 1681130 ) M1M2_PR + NEW met1 ( 1876570 1681130 ) M1M2_PR ; + - la_oenb[93] ( PIN la_oenb[93] ) ( mprj la_oenb[93] ) + USE SIGNAL + + ROUTED met1 ( 2176950 16830 ) ( 2202250 * ) + NEW met1 ( 2202250 16490 ) ( * 16830 ) + NEW met2 ( 2290570 1700 0 ) ( * 16490 ) + NEW met1 ( 2202250 16490 ) ( 2290570 * ) + NEW met2 ( 2176950 16830 ) ( * 1681810 ) + NEW met2 ( 1882550 1681810 ) ( * 1688780 ) + NEW met2 ( 1882320 1688780 ) ( 1882550 * ) + NEW met2 ( 1882320 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1882550 1681810 ) ( 2176950 * ) + NEW met1 ( 2176950 16830 ) M1M2_PR + NEW met1 ( 2290570 16490 ) M1M2_PR + NEW met1 ( 2176950 1681810 ) M1M2_PR + NEW met1 ( 1882550 1681810 ) M1M2_PR ; + - la_oenb[94] ( PIN la_oenb[94] ) ( mprj la_oenb[94] ) + USE SIGNAL + + ROUTED met2 ( 2308050 1700 0 ) ( * 16150 ) + NEW met2 ( 2211450 82800 ) ( 2213750 * ) + NEW met2 ( 2213750 15810 ) ( * 82800 ) + NEW met2 ( 2211450 82800 ) ( * 1680450 ) + NEW met1 ( 2213750 15810 ) ( 2256300 * ) + NEW met1 ( 2256300 15810 ) ( * 16150 ) + NEW met1 ( 2256300 16150 ) ( 2308050 * ) + NEW met2 ( 1888070 1680450 ) ( * 1688780 ) + NEW met2 ( 1887840 1688780 ) ( 1888070 * ) + NEW met2 ( 1887840 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1888070 1680450 ) ( 2211450 * ) + NEW met1 ( 2213750 15810 ) M1M2_PR + NEW met1 ( 2308050 16150 ) M1M2_PR + NEW met1 ( 2211450 1680450 ) M1M2_PR + NEW met1 ( 1888070 1680450 ) M1M2_PR ; + - la_oenb[95] ( PIN la_oenb[95] ) ( mprj la_oenb[95] ) + USE SIGNAL + + ROUTED met2 ( 2325990 1700 0 ) ( * 79730 ) + NEW met1 ( 1892210 79730 ) ( 2325990 * ) + NEW met2 ( 1892210 1688780 ) ( 1893290 * ) + NEW met2 ( 1893290 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1892210 79730 ) ( * 1688780 ) + NEW met1 ( 2325990 79730 ) M1M2_PR + NEW met1 ( 1892210 79730 ) M1M2_PR ; + - la_oenb[96] ( PIN la_oenb[96] ) ( mprj la_oenb[96] ) + USE SIGNAL + + ROUTED met2 ( 2343470 1700 0 ) ( * 16830 ) + NEW met1 ( 2204550 16830 ) ( 2343470 * ) + NEW met2 ( 1898650 1681470 ) ( * 1689460 ) + NEW met2 ( 1898420 1689460 ) ( 1898650 * ) + NEW met2 ( 1898420 1689460 ) ( * 1690140 0 ) + NEW met1 ( 1898650 1681470 ) ( 2204550 * ) + NEW met2 ( 2204550 16830 ) ( * 1681470 ) + NEW met1 ( 2343470 16830 ) M1M2_PR + NEW met1 ( 2204550 16830 ) M1M2_PR + NEW met1 ( 1898650 1681470 ) M1M2_PR + NEW met1 ( 2204550 1681470 ) M1M2_PR ; + - la_oenb[97] ( PIN la_oenb[97] ) ( mprj la_oenb[97] ) + USE SIGNAL + + ROUTED met2 ( 2361410 1700 0 ) ( * 20230 ) + NEW met1 ( 1897730 20230 ) ( 2361410 * ) + NEW met1 ( 1897730 1688950 ) ( 1903870 * ) + NEW met2 ( 1903870 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1897730 20230 ) ( * 1688950 ) + NEW met1 ( 1897730 20230 ) M1M2_PR + NEW met1 ( 2361410 20230 ) M1M2_PR + NEW met1 ( 1897730 1688950 ) M1M2_PR + NEW met1 ( 1903870 1688950 ) M1M2_PR ; + - la_oenb[98] ( PIN la_oenb[98] ) ( mprj la_oenb[98] ) + USE SIGNAL + + ROUTED met2 ( 2239050 20570 ) ( * 1680110 ) + NEW met2 ( 2378890 1700 0 ) ( * 20570 ) + NEW met1 ( 2239050 20570 ) ( 2378890 * ) + NEW met2 ( 1909690 1680110 ) ( * 1688780 ) + NEW met2 ( 1909460 1688780 ) ( 1909690 * ) + NEW met2 ( 1909460 1688780 ) ( * 1690140 0 ) + NEW met1 ( 1909690 1680110 ) ( 2239050 * ) + NEW met1 ( 2239050 20570 ) M1M2_PR + NEW met1 ( 2239050 1680110 ) M1M2_PR + NEW met1 ( 2378890 20570 ) M1M2_PR + NEW met1 ( 1909690 1680110 ) M1M2_PR ; + - la_oenb[99] ( PIN la_oenb[99] ) ( mprj la_oenb[99] ) + USE SIGNAL + + ROUTED met2 ( 2396830 1700 0 ) ( * 19890 ) + NEW met1 ( 1911530 19890 ) ( 2396830 * ) + NEW met2 ( 1911530 1689460 ) ( 1911990 * ) + NEW met2 ( 1911990 1689460 ) ( * 1689630 ) + NEW met1 ( 1911990 1689630 ) ( 1914910 * ) + NEW met2 ( 1914910 1689630 ) ( * 1690140 0 ) + NEW met2 ( 1911530 19890 ) ( * 1689460 ) + NEW met1 ( 1911530 19890 ) M1M2_PR + NEW met1 ( 2396830 19890 ) M1M2_PR + NEW met1 ( 1911990 1689630 ) M1M2_PR + NEW met1 ( 1914910 1689630 ) M1M2_PR ; + - la_oenb[9] ( PIN la_oenb[9] ) ( mprj la_oenb[9] ) + USE SIGNAL + + ROUTED met2 ( 800630 1700 0 ) ( * 64430 ) + NEW met1 ( 800630 64430 ) ( 1422550 * ) + NEW met2 ( 1421860 1688780 ) ( 1422550 * ) + NEW met2 ( 1421860 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1422550 64430 ) ( * 1688780 ) + NEW met1 ( 800630 64430 ) M1M2_PR + NEW met1 ( 1422550 64430 ) M1M2_PR ; + - user_clock2 ( PIN user_clock2 ) + USE SIGNAL ; + - user_irq[0] ( PIN user_irq[0] ) ( mprj irq[0] ) + USE SIGNAL + + ROUTED met2 ( 2905130 1700 0 ) ( * 19210 ) + NEW met2 ( 2252850 82800 ) ( 2255150 * ) + NEW met2 ( 2255150 19210 ) ( * 82800 ) + NEW met2 ( 2252850 82800 ) ( * 1683510 ) + NEW met1 ( 2255150 19210 ) ( 2905130 * ) + NEW met2 ( 2070690 1683510 ) ( * 1688780 ) + NEW met2 ( 2070460 1688780 ) ( 2070690 * ) + NEW met2 ( 2070460 1688780 ) ( * 1690140 0 ) + NEW met1 ( 2070690 1683510 ) ( 2252850 * ) + NEW met1 ( 2255150 19210 ) M1M2_PR + NEW met1 ( 2905130 19210 ) M1M2_PR + NEW met1 ( 2252850 1683510 ) M1M2_PR + NEW met1 ( 2070690 1683510 ) M1M2_PR ; + - user_irq[1] ( PIN user_irq[1] ) ( mprj irq[1] ) + USE SIGNAL + + ROUTED met2 ( 2911110 1700 0 ) ( * 16660 ) + NEW met3 ( 2070230 16660 ) ( 2911110 * ) + NEW met2 ( 2070230 16660 ) ( * 1580100 ) + NEW met2 ( 2070230 1580100 ) ( 2071150 * ) + NEW met2 ( 2071150 1688780 ) ( 2072230 * ) + NEW met2 ( 2072230 1688780 ) ( * 1690140 0 ) + NEW met2 ( 2071150 1580100 ) ( * 1688780 ) + NEW met2 ( 2911110 16660 ) M2M3_PR + NEW met2 ( 2070230 16660 ) M2M3_PR ; + - user_irq[2] ( PIN user_irq[2] ) ( mprj irq[2] ) + USE SIGNAL + + ROUTED met2 ( 2917090 1700 0 ) ( * 19550 ) + NEW met1 ( 2273550 19550 ) ( 2917090 * ) + NEW met2 ( 2074370 1679940 ) ( * 1688780 ) + NEW met2 ( 2074140 1688780 ) ( 2074370 * ) + NEW met2 ( 2074140 1688780 ) ( * 1690140 0 ) + NEW met3 ( 2074370 1679940 ) ( 2273550 * ) + NEW met2 ( 2273550 19550 ) ( * 1679940 ) + NEW met1 ( 2917090 19550 ) M1M2_PR + NEW met1 ( 2273550 19550 ) M1M2_PR + NEW met2 ( 2074370 1679940 ) M2M3_PR + NEW met2 ( 2273550 1679940 ) M2M3_PR ; + - wb_clk_i ( PIN wb_clk_i ) ( mprj wb_clk_i ) + USE SIGNAL + + ROUTED met2 ( 2990 1700 0 ) ( * 30940 ) + NEW met2 ( 1174150 1688780 ) ( 1175690 * ) + NEW met2 ( 1175690 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1174150 30940 ) ( * 1688780 ) + NEW met3 ( 2990 30940 ) ( 1174150 * ) + NEW met2 ( 2990 30940 ) M2M3_PR + NEW met2 ( 1174150 30940 ) M2M3_PR ; + - wb_rst_i ( PIN wb_rst_i ) ( mprj wb_rst_i ) + USE SIGNAL + + ROUTED met2 ( 8510 1700 0 ) ( * 30770 ) + NEW met1 ( 1173690 1688950 ) ( 1177070 * ) + NEW met2 ( 1177070 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1173690 30770 ) ( * 1688950 ) + NEW met1 ( 8510 30770 ) ( 1173690 * ) + NEW met1 ( 8510 30770 ) M1M2_PR + NEW met1 ( 1173690 30770 ) M1M2_PR + NEW met1 ( 1173690 1688950 ) M1M2_PR + NEW met1 ( 1177070 1688950 ) M1M2_PR ; + - wbs_ack_o ( PIN wbs_ack_o ) ( mprj wbs_ack_o ) + USE SIGNAL + + ROUTED met2 ( 14490 1700 0 ) ( * 31110 ) + NEW met1 ( 1173230 1689290 ) ( 1178910 * ) + NEW met2 ( 1178910 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1173230 31110 ) ( * 1689290 ) + NEW met1 ( 14490 31110 ) ( 1173230 * ) + NEW met1 ( 14490 31110 ) M1M2_PR + NEW met1 ( 1173230 31110 ) M1M2_PR + NEW met1 ( 1173230 1689290 ) M1M2_PR + NEW met1 ( 1178910 1689290 ) M1M2_PR ; + - wbs_adr_i[0] ( PIN wbs_adr_i[0] ) ( mprj wbs_adr_i[0] ) + USE SIGNAL + + ROUTED met1 ( 1180590 1652570 ) ( 1186110 * ) + NEW met2 ( 1180590 31450 ) ( * 1652570 ) + NEW met2 ( 1186110 1688780 ) ( 1186270 * ) + NEW met2 ( 1186270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1186110 1652570 ) ( * 1688780 ) + NEW met2 ( 38410 1700 0 ) ( * 31450 ) + NEW met1 ( 38410 31450 ) ( 1180590 * ) + NEW met1 ( 1180590 31450 ) M1M2_PR + NEW met1 ( 1180590 1652570 ) M1M2_PR + NEW met1 ( 1186110 1652570 ) M1M2_PR + NEW met1 ( 38410 31450 ) M1M2_PR ; + - wbs_adr_i[10] ( PIN wbs_adr_i[10] ) ( mprj wbs_adr_i[10] ) + USE SIGNAL + + ROUTED met1 ( 1242690 1652570 ) ( 1248210 * ) + NEW met2 ( 1242690 32130 ) ( * 1652570 ) + NEW met2 ( 1248210 1688780 ) ( 1248370 * ) + NEW met2 ( 1248370 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1248210 1652570 ) ( * 1688780 ) + NEW met2 ( 239430 1700 0 ) ( * 32130 ) + NEW met1 ( 239430 32130 ) ( 1242690 * ) + NEW met1 ( 1242690 32130 ) M1M2_PR + NEW met1 ( 1242690 1652570 ) M1M2_PR + NEW met1 ( 1248210 1652570 ) M1M2_PR + NEW met1 ( 239430 32130 ) M1M2_PR ; + - wbs_adr_i[11] ( PIN wbs_adr_i[11] ) ( mprj wbs_adr_i[11] ) + USE SIGNAL + + ROUTED met1 ( 1249130 1688950 ) ( 1253890 * ) + NEW met2 ( 1253890 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1249130 32470 ) ( * 1688950 ) + NEW met2 ( 256910 1700 0 ) ( * 32470 ) + NEW met1 ( 256910 32470 ) ( 1249130 * ) + NEW met1 ( 1249130 32470 ) M1M2_PR + NEW met1 ( 1249130 1688950 ) M1M2_PR + NEW met1 ( 1253890 1688950 ) M1M2_PR + NEW met1 ( 256910 32470 ) M1M2_PR ; + - wbs_adr_i[12] ( PIN wbs_adr_i[12] ) ( mprj wbs_adr_i[12] ) + USE SIGNAL + + ROUTED met2 ( 1256030 1689290 ) ( 1256490 * ) + NEW met1 ( 1256490 1689290 ) ( 1259410 * ) + NEW met2 ( 1259410 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1256030 32810 ) ( * 1689290 ) + NEW met2 ( 274850 1700 0 ) ( * 32810 ) + NEW met1 ( 274850 32810 ) ( 1256030 * ) + NEW met1 ( 1256030 32810 ) M1M2_PR + NEW met1 ( 1256490 1689290 ) M1M2_PR + NEW met1 ( 1259410 1689290 ) M1M2_PR + NEW met1 ( 274850 32810 ) M1M2_PR ; + - wbs_adr_i[13] ( PIN wbs_adr_i[13] ) ( mprj wbs_adr_i[13] ) + USE SIGNAL + + ROUTED met2 ( 292330 1700 0 ) ( * 33150 ) + NEW met1 ( 1262930 1688270 ) ( 1264930 * ) + NEW met1 ( 1264930 1688270 ) ( * 1689290 ) + NEW met2 ( 1264930 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1262930 33150 ) ( * 1688270 ) + NEW met1 ( 292330 33150 ) ( 1262930 * ) + NEW met1 ( 292330 33150 ) M1M2_PR + NEW met1 ( 1262930 33150 ) M1M2_PR + NEW met1 ( 1262930 1688270 ) M1M2_PR + NEW met1 ( 1264930 1689290 ) M1M2_PR ; + - wbs_adr_i[14] ( PIN wbs_adr_i[14] ) ( mprj wbs_adr_i[14] ) + USE SIGNAL + + ROUTED met2 ( 310270 1700 0 ) ( * 33490 ) + NEW met2 ( 1269830 1688780 ) ( 1270450 * ) + NEW met2 ( 1270450 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1269830 33490 ) ( * 1688780 ) + NEW met1 ( 310270 33490 ) ( 1269830 * ) + NEW met1 ( 310270 33490 ) M1M2_PR + NEW met1 ( 1269830 33490 ) M1M2_PR ; + - wbs_adr_i[15] ( PIN wbs_adr_i[15] ) ( mprj wbs_adr_i[15] ) + USE SIGNAL + + ROUTED met1 ( 1270290 1652570 ) ( 1275810 * ) + NEW met2 ( 1270290 33830 ) ( * 1652570 ) + NEW met2 ( 1275810 1688780 ) ( 1275970 * ) + NEW met2 ( 1275970 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1275810 1652570 ) ( * 1688780 ) + NEW met2 ( 327750 1700 0 ) ( * 33830 ) + NEW met1 ( 327750 33830 ) ( 1270290 * ) + NEW met1 ( 1270290 33830 ) M1M2_PR + NEW met1 ( 1270290 1652570 ) M1M2_PR + NEW met1 ( 1275810 1652570 ) M1M2_PR + NEW met1 ( 327750 33830 ) M1M2_PR ; + - wbs_adr_i[16] ( PIN wbs_adr_i[16] ) ( mprj wbs_adr_i[16] ) + USE SIGNAL + + ROUTED met1 ( 1276730 1688950 ) ( 1281490 * ) + NEW met2 ( 1281490 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1276730 34170 ) ( * 1688950 ) + NEW met2 ( 345690 1700 0 ) ( * 34170 ) + NEW met1 ( 345690 34170 ) ( 1276730 * ) + NEW met1 ( 1276730 34170 ) M1M2_PR + NEW met1 ( 1276730 1688950 ) M1M2_PR + NEW met1 ( 1281490 1688950 ) M1M2_PR + NEW met1 ( 345690 34170 ) M1M2_PR ; + - wbs_adr_i[17] ( PIN wbs_adr_i[17] ) ( mprj wbs_adr_i[17] ) + USE SIGNAL + + ROUTED met1 ( 1283630 1688950 ) ( 1287010 * ) + NEW met2 ( 1287010 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1283630 46410 ) ( * 1688950 ) + NEW met2 ( 363170 1700 0 ) ( * 46410 ) + NEW met1 ( 363170 46410 ) ( 1283630 * ) + NEW met1 ( 1283630 46410 ) M1M2_PR + NEW met1 ( 1283630 1688950 ) M1M2_PR + NEW met1 ( 1287010 1688950 ) M1M2_PR + NEW met1 ( 363170 46410 ) M1M2_PR ; + - wbs_adr_i[18] ( PIN wbs_adr_i[18] ) ( mprj wbs_adr_i[18] ) + USE SIGNAL + + ROUTED met2 ( 381110 1700 0 ) ( * 46750 ) + NEW met1 ( 381110 46750 ) ( 1291910 * ) + NEW met2 ( 1291910 1688780 ) ( 1292530 * ) + NEW met2 ( 1292530 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1291910 46750 ) ( * 1688780 ) + NEW met1 ( 381110 46750 ) M1M2_PR + NEW met1 ( 1291910 46750 ) M1M2_PR ; + - wbs_adr_i[19] ( PIN wbs_adr_i[19] ) ( mprj wbs_adr_i[19] ) + USE SIGNAL + + ROUTED met2 ( 396290 1700 ) ( 398590 * 0 ) + NEW met2 ( 396290 1700 ) ( * 51340 ) + NEW met3 ( 396290 51340 ) ( 1297890 * ) + NEW met2 ( 1297660 1688780 ) ( 1297890 * ) + NEW met2 ( 1297660 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1297890 51340 ) ( * 1688780 ) + NEW met2 ( 396290 51340 ) M2M3_PR + NEW met2 ( 1297890 51340 ) M2M3_PR ; + - wbs_adr_i[1] ( PIN wbs_adr_i[1] ) ( mprj wbs_adr_i[1] ) + USE SIGNAL + + ROUTED met1 ( 1188410 1652570 ) ( 1193470 * ) + NEW met2 ( 1188410 31790 ) ( * 1652570 ) + NEW met2 ( 1193470 1689290 ) ( 1193630 * ) + NEW met2 ( 1193630 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1193470 1652570 ) ( * 1689290 ) + NEW met2 ( 61870 1700 0 ) ( * 31790 ) + NEW met1 ( 61870 31790 ) ( 1188410 * ) + NEW met1 ( 1188410 31790 ) M1M2_PR + NEW met1 ( 1188410 1652570 ) M1M2_PR + NEW met1 ( 1193470 1652570 ) M1M2_PR + NEW met1 ( 61870 31790 ) M1M2_PR ; + - wbs_adr_i[20] ( PIN wbs_adr_i[20] ) ( mprj wbs_adr_i[20] ) + USE SIGNAL + + ROUTED met2 ( 416530 1700 0 ) ( * 51510 ) + NEW met1 ( 416530 51510 ) ( 1298810 * ) + NEW met2 ( 1298810 51510 ) ( * 1676700 ) + NEW met2 ( 1298810 1676700 ) ( 1300190 * ) + NEW met2 ( 1300190 1676700 ) ( * 1688780 ) + NEW met2 ( 1300190 1688780 ) ( 1303110 * ) + NEW met2 ( 1303110 1688780 ) ( * 1690140 0 ) + NEW met1 ( 416530 51510 ) M1M2_PR + NEW met1 ( 1298810 51510 ) M1M2_PR ; + - wbs_adr_i[21] ( PIN wbs_adr_i[21] ) ( mprj wbs_adr_i[21] ) + USE SIGNAL + + ROUTED met2 ( 432170 1700 ) ( 434470 * 0 ) + NEW met2 ( 432170 1700 ) ( * 51850 ) + NEW met1 ( 432170 51850 ) ( 1305710 * ) + NEW met2 ( 1305710 51850 ) ( * 1580100 ) + NEW met2 ( 1305710 1580100 ) ( 1307090 * ) + NEW met2 ( 1307090 1688780 ) ( 1308630 * ) + NEW met2 ( 1308630 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1307090 1580100 ) ( * 1688780 ) + NEW met1 ( 432170 51850 ) M1M2_PR + NEW met1 ( 1305710 51850 ) M1M2_PR ; + - wbs_adr_i[22] ( PIN wbs_adr_i[22] ) ( mprj wbs_adr_i[22] ) + USE SIGNAL + + ROUTED met2 ( 449650 1700 ) ( 451950 * 0 ) + NEW met2 ( 449650 1700 ) ( * 52190 ) + NEW met1 ( 449650 52190 ) ( 1312150 * ) + NEW met1 ( 1312150 1688270 ) ( * 1689290 ) + NEW met1 ( 1312150 1689290 ) ( 1314150 * ) + NEW met2 ( 1314150 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1312150 52190 ) ( * 1688270 ) + NEW met1 ( 449650 52190 ) M1M2_PR + NEW met1 ( 1312150 52190 ) M1M2_PR + NEW met1 ( 1312150 1688270 ) M1M2_PR + NEW met1 ( 1314150 1689290 ) M1M2_PR ; + - wbs_adr_i[23] ( PIN wbs_adr_i[23] ) ( mprj wbs_adr_i[23] ) + USE SIGNAL + + ROUTED met2 ( 469890 1700 0 ) ( * 66470 ) + NEW met1 ( 469890 66470 ) ( 1318590 * ) + NEW met2 ( 1318590 1688780 ) ( 1319670 * ) + NEW met2 ( 1319670 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1318590 66470 ) ( * 1688780 ) + NEW met1 ( 469890 66470 ) M1M2_PR + NEW met1 ( 1318590 66470 ) M1M2_PR ; + - wbs_adr_i[24] ( PIN wbs_adr_i[24] ) ( mprj wbs_adr_i[24] ) + USE SIGNAL + + ROUTED met2 ( 487370 1700 0 ) ( * 66810 ) + NEW met1 ( 487370 66810 ) ( 1325490 * ) + NEW met2 ( 1325260 1688780 ) ( 1325490 * ) + NEW met2 ( 1325260 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1325490 66810 ) ( * 1688780 ) + NEW met1 ( 487370 66810 ) M1M2_PR + NEW met1 ( 1325490 66810 ) M1M2_PR ; + - wbs_adr_i[25] ( PIN wbs_adr_i[25] ) ( mprj wbs_adr_i[25] ) + USE SIGNAL + + ROUTED met2 ( 503930 1700 ) ( 505310 * 0 ) + NEW met2 ( 503930 1700 ) ( * 67150 ) + NEW met1 ( 1326410 1636250 ) ( 1330550 * ) + NEW met1 ( 503930 67150 ) ( 1326410 * ) + NEW met2 ( 1326410 67150 ) ( * 1636250 ) + NEW met2 ( 1330550 1688780 ) ( 1330710 * ) + NEW met2 ( 1330710 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1330550 1636250 ) ( * 1688780 ) + NEW met1 ( 503930 67150 ) M1M2_PR + NEW met1 ( 1326410 1636250 ) M1M2_PR + NEW met1 ( 1330550 1636250 ) M1M2_PR + NEW met1 ( 1326410 67150 ) M1M2_PR ; + - wbs_adr_i[26] ( PIN wbs_adr_i[26] ) ( mprj wbs_adr_i[26] ) + USE SIGNAL + + ROUTED met2 ( 520490 1700 ) ( 522790 * 0 ) + NEW met2 ( 520490 1700 ) ( * 67490 ) + NEW met1 ( 520490 67490 ) ( 1332390 * ) + NEW met2 ( 1332390 67490 ) ( * 1676700 ) + NEW met2 ( 1331930 1676700 ) ( 1332390 * ) + NEW met2 ( 1331930 1676700 ) ( * 1689290 ) + NEW met1 ( 1331930 1689290 ) ( 1336230 * ) + NEW met2 ( 1336230 1689290 ) ( * 1690140 0 ) + NEW met1 ( 520490 67490 ) M1M2_PR + NEW met1 ( 1332390 67490 ) M1M2_PR + NEW met1 ( 1331930 1689290 ) M1M2_PR + NEW met1 ( 1336230 1689290 ) M1M2_PR ; + - wbs_adr_i[27] ( PIN wbs_adr_i[27] ) ( mprj wbs_adr_i[27] ) + USE SIGNAL + + ROUTED met2 ( 1339750 1688780 ) ( 1341750 * ) + NEW met2 ( 1341750 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1339750 67830 ) ( * 1688780 ) + NEW met2 ( 540730 1700 0 ) ( * 67830 ) + NEW met1 ( 540730 67830 ) ( 1339750 * ) + NEW met1 ( 1339750 67830 ) M1M2_PR + NEW met1 ( 540730 67830 ) M1M2_PR ; + - wbs_adr_i[28] ( PIN wbs_adr_i[28] ) ( mprj wbs_adr_i[28] ) + USE SIGNAL + + ROUTED met2 ( 1346190 1688780 ) ( 1347270 * ) + NEW met2 ( 1347270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1346190 68170 ) ( * 1688780 ) + NEW met2 ( 558210 1700 0 ) ( * 16490 ) + NEW met1 ( 552230 16490 ) ( 558210 * ) + NEW met2 ( 552230 16490 ) ( * 68170 ) + NEW met1 ( 552230 68170 ) ( 1346190 * ) + NEW met1 ( 1346190 68170 ) M1M2_PR + NEW met1 ( 558210 16490 ) M1M2_PR + NEW met1 ( 552230 16490 ) M1M2_PR + NEW met1 ( 552230 68170 ) M1M2_PR ; + - wbs_adr_i[29] ( PIN wbs_adr_i[29] ) ( mprj wbs_adr_i[29] ) + USE SIGNAL + + ROUTED met2 ( 573850 1700 ) ( 576150 * 0 ) + NEW met2 ( 573850 1700 ) ( * 68510 ) + NEW met2 ( 1352860 1688780 ) ( 1353090 * ) + NEW met2 ( 1352860 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1353090 68510 ) ( * 1688780 ) + NEW met1 ( 573850 68510 ) ( 1353090 * ) + NEW met1 ( 573850 68510 ) M1M2_PR + NEW met1 ( 1353090 68510 ) M1M2_PR ; + - wbs_adr_i[2] ( PIN wbs_adr_i[2] ) ( mprj wbs_adr_i[2] ) + USE SIGNAL + + ROUTED met2 ( 85330 1700 0 ) ( * 44540 ) + NEW met3 ( 85330 44540 ) ( 1201290 * ) + NEW met2 ( 1201060 1688780 ) ( 1201290 * ) + NEW met2 ( 1201060 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1201290 44540 ) ( * 1688780 ) + NEW met2 ( 85330 44540 ) M2M3_PR + NEW met2 ( 1201290 44540 ) M2M3_PR ; + - wbs_adr_i[30] ( PIN wbs_adr_i[30] ) ( mprj wbs_adr_i[30] ) + USE SIGNAL + + ROUTED met2 ( 594090 1700 0 ) ( * 68850 ) + NEW met2 ( 1354010 68850 ) ( * 1580100 ) + NEW met2 ( 1354010 1580100 ) ( 1357230 * ) + NEW met2 ( 1357230 1688780 ) ( 1357850 * ) + NEW met2 ( 1357850 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1357230 1580100 ) ( * 1688780 ) + NEW met1 ( 594090 68850 ) ( 1354010 * ) + NEW met1 ( 594090 68850 ) M1M2_PR + NEW met1 ( 1354010 68850 ) M1M2_PR ; + - wbs_adr_i[31] ( PIN wbs_adr_i[31] ) ( mprj wbs_adr_i[31] ) + USE SIGNAL + + ROUTED met2 ( 611570 1700 0 ) ( * 65110 ) + NEW met2 ( 1360910 65110 ) ( * 1580100 ) + NEW met2 ( 1360910 1580100 ) ( 1362750 * ) + NEW met2 ( 1362750 1688780 ) ( 1363370 * ) + NEW met2 ( 1363370 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1362750 1580100 ) ( * 1688780 ) + NEW met1 ( 611570 65110 ) ( 1360910 * ) + NEW met1 ( 611570 65110 ) M1M2_PR + NEW met1 ( 1360910 65110 ) M1M2_PR ; + - wbs_adr_i[3] ( PIN wbs_adr_i[3] ) ( mprj wbs_adr_i[3] ) + USE SIGNAL + + ROUTED met2 ( 109250 1700 0 ) ( * 45050 ) + NEW met1 ( 109250 45050 ) ( 1208650 * ) + NEW met2 ( 1208420 1688780 ) ( 1208650 * ) + NEW met2 ( 1208420 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1208650 45050 ) ( * 1688780 ) + NEW met1 ( 109250 45050 ) M1M2_PR + NEW met1 ( 1208650 45050 ) M1M2_PR ; + - wbs_adr_i[4] ( PIN wbs_adr_i[4] ) ( mprj wbs_adr_i[4] ) + USE SIGNAL + + ROUTED met2 ( 132710 1700 0 ) ( * 45390 ) + NEW met1 ( 132710 45390 ) ( 1215550 * ) + NEW met2 ( 1215550 1688780 ) ( 1215710 * ) + NEW met2 ( 1215710 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1215550 45390 ) ( * 1688780 ) + NEW met1 ( 132710 45390 ) M1M2_PR + NEW met1 ( 1215550 45390 ) M1M2_PR ; + - wbs_adr_i[5] ( PIN wbs_adr_i[5] ) ( mprj wbs_adr_i[5] ) + USE SIGNAL + + ROUTED met2 ( 150650 1700 0 ) ( * 45730 ) + NEW met1 ( 150650 45730 ) ( 1215090 * ) + NEW met1 ( 1215090 1689630 ) ( 1221230 * ) + NEW met2 ( 1221230 1689630 ) ( * 1690140 0 ) + NEW met2 ( 1215090 45730 ) ( * 1689630 ) + NEW met1 ( 150650 45730 ) M1M2_PR + NEW met1 ( 1215090 45730 ) M1M2_PR + NEW met1 ( 1215090 1689630 ) M1M2_PR + NEW met1 ( 1221230 1689630 ) M1M2_PR ; + - wbs_adr_i[6] ( PIN wbs_adr_i[6] ) ( mprj wbs_adr_i[6] ) + USE SIGNAL + + ROUTED met2 ( 168130 1700 0 ) ( * 46070 ) + NEW met1 ( 168130 46070 ) ( 1221990 * ) + NEW met1 ( 1221990 1689290 ) ( 1226750 * ) + NEW met2 ( 1226750 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1221990 46070 ) ( * 1689290 ) + NEW met1 ( 168130 46070 ) M1M2_PR + NEW met1 ( 1221990 46070 ) M1M2_PR + NEW met1 ( 1221990 1689290 ) M1M2_PR + NEW met1 ( 1226750 1689290 ) M1M2_PR ; + - wbs_adr_i[7] ( PIN wbs_adr_i[7] ) ( mprj wbs_adr_i[7] ) + USE SIGNAL + + ROUTED met2 ( 183770 1700 ) ( 186070 * 0 ) + NEW met2 ( 183770 1700 ) ( * 59330 ) + NEW met1 ( 183770 59330 ) ( 1229810 * ) + NEW met2 ( 1229810 59330 ) ( * 1580100 ) + NEW met2 ( 1229810 1580100 ) ( 1231190 * ) + NEW met2 ( 1231190 1688780 ) ( 1232270 * ) + NEW met2 ( 1232270 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1231190 1580100 ) ( * 1688780 ) + NEW met1 ( 183770 59330 ) M1M2_PR + NEW met1 ( 1229810 59330 ) M1M2_PR ; + - wbs_adr_i[8] ( PIN wbs_adr_i[8] ) ( mprj wbs_adr_i[8] ) + USE SIGNAL + + ROUTED met2 ( 201250 1700 ) ( 203550 * 0 ) + NEW met2 ( 201250 1700 ) ( * 64940 ) + NEW met3 ( 201250 64940 ) ( 1235790 * ) + NEW met2 ( 1235790 1688780 ) ( 1237330 * ) + NEW met2 ( 1237330 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1235790 64940 ) ( * 1688780 ) + NEW met2 ( 201250 64940 ) M2M3_PR + NEW met2 ( 1235790 64940 ) M2M3_PR ; + - wbs_adr_i[9] ( PIN wbs_adr_i[9] ) ( mprj wbs_adr_i[9] ) + USE SIGNAL + + ROUTED met2 ( 221490 1700 0 ) ( * 65450 ) + NEW met2 ( 1242920 1688780 ) ( 1243150 * ) + NEW met2 ( 1242920 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1243150 65450 ) ( * 1688780 ) + NEW met1 ( 221490 65450 ) ( 1243150 * ) + NEW met1 ( 221490 65450 ) M1M2_PR + NEW met1 ( 1243150 65450 ) M1M2_PR ; + - wbs_cyc_i ( PIN wbs_cyc_i ) ( mprj wbs_cyc_i ) + USE SIGNAL + + ROUTED met2 ( 20470 1700 0 ) ( * 44710 ) + NEW met2 ( 1180820 1688780 ) ( 1181050 * ) + NEW met2 ( 1180820 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1181050 44710 ) ( * 1688780 ) + NEW met1 ( 20470 44710 ) ( 1181050 * ) + NEW met1 ( 20470 44710 ) M1M2_PR + NEW met1 ( 1181050 44710 ) M1M2_PR ; + - wbs_dat_i[0] ( PIN wbs_dat_i[0] ) ( mprj wbs_dat_i[0] ) + USE SIGNAL + + ROUTED met2 ( 1187490 1688780 ) ( 1188110 * ) + NEW met2 ( 1188110 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1187490 58140 ) ( * 1688780 ) + NEW met2 ( 43930 1700 0 ) ( * 58140 ) + NEW met3 ( 43930 58140 ) ( 1187490 * ) + NEW met2 ( 1187490 58140 ) M2M3_PR + NEW met2 ( 43930 58140 ) M2M3_PR ; + - wbs_dat_i[10] ( PIN wbs_dat_i[10] ) ( mprj wbs_dat_i[10] ) + USE SIGNAL + + ROUTED met2 ( 1250050 1688780 ) ( 1250210 * ) + NEW met2 ( 1250210 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1250050 65790 ) ( * 1688780 ) + NEW met2 ( 242650 1700 ) ( 244950 * 0 ) + NEW met2 ( 242650 1700 ) ( * 65790 ) + NEW met1 ( 242650 65790 ) ( 1250050 * ) + NEW met1 ( 1250050 65790 ) M1M2_PR + NEW met1 ( 242650 65790 ) M1M2_PR ; + - wbs_dat_i[11] ( PIN wbs_dat_i[11] ) ( mprj wbs_dat_i[11] ) + USE SIGNAL + + ROUTED met1 ( 1249590 1652570 ) ( 1255570 * ) + NEW met2 ( 1249590 66130 ) ( * 1652570 ) + NEW met2 ( 1255570 1688780 ) ( 1255730 * ) + NEW met2 ( 1255730 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1255570 1652570 ) ( * 1688780 ) + NEW met2 ( 262890 1700 0 ) ( * 66130 ) + NEW met1 ( 262890 66130 ) ( 1249590 * ) + NEW met1 ( 1249590 1652570 ) M1M2_PR + NEW met1 ( 1255570 1652570 ) M1M2_PR + NEW met1 ( 1249590 66130 ) M1M2_PR + NEW met1 ( 262890 66130 ) M1M2_PR ; + - wbs_dat_i[12] ( PIN wbs_dat_i[12] ) ( mprj wbs_dat_i[12] ) + USE SIGNAL + + ROUTED met2 ( 276230 82800 ) ( * 94690 ) + NEW met2 ( 276230 82800 ) ( 280370 * ) + NEW met2 ( 280370 1700 0 ) ( * 82800 ) + NEW met2 ( 1256950 94690 ) ( * 1580100 ) + NEW met2 ( 1256950 1580100 ) ( 1258330 * ) + NEW met2 ( 1258330 1688780 ) ( 1261250 * ) + NEW met2 ( 1261250 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1258330 1580100 ) ( * 1688780 ) + NEW met1 ( 276230 94690 ) ( 1256950 * ) + NEW met1 ( 276230 94690 ) M1M2_PR + NEW met1 ( 1256950 94690 ) M1M2_PR ; + - wbs_dat_i[13] ( PIN wbs_dat_i[13] ) ( mprj wbs_dat_i[13] ) + USE SIGNAL + + ROUTED met2 ( 296930 1700 ) ( 298310 * 0 ) + NEW met2 ( 296930 1700 ) ( * 95370 ) + NEW met2 ( 1263850 1688780 ) ( 1266770 * ) + NEW met2 ( 1266770 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1263850 95370 ) ( * 1688780 ) + NEW met1 ( 296930 95370 ) ( 1263850 * ) + NEW met1 ( 296930 95370 ) M1M2_PR + NEW met1 ( 1263850 95370 ) M1M2_PR ; + - wbs_dat_i[14] ( PIN wbs_dat_i[14] ) ( mprj wbs_dat_i[14] ) + USE SIGNAL + + ROUTED met2 ( 310730 82800 ) ( * 95710 ) + NEW met2 ( 310730 82800 ) ( 316250 * ) + NEW met2 ( 316250 1700 0 ) ( * 82800 ) + NEW met2 ( 1270750 1688780 ) ( 1272290 * ) + NEW met2 ( 1272290 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1270750 95710 ) ( * 1688780 ) + NEW met1 ( 310730 95710 ) ( 1270750 * ) + NEW met1 ( 310730 95710 ) M1M2_PR + NEW met1 ( 1270750 95710 ) M1M2_PR ; + - wbs_dat_i[15] ( PIN wbs_dat_i[15] ) ( mprj wbs_dat_i[15] ) + USE SIGNAL + + ROUTED met2 ( 1277650 1688780 ) ( 1277810 * ) + NEW met2 ( 1277810 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1277650 72250 ) ( * 1688780 ) + NEW met2 ( 333730 1700 0 ) ( * 72250 ) + NEW met1 ( 333730 72250 ) ( 1277650 * ) + NEW met1 ( 1277650 72250 ) M1M2_PR + NEW met1 ( 333730 72250 ) M1M2_PR ; + - wbs_dat_i[16] ( PIN wbs_dat_i[16] ) ( mprj wbs_dat_i[16] ) + USE SIGNAL + + ROUTED met1 ( 1277190 1689630 ) ( 1283330 * ) + NEW met2 ( 1283330 1689630 ) ( * 1690140 0 ) + NEW met2 ( 1277190 72590 ) ( * 1689630 ) + NEW met2 ( 349370 1700 ) ( 351670 * 0 ) + NEW met2 ( 349370 1700 ) ( * 72590 ) + NEW met1 ( 349370 72590 ) ( 1277190 * ) + NEW met1 ( 1277190 72590 ) M1M2_PR + NEW met1 ( 1277190 1689630 ) M1M2_PR + NEW met1 ( 1283330 1689630 ) M1M2_PR + NEW met1 ( 349370 72590 ) M1M2_PR ; + - wbs_dat_i[17] ( PIN wbs_dat_i[17] ) ( mprj wbs_dat_i[17] ) + USE SIGNAL + + ROUTED met1 ( 1284090 1689290 ) ( 1288850 * ) + NEW met2 ( 1288850 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1284090 72930 ) ( * 1689290 ) + NEW met2 ( 366850 1700 ) ( 369150 * 0 ) + NEW met2 ( 366850 1700 ) ( * 72930 ) + NEW met1 ( 366850 72930 ) ( 1284090 * ) + NEW met1 ( 1284090 72930 ) M1M2_PR + NEW met1 ( 1284090 1689290 ) M1M2_PR + NEW met1 ( 1288850 1689290 ) M1M2_PR + NEW met1 ( 366850 72930 ) M1M2_PR ; + - wbs_dat_i[18] ( PIN wbs_dat_i[18] ) ( mprj wbs_dat_i[18] ) + USE SIGNAL + + ROUTED met2 ( 387090 1700 0 ) ( * 73270 ) + NEW met1 ( 387090 73270 ) ( 1290990 * ) + NEW met1 ( 1290990 1684190 ) ( 1294210 * ) + NEW met2 ( 1294210 1684190 ) ( * 1688780 ) + NEW met2 ( 1294210 1688780 ) ( 1294370 * ) + NEW met2 ( 1294370 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1290990 73270 ) ( * 1684190 ) + NEW met1 ( 387090 73270 ) M1M2_PR + NEW met1 ( 1290990 73270 ) M1M2_PR + NEW met1 ( 1290990 1684190 ) M1M2_PR + NEW met1 ( 1294210 1684190 ) M1M2_PR ; + - wbs_dat_i[19] ( PIN wbs_dat_i[19] ) ( mprj wbs_dat_i[19] ) + USE SIGNAL + + ROUTED met2 ( 404570 1700 0 ) ( * 73610 ) + NEW met1 ( 404570 73610 ) ( 1298350 * ) + NEW met2 ( 1298350 1688780 ) ( 1299430 * ) + NEW met2 ( 1299430 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1298350 73610 ) ( * 1688780 ) + NEW met1 ( 404570 73610 ) M1M2_PR + NEW met1 ( 1298350 73610 ) M1M2_PR ; + - wbs_dat_i[1] ( PIN wbs_dat_i[1] ) ( mprj wbs_dat_i[1] ) + USE SIGNAL + + ROUTED met2 ( 67850 1700 0 ) ( * 58650 ) + NEW met1 ( 67850 58650 ) ( 1194850 * ) + NEW met2 ( 1194850 1688780 ) ( 1195470 * ) + NEW met2 ( 1195470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1194850 58650 ) ( * 1688780 ) + NEW met1 ( 67850 58650 ) M1M2_PR + NEW met1 ( 1194850 58650 ) M1M2_PR ; + - wbs_dat_i[20] ( PIN wbs_dat_i[20] ) ( mprj wbs_dat_i[20] ) + USE SIGNAL + + ROUTED met2 ( 421130 1700 ) ( 422510 * 0 ) + NEW met2 ( 421130 1700 ) ( * 73950 ) + NEW met1 ( 421130 73950 ) ( 1305250 * ) + NEW met2 ( 1305020 1688780 ) ( 1305250 * ) + NEW met2 ( 1305020 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1305250 73950 ) ( * 1688780 ) + NEW met1 ( 421130 73950 ) M1M2_PR + NEW met1 ( 1305250 73950 ) M1M2_PR ; + - wbs_dat_i[21] ( PIN wbs_dat_i[21] ) ( mprj wbs_dat_i[21] ) + USE SIGNAL + + ROUTED met2 ( 437690 1700 ) ( 439990 * 0 ) + NEW met1 ( 1304790 1652570 ) ( 1310310 * ) + NEW met2 ( 437690 1700 ) ( * 74290 ) + NEW met1 ( 437690 74290 ) ( 1304790 * ) + NEW met2 ( 1304790 74290 ) ( * 1652570 ) + NEW met2 ( 1310310 1688780 ) ( 1310470 * ) + NEW met2 ( 1310470 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1310310 1652570 ) ( * 1688780 ) + NEW met1 ( 1304790 1652570 ) M1M2_PR + NEW met1 ( 1310310 1652570 ) M1M2_PR + NEW met1 ( 437690 74290 ) M1M2_PR + NEW met1 ( 1304790 74290 ) M1M2_PR ; + - wbs_dat_i[22] ( PIN wbs_dat_i[22] ) ( mprj wbs_dat_i[22] ) + USE SIGNAL + + ROUTED met2 ( 457930 1700 0 ) ( * 74630 ) + NEW met1 ( 457930 74630 ) ( 1312610 * ) + NEW met2 ( 1312610 1688780 ) ( 1315990 * ) + NEW met2 ( 1315990 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1312610 74630 ) ( * 1688780 ) + NEW met1 ( 457930 74630 ) M1M2_PR + NEW met1 ( 1312610 74630 ) M1M2_PR ; + - wbs_dat_i[23] ( PIN wbs_dat_i[23] ) ( mprj wbs_dat_i[23] ) + USE SIGNAL + + ROUTED met2 ( 474030 1700 ) ( 475870 * 0 ) + NEW met2 ( 474030 1700 ) ( * 16830 ) + NEW met1 ( 469430 16830 ) ( 474030 * ) + NEW met2 ( 469430 16830 ) ( * 74970 ) + NEW met1 ( 469430 74970 ) ( 1319050 * ) + NEW met2 ( 1319050 74970 ) ( * 1580100 ) + NEW met2 ( 1319050 1580100 ) ( 1320890 * ) + NEW met2 ( 1320890 1688780 ) ( 1321510 * ) + NEW met2 ( 1321510 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1320890 1580100 ) ( * 1688780 ) + NEW met1 ( 474030 16830 ) M1M2_PR + NEW met1 ( 469430 16830 ) M1M2_PR + NEW met1 ( 469430 74970 ) M1M2_PR + NEW met1 ( 1319050 74970 ) M1M2_PR ; + - wbs_dat_i[24] ( PIN wbs_dat_i[24] ) ( mprj wbs_dat_i[24] ) + USE SIGNAL + + ROUTED met2 ( 491050 1700 ) ( 493350 * 0 ) + NEW met2 ( 491050 1700 ) ( * 75310 ) + NEW met1 ( 491050 75310 ) ( 1325950 * ) + NEW met2 ( 1325950 1688780 ) ( 1327030 * ) + NEW met2 ( 1327030 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1325950 75310 ) ( * 1688780 ) + NEW met1 ( 491050 75310 ) M1M2_PR + NEW met1 ( 1325950 75310 ) M1M2_PR ; + - wbs_dat_i[25] ( PIN wbs_dat_i[25] ) ( mprj wbs_dat_i[25] ) + USE SIGNAL + + ROUTED met2 ( 511290 1700 0 ) ( * 75650 ) + NEW met1 ( 511290 75650 ) ( 1332850 * ) + NEW met2 ( 1332620 1688780 ) ( 1332850 * ) + NEW met2 ( 1332620 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1332850 75650 ) ( * 1688780 ) + NEW met1 ( 511290 75650 ) M1M2_PR + NEW met1 ( 1332850 75650 ) M1M2_PR ; + - wbs_dat_i[26] ( PIN wbs_dat_i[26] ) ( mprj wbs_dat_i[26] ) + USE SIGNAL + + ROUTED met2 ( 528770 1700 0 ) ( * 71910 ) + NEW met1 ( 528770 71910 ) ( 1333310 * ) + NEW met1 ( 1333310 1688950 ) ( 1338070 * ) + NEW met2 ( 1338070 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1333310 71910 ) ( * 1688950 ) + NEW met1 ( 528770 71910 ) M1M2_PR + NEW met1 ( 1333310 71910 ) M1M2_PR + NEW met1 ( 1333310 1688950 ) M1M2_PR + NEW met1 ( 1338070 1688950 ) M1M2_PR ; + - wbs_dat_i[27] ( PIN wbs_dat_i[27] ) ( mprj wbs_dat_i[27] ) + USE SIGNAL + + ROUTED met1 ( 1339290 1688950 ) ( 1343590 * ) + NEW met2 ( 1343590 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1339290 71570 ) ( * 1688950 ) + NEW met2 ( 545330 1700 ) ( 546710 * 0 ) + NEW met2 ( 545330 1700 ) ( * 71570 ) + NEW met1 ( 545330 71570 ) ( 1339290 * ) + NEW met1 ( 1339290 71570 ) M1M2_PR + NEW met1 ( 1339290 1688950 ) M1M2_PR + NEW met1 ( 1343590 1688950 ) M1M2_PR + NEW met1 ( 545330 71570 ) M1M2_PR ; + - wbs_dat_i[28] ( PIN wbs_dat_i[28] ) ( mprj wbs_dat_i[28] ) + USE SIGNAL + + ROUTED met2 ( 1346650 1683340 ) ( 1347570 * ) + NEW met2 ( 1347570 1683340 ) ( * 1688780 ) + NEW met2 ( 1347570 1688780 ) ( 1349110 * ) + NEW met2 ( 1349110 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1346650 71230 ) ( * 1683340 ) + NEW met2 ( 561890 1700 ) ( 564190 * 0 ) + NEW met2 ( 561890 1700 ) ( * 71230 ) + NEW met1 ( 561890 71230 ) ( 1346650 * ) + NEW met1 ( 1346650 71230 ) M1M2_PR + NEW met1 ( 561890 71230 ) M1M2_PR ; + - wbs_dat_i[29] ( PIN wbs_dat_i[29] ) ( mprj wbs_dat_i[29] ) + USE SIGNAL + + ROUTED met2 ( 582130 1700 0 ) ( * 80070 ) + NEW met2 ( 1353550 1688780 ) ( 1354630 * ) + NEW met2 ( 1354630 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1353550 80070 ) ( * 1688780 ) + NEW met1 ( 582130 80070 ) ( 1353550 * ) + NEW met1 ( 582130 80070 ) M1M2_PR + NEW met1 ( 1353550 80070 ) M1M2_PR ; + - wbs_dat_i[2] ( PIN wbs_dat_i[2] ) ( mprj wbs_dat_i[2] ) + USE SIGNAL + + ROUTED met2 ( 89930 1700 ) ( 91310 * 0 ) + NEW met2 ( 89930 1700 ) ( * 58990 ) + NEW met1 ( 89930 58990 ) ( 1201750 * ) + NEW met2 ( 1201750 1688780 ) ( 1202830 * ) + NEW met2 ( 1202830 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1201750 58990 ) ( * 1688780 ) + NEW met1 ( 89930 58990 ) M1M2_PR + NEW met1 ( 1201750 58990 ) M1M2_PR ; + - wbs_dat_i[30] ( PIN wbs_dat_i[30] ) ( mprj wbs_dat_i[30] ) + USE SIGNAL + + ROUTED met2 ( 599610 1700 0 ) ( * 16150 ) + NEW met1 ( 593630 16150 ) ( 599610 * ) + NEW met2 ( 593630 16150 ) ( * 80410 ) + NEW met2 ( 1359760 1688780 ) ( 1360450 * ) + NEW met2 ( 1359760 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1360450 80410 ) ( * 1688780 ) + NEW met1 ( 593630 80410 ) ( 1360450 * ) + NEW met1 ( 599610 16150 ) M1M2_PR + NEW met1 ( 593630 16150 ) M1M2_PR + NEW met1 ( 593630 80410 ) M1M2_PR + NEW met1 ( 1360450 80410 ) M1M2_PR ; + - wbs_dat_i[31] ( PIN wbs_dat_i[31] ) ( mprj wbs_dat_i[31] ) + USE SIGNAL + + ROUTED met1 ( 1359990 1652570 ) ( 1365050 * ) + NEW met2 ( 1359990 80750 ) ( * 1652570 ) + NEW met2 ( 1365050 1688780 ) ( 1365210 * ) + NEW met2 ( 1365210 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1365050 1652570 ) ( * 1688780 ) + NEW met2 ( 615250 1700 ) ( 617550 * 0 ) + NEW met2 ( 615250 1700 ) ( * 80750 ) + NEW met1 ( 615250 80750 ) ( 1359990 * ) + NEW met1 ( 1359990 1652570 ) M1M2_PR + NEW met1 ( 1365050 1652570 ) M1M2_PR + NEW met1 ( 1359990 80750 ) M1M2_PR + NEW met1 ( 615250 80750 ) M1M2_PR ; + - wbs_dat_i[3] ( PIN wbs_dat_i[3] ) ( mprj wbs_dat_i[3] ) + USE SIGNAL + + ROUTED met2 ( 112930 1700 ) ( 115230 * 0 ) + NEW met2 ( 112930 1700 ) ( * 72420 ) + NEW met3 ( 112930 72420 ) ( 1209110 * ) + NEW met2 ( 1209110 1688780 ) ( 1210190 * ) + NEW met2 ( 1210190 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1209110 72420 ) ( * 1688780 ) + NEW met2 ( 112930 72420 ) M2M3_PR + NEW met2 ( 1209110 72420 ) M2M3_PR ; + - wbs_dat_i[4] ( PIN wbs_dat_i[4] ) ( mprj wbs_dat_i[4] ) + USE SIGNAL + + ROUTED met2 ( 138690 1700 0 ) ( * 79220 ) + NEW met3 ( 138690 79220 ) ( 1216010 * ) + NEW met2 ( 1216010 1688780 ) ( 1217550 * ) + NEW met2 ( 1217550 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1216010 79220 ) ( * 1688780 ) + NEW met2 ( 138690 79220 ) M2M3_PR + NEW met2 ( 1216010 79220 ) M2M3_PR ; + - wbs_dat_i[5] ( PIN wbs_dat_i[5] ) ( mprj wbs_dat_i[5] ) + USE SIGNAL + + ROUTED met2 ( 154330 1700 ) ( 156630 * 0 ) + NEW met2 ( 154330 1700 ) ( * 79390 ) + NEW met1 ( 154330 79390 ) ( 1222450 * ) + NEW met2 ( 1222450 1688780 ) ( 1223070 * ) + NEW met2 ( 1223070 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1222450 79390 ) ( * 1688780 ) + NEW met1 ( 154330 79390 ) M1M2_PR + NEW met1 ( 1222450 79390 ) M1M2_PR ; + - wbs_dat_i[6] ( PIN wbs_dat_i[6] ) ( mprj wbs_dat_i[6] ) + USE SIGNAL + + ROUTED met2 ( 172730 1700 ) ( 174110 * 0 ) + NEW met2 ( 172730 1700 ) ( * 79730 ) + NEW met1 ( 172730 79730 ) ( 1228890 * ) + NEW met2 ( 1228660 1688780 ) ( 1228890 * ) + NEW met2 ( 1228660 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1228890 79730 ) ( * 1688780 ) + NEW met1 ( 172730 79730 ) M1M2_PR + NEW met1 ( 1228890 79730 ) M1M2_PR ; + - wbs_dat_i[7] ( PIN wbs_dat_i[7] ) ( mprj wbs_dat_i[7] ) + USE SIGNAL + + ROUTED met2 ( 186530 82800 ) ( * 92990 ) + NEW met2 ( 186530 82800 ) ( 192050 * ) + NEW met2 ( 192050 1700 0 ) ( * 82800 ) + NEW met1 ( 186530 92990 ) ( 1229350 * ) + NEW met1 ( 1229350 1688950 ) ( 1234110 * ) + NEW met2 ( 1234110 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1229350 92990 ) ( * 1688950 ) + NEW met1 ( 186530 92990 ) M1M2_PR + NEW met1 ( 1229350 92990 ) M1M2_PR + NEW met1 ( 1229350 1688950 ) M1M2_PR + NEW met1 ( 1234110 1688950 ) M1M2_PR ; + - wbs_dat_i[8] ( PIN wbs_dat_i[8] ) ( mprj wbs_dat_i[8] ) + USE SIGNAL + + ROUTED met2 ( 207230 82800 ) ( * 93330 ) + NEW met2 ( 207230 82800 ) ( 209530 * ) + NEW met2 ( 209530 1700 0 ) ( * 82800 ) + NEW met1 ( 207230 93330 ) ( 1236250 * ) + NEW met2 ( 1236250 93330 ) ( * 1676700 ) + NEW met2 ( 1236250 1676700 ) ( 1237630 * ) + NEW met2 ( 1237630 1676700 ) ( * 1688780 ) + NEW met2 ( 1237630 1688780 ) ( 1239170 * ) + NEW met2 ( 1239170 1688780 ) ( * 1690140 0 ) + NEW met1 ( 207230 93330 ) M1M2_PR + NEW met1 ( 1236250 93330 ) M1M2_PR ; + - wbs_dat_i[9] ( PIN wbs_dat_i[9] ) ( mprj wbs_dat_i[9] ) + USE SIGNAL + + ROUTED met2 ( 225630 1700 ) ( 227470 * 0 ) + NEW met2 ( 225630 1700 ) ( * 16830 ) + NEW met1 ( 221030 16830 ) ( 225630 * ) + NEW met2 ( 221030 16830 ) ( * 93670 ) + NEW met2 ( 1243610 1688780 ) ( 1244690 * ) + NEW met2 ( 1244690 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1243610 93670 ) ( * 1688780 ) + NEW met1 ( 221030 93670 ) ( 1243610 * ) + NEW met1 ( 225630 16830 ) M1M2_PR + NEW met1 ( 221030 16830 ) M1M2_PR + NEW met1 ( 221030 93670 ) M1M2_PR + NEW met1 ( 1243610 93670 ) M1M2_PR ; + - wbs_dat_o[0] ( PIN wbs_dat_o[0] ) ( mprj wbs_dat_o[0] ) + USE SIGNAL + + ROUTED met2 ( 1187950 92820 ) ( * 1676700 ) + NEW met2 ( 1187950 1676700 ) ( 1188410 * ) + NEW met2 ( 1188410 1676700 ) ( * 1688780 ) + NEW met2 ( 1188410 1688780 ) ( 1189950 * ) + NEW met2 ( 1189950 1688780 ) ( * 1690140 0 ) + NEW met2 ( 48530 1700 ) ( 49910 * 0 ) + NEW met3 ( 48530 92820 ) ( 1187950 * ) + NEW met2 ( 48530 1700 ) ( * 92820 ) + NEW met2 ( 1187950 92820 ) M2M3_PR + NEW met2 ( 48530 92820 ) M2M3_PR ; + - wbs_dat_o[10] ( PIN wbs_dat_o[10] ) ( mprj wbs_dat_o[10] ) + USE SIGNAL + + ROUTED met2 ( 1250510 1688780 ) ( 1252050 * ) + NEW met2 ( 1252050 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1250510 94010 ) ( * 1688780 ) + NEW met1 ( 248630 94010 ) ( 1250510 * ) + NEW met2 ( 248630 82800 ) ( * 94010 ) + NEW met2 ( 248630 82800 ) ( 250930 * ) + NEW met2 ( 250930 1700 0 ) ( * 82800 ) + NEW met1 ( 1250510 94010 ) M1M2_PR + NEW met1 ( 248630 94010 ) M1M2_PR ; + - wbs_dat_o[11] ( PIN wbs_dat_o[11] ) ( mprj wbs_dat_o[11] ) + USE SIGNAL + + ROUTED met2 ( 1256490 1688780 ) ( 1257570 * ) + NEW met2 ( 1257570 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1256490 94350 ) ( * 1688780 ) + NEW met2 ( 267030 1700 ) ( 268870 * 0 ) + NEW met2 ( 267030 1700 ) ( * 16830 ) + NEW met1 ( 262430 16830 ) ( 267030 * ) + NEW met1 ( 262430 94350 ) ( 1256490 * ) + NEW met2 ( 262430 16830 ) ( * 94350 ) + NEW met1 ( 1256490 94350 ) M1M2_PR + NEW met1 ( 267030 16830 ) M1M2_PR + NEW met1 ( 262430 16830 ) M1M2_PR + NEW met1 ( 262430 94350 ) M1M2_PR ; + - wbs_dat_o[12] ( PIN wbs_dat_o[12] ) ( mprj wbs_dat_o[12] ) + USE SIGNAL + + ROUTED met2 ( 284050 1700 ) ( 286350 * 0 ) + NEW met2 ( 283130 82800 ) ( * 95030 ) + NEW met2 ( 283130 82800 ) ( 284050 * ) + NEW met2 ( 284050 1700 ) ( * 82800 ) + NEW met2 ( 1263160 1688780 ) ( 1263390 * ) + NEW met2 ( 1263160 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1263390 95030 ) ( * 1688780 ) + NEW met1 ( 283130 95030 ) ( 1263390 * ) + NEW met1 ( 283130 95030 ) M1M2_PR + NEW met1 ( 1263390 95030 ) M1M2_PR ; + - wbs_dat_o[13] ( PIN wbs_dat_o[13] ) ( mprj wbs_dat_o[13] ) + USE SIGNAL + + ROUTED met2 ( 303830 82800 ) ( * 99790 ) + NEW met2 ( 303830 82800 ) ( 304290 * ) + NEW met2 ( 304290 1700 0 ) ( * 82800 ) + NEW met2 ( 1264310 99790 ) ( * 1580100 ) + NEW met2 ( 1264310 1580100 ) ( 1267990 * ) + NEW met2 ( 1267990 1688780 ) ( 1268610 * ) + NEW met2 ( 1268610 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1267990 1580100 ) ( * 1688780 ) + NEW met1 ( 303830 99790 ) ( 1264310 * ) + NEW met1 ( 303830 99790 ) M1M2_PR + NEW met1 ( 1264310 99790 ) M1M2_PR ; + - wbs_dat_o[14] ( PIN wbs_dat_o[14] ) ( mprj wbs_dat_o[14] ) + USE SIGNAL + + ROUTED met2 ( 317630 82800 ) ( * 100130 ) + NEW met2 ( 317630 82800 ) ( 321770 * ) + NEW met2 ( 321770 1700 0 ) ( * 82800 ) + NEW met2 ( 1271210 100130 ) ( * 1580100 ) + NEW met2 ( 1271210 1580100 ) ( 1273510 * ) + NEW met2 ( 1273510 1688780 ) ( 1274130 * ) + NEW met2 ( 1274130 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1273510 1580100 ) ( * 1688780 ) + NEW met1 ( 317630 100130 ) ( 1271210 * ) + NEW met1 ( 317630 100130 ) M1M2_PR + NEW met1 ( 1271210 100130 ) M1M2_PR ; + - wbs_dat_o[15] ( PIN wbs_dat_o[15] ) ( mprj wbs_dat_o[15] ) + USE SIGNAL + + ROUTED met2 ( 1278110 1688780 ) ( 1279650 * ) + NEW met2 ( 1279650 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1278110 100470 ) ( * 1688780 ) + NEW met2 ( 338330 1700 ) ( 339710 * 0 ) + NEW met1 ( 338330 100470 ) ( 1278110 * ) + NEW met2 ( 338330 1700 ) ( * 100470 ) + NEW met1 ( 1278110 100470 ) M1M2_PR + NEW met1 ( 338330 100470 ) M1M2_PR ; + - wbs_dat_o[16] ( PIN wbs_dat_o[16] ) ( mprj wbs_dat_o[16] ) + USE SIGNAL + + ROUTED met2 ( 1284550 1688780 ) ( 1285170 * ) + NEW met2 ( 1285170 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1284550 100810 ) ( * 1688780 ) + NEW met1 ( 352130 100810 ) ( 1284550 * ) + NEW met2 ( 352130 82800 ) ( * 100810 ) + NEW met2 ( 352130 82800 ) ( 357650 * ) + NEW met2 ( 357650 1700 0 ) ( * 82800 ) + NEW met1 ( 1284550 100810 ) M1M2_PR + NEW met1 ( 352130 100810 ) M1M2_PR ; + - wbs_dat_o[17] ( PIN wbs_dat_o[17] ) ( mprj wbs_dat_o[17] ) + USE SIGNAL + + ROUTED met2 ( 375130 1700 0 ) ( * 24990 ) + NEW met1 ( 375130 24990 ) ( 727950 * ) + NEW met2 ( 727950 24990 ) ( * 1681810 ) + NEW met2 ( 1290530 1681810 ) ( * 1688780 ) + NEW met2 ( 1290530 1688780 ) ( 1290690 * ) + NEW met2 ( 1290690 1688780 ) ( * 1690140 0 ) + NEW met1 ( 727950 1681810 ) ( 1290530 * ) + NEW met1 ( 375130 24990 ) M1M2_PR + NEW met1 ( 727950 24990 ) M1M2_PR + NEW met1 ( 727950 1681810 ) M1M2_PR + NEW met1 ( 1290530 1681810 ) M1M2_PR ; + - wbs_dat_o[18] ( PIN wbs_dat_o[18] ) ( mprj wbs_dat_o[18] ) + USE SIGNAL + + ROUTED met2 ( 391230 1700 ) ( 393070 * 0 ) + NEW met2 ( 391230 1700 ) ( * 16830 ) + NEW met1 ( 386630 16830 ) ( 391230 * ) + NEW met2 ( 386630 16830 ) ( * 101150 ) + NEW met1 ( 386630 101150 ) ( 1291450 * ) + NEW met1 ( 1291450 1688950 ) ( 1295750 * ) + NEW met2 ( 1295750 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1291450 101150 ) ( * 1688950 ) + NEW met1 ( 391230 16830 ) M1M2_PR + NEW met1 ( 386630 16830 ) M1M2_PR + NEW met1 ( 386630 101150 ) M1M2_PR + NEW met1 ( 1291450 101150 ) M1M2_PR + NEW met1 ( 1291450 1688950 ) M1M2_PR + NEW met1 ( 1295750 1688950 ) M1M2_PR ; + - wbs_dat_o[19] ( PIN wbs_dat_o[19] ) ( mprj wbs_dat_o[19] ) + USE SIGNAL + + ROUTED met2 ( 410550 1700 0 ) ( * 26690 ) + NEW met1 ( 410550 26690 ) ( 748650 * ) + NEW met2 ( 748650 26690 ) ( * 1682150 ) + NEW met2 ( 1299730 1682150 ) ( * 1689290 ) + NEW met2 ( 1299730 1689290 ) ( 1301270 * ) + NEW met2 ( 1301270 1689290 ) ( * 1690140 0 ) + NEW met1 ( 748650 1682150 ) ( 1299730 * ) + NEW met1 ( 410550 26690 ) M1M2_PR + NEW met1 ( 748650 26690 ) M1M2_PR + NEW met1 ( 748650 1682150 ) M1M2_PR + NEW met1 ( 1299730 1682150 ) M1M2_PR ; + - wbs_dat_o[1] ( PIN wbs_dat_o[1] ) ( mprj wbs_dat_o[1] ) + USE SIGNAL + + ROUTED met2 ( 73830 1700 0 ) ( * 17510 ) + NEW met1 ( 73830 17510 ) ( 1193930 * ) + NEW met1 ( 1193930 1688950 ) ( 1197310 * ) + NEW met2 ( 1197310 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1193930 17510 ) ( * 1688950 ) + NEW met1 ( 73830 17510 ) M1M2_PR + NEW met1 ( 1193930 17510 ) M1M2_PR + NEW met1 ( 1193930 1688950 ) M1M2_PR + NEW met1 ( 1197310 1688950 ) M1M2_PR ; + - wbs_dat_o[20] ( PIN wbs_dat_o[20] ) ( mprj wbs_dat_o[20] ) + USE SIGNAL + + ROUTED met2 ( 769350 27030 ) ( * 1682490 ) + NEW met2 ( 428490 1700 0 ) ( * 27030 ) + NEW met1 ( 428490 27030 ) ( 769350 * ) + NEW met2 ( 1306630 1682490 ) ( * 1688780 ) + NEW met2 ( 1306630 1688780 ) ( 1306790 * ) + NEW met2 ( 1306790 1688780 ) ( * 1690140 0 ) + NEW met1 ( 769350 1682490 ) ( 1306630 * ) + NEW met1 ( 769350 27030 ) M1M2_PR + NEW met1 ( 769350 1682490 ) M1M2_PR + NEW met1 ( 428490 27030 ) M1M2_PR + NEW met1 ( 1306630 1682490 ) M1M2_PR ; + - wbs_dat_o[21] ( PIN wbs_dat_o[21] ) ( mprj wbs_dat_o[21] ) + USE SIGNAL + + ROUTED met2 ( 445970 1700 0 ) ( * 16660 ) + NEW met3 ( 445970 16660 ) ( 1311690 * ) + NEW met2 ( 1311690 1688780 ) ( 1312310 * ) + NEW met2 ( 1312310 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1311690 16660 ) ( * 1688780 ) + NEW met2 ( 445970 16660 ) M2M3_PR + NEW met2 ( 1311690 16660 ) M2M3_PR ; + - wbs_dat_o[22] ( PIN wbs_dat_o[22] ) ( mprj wbs_dat_o[22] ) + USE SIGNAL + + ROUTED met2 ( 463910 1700 0 ) ( * 24650 ) + NEW met1 ( 463910 24650 ) ( 817650 * ) + NEW met2 ( 817650 24650 ) ( * 1682830 ) + NEW met2 ( 1317670 1682830 ) ( * 1689290 ) + NEW met2 ( 1317670 1689290 ) ( 1317830 * ) + NEW met2 ( 1317830 1689290 ) ( * 1690140 0 ) + NEW met1 ( 817650 1682830 ) ( 1317670 * ) + NEW met1 ( 463910 24650 ) M1M2_PR + NEW met1 ( 817650 24650 ) M1M2_PR + NEW met1 ( 817650 1682830 ) M1M2_PR + NEW met1 ( 1317670 1682830 ) M1M2_PR ; + - wbs_dat_o[23] ( PIN wbs_dat_o[23] ) ( mprj wbs_dat_o[23] ) + USE SIGNAL + + ROUTED met2 ( 481390 1700 0 ) ( * 20570 ) + NEW met1 ( 481390 20570 ) ( 1318130 * ) + NEW met1 ( 1318130 1688950 ) ( 1323350 * ) + NEW met2 ( 1323350 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1318130 20570 ) ( * 1688950 ) + NEW met1 ( 481390 20570 ) M1M2_PR + NEW met1 ( 1318130 20570 ) M1M2_PR + NEW met1 ( 1318130 1688950 ) M1M2_PR + NEW met1 ( 1323350 1688950 ) M1M2_PR ; + - wbs_dat_o[24] ( PIN wbs_dat_o[24] ) ( mprj wbs_dat_o[24] ) + USE SIGNAL + + ROUTED met2 ( 499330 1700 0 ) ( * 26350 ) + NEW met1 ( 499330 26350 ) ( 838350 * ) + NEW met2 ( 838350 26350 ) ( * 1683170 ) + NEW met1 ( 1290690 1683170 ) ( * 1683510 ) + NEW met1 ( 1290690 1683510 ) ( 1294670 * ) + NEW met1 ( 1294670 1683170 ) ( * 1683510 ) + NEW met1 ( 1294670 1683170 ) ( 1328710 * ) + NEW met2 ( 1328710 1683170 ) ( * 1688780 ) + NEW met2 ( 1328710 1688780 ) ( 1328870 * ) + NEW met2 ( 1328870 1688780 ) ( * 1690140 0 ) + NEW met1 ( 838350 1683170 ) ( 1290690 * ) + NEW met1 ( 499330 26350 ) M1M2_PR + NEW met1 ( 838350 26350 ) M1M2_PR + NEW met1 ( 838350 1683170 ) M1M2_PR + NEW met1 ( 1328710 1683170 ) M1M2_PR ; + - wbs_dat_o[25] ( PIN wbs_dat_o[25] ) ( mprj wbs_dat_o[25] ) + USE SIGNAL + + ROUTED met2 ( 516810 1700 0 ) ( * 16830 ) + NEW met2 ( 1183350 16830 ) ( * 1678410 ) + NEW met1 ( 516810 16830 ) ( 1183350 * ) + NEW met2 ( 1334230 1678410 ) ( * 1689290 ) + NEW met2 ( 1334230 1689290 ) ( 1334390 * ) + NEW met2 ( 1334390 1689290 ) ( * 1690140 0 ) + NEW met1 ( 1183350 1678410 ) ( 1334230 * ) + NEW met1 ( 516810 16830 ) M1M2_PR + NEW met1 ( 1183350 16830 ) M1M2_PR + NEW met1 ( 1183350 1678410 ) M1M2_PR + NEW met1 ( 1334230 1678410 ) M1M2_PR ; + - wbs_dat_o[26] ( PIN wbs_dat_o[26] ) ( mprj wbs_dat_o[26] ) + USE SIGNAL + + ROUTED met2 ( 1190250 16490 ) ( * 1678070 ) + NEW met2 ( 1338830 1678070 ) ( * 1689460 ) + NEW met2 ( 1338830 1689460 ) ( 1339910 * ) + NEW met2 ( 1339910 1689460 ) ( * 1690140 0 ) + NEW met2 ( 534750 1700 0 ) ( * 16150 ) + NEW met1 ( 534750 16150 ) ( 565800 * ) + NEW met1 ( 565800 16150 ) ( * 16490 ) + NEW met1 ( 565800 16490 ) ( 1190250 * ) + NEW met1 ( 1190250 1678070 ) ( 1338830 * ) + NEW met1 ( 1190250 16490 ) M1M2_PR + NEW met1 ( 1190250 1678070 ) M1M2_PR + NEW met1 ( 1338830 1678070 ) M1M2_PR + NEW met1 ( 534750 16150 ) M1M2_PR ; + - wbs_dat_o[27] ( PIN wbs_dat_o[27] ) ( mprj wbs_dat_o[27] ) + USE SIGNAL + + ROUTED met2 ( 886650 27370 ) ( * 1683510 ) + NEW met2 ( 1345270 1683510 ) ( * 1688780 ) + NEW met2 ( 1345270 1688780 ) ( 1345430 * ) + NEW met2 ( 1345430 1688780 ) ( * 1690140 0 ) + NEW met2 ( 552690 1700 0 ) ( * 27370 ) + NEW met1 ( 552690 27370 ) ( 886650 * ) + NEW met1 ( 886650 1683510 ) ( 1290300 * ) + NEW met1 ( 1290300 1683510 ) ( * 1683850 ) + NEW met1 ( 1290300 1683850 ) ( 1295130 * ) + NEW met1 ( 1295130 1683510 ) ( * 1683850 ) + NEW met1 ( 1295130 1683510 ) ( 1345270 * ) + NEW met1 ( 886650 27370 ) M1M2_PR + NEW met1 ( 886650 1683510 ) M1M2_PR + NEW met1 ( 1345270 1683510 ) M1M2_PR + NEW met1 ( 552690 27370 ) M1M2_PR ; + - wbs_dat_o[28] ( PIN wbs_dat_o[28] ) ( mprj wbs_dat_o[28] ) + USE SIGNAL + + ROUTED met2 ( 570170 1700 0 ) ( * 15810 ) + NEW met2 ( 1350790 1677390 ) ( * 1688780 ) + NEW met2 ( 1350790 1688780 ) ( 1350950 * ) + NEW met2 ( 1350950 1688780 ) ( * 1690140 0 ) + NEW met1 ( 570170 15810 ) ( 614100 * ) + NEW met1 ( 614100 15810 ) ( * 16150 ) + NEW met1 ( 614100 16150 ) ( 1204050 * ) + NEW met2 ( 1204050 16150 ) ( * 1677390 ) + NEW met1 ( 1204050 1677390 ) ( 1350790 * ) + NEW met1 ( 570170 15810 ) M1M2_PR + NEW met1 ( 1350790 1677390 ) M1M2_PR + NEW met1 ( 1204050 16150 ) M1M2_PR + NEW met1 ( 1204050 1677390 ) M1M2_PR ; + - wbs_dat_o[29] ( PIN wbs_dat_o[29] ) ( mprj wbs_dat_o[29] ) + USE SIGNAL + + ROUTED met2 ( 588110 1700 0 ) ( * 25670 ) + NEW met2 ( 1355850 1679770 ) ( * 1688780 ) + NEW met2 ( 1355850 1688780 ) ( 1356010 * ) + NEW met2 ( 1356010 1688780 ) ( * 1690140 0 ) + NEW met1 ( 588110 25670 ) ( 928050 * ) + NEW met2 ( 928050 25670 ) ( * 1679770 ) + NEW met1 ( 928050 1679770 ) ( 1355850 * ) + NEW met1 ( 588110 25670 ) M1M2_PR + NEW met1 ( 1355850 1679770 ) M1M2_PR + NEW met1 ( 928050 25670 ) M1M2_PR + NEW met1 ( 928050 1679770 ) M1M2_PR ; + - wbs_dat_o[2] ( PIN wbs_dat_o[2] ) ( mprj wbs_dat_o[2] ) + USE SIGNAL + + ROUTED met2 ( 97290 1700 0 ) ( * 18190 ) + NEW met1 ( 97290 18190 ) ( 1202210 * ) + NEW met2 ( 1202210 18190 ) ( * 1580100 ) + NEW met2 ( 1202210 1580100 ) ( 1203590 * ) + NEW met2 ( 1203590 1688780 ) ( 1204670 * ) + NEW met2 ( 1204670 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1203590 1580100 ) ( * 1688780 ) + NEW met1 ( 97290 18190 ) M1M2_PR + NEW met1 ( 1202210 18190 ) M1M2_PR ; + - wbs_dat_o[30] ( PIN wbs_dat_o[30] ) ( mprj wbs_dat_o[30] ) + USE SIGNAL + + ROUTED met2 ( 605590 1700 0 ) ( * 25330 ) + NEW met2 ( 1361370 1679430 ) ( * 1688780 ) + NEW met2 ( 1361370 1688780 ) ( 1361530 * ) + NEW met2 ( 1361530 1688780 ) ( * 1690140 0 ) + NEW met1 ( 605590 25330 ) ( 941850 * ) + NEW met2 ( 941850 25330 ) ( * 1679430 ) + NEW met1 ( 941850 1679430 ) ( 1361370 * ) + NEW met1 ( 605590 25330 ) M1M2_PR + NEW met1 ( 1361370 1679430 ) M1M2_PR + NEW met1 ( 941850 25330 ) M1M2_PR + NEW met1 ( 941850 1679430 ) M1M2_PR ; + - wbs_dat_o[31] ( PIN wbs_dat_o[31] ) ( mprj wbs_dat_o[31] ) + USE SIGNAL + + ROUTED met2 ( 969450 26010 ) ( * 1679090 ) + NEW met2 ( 1366890 1679090 ) ( * 1689460 ) + NEW met2 ( 1366890 1689460 ) ( 1367050 * ) + NEW met2 ( 1367050 1689460 ) ( * 1690140 0 ) + NEW met2 ( 623530 1700 0 ) ( * 26010 ) + NEW met1 ( 623530 26010 ) ( 969450 * ) + NEW met1 ( 969450 1679090 ) ( 1366890 * ) + NEW met1 ( 969450 26010 ) M1M2_PR + NEW met1 ( 969450 1679090 ) M1M2_PR + NEW met1 ( 1366890 1679090 ) M1M2_PR + NEW met1 ( 623530 26010 ) M1M2_PR ; + - wbs_dat_o[3] ( PIN wbs_dat_o[3] ) ( mprj wbs_dat_o[3] ) + USE SIGNAL + + ROUTED met2 ( 121210 1700 0 ) ( * 18530 ) + NEW met1 ( 121210 18530 ) ( 1208190 * ) + NEW met1 ( 1208190 1652570 ) ( 1211870 * ) + NEW met2 ( 1208190 18530 ) ( * 1652570 ) + NEW met2 ( 1211870 1688780 ) ( 1212030 * ) + NEW met2 ( 1212030 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1211870 1652570 ) ( * 1688780 ) + NEW met1 ( 121210 18530 ) M1M2_PR + NEW met1 ( 1208190 18530 ) M1M2_PR + NEW met1 ( 1208190 1652570 ) M1M2_PR + NEW met1 ( 1211870 1652570 ) M1M2_PR ; + - wbs_dat_o[4] ( PIN wbs_dat_o[4] ) ( mprj wbs_dat_o[4] ) + USE SIGNAL + + ROUTED met2 ( 144670 1700 0 ) ( * 19210 ) + NEW met1 ( 144670 19210 ) ( 1214630 * ) + NEW met1 ( 1214630 1688950 ) ( 1219390 * ) + NEW met2 ( 1219390 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1214630 19210 ) ( * 1688950 ) + NEW met1 ( 144670 19210 ) M1M2_PR + NEW met1 ( 1214630 19210 ) M1M2_PR + NEW met1 ( 1214630 1688950 ) M1M2_PR + NEW met1 ( 1219390 1688950 ) M1M2_PR ; + - wbs_dat_o[5] ( PIN wbs_dat_o[5] ) ( mprj wbs_dat_o[5] ) + USE SIGNAL + + ROUTED met2 ( 162150 1700 0 ) ( * 19550 ) + NEW met1 ( 162150 19550 ) ( 1221530 * ) + NEW met1 ( 1221530 1688950 ) ( 1224910 * ) + NEW met2 ( 1224910 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1221530 19550 ) ( * 1688950 ) + NEW met1 ( 162150 19550 ) M1M2_PR + NEW met1 ( 1221530 19550 ) M1M2_PR + NEW met1 ( 1221530 1688950 ) M1M2_PR + NEW met1 ( 1224910 1688950 ) M1M2_PR ; + - wbs_dat_o[6] ( PIN wbs_dat_o[6] ) ( mprj wbs_dat_o[6] ) + USE SIGNAL + + ROUTED met2 ( 179630 82800 ) ( 180090 * ) + NEW met2 ( 180090 1700 0 ) ( * 82800 ) + NEW met2 ( 179630 82800 ) ( * 1681130 ) + NEW met2 ( 1230270 1681130 ) ( * 1688780 ) + NEW met2 ( 1230270 1688780 ) ( 1230430 * ) + NEW met2 ( 1230430 1688780 ) ( * 1690140 0 ) + NEW met1 ( 179630 1681130 ) ( 1230270 * ) + NEW met1 ( 179630 1681130 ) M1M2_PR + NEW met1 ( 1230270 1681130 ) M1M2_PR ; + - wbs_dat_o[7] ( PIN wbs_dat_o[7] ) ( mprj wbs_dat_o[7] ) + USE SIGNAL + + ROUTED met2 ( 198030 1700 0 ) ( * 19890 ) + NEW met1 ( 198030 19890 ) ( 1236710 * ) + NEW met1 ( 1235330 1660050 ) ( 1236710 * ) + NEW met2 ( 1236710 19890 ) ( * 1660050 ) + NEW met2 ( 1235330 1688780 ) ( 1235490 * ) + NEW met2 ( 1235490 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1235330 1660050 ) ( * 1688780 ) + NEW met1 ( 198030 19890 ) M1M2_PR + NEW met1 ( 1236710 19890 ) M1M2_PR + NEW met1 ( 1235330 1660050 ) M1M2_PR + NEW met1 ( 1236710 1660050 ) M1M2_PR ; + - wbs_dat_o[8] ( PIN wbs_dat_o[8] ) ( mprj wbs_dat_o[8] ) + USE SIGNAL + + ROUTED met2 ( 214130 1700 ) ( 215510 * 0 ) + NEW met2 ( 214130 1700 ) ( * 1681470 ) + NEW met2 ( 1240850 1681470 ) ( * 1688780 ) + NEW met2 ( 1240850 1688780 ) ( 1241010 * ) + NEW met2 ( 1241010 1688780 ) ( * 1690140 0 ) + NEW met1 ( 214130 1681470 ) ( 1240850 * ) + NEW met1 ( 214130 1681470 ) M1M2_PR + NEW met1 ( 1240850 1681470 ) M1M2_PR ; + - wbs_dat_o[9] ( PIN wbs_dat_o[9] ) ( mprj wbs_dat_o[9] ) + USE SIGNAL + + ROUTED met1 ( 1242230 1688950 ) ( 1246530 * ) + NEW met2 ( 1246530 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1242230 20230 ) ( * 1688950 ) + NEW met2 ( 233450 1700 0 ) ( * 20230 ) + NEW met1 ( 233450 20230 ) ( 1242230 * ) + NEW met1 ( 1242230 20230 ) M1M2_PR + NEW met1 ( 1242230 1688950 ) M1M2_PR + NEW met1 ( 1246530 1688950 ) M1M2_PR + NEW met1 ( 233450 20230 ) M1M2_PR ; + - wbs_sel_i[0] ( PIN wbs_sel_i[0] ) ( mprj wbs_sel_i[0] ) + USE SIGNAL + + ROUTED met2 ( 1191630 1680450 ) ( * 1688780 ) + NEW met2 ( 1191630 1688780 ) ( 1191790 * ) + NEW met2 ( 1191790 1688780 ) ( * 1690140 0 ) + NEW met2 ( 55430 82800 ) ( 55890 * ) + NEW met2 ( 55890 1700 0 ) ( * 82800 ) + NEW met2 ( 55430 82800 ) ( * 1680450 ) + NEW met1 ( 55430 1680450 ) ( 1191630 * ) + NEW met1 ( 1191630 1680450 ) M1M2_PR + NEW met1 ( 55430 1680450 ) M1M2_PR ; + - wbs_sel_i[1] ( PIN wbs_sel_i[1] ) ( mprj wbs_sel_i[1] ) + USE SIGNAL + + ROUTED met2 ( 79810 1700 0 ) ( * 17850 ) + NEW met1 ( 79810 17850 ) ( 1194390 * ) + NEW met1 ( 1194390 1689290 ) ( 1199150 * ) + NEW met2 ( 1199150 1689290 ) ( * 1690140 0 ) + NEW met2 ( 1194390 17850 ) ( * 1689290 ) + NEW met1 ( 79810 17850 ) M1M2_PR + NEW met1 ( 1194390 17850 ) M1M2_PR + NEW met1 ( 1194390 1689290 ) M1M2_PR + NEW met1 ( 1199150 1689290 ) M1M2_PR ; + - wbs_sel_i[2] ( PIN wbs_sel_i[2] ) ( mprj wbs_sel_i[2] ) + USE SIGNAL + + ROUTED met2 ( 100970 1700 ) ( 103270 * 0 ) + NEW met2 ( 96830 82800 ) ( 100970 * ) + NEW met2 ( 100970 1700 ) ( * 82800 ) + NEW met2 ( 96830 82800 ) ( * 1680790 ) + NEW met2 ( 1206350 1680790 ) ( * 1688780 ) + NEW met2 ( 1206350 1688780 ) ( 1206510 * ) + NEW met2 ( 1206510 1688780 ) ( * 1690140 0 ) + NEW met1 ( 96830 1680790 ) ( 1206350 * ) + NEW met1 ( 96830 1680790 ) M1M2_PR + NEW met1 ( 1206350 1680790 ) M1M2_PR ; + - wbs_sel_i[3] ( PIN wbs_sel_i[3] ) ( mprj wbs_sel_i[3] ) + USE SIGNAL + + ROUTED met2 ( 126730 1700 0 ) ( * 18870 ) + NEW met1 ( 126730 18870 ) ( 1207730 * ) + NEW met1 ( 1207730 1688950 ) ( 1213870 * ) + NEW met2 ( 1213870 1688950 ) ( * 1690140 0 ) + NEW met2 ( 1207730 18870 ) ( * 1688950 ) + NEW met1 ( 126730 18870 ) M1M2_PR + NEW met1 ( 1207730 18870 ) M1M2_PR + NEW met1 ( 1207730 1688950 ) M1M2_PR + NEW met1 ( 1213870 1688950 ) M1M2_PR ; + - wbs_stb_i ( PIN wbs_stb_i ) ( mprj wbs_stb_i ) + USE SIGNAL + + ROUTED met2 ( 20930 82800 ) ( 26450 * ) + NEW met2 ( 26450 1700 0 ) ( * 82800 ) + NEW met2 ( 20930 82800 ) ( * 1680110 ) + NEW met2 ( 1182430 1680110 ) ( * 1688780 ) + NEW met2 ( 1182430 1688780 ) ( 1182590 * ) + NEW met2 ( 1182590 1688780 ) ( * 1690140 0 ) + NEW met1 ( 20930 1680110 ) ( 1182430 * ) + NEW met1 ( 20930 1680110 ) M1M2_PR + NEW met1 ( 1182430 1680110 ) M1M2_PR ; + - wbs_we_i ( PIN wbs_we_i ) ( mprj wbs_we_i ) + USE SIGNAL + + ROUTED met2 ( 32430 1700 0 ) ( * 17170 ) + NEW met2 ( 1181510 17170 ) ( * 1580100 ) + NEW met2 ( 1181510 1580100 ) ( 1182890 * ) + NEW met2 ( 1182890 1688780 ) ( 1184430 * ) + NEW met2 ( 1184430 1688780 ) ( * 1690140 0 ) + NEW met2 ( 1182890 1580100 ) ( * 1688780 ) + NEW met1 ( 32430 17170 ) ( 1181510 * ) + NEW met1 ( 32430 17170 ) M1M2_PR + NEW met1 ( 1181510 17170 ) M1M2_PR ; +END NETS +END DESIGN
diff --git a/openlane/user_project_wrapper/interactive.tcl b/openlane/user_project_wrapper/interactive.tcl old mode 100644 new mode 100755 index ccfa729..1f6639d --- a/openlane/user_project_wrapper/interactive.tcl +++ b/openlane/user_project_wrapper/interactive.tcl
@@ -1,7 +1,5 @@ -#!/usr/bin/tclsh -# SPDX-FileCopyrightText: 2020 Efabless Corporation -# Copyright 2020 Efabless Corporation -# Copyright 2020 Sylvain Munaut +#!/usr/bin/env tclsh +# Copyright 2020-2022 Efabless Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,358 +12,335 @@ # 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; +package require openlane; # provides the utils as well + proc run_placement_step {args} { if { ! [ info exists ::env(PLACEMENT_CURRENT_DEF) ] } { set ::env(PLACEMENT_CURRENT_DEF) $::env(CURRENT_DEF) } else { set ::env(CURRENT_DEF) $::env(PLACEMENT_CURRENT_DEF) } + run_placement } + proc run_cts_step {args} { if { ! [ info exists ::env(CTS_CURRENT_DEF) ] } { set ::env(CTS_CURRENT_DEF) $::env(CURRENT_DEF) } else { set ::env(CURRENT_DEF) $::env(CTS_CURRENT_DEF) } + run_cts run_resizer_timing } + proc run_routing_step {args} { if { ! [ info exists ::env(ROUTING_CURRENT_DEF) ] } { set ::env(ROUTING_CURRENT_DEF) $::env(CURRENT_DEF) } else { set ::env(CURRENT_DEF) $::env(ROUTING_CURRENT_DEF) } - run_routing + if { $::env(ECO_ENABLE) == 0 } { + run_routing + } } + +proc run_parasitics_sta_step {args} { + if { ! [ info exists ::env(PARSITICS_CURRENT_DEF) ] } { + set ::env(PARSITICS_CURRENT_DEF) $::env(CURRENT_DEF) + } else { + set ::env(CURRENT_DEF) $::env(PARSITICS_CURRENT_DEF) + } + + if { $::env(RUN_SPEF_EXTRACTION) && ($::env(ECO_ENABLE) == 0)} { + run_parasitics_sta + } +} + proc run_diode_insertion_2_5_step {args} { if { ! [ info exists ::env(DIODE_INSERTION_CURRENT_DEF) ] } { set ::env(DIODE_INSERTION_CURRENT_DEF) $::env(CURRENT_DEF) } else { set ::env(CURRENT_DEF) $::env(DIODE_INSERTION_CURRENT_DEF) } - if { ($::env(DIODE_INSERTION_STRATEGY) == 2) || ($::env(DIODE_INSERTION_STRATEGY) == 5) } { - run_antenna_check - heal_antenna_violators; # modifies the routed DEF - } + if { ($::env(DIODE_INSERTION_STRATEGY) == 2) || ($::env(DIODE_INSERTION_STRATEGY) == 5) } { + run_antenna_check + heal_antenna_violators; # modifies the routed DEF + } + } + +proc run_irdrop_report_step {args} { + if { $::env(RUN_IRDROP_REPORT) } { + run_irdrop_report + } +} + proc run_lvs_step {{ lvs_enabled 1 }} { if { ! [ info exists ::env(LVS_CURRENT_DEF) ] } { set ::env(LVS_CURRENT_DEF) $::env(CURRENT_DEF) } else { set ::env(CURRENT_DEF) $::env(LVS_CURRENT_DEF) } - if { $lvs_enabled } { - run_magic_spice_export - run_lvs; # requires run_magic_spice_export - } + + if { $lvs_enabled && $::env(RUN_LVS) } { + run_magic_spice_export; + run_lvs; # requires run_magic_spice_export + } + } + proc run_drc_step {{ drc_enabled 1 }} { if { ! [ info exists ::env(DRC_CURRENT_DEF) ] } { set ::env(DRC_CURRENT_DEF) $::env(CURRENT_DEF) } else { set ::env(CURRENT_DEF) $::env(DRC_CURRENT_DEF) } - if { $drc_enabled } { - run_magic_drc - run_klayout_drc - } + if { $drc_enabled } { + if { $::env(RUN_MAGIC_DRC) } { + run_magic_drc + } + if {$::env(RUN_KLAYOUT_DRC)} { + run_klayout_drc + } + } } + proc run_antenna_check_step {{ antenna_check_enabled 1 }} { if { ! [ info exists ::env(ANTENNA_CHECK_CURRENT_DEF) ] } { set ::env(ANTENNA_CHECK_CURRENT_DEF) $::env(CURRENT_DEF) } else { set ::env(CURRENT_DEF) $::env(ANTENNA_CHECK_CURRENT_DEF) } - if { $antenna_check_enabled } { - run_antenna_check - } -} -proc run_eco_step {args} { - if { $::env(ECO_ENABLE) == 1 } { - run_eco + if { $antenna_check_enabled } { + run_antenna_check } } -proc save_final_views {args} { - set options { - {-save_path optional} - } - set flags {} - parse_key_args "save_final_views" args arg_values $options flags_map $flags - set arg_list [list] - # If they don't exist, save_views will simply not copy them - lappend arg_list -lef_path $::env(finishing_results)/$::env(DESIGN_NAME).lef - lappend arg_list -gds_path $::env(finishing_results)/$::env(DESIGN_NAME).gds - lappend arg_list -mag_path $::env(finishing_results)/$::env(DESIGN_NAME).mag - lappend arg_list -maglef_path $::env(finishing_results)/$::env(DESIGN_NAME).lef.mag - lappend arg_list -spice_path $::env(finishing_results)/$::env(DESIGN_NAME).spice - - # Guaranteed to have default values - lappend arg_list -def_path $::env(CURRENT_DEF) - lappend arg_list -verilog_path $::env(CURRENT_NETLIST) - # Not guaranteed to have default values - if { [info exists ::env(SPEF_TYPICAL)] } { - lappend arg_list -spef_path $::env(SPEF_TYPICAL) - } - if { [info exists ::env(CURRENT_SDF)] } { - lappend arg_list -sdf_path $::env(CURRENT_SDF) - } - if { [info exists ::env(CURRENT_SDC)] } { - lappend arg_list -sdc_path $::env(CURRENT_SDC) - } - # Add the path if it exists... - if { [info exists arg_values(-save_path) ] } { - lappend arg_list -save_path $arg_values(-save_path) - } - # Aaand fire! - save_views {*}$arg_list + +proc run_eco_step {args} { + if { $::env(ECO_ENABLE) == 1 } { + run_eco_flow + } } + +proc run_magic_step {args} { + if {$::env(RUN_MAGIC)} { + run_magic + } +} + +proc run_klayout_step {args} { + if {$::env(RUN_KLAYOUT)} { + run_klayout + } + if {$::env(RUN_KLAYOUT_XOR)} { + run_klayout_gds_xor + } +} + proc run_post_run_hooks {} { - if { [file exists $::env(DESIGN_DIR)/hooks/post_run.py]} { - puts_info "Running post run hook" - set result [exec $::env(OPENROAD_BIN) -python $::env(DESIGN_DIR)/hooks/post_run.py] - puts_info "$result" - } else { - puts_info "hooks/post_run.py not found, skipping" - } + if { [file exists $::env(DESIGN_DIR)/hooks/post_run.py]} { + puts_info "Running post run hook" + set result [exec $::env(OPENROAD_BIN) -python $::env(DESIGN_DIR)/hooks/post_run.py] + puts_info "$result" + } else { + puts_info "hooks/post_run.py not found, skipping" + } } -proc gen_pdn {args} { - puts_info "Generating PDN..." - TIMER::timer_start - - set ::env(SAVE_DEF) [index_file $::env(floorplan_tmpfiles).def] - set ::env(PGA_RPT_FILE) [index_file $::env(floorplan_tmpfiles).pga.rpt] - run_openroad_script $::env(SCRIPTS_DIR)/openroad/pdn.tcl \ - |& -indexed_log [index_file $::env(floorplan_logs)/pdn.log] - TIMER::timer_stop - exec echo "[TIMER::get_runtime]" | python3 $::env(SCRIPTS_DIR)/write_runtime.py "pdn generation - openroad" - quit_on_unconnected_pdn_nodes - set_def $::env(SAVE_DEF) + +proc run_magic_drc_batch {args} { + set options { + {-magicrc optional} + {-tech optional} + {-report required} + {-design required} + {-gds required} + } + set flags {} + parse_key_args "run_magic_drc_batch" args arg_values $options flags_mag $flags + if { [info exists arg_values(-magicrc)] } { + set magicrc [file normalize $arg_values(-magicrc)] + } + if { [info exists arg_values(-tech)] } { + set ::env(TECH) [file normalize $arg_values(-tech)] + } + set ::env(GDS_INPUT) [file normalize $arg_values(-gds)] + set ::env(REPORT_OUTPUT) [file normalize $arg_values(-report)] + set ::env(DESIGN_NAME) $arg_values(-design) + + if { [info exists magicrc] } { + exec magic \ + -noconsole \ + -dnull \ + -rcfile $magicrc \ + $::env(OPENLANE_ROOT)/scripts/magic/drc_batch.tcl \ + </dev/null |& tee /dev/tty + } else { + exec magic \ + -noconsole \ + -dnull \ + $::env(OPENLANE_ROOT)/scripts/magic/drc_batch.tcl \ + </dev/null |& tee /dev/tty + } } -proc run_power_grid_generation {args} { - if {[info exists ::env(FP_PDN_POWER_STRAPS)]} { - set power_domains [split $::env(FP_PDN_POWER_STRAPS) ","] - } - # internal macros power connections - if {[info exists ::env(FP_PDN_MACRO_HOOKS)]} { - set macro_hooks [dict create] - set pdn_hooks [split $::env(FP_PDN_MACRO_HOOKS) ","] - foreach pdn_hook $pdn_hooks { - set instance_name [lindex $pdn_hook 0] - set power_net [lindex $pdn_hook 1] - set ground_net [lindex $pdn_hook 2] - dict append macro_hooks $instance_name [subst {$power_net $ground_net}] - } - - set power_net_indx [lsearch $::env(VDD_NETS) $power_net] - set ground_net_indx [lsearch $::env(GND_NETS) $ground_net] - # make sure that the specified power domains exist. - if { $power_net_indx == -1 || $ground_net_indx == -1 || $power_net_indx != $ground_net_indx } { - puts_err "Can't find $power_net and $ground_net domain. \ - Make sure that both exist in $::env(VDD_NETS) and $::env(GND_NETS)." - } - } - - # generate multiple power grids per pair of (VDD,GND) - # offseted by WIDTH + SPACING - foreach domain $power_domains { - set ::env(VDD_NET) [lindex $domain 0] - set ::env(GND_NET) [lindex $domain 1] - set ::env(_WITH_STRAPS) [lindex $domain 2] - puts_info "Connecting Power: $::env(VDD_NET) & $::env(GND_NET) to All internal macros." - # internal macros power connections - set ::env(FP_PDN_MACROS) "" - if { $::env(FP_PDN_ENABLE_MACROS_GRID) == 1 } { - # if macros connections to power are explicitly set - # default behavoir macro pins will be connected to the first power domain - if { [info exists ::env(FP_PDN_MACRO_HOOKS)] } { - set ::env(FP_PDN_ENABLE_MACROS_GRID) 0 - foreach {instance_name hooks} $macro_hooks { - set power [lindex $hooks 0] - set ground [lindex $hooks 1] - if { $power == $::env(VDD_NET) && $ground == $::env(GND_NET) } { - set ::env(FP_PDN_ENABLE_MACROS_GRID) 1 - set ::env(FP_PDN_IRDROP) "0" - puts_info "Connecting $instance_name to $power and $ground nets." - lappend ::env(FP_PDN_MACROS) $instance_name - } - } - } - } else { - puts_warn "All internal macros will not be connected to power $::env(VDD_NET) & $::env(GND_NET)." - } - - gen_pdn - set ::env(FP_PDN_ENABLE_RAILS) 0 - set ::env(FP_PDN_ENABLE_MACROS_GRID) 0 - set ::env(FP_PDN_IRDROP) "0" - # allow failure until open_pdks is up to date... - catch {set ::env(FP_PDN_VOFFSET) [expr $::env(FP_PDN_VOFFSET)+$::env(FP_PDN_VWIDTH)+$::env(FP_PDN_VSPACING)]} - catch {set ::env(FP_PDN_HOFFSET) [expr $::env(FP_PDN_HOFFSET)+$::env(FP_PDN_HWIDTH)+$::env(FP_PDN_HSPACING)]} - catch {set ::env(FP_PDN_CORE_RING_VOFFSET) \ - [expr $::env(FP_PDN_CORE_RING_VOFFSET)\ - +2*($::env(FP_PDN_CORE_RING_VWIDTH)\ - +max($::env(FP_PDN_CORE_RING_VSPACING), $::env(FP_PDN_CORE_RING_HSPACING)))]} - catch {set ::env(FP_PDN_CORE_RING_HOFFSET) [expr $::env(FP_PDN_CORE_RING_HOFFSET)\ - +2*($::env(FP_PDN_CORE_RING_HWIDTH)+\ - max($::env(FP_PDN_CORE_RING_VSPACING), $::env(FP_PDN_CORE_RING_HSPACING)))]} - puts "FP_PDN_VOFFSET: $::env(FP_PDN_VOFFSET)" - puts "FP_PDN_HOFFSET: $::env(FP_PDN_HOFFSET)" - puts "FP_PDN_CORE_RING_VOFFSET: $::env(FP_PDN_CORE_RING_VOFFSET)" - puts "FP_PDN_CORE_RING_HOFFSET: $::env(FP_PDN_CORE_RING_HOFFSET)" - } - set ::env(FP_PDN_ENABLE_RAILS) 1 + +proc run_lvs_batch {args} { + # runs device level lvs on -gds/CURRENT_GDS and -net/CURRENT_NETLIST + # extracts gds only if EXT_NETLIST does not exist + set options { + {-design required} + {-gds optional} + {-net optional} + } + set flags {} + parse_key_args "run_lvs_batch" args arg_values $options flags_lvs $flags -no_consume + + prep {*}$args + + if { [info exists arg_values(-gds)] } { + set ::env(CURRENT_GDS) [file normalize $arg_values(-gds)] + } else { + set ::env(CURRENT_GDS) $::env(signoff_results)/$::env(DESIGN_NAME).gds + } + if { [info exists arg_values(-net)] } { + set ::env(CURRENT_NETLIST) [file normalize $arg_values(-net)] + } + + assert_files_exist "$::env(CURRENT_GDS) $::env(CURRENT_NETLIST)" + + set ::env(MAGIC_EXT_USE_GDS) 1 + set ::env(EXT_NETLIST) $::env(signoff_results)/$::env(DESIGN_NAME).gds.spice + if { [file exists $::env(EXT_NETLIST)] } { + puts_warn "The file $::env(EXT_NETLIST) will be used. If you would like the file re-exported, please delete it." + } else { + run_magic_spice_export + } + + run_lvs } -proc run_floorplan {args} { - puts_info "Running Floorplanning..." - # |----------------------------------------------------| - # |---------------- 2. FLOORPLAN ------------------| - # |----------------------------------------------------| - # - # intial fp - init_floorplan - # check for deprecated io variables - if { [info exists ::env(FP_IO_HMETAL)]} { - set ::env(FP_IO_HLAYER) [lindex $::env(TECH_METAL_LAYERS) [expr {$::env(FP_IO_HMETAL) - 1}]] - puts_warn "You're using FP_IO_HMETAL in your configuration, which is a deprecated variable that will be removed in the future." - puts_warn "We recommend you update your configuration as follows:" - puts_warn "\tset ::env(FP_IO_HLAYER) {$::env(FP_IO_HLAYER)}" - } - if { [info exists ::env(FP_IO_VMETAL)]} { - set ::env(FP_IO_VLAYER) [lindex $::env(TECH_METAL_LAYERS) [expr {$::env(FP_IO_VMETAL) - 1}]] - puts_warn "You're using FP_IO_VMETAL in your configuration, which is a deprecated variable that will be removed in the future." - puts_warn "We recommend you update your configuration as follows:" - puts_warn "\tset ::env(FP_IO_VLAYER) {$::env(FP_IO_VLAYER)}" - } - # place io - if { [info exists ::env(FP_PIN_ORDER_CFG)] } { - place_io_ol - } else { - if { [info exists ::env(FP_CONTEXT_DEF)] && [info exists ::env(FP_CONTEXT_LEF)] } { - place_io - global_placement_or - place_contextualized_io \ - -lef $::env(FP_CONTEXT_LEF) \ - -def $::env(FP_CONTEXT_DEF) - } else { - place_io - } - } - apply_def_template - if { [info exist ::env(EXTRA_LEFS)] } { - if { [info exist ::env(MACRO_PLACEMENT_CFG)] } { - file copy -force $::env(MACRO_PLACEMENT_CFG) $::env(placement_tmpfiles)/macro_placement.cfg - manual_macro_placement f - } else { - global_placement_or - basic_macro_placement - } - } - tap_decap_or - scrot_klayout -layout $::env(CURRENT_DEF) $::env(floorplan_logs)/screenshot.log - run_power_grid_generation + + +proc run_file {args} { + set ::env(TCLLIBPATH) $::auto_path + exec tclsh {*}$args >&@stdout } + + + proc run_flow {args} { - set options { - {-design required} - {-from optional} - {-to optional} - {-save_path optional} - {-override_env optional} - } - set flags {-save -run_hooks -no_lvs -no_drc -no_antennacheck } - parse_key_args "run_non_interactive_mode" args arg_values $options flags_map $flags -no_consume - prep {*}$args + set options { + {-design optional} + {-from optional} + {-to optional} + {-save_path optional} + {-override_env optional} + } + set flags {-save -run_hooks -no_lvs -no_drc -no_antennacheck -gui} + parse_key_args "run_non_interactive_mode" args arg_values $options flags_map $flags -no_consume + + prep {*}$args # signal trap SIGINT save_state; - if { [info exists arg_values(-override_env)] } { - set env_overrides [split $arg_values(-override_env) ','] - foreach override $env_overrides { - set kva [split $override '='] - set key [lindex $kva 0] - set value [lindex $kva 1] - set ::env(${key}) $value - } - } + + if { [info exists flags_map(-gui)] } { + or_gui + return + } + if { [info exists arg_values(-override_env)] } { + load_overrides $arg_values(-override_env) + } + set LVS_ENABLED 1 set DRC_ENABLED 0 - set ANTENNACHECK_ENABLED 1 + + set ANTENNACHECK_ENABLED [expr ![info exists flags_map(-no_antennacheck)] ] + set steps [dict create \ - "synthesis" {run_synthesis "" } \ - "floorplan" {run_floorplan ""} \ - "placement" {run_placement_step ""} \ - "cts" {run_cts_step ""} \ - "routing" {run_routing_step ""}\ - "eco" {run_eco_step ""} \ - "diode_insertion" {run_diode_insertion_2_5_step ""} \ - "gds_magic" {run_magic ""} \ - "gds_drc_klayout" {run_klayout ""} \ - "gds_xor_klayout" {run_klayout_gds_xor ""} \ - "lvs" "run_lvs_step $LVS_ENABLED" \ - "drc" "run_drc_step $DRC_ENABLED" \ - "antenna_check" "run_antenna_check_step $ANTENNACHECK_ENABLED" \ - "cvc" {run_lef_cvc} + "synthesis" "run_synthesis" \ + "floorplan" "run_floorplan" \ + "placement" "run_placement_step" \ + "cts" "run_cts_step" \ + "routing" "run_routing_step" \ + "parasitics_sta" "run_parasitics_sta_step" \ + "eco" "run_eco_step" \ + "diode_insertion" "run_diode_insertion_2_5_step" \ + "irdrop" "run_irdrop_report_step" \ + "gds_magic" "run_magic_step" \ + "gds_klayout" "run_klayout_step" \ + "lvs" "run_lvs_step $LVS_ENABLED " \ + "drc" "run_drc_step $DRC_ENABLED " \ + "antenna_check" "run_antenna_check_step $ANTENNACHECK_ENABLED " \ + "cvc" "run_lef_cvc" ] - set_if_unset arg_values(-to) "cvc"; - if { [info exists ::env(CURRENT_STEP) ] } { - puts "\[INFO\]:Picking up where last execution left off" - puts [format "\[INFO\]:Current stage is %s " $::env(CURRENT_STEP)] + + if { [info exists arg_values(-from) ]} { + puts_info "Starting flow at $arg_values(-from)..." + set ::env(CURRENT_STEP) $arg_values(-from) + } elseif { [info exists ::env(CURRENT_STEP) ] } { + puts_info "Resuming flow from $::env(CURRENT_STEP)..." } else { - set ::env(CURRENT_STEP) "synthesis"; + set ::env(CURRENT_STEP) "synthesis" } - set_if_unset arg_values(-from) $::env(CURRENT_STEP); + + set_if_unset arg_values(-from) $::env(CURRENT_STEP) + set_if_unset arg_values(-to) "cvc" + set exe 0; dict for {step_name step_exe} $steps { if { [ string equal $arg_values(-from) $step_name ] } { set exe 1; } + if { $exe } { # For when it fails set ::env(CURRENT_STEP) $step_name [lindex $step_exe 0] [lindex $step_exe 1] ; } + if { [ string equal $arg_values(-to) $step_name ] } { set exe 0: break; } + } + # for when it resumes set steps_as_list [dict keys $steps] set next_idx [expr [lsearch $steps_as_list $::env(CURRENT_STEP)] + 1] set ::env(CURRENT_STEP) [lindex $steps_as_list $next_idx] - # Saves to <RUN_DIR>/results/final - if { $::env(SAVE_FINAL_VIEWS) == "1" } { - save_final_views - } - # Saves to design directory or custom - if { [info exists flags_map(-save) ] } { - if { ! [info exists arg_values(-save_path)] } { - set arg_values(-save_path) $::env(DESIGN_DIR) - } - save_final_views\ - -save_path $arg_values(-save_path)\ - -tag $::env(RUN_TAG) - } - calc_total_runtime - save_state - generate_final_summary_report - - check_timing_violations - - if { [info exists arg_values(-save_path)]\ - && $arg_values(-save_path) != "" } { - set ::env(HOOK_OUTPUT_PATH) "[file normalize $arg_values(-save_path)]" - } else { - set ::env(HOOK_OUTPUT_PATH) $::env(RESULTS_DIR)/final - } - - if {[info exists flags_map(-run_hooks)]} { - run_post_run_hooks - } - - puts_success "Flow complete." - show_warnings "Note that the following warnings have been generated:" + + # Saves to <RUN_DIR>/results/final + save_final_views + + # Saves to design directory or custom + if { [info exists flags_map(-save) ] } { + if { ! [info exists arg_values(-save_path)] } { + set arg_values(-save_path) $::env(DESIGN_DIR) + } + save_final_views\ + -save_path $arg_values(-save_path)\ + -tag $::env(RUN_TAG) + } + calc_total_runtime + save_state + generate_final_summary_report + + check_timing_violations + + if { [info exists arg_values(-save_path)]\ + && $arg_values(-save_path) != "" } { + set ::env(HOOK_OUTPUT_PATH) "[file normalize $arg_values(-save_path)]" + } else { + set ::env(HOOK_OUTPUT_PATH) $::env(RESULTS_DIR)/final + } + + if {[info exists flags_map(-run_hooks)]} { + run_post_run_hooks + } + + puts_success "Flow complete." + + show_warnings "Note that the following warnings have been generated:" } + run_flow {*}$argv
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg index d82daa9..994428f 100644 --- a/openlane/user_project_wrapper/macro.cfg +++ b/openlane/user_project_wrapper/macro.cfg
@@ -13,4 +13,4 @@ u_intercon 1850 650 N u_wb_host 1750 100 N -u_pll 2300 100 N +u_pll 2305 105 N
diff --git a/openlane/user_project_wrapper/pdn_cfg.tcl b/openlane/user_project_wrapper/pdn_cfg.tcl index 552a90e..79a0f85 100644 --- a/openlane/user_project_wrapper/pdn_cfg.tcl +++ b/openlane/user_project_wrapper/pdn_cfg.tcl
@@ -1,82 +1,161 @@ # Power nets -if { ! [info exists ::env(VDD_NET)] } { - set ::env(VDD_NET) $::env(VDD_PIN) -} -if { ! [info exists ::env(GND_NET)] } { - set ::env(GND_NET) $::env(GND_PIN) -} -set ::power_nets $::env(VDD_NET) -set ::ground_nets $::env(GND_NET) if { [info exists ::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS)] } { if { $::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS) == 1 } { foreach power_pin $::env(STD_CELL_POWER_PINS) { - add_global_connection -net $::env(VDD_NET) -inst_pattern .* -pin_pattern $power_pin -power + add_global_connection \ + -net $::env(VDD_NET) \ + -inst_pattern .* \ + -pin_pattern $power_pin \ + -power } foreach ground_pin $::env(STD_CELL_GROUND_PINS) { - add_global_connection -net $::env(GND_NET) -inst_pattern .* -pin_pattern $ground_pin -ground + add_global_connection \ + -net $::env(GND_NET) \ + -inst_pattern .* \ + -pin_pattern $ground_pin \ + -ground } } } -set_voltage_domain -name CORE -power $::env(VDD_NET) -ground $::env(GND_NET) -# Assesses whether the deisgn is the core of the chip or not based on the + +if { $::env(FP_PDN_ENABLE_MACROS_GRID) == 1 && + [info exists ::env(FP_PDN_MACRO_HOOKS)]} { + set pdn_hooks [split $::env(FP_PDN_MACRO_HOOKS) ","] + foreach pdn_hook $pdn_hooks { + set instance_name [lindex $pdn_hook 0] + set power_net [lindex $pdn_hook 1] + set ground_net [lindex $pdn_hook 2] + set power_pin [lindex $pdn_hook 3] + set ground_pin [lindex $pdn_hook 4] + + if { $power_pin == "" || $ground_pin == "" } { + puts "FP_PDN_MACRO_HOOKS missing power and ground pin names" + exit -1 + } + + add_global_connection \ + -net $power_net \ + -inst_pattern $instance_name \ + -pin_pattern $power_pin \ + -power + + add_global_connection \ + -net $ground_net \ + -inst_pattern $instance_name \ + -pin_pattern $ground_pin \ + -ground + } +} + +set secondary [] + +foreach vdd $::env(VDD_NETS) gnd $::env(GND_NETS) { + if { $vdd != $::env(VDD_NET)} { + lappend secondary $vdd + + set db_net [[ord::get_db_block] findNet $vdd] + if {$db_net == "NULL"} { + set net [odb::dbNet_create [ord::get_db_block] $vdd] + $net setSpecial + $net setSigType "POWER" + } + } + + if { $gnd != $::env(GND_NET)} { + lappend secondary $gnd + + set db_net [[ord::get_db_block] findNet $gnd] + if {$db_net == "NULL"} { + set net [odb::dbNet_create [ord::get_db_block] $gnd] + $net setSpecial + $net setSigType "GROUND" + } + } +} + +set_voltage_domain -name CORE -power $::env(VDD_NET) -ground $::env(GND_NET) \ + -secondary_power $secondary + +# Assesses whether the design is the core of the chip or not based on the # value of $::env(DESIGN_IS_CORE) and uses the appropriate stdcell section if { $::env(DESIGN_IS_CORE) == 1 } { # Used if the design is the core of the chip - define_pdn_grid -name stdcell_grid -starts_with POWER -voltage_domain CORE -pins [subst {$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)}] - if { $::env(_WITH_STRAPS) } { - add_pdn_stripe -grid stdcell_grid -layer $::env(FP_PDN_LOWER_LAYER) -width $::env(FP_PDN_VWIDTH) -pitch $::env(FP_PDN_VPITCH) -offset $::env(FP_PDN_VOFFSET) -starts_with POWER - add_pdn_stripe -grid stdcell_grid -layer $::env(FP_PDN_UPPER_LAYER) -width $::env(FP_PDN_HWIDTH) -pitch $::env(FP_PDN_HPITCH) -offset $::env(FP_PDN_HOFFSET) -starts_with POWER - } - add_pdn_connect -grid stdcell_grid -layers [subst {$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)}] + define_pdn_grid \ + -name stdcell_grid \ + -starts_with POWER \ + -voltage_domain CORE \ + -pins "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)" + + add_pdn_stripe \ + -grid stdcell_grid \ + -layer $::env(FP_PDN_LOWER_LAYER) \ + -width $::env(FP_PDN_VWIDTH) \ + -pitch $::env(FP_PDN_VPITCH) \ + -offset $::env(FP_PDN_VOFFSET) \ + -nets "$::env(VDD_NET) $::env(GND_NET)" \ + -starts_with POWER -extend_to_core_ring + + add_pdn_stripe \ + -grid stdcell_grid \ + -layer $::env(FP_PDN_UPPER_LAYER) \ + -width $::env(FP_PDN_HWIDTH) \ + -pitch $::env(FP_PDN_HPITCH) \ + -offset $::env(FP_PDN_HOFFSET) \ + -nets "$::env(VDD_NET) $::env(GND_NET)" \ + -starts_with POWER -extend_to_core_ring + + add_pdn_connect \ + -grid stdcell_grid \ + -layers "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)" } else { # Used if the design is a macro in the core - define_pdn_grid -name stdcell_grid -starts_with POWER -voltage_domain CORE -pins $::env(FP_PDN_LOWER_LAYER) - add_pdn_stripe -grid stdcell_grid -layer $::env(FP_PDN_LOWER_LAYER) -width $::env(FP_PDN_VWIDTH) -pitch $::env(FP_PDN_VPITCH) -offset $::env(FP_PDN_VOFFSET) -starts_with POWER + define_pdn_grid \ + -name stdcell_grid \ + -starts_with POWER \ + -voltage_domain CORE \ + -pins $::env(FP_PDN_LOWER_LAYER) + + add_pdn_stripe \ + -grid stdcell_grid \ + -layer $::env(FP_PDN_LOWER_LAYER) \ + -width $::env(FP_PDN_VWIDTH) \ + -pitch $::env(FP_PDN_VPITCH) \ + -offset $::env(FP_PDN_VOFFSET) \ + -starts_with POWER } + # Adds the standard cell rails if enabled. if { $::env(FP_PDN_ENABLE_RAILS) == 1 } { - add_pdn_stripe -grid stdcell_grid -layer $::env(FP_PDN_RAILS_LAYER) -width $::env(FP_PDN_RAIL_WIDTH) -followpins -starts_with POWER - add_pdn_connect -grid stdcell_grid -layers [subst {$::env(FP_PDN_RAILS_LAYER) $::env(FP_PDN_LOWER_LAYER)}] -} + add_pdn_stripe \ + -grid stdcell_grid \ + -layer $::env(FP_PDN_RAILS_LAYER) \ + -width $::env(FP_PDN_RAIL_WIDTH) \ + -followpins \ + -starts_with POWER + + add_pdn_connect \ + -grid stdcell_grid \ + -layers "$::env(FP_PDN_RAILS_LAYER) $::env(FP_PDN_LOWER_LAYER)" +} + + # Adds the core ring if enabled. if { $::env(FP_PDN_CORE_RING) == 1 } { - add_pdn_ring -grid stdcell_grid -layer [subst {$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)}] \ - -widths [subst {$::env(FP_PDN_CORE_RING_VWIDTH) $::env(FP_PDN_CORE_RING_HWIDTH)}] \ - -spacings [subst {$::env(FP_PDN_CORE_RING_VSPACING) $::env(FP_PDN_CORE_RING_HSPACING)}] \ - -core_offset [subst {$::env(FP_PDN_CORE_RING_VOFFSET) $::env(FP_PDN_CORE_RING_HOFFSET)}] + add_pdn_ring \ + -grid stdcell_grid \ + -layers "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)" \ + -widths "$::env(FP_PDN_CORE_RING_VWIDTH) $::env(FP_PDN_CORE_RING_HWIDTH)" \ + -spacings "$::env(FP_PDN_CORE_RING_VSPACING) $::env(FP_PDN_CORE_RING_HSPACING)" \ + -core_offset "$::env(FP_PDN_CORE_RING_VOFFSET) $::env(FP_PDN_CORE_RING_HOFFSET)" } -# A general macro that follows the premise of the set heirarchy. You may want to modify this or add other macro configs -# The macro power pin names are assumed to match the VDD and GND net names -# TODO: parameterize the power pin names -set macro { - orient {R0 R180 MX MY R90 R270 MXR90 MYR90} - power_pins $::env(VDD_NET) - ground_pins $::env(GND_NET) - blockages $::env(MACRO_BLOCKAGES_LAYER) - straps { - } - connect {{$::env(FP_PDN_LOWER_LAYER)_PIN_ver $::env(FP_PDN_UPPER_LAYER)}} -} -if { $::env(FP_PDN_ENABLE_MACROS_GRID) == 1} { - if { [llength $::env(FP_PDN_MACROS)] > 0 } { - # generate automatically per instance: - foreach macro_instance $::env(FP_PDN_MACROS) { - set macro_instance_grid [subst $macro] - dict append $macro_instance_grid instance $macro_instance - set ::halo [list $::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)] - pdngen::specify_grid macro [subst $macro_instance_grid] - } - } else { - set ::halo [list $::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)] - pdngen::specify_grid macro [subst $macro] - } - # CAN NOT ENABLE THE TCL COMMAND BECAUSE THERE IS NO ARGUMENT FOR SPECIFYING THE POWER AND GROUND PIN NAMES ON THE MACRO - # define_pdn_grid -macro -orient {R0 R180 MX MY R90 R270 MXR90 MYR90} -grid_over_pg_pins -starts_with POWER -pin_direction vertical -halo [subst {$::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)}] - # add_pdn_connect -layers [subst {$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)}] -} else { - define_pdn_grid -macro -orient {R0 R180 MX MY R90 R270 MXR90 MYR90} -grid_over_pg_pins -starts_with POWER -halo [subst {$::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)}] -} -# POWER or GROUND #Std. cell rails starting with power or ground rails at the bottom of the core area -set ::rails_start_with "POWER" ; -# POWER or GROUND #Upper metal stripes starting with power or ground rails at the left/bottom of the core area -set ::stripes_start_with "POWER" ; + +define_pdn_grid \ + -macro \ + -default \ + -name macro \ + -starts_with POWER \ + -halo "$::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)" + +add_pdn_connect \ + -grid macro \ + -layers "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)"
diff --git a/openlane/wb_host/base.sdc b/openlane/wb_host/base.sdc index a5b2325..3c8cdc9 100644 --- a/openlane/wb_host/base.sdc +++ b/openlane/wb_host/base.sdc
@@ -16,7 +16,7 @@ create_clock -name usb_ref_clk -period 10.0000 [get_pins {u_usb_ref_clkbuf.u_buf/X}] set_clock_transition 0.1500 [all_clocks] -set_clock_uncertainty -setup 0.2500 [all_clocks] +set_clock_uncertainty -setup 0.5000 [all_clocks] set_clock_uncertainty -hold 0.2500 [all_clocks] set ::env(SYNTH_TIMING_DERATE) 0.05
diff --git a/openlane/wb_host/config.tcl b/openlane/wb_host/config.tcl index 4b29f05..527f4cc 100755 --- a/openlane/wb_host/config.tcl +++ b/openlane/wb_host/config.tcl
@@ -40,31 +40,31 @@ # Local sources + no2usb sources set ::env(VERILOG_FILES) "\ - $script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \ - $script_dir/../../verilog/rtl/wb_host/src/wb_host.sv \ - $script_dir/../../verilog/rtl/lib/async_fifo.sv \ - $script_dir/../../verilog/rtl/lib/async_wb.sv \ - $script_dir/../../verilog/rtl/lib/clk_ctl.v \ - $script_dir/../../verilog/rtl/lib/ctech_cells.sv \ - $script_dir/../../verilog/rtl/lib/registers.v \ - $script_dir/../../verilog/rtl/lib/reset_sync.sv \ - $script_dir/../../verilog/rtl/lib/async_reg_bus.sv \ - $script_dir/../../verilog/rtl/uart/src/uart_txfsm.sv \ - $script_dir/../../verilog/rtl/uart/src/uart_rxfsm.sv \ - $script_dir/../../verilog/rtl/lib/double_sync_low.v \ - $script_dir/../../verilog/rtl/wb_interconnect/src/wb_arb.sv \ - $script_dir/../../verilog/rtl/uart2wb/src/uart2wb.sv \ - $script_dir/../../verilog/rtl/uart2wb/src/uart2_core.sv \ - $script_dir/../../verilog/rtl/uart2wb/src/uart_msg_handler.v \ - $script_dir/../../verilog/rtl/sspis/src/sspis_top.sv \ - $script_dir/../../verilog/rtl/sspis/src/sspis_if.sv \ - $script_dir/../../verilog/rtl/sspis/src/spi2wb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \ + $::env(DESIGN_DIR)/../../verilog/rtl/wb_host/src/wb_host.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/async_fifo.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/async_wb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/clk_ctl.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/ctech_cells.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/registers.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/reset_sync.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/async_reg_bus.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart/src/uart_txfsm.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart/src/uart_rxfsm.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/double_sync_low.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/wb_interconnect/src/wb_arb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart2wb/src/uart2wb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart2wb/src/uart2_core.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/uart2wb/src/uart_msg_handler.v \ + $::env(DESIGN_DIR)/../../verilog/rtl/sspis/src/sspis_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/sspis/src/sspis_if.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/sspis/src/spi2wb.sv \ " set ::env(SYNTH_READ_BLACKBOX_LIB) 1 set ::env(SYNTH_DEFINES) [list SYNTHESIS ] -set ::env(SDC_FILE) "$script_dir/base.sdc" -set ::env(BASE_SDC_FILE) "$script_dir/base.sdc" +set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc +set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc set ::env(LEC_ENABLE) 0 @@ -102,7 +102,7 @@ #set ::env(GLB_RT_MAXLAYER) 5 set ::env(RT_MAX_LAYER) {met4} -set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 +#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 set ::env(DIODE_INSERTION_STRATEGY) 4
diff --git a/openlane/wb_interconnect/base.sdc b/openlane/wb_interconnect/base.sdc index d815c04..d4e6271 100644 --- a/openlane/wb_interconnect/base.sdc +++ b/openlane/wb_interconnect/base.sdc
@@ -9,7 +9,7 @@ create_clock -name clk_i -period 10.0000 [get_ports {clk_i}] set_clock_transition 0.1500 [all_clocks] -set_clock_uncertainty -setup 0.2500 [all_clocks] +set_clock_uncertainty -setup 0.5000 [all_clocks] set_clock_uncertainty -hold 0.2500 [all_clocks] #Clock Skew adjustment
diff --git a/openlane/wb_interconnect/config.tcl b/openlane/wb_interconnect/config.tcl index 55b38f4..c58574a 100755 --- a/openlane/wb_interconnect/config.tcl +++ b/openlane/wb_interconnect/config.tcl
@@ -40,23 +40,23 @@ # Local sources + no2usb sources set ::env(VERILOG_FILES) "\ - $script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \ - $script_dir/../../verilog/rtl/lib/sync_wbb.sv \ - $script_dir/../../verilog/rtl/lib/sync_fifo2.sv \ - $script_dir/../../verilog/rtl/wb_interconnect/src/wb_arb.sv \ - $script_dir/../../verilog/rtl/wb_interconnect/src/wb_slave_port.sv \ - $script_dir/../../verilog/rtl/wb_interconnect/src/wb_interconnect.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/sync_wbb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/lib/sync_fifo2.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/wb_interconnect/src/wb_arb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/wb_interconnect/src/wb_slave_port.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/wb_interconnect/src/wb_interconnect.sv \ " set ::env(SYNTH_DEFINES) [list SYNTHESIS ] -set ::env(SYNTH_PARAMS) "CH_CLK_WD 4,\ - CH_DATA_WD 37 \ +set ::env(SYNTH_PARAMETERS) "CH_CLK_WD=4\ + CH_DATA_WD=37 \ " set ::env(SYNTH_READ_BLACKBOX_LIB) 1 -set ::env(SDC_FILE) "$script_dir/base.sdc" -set ::env(BASE_SDC_FILE) "$script_dir/base.sdc" +set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc +set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc set ::env(LEC_ENABLE) 0 @@ -88,7 +88,7 @@ set ::env(USE_ARC_ANTENNA_CHECK) "0" -set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 +#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 set ::env(DIODE_INSERTION_STRATEGY) 4 ## CTS @@ -104,14 +104,17 @@ set ::env(PL_RESIZER_MAX_CAP_MARGIN) 2 ## Routing -set ::env(GLB_RT_ADJUSTMENT) 0 -set ::env(GLB_RT_L2_ADJUSTMENT) 0.21 -set ::env(GLB_RT_L3_ADJUSTMENT) 0.21 -set ::env(GLB_RT_L4_ADJUSTMENT) 0.1 -set ::env(GLB_RT_L5_ADJUSTMENT) 0.1 -set ::env(GLB_RT_L6_ADJUSTMENT) 0.1 -set ::env(GLB_RT_ALLOW_CONGESTION) 0 -set ::env(GLB_RT_OVERFLOW_ITERS) 200 +set ::env(GRT_ADJUSTMENT) 0.1 +set ::env(DPL_CELL_PADDING) 1 + +#set ::env(GLB_RT_ADJUSTMENT) 0 +#set ::env(GLB_RT_L2_ADJUSTMENT) 0.21 +#set ::env(GLB_RT_L3_ADJUSTMENT) 0.21 +#set ::env(GLB_RT_L4_ADJUSTMENT) 0.1 +#set ::env(GLB_RT_L5_ADJUSTMENT) 0.1 +#set ::env(GLB_RT_L6_ADJUSTMENT) 0.1 +#set ::env(GLB_RT_ALLOW_CONGESTION) 0 +#set ::env(GLB_RT_OVERFLOW_ITERS) 200 #set ::env(GLB_RT_MAXLAYER) 5 set ::env(RT_MAX_LAYER) {met4}
diff --git a/openlane/wb_interconnect/pin_order.cfg b/openlane/wb_interconnect/pin_order.cfg index fe3302c..2d8237e 100644 --- a/openlane/wb_interconnect/pin_order.cfg +++ b/openlane/wb_interconnect/pin_order.cfg
@@ -731,6 +731,7 @@ s2_wbd_stb_o 1600 0 2 s2_wbd_we_o +s2_wbd_adr_o\[8\] s2_wbd_adr_o\[7\] s2_wbd_adr_o\[6\] s2_wbd_adr_o\[5\]
diff --git a/openlane/ycr2_iconnect/base.sdc b/openlane/ycr2_iconnect/base.sdc index a8461ed..4889e25 100644 --- a/openlane/ycr2_iconnect/base.sdc +++ b/openlane/ycr2_iconnect/base.sdc
@@ -1,10 +1,10 @@ ############################################################################### # Timing Constraints ############################################################################### -create_clock -name core_clk -period 8.0000 [get_ports {core_clk}] +create_clock -name core_clk -period 10.0000 [get_ports {core_clk}] set_clock_transition 0.1500 [all_clocks] -set_clock_uncertainty -setup 0.2500 [all_clocks] +set_clock_uncertainty -setup 0.5000 [all_clocks] set_clock_uncertainty -hold 0.2500 [all_clocks] set ::env(SYNTH_TIMING_DERATE) 0.05 @@ -13,10 +13,10 @@ set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}] #CORE-0 IMEM Constraints -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_cmd}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_addr[*]}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_bl[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_cmd}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_addr[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_bl[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_cmd}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req}] @@ -30,11 +30,11 @@ set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_rdata[*]}] #CORE-0 DMEM Constraints -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_cmd}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_addr[*]}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_wdata[*]}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_width[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_cmd}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_addr[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_wdata[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_width[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_cmd}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req}] @@ -49,10 +49,10 @@ set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_rdata[*]}] #CORE-1 IMEM Constraints -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_cmd}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_addr[*]}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_bl[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_cmd}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_addr[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_bl[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_cmd}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req}] @@ -66,11 +66,11 @@ set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_rdata[*]}] #CORE-1 DMEM Constraints -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_cmd}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_addr[*]}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_wdata[*]}] -set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_width[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_cmd}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_addr[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_wdata[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_width[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_cmd}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req}]
diff --git a/openlane/ycr2_iconnect/config.tcl b/openlane/ycr2_iconnect/config.tcl index cf9debf..a8f0493 100644 --- a/openlane/ycr2_iconnect/config.tcl +++ b/openlane/ycr2_iconnect/config.tcl
@@ -34,42 +34,50 @@ set ::env(LEC_ENABLE) 0 set ::env(VERILOG_FILES) "\ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr2_iconnect.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr2_cross_bar.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr2_router.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr_dmem_router.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr_sram_mux.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr_tcm.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr_timer.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr_req_retiming.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/lib/ycr_arb.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/lib/ctech_cells.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/lib/sync_fifo2.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/primitives/ycr_reset_cells.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr2_iconnect.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr2_cross_bar.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr2_router.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr_dmem_router.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr_sram_mux.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr_tcm.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr_timer.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr_req_retiming.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/lib/ycr_arb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/lib/ctech_cells.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/lib/sync_fifo2.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/primitives/ycr_reset_cells.sv \ " -set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr2c/src/includes ] +set ::env(VERILOG_INCLUDE_DIRS) [glob $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/includes ] set ::env(SYNTH_READ_BLACKBOX_LIB) 1 set ::env(SYNTH_DEFINES) [list SYNTHESIS ] -set ::env(SDC_FILE) "$script_dir/base.sdc" -set ::env(BASE_SDC_FILE) "$script_dir/base.sdc" +set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc +set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc set ::env(LEC_ENABLE) 0 ## Floorplan -set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg +set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg set ::env(FP_SIZING) absolute set ::env(DIE_AREA) "0 0 390 1100" -#set ::env(PDN_CFG) $script_dir/pdn_cfg.tcl -#set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg set ::env(PL_TARGET_DENSITY) 0.20 -set ::env(CELL_PAD) "14" +set ::env(CELL_PAD) 2 +set ::env(GRT_ADJUSTMENT) {0.2} + +#set ::env(GLB_RT_ADJUSTMENT) {0.2} #set ::env(PL_ROUTABILITY_DRIVEN) "1" set ::env(PL_TIME_DRIVEN) "1" +set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) {1} +set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) {1} +set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) {1} +set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) {1} +set ::env(GLB_OPTIMIZE_MIRRORING) {1} +set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) {1} + ### PDN #set ::env(FP_PDN_CHECK_NODES) "0" #set ::env(FP_PDN_HORIZONTAL_HALO) "10" @@ -88,7 +96,7 @@ #set ::env(GLB_RT_MAXLAYER) 5 set ::env(RT_MAX_LAYER) {met4} -set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 20 +#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 20 set ::env(DIODE_INSERTION_STRATEGY) 3
diff --git a/openlane/ycr_core_top/base.sdc b/openlane/ycr_core_top/base.sdc index 32fd5d0..f804cf0 100644 --- a/openlane/ycr_core_top/base.sdc +++ b/openlane/ycr_core_top/base.sdc
@@ -4,8 +4,8 @@ create_clock -name core_clk -period 10.0000 [get_ports {clk}] set_clock_transition 0.1500 [all_clocks] -set_clock_uncertainty -setup 0.2500 [all_clocks] -set_clock_uncertainty -hold 0.2500 [all_clocks] +set_clock_uncertainty -setup 0.5000 [all_clocks] +set_clock_uncertainty -hold 0.2500 [all_clocks] set ::env(SYNTH_TIMING_DERATE) 0.05 puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %" @@ -14,28 +14,29 @@ #IMEM Constraints set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_cmd_o}] -set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_req_o}] -set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_addr_o[*]}] -set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_bl_o[*]}] +set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_req_o}] +set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_addr_o[*]}] +set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_bl_o[*]}] set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_cmd_o}] set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_req_o}] set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_addr_o[*]}] set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_bl_o[*]}] -set_input_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_req_ack_i}] -set_input_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_rdata_i[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_req_ack_i}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_rdata_i[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_resp_i[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_req_ack_i}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_rdata_i[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_resp_i[*]}] #DMEM Constraints -set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_cmd_o}] +set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_cmd_o}] set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_req_o}] -set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_addr_o[*]}] -set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_wdata_o[*]}] -set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_width_o[*]}] +set_output_delay -max 2.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_addr_o[*]}] +set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_wdata_o[*]}] +set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_width_o[*]}] set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_cmd_o}] set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_req_o}] @@ -43,8 +44,9 @@ set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_wdata_o[*]}] set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_width_o[*]}] -set_input_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_req_ack_i}] -set_input_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_rdata_i[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_req_ack_i}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_rdata_i[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_resp_i[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_req_ack_i}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_rdata_i[*]}]
diff --git a/openlane/ycr_core_top/config.tcl b/openlane/ycr_core_top/config.tcl index 70e8196..bc6ed3e 100644 --- a/openlane/ycr_core_top/config.tcl +++ b/openlane/ycr_core_top/config.tcl
@@ -33,38 +33,38 @@ set ::env(LEC_ENABLE) 0 set ::env(VERILOG_FILES) "\ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_top.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_core_top.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_dm.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_tapc_synchronizer.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_clk_ctrl.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_scu.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_tapc.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_tapc_shift_reg.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/ycr_dmi.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/primitives/ycr_reset_cells.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_ifu.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_idu.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_exu.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_mprf.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_csr.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_ialu.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_mul.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_div.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_lsu.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_hdu.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_tdu.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_ipic.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr_req_retiming.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/lib/sync_fifo2.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/ycr_core_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/ycr_dm.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/ycr_tapc_synchronizer.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/ycr_clk_ctrl.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/ycr_scu.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/ycr_tapc.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/ycr_tapc_shift_reg.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/ycr_dmi.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/primitives/ycr_reset_cells.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_ifu.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_idu.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_exu.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_mprf.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_csr.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_ialu.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_mul.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_div.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_lsu.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_hdu.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_pipe_tdu.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/pipeline/ycr_ipic.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr_req_retiming.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/lib/sync_fifo2.sv \ " -set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr2c/src/includes ] +set ::env(VERILOG_INCLUDE_DIRS) [glob $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/includes ] set ::env(SYNTH_READ_BLACKBOX_LIB) 1 set ::env(SYNTH_DEFINES) [list SYNTHESIS ] -set ::env(SDC_FILE) "$script_dir/base.sdc" -set ::env(BASE_SDC_FILE) "$script_dir/base.sdc" +set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc +set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc set ::env(LEC_ENABLE) 0 @@ -72,17 +72,19 @@ set ::env(GND_PIN) [list {vssd1}] ## Floorplan -set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg +set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg set ::env(FP_SIZING) absolute -set ::env(DIE_AREA) "0 0 550 950 " +set ::env(DIE_AREA) "0 0 540 950 " -set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg set ::env(PL_TARGET_DENSITY) 0.43 set ::env(CELL_PAD) "4" +## Routing +set ::env(GRT_ADJUSTMENT) 0.2 + #set ::env(GLB_RT_MAXLAYER) 5 set ::env(RT_MAX_LAYER) {met4} -set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 +#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 set ::env(DIODE_INSERTION_STRATEGY) 3
diff --git a/openlane/ycr_core_top/macro_placement.cfg b/openlane/ycr_core_top/macro_placement.cfg index 8ec6301..e69de29 100644 --- a/openlane/ycr_core_top/macro_placement.cfg +++ b/openlane/ycr_core_top/macro_placement.cfg
@@ -1,2 +0,0 @@ -u_icache.u_cmem_2kb 285.000 291.000 FS -u_dcache.u_cmem_2kb 1185.000 291.000 N
diff --git a/openlane/ycr_intf/base.sdc b/openlane/ycr_intf/base.sdc index 2774794..db8fbe6 100644 --- a/openlane/ycr_intf/base.sdc +++ b/openlane/ycr_intf/base.sdc
@@ -11,7 +11,7 @@ create_generated_clock -name icache_mem_clk1 -add -source [get_ports {core_clk}] -master_clock [get_clocks core_clk] -divide_by 1 -comment {icache mem clock1} [get_ports icache_mem_clk1] set_clock_transition 0.1500 [all_clocks] -set_clock_uncertainty -setup 0.2500 [all_clocks] +set_clock_uncertainty -setup 0.5000 [all_clocks] set_clock_uncertainty -hold 0.2500 [all_clocks] set ::env(SYNTH_TIMING_DERATE) 0.05
diff --git a/openlane/ycr_intf/config.tcl b/openlane/ycr_intf/config.tcl index 2ef0b86..524afd3 100644 --- a/openlane/ycr_intf/config.tcl +++ b/openlane/ycr_intf/config.tcl
@@ -34,27 +34,27 @@ set ::env(LEC_ENABLE) 0 set ::env(VERILOG_FILES) "\ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/lib/clk_skew_adjust.gv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/lib/ctech_cells.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/dcache_top.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/dcache_tag_fifo.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/icache_tag_fifo.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/icache_top.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/icache_app_fsm.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/lib/ycr_async_wbb.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr_dmem_wb.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr_intf.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/top/ycr_sram_mux.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/lib/async_fifo.sv \ - $script_dir/../../verilog/rtl/yifive/ycr2c/src/core/primitives/ycr_reset_cells.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/lib/clk_skew_adjust.gv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/lib/ctech_cells.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/dcache_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/dcache_tag_fifo.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/icache_tag_fifo.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/icache_top.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/cache/src/core/icache_app_fsm.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/lib/ycr_async_wbb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr_dmem_wb.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr_intf.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/top/ycr_sram_mux.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/lib/async_fifo.sv \ + $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/core/primitives/ycr_reset_cells.sv \ " -set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr2c/src/includes ] +set ::env(VERILOG_INCLUDE_DIRS) [glob $::env(DESIGN_DIR)/../../verilog/rtl/yifive/ycr2c/src/includes ] set ::env(SYNTH_READ_BLACKBOX_LIB) 1 set ::env(SYNTH_DEFINES) [list SYNTHESIS ] -set ::env(SDC_FILE) "$script_dir/base.sdc" -set ::env(BASE_SDC_FILE) "$script_dir/base.sdc" +set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc +set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc set ::env(LEC_ENABLE) 0 @@ -62,12 +62,11 @@ set ::env(GND_PIN) [list {vssd1}] ## Floorplan -set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg +set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg set ::env(FP_SIZING) absolute set ::env(DIE_AREA) "0 0 810 640 " set ::env(CELL_PAD) "6" -set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg set ::env(PL_TARGET_DENSITY) 0.37 set ::env(FP_IO_VEXTEND) {6} @@ -75,7 +74,7 @@ set ::env(RT_MAX_LAYER) {met4} #set ::env(GLB_RT_MAXLAYER) "5" -set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 +#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 set ::env(DIODE_INSERTION_STRATEGY) 3
diff --git a/signoff/pinmux/OPENLANE_VERSION b/signoff/pinmux/OPENLANE_VERSION index 078e9d2..d5588cd 100644 --- a/signoff/pinmux/OPENLANE_VERSION +++ b/signoff/pinmux/OPENLANE_VERSION
@@ -1 +1 @@ -openlane 0dc6fb79c91082b94f8ded78d70f8bacbab96bf2 +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/pinmux/PDK_SOURCES b/signoff/pinmux/PDK_SOURCES index b08beb4..e8e14ea 100644 --- a/signoff/pinmux/PDK_SOURCES +++ b/signoff/pinmux/PDK_SOURCES
@@ -1 +1 @@ -open_pdks 41c0908b47130d5675ff8484255b43f66463a7d6 +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/signoff/pinmux_top/OPENLANE_VERSION b/signoff/pinmux_top/OPENLANE_VERSION new file mode 100644 index 0000000..d5588cd --- /dev/null +++ b/signoff/pinmux_top/OPENLANE_VERSION
@@ -0,0 +1 @@ +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/pinmux_top/PDK_SOURCES b/signoff/pinmux_top/PDK_SOURCES new file mode 100644 index 0000000..e8e14ea --- /dev/null +++ b/signoff/pinmux_top/PDK_SOURCES
@@ -0,0 +1 @@ +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/signoff/qspim_top/OPENLANE_VERSION b/signoff/qspim_top/OPENLANE_VERSION index cf40e34..d5588cd 100644 --- a/signoff/qspim_top/OPENLANE_VERSION +++ b/signoff/qspim_top/OPENLANE_VERSION
@@ -1 +1 @@ -openlane 8120faaedf752714e65fb7ff91993a8e6630a664 +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/qspim_top/PDK_SOURCES b/signoff/qspim_top/PDK_SOURCES index b08beb4..e8e14ea 100644 --- a/signoff/qspim_top/PDK_SOURCES +++ b/signoff/qspim_top/PDK_SOURCES
@@ -1 +1 @@ -open_pdks 41c0908b47130d5675ff8484255b43f66463a7d6 +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/signoff/uart_i2cm_usb_spi_top/OPENLANE_VERSION b/signoff/uart_i2cm_usb_spi_top/OPENLANE_VERSION index 078e9d2..d5588cd 100644 --- a/signoff/uart_i2cm_usb_spi_top/OPENLANE_VERSION +++ b/signoff/uart_i2cm_usb_spi_top/OPENLANE_VERSION
@@ -1 +1 @@ -openlane 0dc6fb79c91082b94f8ded78d70f8bacbab96bf2 +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/uart_i2cm_usb_spi_top/PDK_SOURCES b/signoff/uart_i2cm_usb_spi_top/PDK_SOURCES index b08beb4..e8e14ea 100644 --- a/signoff/uart_i2cm_usb_spi_top/PDK_SOURCES +++ b/signoff/uart_i2cm_usb_spi_top/PDK_SOURCES
@@ -1 +1 @@ -open_pdks 41c0908b47130d5675ff8484255b43f66463a7d6 +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/signoff/user_project_wrapper/OPENLANE_VERSION b/signoff/user_project_wrapper/OPENLANE_VERSION index 80c7664..d5588cd 100644 --- a/signoff/user_project_wrapper/OPENLANE_VERSION +++ b/signoff/user_project_wrapper/OPENLANE_VERSION
@@ -1 +1 @@ -openlane N/A +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/user_project_wrapper/PDK_SOURCES b/signoff/user_project_wrapper/PDK_SOURCES index 22e7dc1..e8e14ea 100644 --- a/signoff/user_project_wrapper/PDK_SOURCES +++ b/signoff/user_project_wrapper/PDK_SOURCES
@@ -1,3 +1 @@ -openlane 70923d7fbd8998c8da87d905cf9e69bffc13709f -skywater-pdk c094b6e83a4f9298e47f696ec5a7fd53535ec5eb -open_pdks 476f7428f7f686de51a5164c702629a9b9f2da46 +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/signoff/wb_host/OPENLANE_VERSION b/signoff/wb_host/OPENLANE_VERSION index 078e9d2..d5588cd 100644 --- a/signoff/wb_host/OPENLANE_VERSION +++ b/signoff/wb_host/OPENLANE_VERSION
@@ -1 +1 @@ -openlane 0dc6fb79c91082b94f8ded78d70f8bacbab96bf2 +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/wb_host/PDK_SOURCES b/signoff/wb_host/PDK_SOURCES index b08beb4..e8e14ea 100644 --- a/signoff/wb_host/PDK_SOURCES +++ b/signoff/wb_host/PDK_SOURCES
@@ -1 +1 @@ -open_pdks 41c0908b47130d5675ff8484255b43f66463a7d6 +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/signoff/wb_interconnect/OPENLANE_VERSION b/signoff/wb_interconnect/OPENLANE_VERSION index 078e9d2..d5588cd 100644 --- a/signoff/wb_interconnect/OPENLANE_VERSION +++ b/signoff/wb_interconnect/OPENLANE_VERSION
@@ -1 +1 @@ -openlane 0dc6fb79c91082b94f8ded78d70f8bacbab96bf2 +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/wb_interconnect/PDK_SOURCES b/signoff/wb_interconnect/PDK_SOURCES index b08beb4..e8e14ea 100644 --- a/signoff/wb_interconnect/PDK_SOURCES +++ b/signoff/wb_interconnect/PDK_SOURCES
@@ -1 +1 @@ -open_pdks 41c0908b47130d5675ff8484255b43f66463a7d6 +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/signoff/ycr2_iconnect/OPENLANE_VERSION b/signoff/ycr2_iconnect/OPENLANE_VERSION index 078e9d2..d5588cd 100644 --- a/signoff/ycr2_iconnect/OPENLANE_VERSION +++ b/signoff/ycr2_iconnect/OPENLANE_VERSION
@@ -1 +1 @@ -openlane 0dc6fb79c91082b94f8ded78d70f8bacbab96bf2 +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/ycr2_iconnect/PDK_SOURCES b/signoff/ycr2_iconnect/PDK_SOURCES index b08beb4..e8e14ea 100644 --- a/signoff/ycr2_iconnect/PDK_SOURCES +++ b/signoff/ycr2_iconnect/PDK_SOURCES
@@ -1 +1 @@ -open_pdks 41c0908b47130d5675ff8484255b43f66463a7d6 +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/signoff/ycr_core_top/OPENLANE_VERSION b/signoff/ycr_core_top/OPENLANE_VERSION index 078e9d2..d5588cd 100644 --- a/signoff/ycr_core_top/OPENLANE_VERSION +++ b/signoff/ycr_core_top/OPENLANE_VERSION
@@ -1 +1 @@ -openlane 0dc6fb79c91082b94f8ded78d70f8bacbab96bf2 +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/ycr_core_top/PDK_SOURCES b/signoff/ycr_core_top/PDK_SOURCES index b08beb4..e8e14ea 100644 --- a/signoff/ycr_core_top/PDK_SOURCES +++ b/signoff/ycr_core_top/PDK_SOURCES
@@ -1 +1 @@ -open_pdks 41c0908b47130d5675ff8484255b43f66463a7d6 +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/signoff/ycr_intf/OPENLANE_VERSION b/signoff/ycr_intf/OPENLANE_VERSION index 078e9d2..d5588cd 100644 --- a/signoff/ycr_intf/OPENLANE_VERSION +++ b/signoff/ycr_intf/OPENLANE_VERSION
@@ -1 +1 @@ -openlane 0dc6fb79c91082b94f8ded78d70f8bacbab96bf2 +openlane 6ab944bc23688cae6dc6fa32444891a1e57715c8
diff --git a/signoff/ycr_intf/PDK_SOURCES b/signoff/ycr_intf/PDK_SOURCES index b08beb4..e8e14ea 100644 --- a/signoff/ycr_intf/PDK_SOURCES +++ b/signoff/ycr_intf/PDK_SOURCES
@@ -1 +1 @@ -open_pdks 41c0908b47130d5675ff8484255b43f66463a7d6 +open_pdks e8294524e5f67c533c5d0c3afa0bcc5b2a5fa066
diff --git a/sta/scripts/caravel_timing.tcl b/sta/scripts/caravel_timing.tcl index 6b787ac..0593e3b 100644 --- a/sta/scripts/caravel_timing.tcl +++ b/sta/scripts/caravel_timing.tcl
@@ -50,7 +50,7 @@ read_verilog $::env(USER_ROOT)/verilog/gl/uart_i2c_usb_spi_top.v read_verilog $::env(USER_ROOT)/verilog/gl/wb_host.v read_verilog $::env(USER_ROOT)/verilog/gl/wb_interconnect.v - read_verilog $::env(USER_ROOT)/verilog/gl/pinmux.v + read_verilog $::env(USER_ROOT)/verilog/gl/pinmux_top.v read_verilog $::env(USER_ROOT)/verilog/gl/user_project_wrapper.v @@ -150,7 +150,7 @@ read_spef -path mprj/u_riscv_top.u_intf $::env(USER_ROOT)/spef/ycr_intf.spef read_spef -path mprj/u_riscv_top.i_core_top_0 $::env(USER_ROOT)/spef/ycr_core_top.spef read_spef -path mprj/u_riscv_top.i_core_top_1 $::env(USER_ROOT)/spef/ycr_core_top.spef - read_spef -path mprj/u_pinmux $::env(USER_ROOT)/spef/pinmux.spef + read_spef -path mprj/u_pinmux $::env(USER_ROOT)/spef/pinmux_top.spef read_spef -path mprj/u_qspi_master $::env(USER_ROOT)/spef/qspim_top.spef read_spef -path mprj/u_uart_i2c_usb_spi $::env(USER_ROOT)/spef/uart_i2c_usb_spi_top.spef read_spef -path mprj/u_wb_host $::env(USER_ROOT)/spef/wb_host.spef
diff --git a/verilog/dv/Makefile b/verilog/dv/Makefile index 84ee8f8..141381b 100644 --- a/verilog/dv/Makefile +++ b/verilog/dv/Makefile
@@ -19,7 +19,7 @@ .SUFFIXES: .SILENT: clean all -PATTERNS = wb_port risc_boot user_risc_boot user_uart user_uart1 user_qspi user_i2cm riscv_regress user_basic user_usb user_pwm user_timer user_uart_master uart_master user_mcore user_sram_exec user_cache_bypass user_gpio arduino_risc_boot arduino_hello_world arduino_ascii_table arduino_multi_serial user_spi_isp +PATTERNS = wb_port risc_boot user_risc_boot user_uart user_uart1 user_qspi user_i2cm riscv_regress user_basic user_usb user_pwm user_timer user_uart_master uart_master user_sram_exec user_cache_bypass user_gpio user_spi_isp arduino_risc_boot arduino_hello_world arduino_ascii_table arduino_multi_serial arduino_arrays arduino_switchCase2 arduino_character_analysis arduino_string arduino_digital_port_control user_sspi user_aes user_sema user_mcore_test1 user_mcore_test2 all: ${PATTERNS} for i in ${PATTERNS}; do \
diff --git a/verilog/dv/arduino_arrays/Makefile b/verilog/dv/arduino_arrays/Makefile new file mode 100644 index 0000000..dad099c --- /dev/null +++ b/verilog/dv/arduino_arrays/Makefile
@@ -0,0 +1,140 @@ +# 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 + + +# ---- Include Partitioned Makefiles ---- + +CONFIG = caravel_user_project + +####################################################################### +## Caravel Verilog for Integration Tests +####################################################################### + +DESIGNS?=../../.. +TOOLS?=/opt/riscv32i/ + +export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog +export RISCDUINO_BOARD ?= $(USER_PROJECT_VERILOG)/dv/common/riscduino_board/custom_board/riscduino +## YIFIVE FIRMWARE +YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware +GCC_PREFIX?=riscv32-unknown-elf + + +## Simulation mode: RTL/GL +SIM?=RTL +DUMP?=OFF +RISC_CORE?=0 + +### To Enable IVERILOG FST DUMP +export IVERILOG_DUMPER = fst + + +.SUFFIXES: + +PATTERN = arduino_arrays + +all: ${PATTERN:=.vcd} + + +vvp: ${PATTERN:=.vvp} + +%.vvp: %_tb.v + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${PATTERN}.ino.cpp -o ${PATTERN}.ino.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/Print.cpp -o Print.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WMath.cpp -o WMath.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WString.cpp -o WString.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WInterrupts.c -o WInterrupts.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/fe300prci/fe300prci_driver.c -o fe300prci_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/abi.cpp -o abi.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/plic/plic_driver.c -o plic_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/UARTClass.cpp -o UARTClass.cpp.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/entry.S -o entry.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/hooks.c -o hooks.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/init.S -o init.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/itoa.c -o itoa.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/main.cpp -o main.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/malloc.c -o malloc.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/new.cpp -o new.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/sbrk.c -o sbrk.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/start.S -o start.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring.c -o wiring.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_analog.c -o wiring_analog.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_digital.c -o wiring_digital.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_pulse.cpp -o wiring_pulse.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_shift.c -o wiring_shift.c.o + ${GCC_PREFIX}-ar rcs core.a Print.cpp.o + ${GCC_PREFIX}-ar rcs core.a UARTClass.cpp.o + ${GCC_PREFIX}-ar rcs core.a WInterrupts.c.o + ${GCC_PREFIX}-ar rcs core.a WMath.cpp.o + ${GCC_PREFIX}-ar rcs core.a WString.cpp.o + ${GCC_PREFIX}-ar rcs core.a abi.cpp.o + ${GCC_PREFIX}-ar rcs core.a fe300prci_driver.c.o + ${GCC_PREFIX}-ar rcs core.a plic_driver.c.o + ${GCC_PREFIX}-ar rcs core.a entry.S.o + ${GCC_PREFIX}-ar rcs core.a hooks.c.o + ${GCC_PREFIX}-ar rcs core.a init.S.o + ${GCC_PREFIX}-ar rcs core.a itoa.c.o + ${GCC_PREFIX}-ar rcs core.a main.cpp.o + ${GCC_PREFIX}-ar rcs core.a malloc.c.o + ${GCC_PREFIX}-ar rcs core.a new.cpp.o + ${GCC_PREFIX}-ar rcs core.a sbrk.c.o + ${GCC_PREFIX}-ar rcs core.a start.S.o + ${GCC_PREFIX}-ar rcs core.a wiring.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_analog.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_digital.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_pulse.cpp.o + ${GCC_PREFIX}-ar rcs core.a wiring_shift.c.o + ${GCC_PREFIX}-g++ -T ${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score/link.lds -nostartfiles -Wl,-N -Wl,--gc-sections -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=sbrk ${PATTERN}.ino.cpp.o -nostdlib -Wl,--start-group core.a -lm -lstdc++ -lc -lgloss -Wl,--end-group -lgcc -o ${PATTERN}.ino.elf + ${GCC_PREFIX}-objcopy -R .rel.dyn -O binary ${PATTERN}.ino.elf ${PATTERN}.ino.bin + ${GCC_PREFIX}-objcopy -R .rel.dyn -O verilog ${PATTERN}.ino.elf ${PATTERN}.ino.hex + ${GCC_PREFIX}-objdump -D ${PATTERN}.ino.elf > ${PATTERN}.ino.dump + rm *.o *.a +ifeq ($(SIM),RTL) + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + endif +else + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + endif +endif + +%.vcd: %.vvp + vvp $< +risc_core_id=$(RISC_CORE) + + +# ---- Clean ---- + +clean: + rm -f *.elf *.hex *.bin *.vvp *.vcd *.log *.dump *.a *.o + +.PHONY: clean hex all
diff --git a/verilog/dv/arduino_arrays/arduino_arrays.ino b/verilog/dv/arduino_arrays/arduino_arrays.ino new file mode 100644 index 0000000..dbbb4b4 --- /dev/null +++ b/verilog/dv/arduino_arrays/arduino_arrays.ino
@@ -0,0 +1,56 @@ +/* + Arrays + + Demonstrates the use of an array to hold pin numbers in order to iterate over + the pins in a sequence. Lights multiple LEDs in sequence, then in reverse. + + Unlike the For Loop tutorial, where the pins have to be contiguous, here the + pins can be in any random order. + + The circuit: + - LEDs from pins 2 through 7 to ground + + created 2006 + by David A. Mellis + modified 30 Aug 2011 + by Tom Igoe + + This example code is in the public domain. + + https://www.arduino.cc/en/Tutorial/BuiltInExamples/Arrays +*/ + +int timer = 100; // The higher the number, the slower the timing. +int ledPins[] = { + 2, 7, 4, 6, 5, 3 +}; // an array of pin numbers to which LEDs are attached +int pinCount = 6; // the number of pins (i.e. the length of the array) + +void setup() { + // the array elements are numbered from 0 to (pinCount - 1). + // use a for loop to initialize each pin as an output: + for (int thisPin = 0; thisPin < pinCount; thisPin++) { + pinMode(ledPins[thisPin], OUTPUT); + } +} + +void loop() { + // loop from the lowest pin to the highest: + for (int thisPin = 0; thisPin < pinCount; thisPin++) { + // turn the pin on: + digitalWrite(ledPins[thisPin], HIGH); + delay(timer); + // turn the pin off: + digitalWrite(ledPins[thisPin], LOW); + + } + + // loop from the highest pin to the lowest: + for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) { + // turn the pin on: + digitalWrite(ledPins[thisPin], HIGH); + delay(timer); + // turn the pin off: + digitalWrite(ledPins[thisPin], LOW); + } +}
diff --git a/verilog/dv/arduino_arrays/arduino_arrays.ino.cpp b/verilog/dv/arduino_arrays/arduino_arrays.ino.cpp new file mode 100644 index 0000000..ebcb90b --- /dev/null +++ b/verilog/dv/arduino_arrays/arduino_arrays.ino.cpp
@@ -0,0 +1,63 @@ +#include <Arduino.h> +/* + Arrays + + Demonstrates the use of an array to hold pin numbers in order to iterate over + the pins in a sequence. Lights multiple LEDs in sequence, then in reverse. + + Unlike the For Loop tutorial, where the pins have to be contiguous, here the + pins can be in any random order. + + The circuit: + - LEDs from pins 2 through 7 to ground + + created 2006 + by David A. Mellis + modified 30 Aug 2011 + by Tom Igoe + + This example code is in the public domain. + + https://www.arduino.cc/en/Tutorial/BuiltInExamples/Arrays +*/ + +int timer = 10; // In Milli Second - The higher the number, the slower the timing. +int ledPins[] = { + 2, 7, 4, 6, 5, 3 +}; // an array of pin numbers to which LEDs are attached +int pinCount = 6; // the number of pins (i.e. the length of the array) + +void setup(); +void loop(); +void setup() { + // the array elements are numbered from 0 to (pinCount - 1). + // use a for loop to initialize each pin as an output: + for (int thisPin = 0; thisPin < pinCount; thisPin++) { + pinMode(ledPins[thisPin], OUTPUT); + } +} + +void loop() { + // loop from the lowest pin to the highest: + for (int thisPin = 0; thisPin < pinCount; thisPin++) { + // turn the pin on: + digitalWrite(ledPins[thisPin], HIGH); + //delay(timer); + delayMicroseconds(timer); + // turn the pin off: + digitalWrite(ledPins[thisPin], LOW); + delayMicroseconds(timer); + + } + + // loop from the highest pin to the lowest: + for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) { + // turn the pin on: + digitalWrite(ledPins[thisPin], HIGH); + delayMicroseconds(timer); + // turn the pin off: + digitalWrite(ledPins[thisPin], LOW); + delayMicroseconds(timer); + } +} +
diff --git a/verilog/dv/user_mcore/user_mcore_tb.v b/verilog/dv/arduino_arrays/arduino_arrays_tb.v similarity index 65% copy from verilog/dv/user_mcore/user_mcore_tb.v copy to verilog/dv/arduino_arrays/arduino_arrays_tb.v index b43dcba..169337d 100644 --- a/verilog/dv/user_mcore/user_mcore_tb.v +++ b/verilog/dv/arduino_arrays/arduino_arrays_tb.v
@@ -18,20 +18,23 @@ //// //// //// Standalone User validation Test bench //// //// //// -//// This file is part of the riscduino cores project //// +//// This file is part of the riscdunio cores project //// +//// https://github.com/dineshannayya/riscdunio.git //// //// //// //// Description //// //// This is a standalone test bench to validate the //// -//// Digital core multi-core behaviour. //// +//// Digital core. //// +//// This test bench to valid Arduino example: //// +//// <example><05.control><Arrays> //// //// //// //// To Do: //// //// nothing //// //// //// //// Author(s): //// -//// - Dinesh Annayya, dinesha@opencores.org //// +//// - Dinesh Annayya, dinesh.annayya@gmail.com //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// +//// 0.1 - 29th July 2022, Dinesh A //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -65,7 +68,9 @@ `timescale 1 ns / 1 ns `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v" -module user_mcore_tb; +`include "is62wvs1288.v" + +module arduino_arrays_tb; reg clock; reg wb_rst_i; reg power1, power2; @@ -92,18 +97,48 @@ wire [7:0] mprj_io_0; reg test_fail; reg [31:0] read_data; + reg flag ; + +parameter P_FSM_C = 4'b0000; // Command Phase Only +parameter P_FSM_CW = 4'b0001; // Command + Write DATA Phase Only +parameter P_FSM_CA = 4'b0010; // Command -> Address Phase Only + +parameter P_FSM_CAR = 4'b0011; // Command -> Address -> Read Data +parameter P_FSM_CADR = 4'b0100; // Command -> Address -> Dummy -> Read Data +parameter P_FSM_CAMR = 4'b0101; // Command -> Address -> Mode -> Read Data +parameter P_FSM_CAMDR = 4'b0110; // Command -> Address -> Mode -> Dummy -> Read Data + +parameter P_FSM_CAW = 4'b0111; // Command -> Address ->Write Data +parameter P_FSM_CADW = 4'b1000; // Command -> Address -> DUMMY + Write Data +parameter P_FSM_CAMW = 4'b1001; // Command -> Address -> MODE + Write Data + +parameter P_FSM_CDR = 4'b1010; // COMMAND -> DUMMY -> READ +parameter P_FSM_CDW = 4'b1011; // COMMAND -> DUMMY -> WRITE +parameter P_FSM_CR = 4'b1100; // COMMAND -> READ + +parameter P_MODE_SWITCH_IDLE = 2'b00; +parameter P_MODE_SWITCH_AT_ADDR = 2'b01; +parameter P_MODE_SWITCH_AT_DATA = 2'b10; + +parameter P_SINGLE = 2'b00; +parameter P_DOUBLE = 2'b01; +parameter P_QUAD = 2'b10; +parameter P_QDDR = 2'b11; + + integer d_risc_id; + integer i,j; - // External clock is used by default. Make this artificially fast for the - // simulation. Normally this would be a slow clock and the digital PLL - // would be the fast clock. - always #12.5 clock <= (clock === 1'b0); + + // 50Mhz CLock + always #10 clock <= (clock === 1'b0); initial begin clock = 0; + flag = 0; wbd_ext_cyc_i ='h0; // strobe/request wbd_ext_stb_i ='h0; // strobe/request wbd_ext_adr_i ='h0; // address @@ -115,69 +150,125 @@ `ifdef WFDUMP initial begin $dumpfile("simx.vcd"); - $dumpvars(1, user_mcore_tb); - $dumpvars(1, user_mcore_tb.u_top); - $dumpvars(0, user_mcore_tb.u_top.u_riscv_top); + $dumpvars(3, arduino_arrays_tb); + //$dumpvars(0, arduino_arrays_tb.u_top.u_riscv_top.i_core_top_0); + //$dumpvars(0, arduino_arrays_tb.u_top.u_riscv_top.u_connect); + //$dumpvars(0, arduino_arrays_tb.u_top.u_riscv_top.u_intf); + $dumpvars(0, arduino_arrays_tb.u_top.u_pinmux); end `endif - initial begin + /************* Port-D Mapping ********************************** + * Arduino-No + * Pin-2 0 PD0/RXD[0] digital_io[1] + * Pin-3 1 PD1/TXD[0] digital_io[2] + * Pin-4 2 PD2/RXD[1]/INT0 digital_io[3] + * Pin-5 3 PD3/INT1/OC2B(PWM0) digital_io[4] + * Pin-6 4 PD4/TXD[1] digital_io[5] + * Pin-11 5 PD5/SS[3]/OC0B(PWM1)/T1 digital_io[8] + * Pin-12 6 PD6/SS[2]/OC0A(PWM2)/AIN0 digital_io[9]/analog_io[2] + * Pin-13 7 PD7/A1N1 digital_io[10]/analog_io[3] + * ********************************************************/ - $value$plusargs("risc_core_id=%d", d_risc_id); + wire [7:0] port_d_in = { io_out[10], + io_out[9], + io_out[8], + io_out[5], + io_out[4], + io_out[3], + io_out[2], + io_out[1] + }; + + + initial begin #200; // Wait for reset removal repeat (10) @(posedge clock); $display("Monitor: Standalone User Risc Boot Test Started"); + $value$plusargs("risc_core_id=%d", d_risc_id); // Remove Wb Reset wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); - repeat (2) @(posedge clock); + repeat (2) @(posedge clock); #1; - // Remove all the reset - $display("STATUS: Working with Both core Risc core 0 & 1 "); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h31F); + + // Remove WB and SPI Reset and CORE under Reset + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F); + + // QSPI SRAM:CS#2 Switch to QSPI Mode + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_BANK_SEL,'h1000); // Change the Bank Sel 1000 + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL1,{16'h0,1'b0,1'b0,4'b0000,P_MODE_SWITCH_IDLE,P_SINGLE,P_SINGLE,4'b0100}); + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL2,{8'h0,2'b00,2'b00,P_FSM_C,8'h00,8'h38}); + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_WDATA,32'h0); + + // Remove all the reset + if(d_risc_id == 0) begin + $display("STATUS: Working with Risc core 0"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); + end else if(d_risc_id == 1) begin + $display("STATUS: Working with Risc core 1"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); + end else if(d_risc_id == 2) begin + $display("STATUS: Working with Risc core 2"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h41F); + end else if(d_risc_id == 3) begin + $display("STATUS: Working with Risc core 3"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h81F); + end + + repeat (100) @(posedge clock); // wait for Processor Get Ready - // Repeat cycles of 1000 clock edges as needed to complete testbench - repeat (22) begin - repeat (1000) @(posedge clock); - // $display("+1000 cycles"); - end + repeat (20000) @(posedge clock); // wait for Processor Get Ready + flag = 1; + fork + begin + // Refer C code, + // Wait for toggle in following sequency 2,7,4,6,5,3 + + portd_detect_pin_toggle(2); + portd_detect_pin_toggle(7); + portd_detect_pin_toggle(4); + portd_detect_pin_toggle(6); + portd_detect_pin_toggle(5); + portd_detect_pin_toggle(3); + + + // Wait for toggle in following sequency 3,5,6,4,7,2 + portd_detect_pin_toggle(3); + portd_detect_pin_toggle(5); + portd_detect_pin_toggle(6); + portd_detect_pin_toggle(4); + portd_detect_pin_toggle(7); + portd_detect_pin_toggle(2); + + test_fail = 0; + end + begin + repeat (30000) @(posedge clock); // wait for Processor Get Ready + test_fail = 1; + end + join_any - $display("Monitor: Reading Back the expected value"); - // User RISC core expect to write these value in global - // register, read back and decide on pass fail - // 0x30000018 = 0x11223344; - // 0x3000001C = 0x22334455; - // 0x30000020 = 0x33445566; - // 0x30000024 = 0x44556677; - // 0x30000028 = 0x55667788; - // 0x3000002C = 0x66778899; - - test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); + #100 $display("###################################################"); if(test_fail == 0) begin `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Passed"); + $display("Monitor: Ardunio arrays (GL) Passed"); `else - $display("Monitor: Standalone User Risc Boot (RTL) Passed"); + $display("Monitor: Ardunio arrays (RTL) Passed"); `endif end else begin `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Failed"); + $display("Monitor: Ardunio arrays (GL) Failed"); `else - $display("Monitor: Standalone User Risc Boot (RTL) Failed"); + $display("Monitor: Ardunio arrays (RTL) Failed"); `endif end $display("###################################################"); @@ -257,7 +348,7 @@ assign io_in[32] = flash_io3; // Quard flash - s25fl256s #(.mem_file_name("user_mcore.hex"), + s25fl256s #(.mem_file_name("arduino_arrays.ino.hex"), .otp_file_name("none"), .TimingModel("S25FL512SAGMFI010_F_30pF")) u_spi_flash_256mb ( @@ -273,7 +364,32 @@ ); + wire spiram_csb = io_out[27]; + is62wvs1288 #(.mem_file_name("none")) + u_sram ( + // Data Inputs/Outputs + .io0 (flash_io0), + .io1 (flash_io1), + // Controls + .clk (flash_clk), + .csb (spiram_csb), + .io2 (flash_io2), + .io3 (flash_io3) + ); + +//------------------------------------- + +// detect pin toggle +task portd_detect_pin_toggle; +input [7:0] pin_n; +begin + wait(port_d_in[pin_n] == 1'b1); + wait(port_d_in[pin_n] == 1'b0); + $display("PORT-D Pin : %x Toggle Detected",pin_n); + +end +endtask task wb_user_core_write;
diff --git a/verilog/dv/arduino_ascii_table/arduino_ascii_table.ino.cpp b/verilog/dv/arduino_ascii_table/arduino_ascii_table.ino.cpp index 07a49d4..a2d7001 100644 --- a/verilog/dv/arduino_ascii_table/arduino_ascii_table.ino.cpp +++ b/verilog/dv/arduino_ascii_table/arduino_ascii_table.ino.cpp
@@ -1,5 +1,4 @@ #include <Arduino.h> -#line 1 "/tmp/.arduinoIDE-unsaved202265-51666-197w8ma.2pxu/ASCIITable/ASCIITable.ino" /* ASCII table @@ -21,11 +20,8 @@ https://www.arduino.cc/en/Tutorial/BuiltInExamples/ASCIITable */ -#line 22 "/tmp/.arduinoIDE-unsaved202265-51666-197w8ma.2pxu/ASCIITable/ASCIITable.ino" void setup(); -#line 39 "/tmp/.arduinoIDE-unsaved202265-51666-197w8ma.2pxu/ASCIITable/ASCIITable.ino" void loop(); -#line 22 "/tmp/.arduinoIDE-unsaved202265-51666-197w8ma.2pxu/ASCIITable/ASCIITable.ino" // first visible ASCIIcharacter '!' is number 33: int thisByte = 33; void setup() {
diff --git a/verilog/dv/arduino_ascii_table/arduino_ascii_table_tb.v b/verilog/dv/arduino_ascii_table/arduino_ascii_table_tb.v index af4e082..e6fa954 100644 --- a/verilog/dv/arduino_ascii_table/arduino_ascii_table_tb.v +++ b/verilog/dv/arduino_ascii_table/arduino_ascii_table_tb.v
@@ -18,30 +18,23 @@ //// //// //// Standalone User validation Test bench //// //// //// -//// This file is part of the YIFive cores project //// -//// https://github.com/dineshannayya/yifive_r0.git //// -//// http://www.opencores.org/cores/yifive/ //// +//// This file is part of the riscdunio cores project //// +//// https://github.com/dineshannayya/riscdunio.git //// //// //// //// Description //// //// This is a standalone test bench to validate the //// //// Digital core. //// -//// 1. User Risc core is booted using compiled code of //// -//// user_risc_boot.c //// -//// 2. User Risc core uses Serial Flash and SDRAM to boot //// -//// 3. After successful boot, Risc core will write signature //// -//// in to user register from 0x1003_0058 to 0x1003_006C //// -//// 4. Through the External Wishbone Interface we read back //// -//// from 0x3003_0058 to 0x3003_006C //// -//// and validate the user register to declared pass fail //// +//// This test bench to valid Arduino example: //// +//// <example><04.Communication><ASCIITable> //// //// //// //// To Do: //// //// nothing //// //// //// //// Author(s): //// -//// - Dinesh Annayya, dinesha@opencores.org //// +//// - Dinesh Annayya, dinesh.annayya@gmail.com //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// +//// 0.1 - 29th July 2022, Dinesh A //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -188,14 +181,14 @@ initial begin - uart_data_bit = 2'b11; - uart_stop_bits = 0; // 0: 1 stop bit; 1: 2 stop bit; - uart_stick_parity = 0; // 1: force even parity - uart_parity_en = 0; // parity enable - uart_even_odd_parity = 1; // 0: odd parity; 1: even parity - tb_set_uart_baud(50000000,1152000,uart_divisor);// 50Mhz Ref clock, Baud Rate: 230400 - uart_timeout = 2000;// wait time limit - uart_fifo_enable = 0; // fifo mode disable + uart_data_bit = 2'b11; + uart_stop_bits = 0; // 0: 1 stop bit; 1: 2 stop bit; + uart_stick_parity = 0; // 1: force even parity + uart_parity_en = 0; // parity enable + uart_even_odd_parity = 1; // 0: odd parity; 1: even parity + tb_set_uart_baud(50000000,1152000,uart_divisor);// 50Mhz Ref clock, Baud Rate: 230400 + uart_timeout = 2000;// wait time limit + uart_fifo_enable = 0; // fifo mode disable $value$plusargs("risc_core_id=%d", d_risc_id); @@ -208,61 +201,59 @@ repeat (2) @(posedge clock); #1; - // Remove all the reset - if(d_risc_id == 0) begin - $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); - end else if(d_risc_id == 1) begin - $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); - end else if(d_risc_id == 2) begin - $display("STATUS: Working with Risc core 2"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h41F); - end else if(d_risc_id == 3) begin - $display("STATUS: Working with Risc core 3"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h81F); - end + // Remove all the reset + if(d_risc_id == 0) begin + $display("STATUS: Working with Risc core 0"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); + end else if(d_risc_id == 1) begin + $display("STATUS: Working with Risc core 1"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); + end else if(d_risc_id == 2) begin + $display("STATUS: Working with Risc core 2"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h41F); + end else if(d_risc_id == 3) begin + $display("STATUS: Working with Risc core 3"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h81F); + end - repeat (100) @(posedge clock); // wait for Processor Get Ready + repeat (100) @(posedge clock); // wait for Processor Get Ready - tb_uart.debug_mode = 0; // disable debug display - tb_uart.uart_init; - tb_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity, - uart_stick_parity, uart_timeout, uart_divisor); + tb_uart.debug_mode = 0; // disable debug display + tb_uart.uart_init; + tb_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity, uart_stick_parity, uart_timeout, uart_divisor); - repeat (45000) @(posedge clock); // wait for Processor Get Ready - flag = 0; + repeat (45000) @(posedge clock); // wait for Processor Get Ready + flag = 0; check_sum = 0; - - - fork - begin - while(flag == 0) - begin - tb_uart.read_char(read_data,flag); - if(flag == 0) begin - $write ("%c",read_data); - check_sum = check_sum+read_data; + + fork + begin + while(flag == 0) + begin + tb_uart.read_char(read_data,flag); + if(flag == 0) begin + $write ("%c",read_data); + check_sum = check_sum+read_data; end - end - end - begin - repeat (3000000) @(posedge clock); // wait for Processor Get Ready - end - join_any - - #100 - tb_uart.report_status(uart_rx_nu, uart_tx_nu); - - test_fail = 0; + end + end + begin + repeat (3000000) @(posedge clock); // wait for Processor Get Ready + end + join_any + + #100 + tb_uart.report_status(uart_rx_nu, uart_tx_nu); + + test_fail = 0; $display("Total Rx Char: %d Check Sum : %x ",uart_rx_nu, check_sum); - // Check - // if all the 4224 byte received - // if no error - if(uart_rx_nu != 4224) test_fail = 1; - if(check_sum != 32'h3f01b) test_fail = 1; - if(tb_uart.err_cnt != 0) test_fail = 1; + // Check + // if all the 4224 byte received + // if no error + if(uart_rx_nu != 4224) test_fail = 1; + if(check_sum != 32'h3f01b) test_fail = 1; + if(tb_uart.err_cnt != 0) test_fail = 1; $display("###################################################");
diff --git a/verilog/dv/arduino_character_analysis/Makefile b/verilog/dv/arduino_character_analysis/Makefile new file mode 100644 index 0000000..9293db4 --- /dev/null +++ b/verilog/dv/arduino_character_analysis/Makefile
@@ -0,0 +1,140 @@ +# 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 + + +# ---- Include Partitioned Makefiles ---- + +CONFIG = caravel_user_project + +####################################################################### +## Caravel Verilog for Integration Tests +####################################################################### + +DESIGNS?=../../.. +TOOLS?=/opt/riscv32i/ + +export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog +export RISCDUINO_BOARD ?= $(USER_PROJECT_VERILOG)/dv/common/riscduino_board/custom_board/riscduino +## YIFIVE FIRMWARE +YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware +GCC_PREFIX?=riscv32-unknown-elf + + +## Simulation mode: RTL/GL +SIM?=RTL +DUMP?=OFF +RISC_CORE?=0 + +### To Enable IVERILOG FST DUMP +export IVERILOG_DUMPER = fst + + +.SUFFIXES: + +PATTERN = arduino_character_analysis + +all: ${PATTERN:=.vcd} + + +vvp: ${PATTERN:=.vvp} + +%.vvp: %_tb.v + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${PATTERN}.ino.cpp -o ${PATTERN}.ino.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/Print.cpp -o Print.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WMath.cpp -o WMath.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WString.cpp -o WString.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WInterrupts.c -o WInterrupts.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/fe300prci/fe300prci_driver.c -o fe300prci_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/abi.cpp -o abi.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/plic/plic_driver.c -o plic_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/UARTClass.cpp -o UARTClass.cpp.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/entry.S -o entry.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/hooks.c -o hooks.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/init.S -o init.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/itoa.c -o itoa.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/main.cpp -o main.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/malloc.c -o malloc.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/new.cpp -o new.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/sbrk.c -o sbrk.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/start.S -o start.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring.c -o wiring.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_analog.c -o wiring_analog.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_digital.c -o wiring_digital.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_pulse.cpp -o wiring_pulse.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_shift.c -o wiring_shift.c.o + ${GCC_PREFIX}-ar rcs core.a Print.cpp.o + ${GCC_PREFIX}-ar rcs core.a UARTClass.cpp.o + ${GCC_PREFIX}-ar rcs core.a WInterrupts.c.o + ${GCC_PREFIX}-ar rcs core.a WMath.cpp.o + ${GCC_PREFIX}-ar rcs core.a WString.cpp.o + ${GCC_PREFIX}-ar rcs core.a abi.cpp.o + ${GCC_PREFIX}-ar rcs core.a fe300prci_driver.c.o + ${GCC_PREFIX}-ar rcs core.a plic_driver.c.o + ${GCC_PREFIX}-ar rcs core.a entry.S.o + ${GCC_PREFIX}-ar rcs core.a hooks.c.o + ${GCC_PREFIX}-ar rcs core.a init.S.o + ${GCC_PREFIX}-ar rcs core.a itoa.c.o + ${GCC_PREFIX}-ar rcs core.a main.cpp.o + ${GCC_PREFIX}-ar rcs core.a malloc.c.o + ${GCC_PREFIX}-ar rcs core.a new.cpp.o + ${GCC_PREFIX}-ar rcs core.a sbrk.c.o + ${GCC_PREFIX}-ar rcs core.a start.S.o + ${GCC_PREFIX}-ar rcs core.a wiring.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_analog.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_digital.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_pulse.cpp.o + ${GCC_PREFIX}-ar rcs core.a wiring_shift.c.o + ${GCC_PREFIX}-g++ -T ${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score/link.lds -nostartfiles -Wl,-N -Wl,--gc-sections -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=sbrk ${PATTERN}.ino.cpp.o -nostdlib -Wl,--start-group core.a -lm -lstdc++ -lc -lgloss -Wl,--end-group -lgcc -o ${PATTERN}.ino.elf + ${GCC_PREFIX}-objcopy -R .rel.dyn -O binary ${PATTERN}.ino.elf ${PATTERN}.ino.bin + ${GCC_PREFIX}-objcopy -R .rel.dyn -O verilog ${PATTERN}.ino.elf ${PATTERN}.ino.hex + ${GCC_PREFIX}-objdump -D ${PATTERN}.ino.elf > ${PATTERN}.ino.dump + rm *.o *.a +ifeq ($(SIM),RTL) + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + endif +else + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + endif +endif + +%.vcd: %.vvp + vvp $< +risc_core_id=$(RISC_CORE) + + +# ---- Clean ---- + +clean: + rm -f *.elf *.hex *.bin *.vvp *.vcd *.log *.dump *.a *.o + +.PHONY: clean hex all
diff --git a/verilog/dv/arduino_character_analysis/arduino_character_analysis.ino b/verilog/dv/arduino_character_analysis/arduino_character_analysis.ino new file mode 100644 index 0000000..e7a3c23 --- /dev/null +++ b/verilog/dv/arduino_character_analysis/arduino_character_analysis.ino
@@ -0,0 +1,85 @@ +/* + Character analysis operators + + Examples using the character analysis operators. + Send any byte and the sketch will tell you about it. + + created 29 Nov 2010 + modified 2 Apr 2012 + by Tom Igoe + + This example code is in the public domain. + + https://www.arduino.cc/en/Tutorial/BuiltInExamples/CharacterAnalysis +*/ + +void setup() { + // Open serial communications and wait for port to open: + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // send an intro: + Serial.println("send any byte and I'll tell you everything I can about it"); + Serial.println(); +} + +void loop() { + // get any incoming bytes: + if (Serial.available() > 0) { + int thisChar = Serial.read(); + + // say what was sent: + Serial.print("You sent me: \'"); + Serial.write(thisChar); + Serial.print("\' ASCII Value: "); + Serial.println(thisChar); + + // analyze what was sent: + if (isAlphaNumeric(thisChar)) { + Serial.println("it's alphanumeric"); + } + if (isAlpha(thisChar)) { + Serial.println("it's alphabetic"); + } + if (isAscii(thisChar)) { + Serial.println("it's ASCII"); + } + if (isWhitespace(thisChar)) { + Serial.println("it's whitespace"); + } + if (isControl(thisChar)) { + Serial.println("it's a control character"); + } + if (isDigit(thisChar)) { + Serial.println("it's a numeric digit"); + } + if (isGraph(thisChar)) { + Serial.println("it's a printable character that's not whitespace"); + } + if (isLowerCase(thisChar)) { + Serial.println("it's lower case"); + } + if (isPrintable(thisChar)) { + Serial.println("it's printable"); + } + if (isPunct(thisChar)) { + Serial.println("it's punctuation"); + } + if (isSpace(thisChar)) { + Serial.println("it's a space character"); + } + if (isUpperCase(thisChar)) { + Serial.println("it's upper case"); + } + if (isHexadecimalDigit(thisChar)) { + Serial.println("it's a valid hexadecimaldigit (i.e. 0 - 9, a - F, or A - F)"); + } + + // add some space and ask for another byte: + Serial.println(); + Serial.println("Give me another byte:"); + Serial.println(); + } +}
diff --git a/verilog/dv/arduino_character_analysis/arduino_character_analysis.ino.cpp b/verilog/dv/arduino_character_analysis/arduino_character_analysis.ino.cpp new file mode 100644 index 0000000..ff39e85 --- /dev/null +++ b/verilog/dv/arduino_character_analysis/arduino_character_analysis.ino.cpp
@@ -0,0 +1,89 @@ +#include <Arduino.h> +/* + Character analysis operators + + Examples using the character analysis operators. + Send any byte and the sketch will tell you about it. + + created 29 Nov 2010 + modified 2 Apr 2012 + by Tom Igoe + + This example code is in the public domain. + + https://www.arduino.cc/en/Tutorial/BuiltInExamples/CharacterAnalysis +*/ + +void setup(); +void loop(); +void setup() { + // Open serial communications and wait for port to open: + Serial.begin(1152000); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + // send an intro: + Serial.println("send any byte and I'll tell you everything I can about it"); + Serial.println(); +} + +void loop() { + // get any incoming bytes: + if (Serial.available() > 0) { + int thisChar = Serial.read(); + + // say what was sent: + Serial.print("You sent me: \'"); + Serial.write(thisChar); + Serial.print("\' ASCII Value: "); + Serial.println(thisChar); + + // analyze what was sent: + if (isAlphaNumeric(thisChar)) { + Serial.println("it's alphanumeric"); + } + if (isAlpha(thisChar)) { + Serial.println("it's alphabetic"); + } + if (isAscii(thisChar)) { + Serial.println("it's ASCII"); + } + if (isWhitespace(thisChar)) { + Serial.println("it's whitespace"); + } + if (isControl(thisChar)) { + Serial.println("it's a control character"); + } + if (isDigit(thisChar)) { + Serial.println("it's a numeric digit"); + } + if (isGraph(thisChar)) { + Serial.println("it's a printable character that's not whitespace"); + } + if (isLowerCase(thisChar)) { + Serial.println("it's lower case"); + } + if (isPrintable(thisChar)) { + Serial.println("it's printable"); + } + if (isPunct(thisChar)) { + Serial.println("it's punctuation"); + } + if (isSpace(thisChar)) { + Serial.println("it's a space character"); + } + if (isUpperCase(thisChar)) { + Serial.println("it's upper case"); + } + if (isHexadecimalDigit(thisChar)) { + Serial.println("it's a valid hexadecimaldigit (i.e. 0 - 9, a - F, or A - F)"); + } + + // add some space and ask for another byte: + Serial.println(); + Serial.println("Give me another byte:"); + Serial.println(); + } +} +
diff --git a/verilog/dv/arduino_character_analysis/arduino_character_analysis_tb.v b/verilog/dv/arduino_character_analysis/arduino_character_analysis_tb.v new file mode 100644 index 0000000..af8c31f --- /dev/null +++ b/verilog/dv/arduino_character_analysis/arduino_character_analysis_tb.v
@@ -0,0 +1,571 @@ +//////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org> +////////////////////////////////////////////////////////////////////// +//// //// +//// Standalone User validation Test bench //// +//// //// +//// This file is part of the riscdunio cores project //// +//// https://github.com/dineshannayya/riscdunio.git //// +//// //// +//// Description //// +//// This is a standalone test bench to validate the //// +//// Digital core. //// +//// This test bench to valid Arduino example: //// +//// <example><08.strings><CharacterAnalysis> //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesh.annayya@gmail.com //// +//// //// +//// Revision : //// +//// 0.1 - 29th July 2022, Dinesh A //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Authors and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source is distributed in the hope that it will be //// +//// useful, but WITHOUT ANY WARRANTY; without even the implied //// +//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //// +//// PURPOSE. See the GNU Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from http://www.opencores.org/lgpl.shtml //// +//// //// +////////////////////////////////////////////////////////////////////// + +`default_nettype wire + +`timescale 1 ns / 1 ns + +`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v" +`include "uart_agent.v" +`include "is62wvs1288.v" + +module arduino_character_analysis; + reg clock; + reg wb_rst_i; + reg power1, power2; + reg power3, power4; + + reg wbd_ext_cyc_i; // strobe/request + reg wbd_ext_stb_i; // strobe/request + reg [31:0] wbd_ext_adr_i; // address + reg wbd_ext_we_i; // write + reg [31:0] wbd_ext_dat_i; // data output + reg [3:0] wbd_ext_sel_i; // byte enable + + wire [31:0] wbd_ext_dat_o; // data input + wire wbd_ext_ack_o; // acknowlegement + wire wbd_ext_err_o; // error + + // User I/O + wire [37:0] io_oeb; + wire [37:0] io_out; + wire [37:0] io_in; + + wire gpio; + wire [37:0] mprj_io; + wire [7:0] mprj_io_0; + reg test_fail; + reg [31:0] read_data; + //---------------------------------- + // Uart Configuration + // --------------------------------- + reg [1:0] uart_data_bit ; + reg uart_stop_bits ; // 0: 1 stop bit; 1: 2 stop bit; + reg uart_stick_parity ; // 1: force even parity + reg uart_parity_en ; // parity enable + reg uart_even_odd_parity ; // 0: odd parity; 1: even parity + + reg [7:0] uart_data ; + reg [15:0] uart_divisor ; // divided by n * 16 + reg [15:0] uart_timeout ;// wait time limit + + reg [15:0] uart_rx_nu ; + reg [15:0] uart_tx_nu ; + reg [7:0] uart_write_data [0:39]; + reg uart_fifo_enable ; // fifo mode disable + reg flag ; + + reg [31:0] check_sum ; + + integer d_risc_id; + + integer i,j; + +parameter P_FSM_C = 4'b0000; // Command Phase Only +parameter P_FSM_CW = 4'b0001; // Command + Write DATA Phase Only +parameter P_FSM_CA = 4'b0010; // Command -> Address Phase Only + +parameter P_FSM_CAR = 4'b0011; // Command -> Address -> Read Data +parameter P_FSM_CADR = 4'b0100; // Command -> Address -> Dummy -> Read Data +parameter P_FSM_CAMR = 4'b0101; // Command -> Address -> Mode -> Read Data +parameter P_FSM_CAMDR = 4'b0110; // Command -> Address -> Mode -> Dummy -> Read Data + +parameter P_FSM_CAW = 4'b0111; // Command -> Address ->Write Data +parameter P_FSM_CADW = 4'b1000; // Command -> Address -> DUMMY + Write Data +parameter P_FSM_CAMW = 4'b1001; // Command -> Address -> MODE + Write Data + +parameter P_FSM_CDR = 4'b1010; // COMMAND -> DUMMY -> READ +parameter P_FSM_CDW = 4'b1011; // COMMAND -> DUMMY -> WRITE +parameter P_FSM_CR = 4'b1100; // COMMAND -> READ + +parameter P_MODE_SWITCH_IDLE = 2'b00; +parameter P_MODE_SWITCH_AT_ADDR = 2'b01; +parameter P_MODE_SWITCH_AT_DATA = 2'b10; + +parameter P_SINGLE = 2'b00; +parameter P_DOUBLE = 2'b01; +parameter P_QUAD = 2'b10; +parameter P_QDDR = 2'b11; + + + + // 50Mhz CLock + always #10 clock <= (clock === 1'b0); + + initial begin + clock = 0; + flag = 0; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable + end + + `ifdef WFDUMP + initial begin + $dumpfile("simx.vcd"); + $dumpvars(3, arduino_character_analysis); + $dumpvars(0, arduino_character_analysis.u_top.u_riscv_top.i_core_top_0); + $dumpvars(0, arduino_character_analysis.u_top.u_riscv_top.u_connect); + $dumpvars(0, arduino_character_analysis.u_top.u_riscv_top.u_intf); + $dumpvars(0, arduino_character_analysis.u_top.u_uart_i2c_usb_spi.u_uart0_core); + end + `endif + + /************************************************************************* + * This is Baud Rate to clock divider conversion for Test Bench + * Note: DUT uses 16x baud clock, where are test bench uses directly + * baud clock, Due to 16x Baud clock requirement at RTL, there will be + * some resolution loss, we expect at lower baud rate this resolution + * loss will be less. For Quick simulation perpose higher baud rate used + * *************************************************************************/ + task tb_set_uart_baud; + input [31:0] ref_clk; + input [31:0] baud_rate; + output [31:0] baud_div; + reg [31:0] baud_div; + begin + // for 230400 Baud = (50Mhz/230400) = 216.7 + baud_div = ref_clk/baud_rate; // Get the Bit Baud rate + // Baud 16x = 216/16 = 13 + baud_div = baud_div/16; // To find the RTL baud 16x div value to find similar resolution loss in test bench + // Test bench baud clock , 16x of above value + // 13 * 16 = 208, + // (Note if you see original value was 216, now it's 208 ) + baud_div = baud_div * 16; + // Test bench half cycle counter to toggle it + // 208/2 = 104 + baud_div = baud_div/2; + //As counter run's from 0 , substract from 1 + baud_div = baud_div-1; + end + endtask + + + initial begin + uart_data_bit = 2'b11; + uart_stop_bits = 0; // 0: 1 stop bit; 1: 2 stop bit; + uart_stick_parity = 0; // 1: force even parity + uart_parity_en = 0; // parity enable + uart_even_odd_parity = 1; // 0: odd parity; 1: even parity + tb_set_uart_baud(50000000,1152000,uart_divisor);// 50Mhz Ref clock, Baud Rate: 230400 + uart_timeout = 2000;// wait time limit + uart_fifo_enable = 0; // fifo mode disable + + $value$plusargs("risc_core_id=%d", d_risc_id); + + #200; // Wait for reset removal + repeat (10) @(posedge clock); + $display("Monitor: Standalone User Risc Boot Test Started"); + + // Remove Wb Reset + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); + + repeat (2) @(posedge clock); + #1; + // Remove WB and SPI Reset and CORE under Reset + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F); + + // QSPI SRAM:CS#2 Switch to QSPI Mode + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_BANK_SEL,'h1000); // Change the Bank Sel 1000 + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL1,{16'h0,1'b0,1'b0,4'b0000,P_MODE_SWITCH_IDLE,P_SINGLE,P_SINGLE,4'b0100}); + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL2,{8'h0,2'b00,2'b00,P_FSM_C,8'h00,8'h38}); + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_WDATA,32'h0); + // Remove all the reset + if(d_risc_id == 0) begin + $display("STATUS: Working with Risc core 0"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); + end else if(d_risc_id == 1) begin + $display("STATUS: Working with Risc core 1"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); + end else if(d_risc_id == 2) begin + $display("STATUS: Working with Risc core 2"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h41F); + end else if(d_risc_id == 3) begin + $display("STATUS: Working with Risc core 3"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h81F); + end + + repeat (100) @(posedge clock); // wait for Processor Get Ready + + tb_uart.debug_mode = 0; // disable debug display + tb_uart.uart_init; + tb_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity, + uart_stick_parity, uart_timeout, uart_divisor); + + repeat (40000) @(posedge clock); // wait for Processor Get Ready + flag = 0; + check_sum = 0; + fork + begin + fork + begin + tb_uart.write_char ("A"); + tb_uart.write_char (" "); + tb_uart.write_char ("\n"); + tb_uart.write_char ("b"); + tb_uart.write_char (";"); + tb_uart.write_char ("F"); + end + begin + while(flag == 0) + begin + tb_uart.read_char(read_data,flag); + if(flag == 0) begin + $write ("%c",read_data); + check_sum = check_sum+read_data; + end + end + end + join + end + begin + repeat (3000000) @(posedge clock); // wait for Processor Get Ready + end + join_any + + #100 + tb_uart.report_status(uart_rx_nu, uart_tx_nu); + + test_fail = 0; + + $display("Total Rx Char: %d Check Sum : %x ",uart_rx_nu, check_sum); + // Check + // if all the 4224 byte received + // if no error + if(uart_rx_nu != 1236) test_fail = 1; + if(check_sum != 32'h180b7) test_fail = 1; + if(tb_uart.err_cnt != 0) test_fail = 1; + + $display("###################################################"); + if(test_fail == 0) begin + `ifdef GL + $display("Monitor: character_analysis (GL) Passed"); + `else + $display("Monitor: character_analysis (RTL) Passed"); + `endif + end else begin + `ifdef GL + $display("Monitor: character_analysis (GL) Failed"); + `else + $display("Monitor: character_analysis (RTL) Failed"); + `endif + end + $display("###################################################"); + $finish; + end + + initial begin + wb_rst_i <= 1'b1; + #100; + wb_rst_i <= 1'b0; // Release reset + end +wire USER_VDD1V8 = 1'b1; +wire VSS = 1'b0; + +user_project_wrapper u_top( +`ifdef USE_POWER_PINS + .vccd1(USER_VDD1V8), // User area 1 1.8V supply + .vssd1(VSS), // User area 1 digital ground +`endif + .wb_clk_i (clock), // System clock + .user_clock2 (1'b1), // Real-time clock + .wb_rst_i (wb_rst_i), // Regular Reset signal + + .wbs_cyc_i (wbd_ext_cyc_i), // strobe/request + .wbs_stb_i (wbd_ext_stb_i), // strobe/request + .wbs_adr_i (wbd_ext_adr_i), // address + .wbs_we_i (wbd_ext_we_i), // write + .wbs_dat_i (wbd_ext_dat_i), // data output + .wbs_sel_i (wbd_ext_sel_i), // byte enable + + .wbs_dat_o (wbd_ext_dat_o), // data input + .wbs_ack_o (wbd_ext_ack_o), // acknowlegement + + + // Logic Analyzer Signals + .la_data_in ('1) , + .la_data_out (), + .la_oenb ('0), + + + // IOs + .io_in (io_in) , + .io_out (io_out) , + .io_oeb (io_oeb) , + + .user_irq () + +); + +`ifndef GL // Drive Power for Hold Fix Buf + // All standard cell need power hook-up for functionality work + initial begin + + end +`endif + +//------------------------------------------------------ +// Integrate the Serial flash with qurd support to +// user core using the gpio pads +// ---------------------------------------------------- + + wire flash_clk = io_out[24]; + wire flash_csb = io_out[25]; + // Creating Pad Delay + wire #1 io_oeb_29 = io_oeb[29]; + wire #1 io_oeb_30 = io_oeb[30]; + wire #1 io_oeb_31 = io_oeb[31]; + wire #1 io_oeb_32 = io_oeb[32]; + tri #1 flash_io0 = (io_oeb_29== 1'b0) ? io_out[29] : 1'bz; + tri #1 flash_io1 = (io_oeb_30== 1'b0) ? io_out[30] : 1'bz; + tri #1 flash_io2 = (io_oeb_31== 1'b0) ? io_out[31] : 1'bz; + tri #1 flash_io3 = (io_oeb_32== 1'b0) ? io_out[32] : 1'bz; + + assign io_in[29] = flash_io0; + assign io_in[30] = flash_io1; + assign io_in[31] = flash_io2; + assign io_in[32] = flash_io3; + + // Quard flash + s25fl256s #(.mem_file_name("arduino_character_analysis.ino.hex"), + .otp_file_name("none"), + .TimingModel("S25FL512SAGMFI010_F_30pF")) + u_spi_flash_256mb ( + // Data Inputs/Outputs + .SI (flash_io0), + .SO (flash_io1), + // Controls + .SCK (flash_clk), + .CSNeg (flash_csb), + .WPNeg (flash_io2), + .HOLDNeg (flash_io3), + .RSTNeg (!wb_rst_i) + + ); + + wire spiram_csb = io_out[27]; + + is62wvs1288 #(.mem_file_name("none")) + u_sram ( + // Data Inputs/Outputs + .io0 (flash_io0), + .io1 (flash_io1), + // Controls + .clk (flash_clk), + .csb (spiram_csb), + .io2 (flash_io2), + .io3 (flash_io3) + ); + +//--------------------------- +// UART Agent integration +// -------------------------- +wire uart_txd,uart_rxd; + +assign uart_txd = io_out[2]; +assign io_in[1] = uart_rxd ; + +uart_agent tb_uart( + .mclk (clock ), + .txd (uart_rxd ), + .rxd (uart_txd ) + ); + + +task wb_user_core_write; +input [31:0] address; +input [31:0] data; +begin + repeat (1) @(posedge clock); + #1; + wbd_ext_adr_i =address; // address + wbd_ext_we_i ='h1; // write + wbd_ext_dat_i =data; // data output + wbd_ext_sel_i ='hF; // byte enable + wbd_ext_cyc_i ='h1; // strobe/request + wbd_ext_stb_i ='h1; // strobe/request + wait(wbd_ext_ack_o == 1); + repeat (1) @(posedge clock); + #1; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable + $display("DEBUG WB USER ACCESS WRITE Address : %x, Data : %x",address,data); + repeat (2) @(posedge clock); +end +endtask + +task wb_user_core_read; +input [31:0] address; +output [31:0] data; +reg [31:0] data; +begin + repeat (1) @(posedge clock); + #1; + wbd_ext_adr_i =address; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='0; // data output + wbd_ext_sel_i ='hF; // byte enable + wbd_ext_cyc_i ='h1; // strobe/request + wbd_ext_stb_i ='h1; // strobe/request + wait(wbd_ext_ack_o == 1); + repeat (1) @(negedge clock); + data = wbd_ext_dat_o; + repeat (1) @(posedge clock); + #1; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable + $display("DEBUG WB USER ACCESS READ Address : %x, Data : %x",address,data); + repeat (2) @(posedge clock); +end +endtask + +task wb_user_core_read_check; +input [31:0] address; +output [31:0] data; +input [31:0] cmp_data; +reg [31:0] data; +begin + repeat (1) @(posedge clock); + #1; + wbd_ext_adr_i =address; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='0; // data output + wbd_ext_sel_i ='hF; // byte enable + wbd_ext_cyc_i ='h1; // strobe/request + wbd_ext_stb_i ='h1; // strobe/request + wait(wbd_ext_ack_o == 1); + repeat (1) @(negedge clock); + data = wbd_ext_dat_o; + repeat (1) @(posedge clock); + #1; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable + if(data !== cmp_data) begin + $display("ERROR : WB USER ACCESS READ Address : 0x%x, Exd: 0x%x Rxd: 0x%x ",address,cmp_data,data); + test_fail = 1; + end else begin + $display("STATUS: WB USER ACCESS READ Address : 0x%x, Data : 0x%x",address,data); + end + repeat (2) @(posedge clock); +end +endtask + +`ifdef GL + +wire wbd_spi_stb_i = u_top.u_qspi_master.wbd_stb_i; +wire wbd_spi_ack_o = u_top.u_qspi_master.wbd_ack_o; +wire wbd_spi_we_i = u_top.u_qspi_master.wbd_we_i; +wire [31:0] wbd_spi_adr_i = u_top.u_qspi_master.wbd_adr_i; +wire [31:0] wbd_spi_dat_i = u_top.u_qspi_master.wbd_dat_i; +wire [31:0] wbd_spi_dat_o = u_top.u_qspi_master.wbd_dat_o; +wire [3:0] wbd_spi_sel_i = u_top.u_qspi_master.wbd_sel_i; + +wire wbd_uart_stb_i = u_top.u_uart_i2c_usb_spi.reg_cs; +wire wbd_uart_ack_o = u_top.u_uart_i2c_usb_spi.reg_ack; +wire wbd_uart_we_i = u_top.u_uart_i2c_usb_spi.reg_wr; +wire [8:0] wbd_uart_adr_i = u_top.u_uart_i2c_usb_spi.reg_addr; +wire [7:0] wbd_uart_dat_i = u_top.u_uart_i2c_usb_spi.reg_wdata; +wire [7:0] wbd_uart_dat_o = u_top.u_uart_i2c_usb_spi.reg_rdata; +wire wbd_uart_sel_i = u_top.u_uart_i2c_usb_spi.reg_be; + +`endif + +/** +`ifdef GL +//----------------------------------------------------------------------------- +// RISC IMEM amd DMEM Monitoring TASK +//----------------------------------------------------------------------------- + +`define RISC_CORE user_uart_tb.u_top.u_core.u_riscv_top + +always@(posedge `RISC_CORE.wb_clk) begin + if(`RISC_CORE.wbd_imem_ack_i) + $display("RISCV-DEBUG => IMEM ADDRESS: %x Read Data : %x", `RISC_CORE.wbd_imem_adr_o,`RISC_CORE.wbd_imem_dat_i); + if(`RISC_CORE.wbd_dmem_ack_i && `RISC_CORE.wbd_dmem_we_o) + $display("RISCV-DEBUG => DMEM ADDRESS: %x Write Data: %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_o); + if(`RISC_CORE.wbd_dmem_ack_i && !`RISC_CORE.wbd_dmem_we_o) + $display("RISCV-DEBUG => DMEM ADDRESS: %x READ Data : %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_i); +end + +`endif +**/ +endmodule +`include "s25fl256s.sv" +`default_nettype wire
diff --git a/verilog/dv/arduino_digital_port_control/Makefile b/verilog/dv/arduino_digital_port_control/Makefile new file mode 100644 index 0000000..7168229 --- /dev/null +++ b/verilog/dv/arduino_digital_port_control/Makefile
@@ -0,0 +1,142 @@ +# 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 + + +# ---- Include Partitioned Makefiles ---- + +CONFIG = caravel_user_project + +####################################################################### +## Caravel Verilog for Integration Tests +####################################################################### + +DESIGNS?=../../.. +TOOLS?=/opt/riscv32i/ + +export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog +export RISCDUINO_BOARD ?= $(USER_PROJECT_VERILOG)/dv/common/riscduino_board/custom_board/riscduino +## YIFIVE FIRMWARE +YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware +GCC_PREFIX?=riscv32-unknown-elf + + +## Simulation mode: RTL/GL +SIM?=RTL +DUMP?=OFF +RISC_CORE?=0 + +### To Enable IVERILOG FST DUMP +export IVERILOG_DUMPER = fst + + +.SUFFIXES: + +PATTERN = arduino_digital_port_control + +all: ${PATTERN:=.vcd} + + +vvp: ${PATTERN:=.vvp} + +%.vvp: %_tb.v + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard -I${RISCDUINO_BOARD}/libraries/SPI/src ${PATTERN}.ino.cpp -o ${PATTERN}.ino.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard -I${RISCDUINO_BOARD}/libraries/SPI/src ${RISCDUINO_BOARD}/libraries/SPI/src/SPI.cpp -o SPI.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/Print.cpp -o Print.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WMath.cpp -o WMath.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WString.cpp -o WString.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WInterrupts.c -o WInterrupts.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/fe300prci/fe300prci_driver.c -o fe300prci_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/abi.cpp -o abi.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/plic/plic_driver.c -o plic_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/UARTClass.cpp -o UARTClass.cpp.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/entry.S -o entry.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/hooks.c -o hooks.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/init.S -o init.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/itoa.c -o itoa.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/main.cpp -o main.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/malloc.c -o malloc.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/new.cpp -o new.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/sbrk.c -o sbrk.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/start.S -o start.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring.c -o wiring.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_analog.c -o wiring_analog.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_digital.c -o wiring_digital.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_pulse.cpp -o wiring_pulse.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_shift.c -o wiring_shift.c.o + ${GCC_PREFIX}-ar rcs core.a Print.cpp.o + ${GCC_PREFIX}-ar rcs core.a UARTClass.cpp.o + ${GCC_PREFIX}-ar rcs core.a WInterrupts.c.o + ${GCC_PREFIX}-ar rcs core.a WMath.cpp.o + ${GCC_PREFIX}-ar rcs core.a WString.cpp.o + ${GCC_PREFIX}-ar rcs core.a abi.cpp.o + ${GCC_PREFIX}-ar rcs core.a fe300prci_driver.c.o + ${GCC_PREFIX}-ar rcs core.a plic_driver.c.o + ${GCC_PREFIX}-ar rcs core.a entry.S.o + ${GCC_PREFIX}-ar rcs core.a hooks.c.o + ${GCC_PREFIX}-ar rcs core.a init.S.o + ${GCC_PREFIX}-ar rcs core.a itoa.c.o + ${GCC_PREFIX}-ar rcs core.a main.cpp.o + ${GCC_PREFIX}-ar rcs core.a malloc.c.o + ${GCC_PREFIX}-ar rcs core.a new.cpp.o + ${GCC_PREFIX}-ar rcs core.a sbrk.c.o + ${GCC_PREFIX}-ar rcs core.a start.S.o + ${GCC_PREFIX}-ar rcs core.a wiring.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_analog.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_digital.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_pulse.cpp.o + ${GCC_PREFIX}-ar rcs core.a wiring_shift.c.o + ${GCC_PREFIX}-ar rcs core.a SPI.cpp.o + ${GCC_PREFIX}-g++ -T ${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score/link.lds -nostartfiles -Wl,-N -Wl,--gc-sections -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=sbrk ${PATTERN}.ino.cpp.o -nostdlib -Wl,--start-group core.a -lm -lstdc++ -lc -lgloss -Wl,--end-group -lgcc -o ${PATTERN}.ino.elf + ${GCC_PREFIX}-objcopy -R .rel.dyn -O binary ${PATTERN}.ino.elf ${PATTERN}.ino.bin + ${GCC_PREFIX}-objcopy -R .rel.dyn -O verilog ${PATTERN}.ino.elf ${PATTERN}.ino.hex + ${GCC_PREFIX}-objdump -D ${PATTERN}.ino.elf > ${PATTERN}.ino.dump + rm *.o *.a +ifeq ($(SIM),RTL) + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + endif +else + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + endif +endif + +%.vcd: %.vvp + vvp $< +risc_core_id=$(RISC_CORE) + + +# ---- Clean ---- + +clean: + rm -f *.elf *.hex *.bin *.vvp *.vcd *.log *.dump *.a *.o + +.PHONY: clean hex all
diff --git a/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino new file mode 100644 index 0000000..c7afcc0 --- /dev/null +++ b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino
@@ -0,0 +1,71 @@ +/* + Digital Pot Control + + This example controls an Analog Devices AD5206 digital potentiometer. + The AD5206 has 6 potentiometer channels. Each channel's pins are labeled + A - connect this to voltage + W - this is the pot's wiper, which changes when you set it + B - connect this to ground. + + The AD5206 is SPI-compatible,and to command it, you send two bytes, + one with the channel number (0 - 5) and one with the resistance value for the + channel (0 - 255). + + The circuit: + * All A pins of AD5206 connected to +5V + * All B pins of AD5206 connected to ground + * An LED and a 220-ohm resisor in series connected from each W pin to ground + * CS - to digital pin 10 (SS pin) + * SDI - to digital pin 11 (MOSI pin) + * CLK - to digital pin 13 (SCK pin) + + created 10 Aug 2010 + by Tom Igoe + + Thanks to Heather Dewey-Hagborg for the original tutorial, 2005 + +*/ + + +// inslude the SPI library: +#include <SPI.h> + + +// set pin 10 as the slave select for the digital pot: +const int slaveSelectPin = 10; + +void setup() { + // set the slaveSelectPin as an output: + pinMode(slaveSelectPin, OUTPUT); + // initialize SPI: + SPI.begin(); +} + +void loop() { + // go through the six channels of the digital pot: + for (int channel = 0; channel < 6; channel++) { + // change the resistance on this channel from min to max: + for (int level = 0; level < 255; level++) { + digitalPotWrite(channel, level); + delay(10); + } + // wait a second at the top: + delay(100); + // change the resistance on this channel from max to min: + for (int level = 0; level < 255; level++) { + digitalPotWrite(channel, 255 - level); + delay(10); + } + } + +} + +void digitalPotWrite(int address, int value) { + // take the SS pin low to select the chip: + digitalWrite(slaveSelectPin, LOW); + // send in the address and value via SPI: + SPI.transfer(address); + SPI.transfer(value); + // take the SS pin high to de-select the chip: + digitalWrite(slaveSelectPin, HIGH); +}
diff --git a/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino.cpp b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino.cpp new file mode 100644 index 0000000..d4dd6f5 --- /dev/null +++ b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino.cpp
@@ -0,0 +1,76 @@ +#include <Arduino.h> +/* + Digital Pot Control + + This example controls an Analog Devices AD5206 digital potentiometer. + The AD5206 has 6 potentiometer channels. Each channel's pins are labeled + A - connect this to voltage + W - this is the pot's wiper, which changes when you set it + B - connect this to ground. + + The AD5206 is SPI-compatible,and to command it, you send two bytes, + one with the channel number (0 - 5) and one with the resistance value for the + channel (0 - 255). + + The circuit: + * All A pins of AD5206 connected to +5V + * All B pins of AD5206 connected to ground + * An LED and a 220-ohm resisor in series connected from each W pin to ground + * CS - to digital pin 10 (SS pin) + * SDI - to digital pin 11 (MOSI pin) + * CLK - to digital pin 13 (SCK pin) + + created 10 Aug 2010 + by Tom Igoe + + Thanks to Heather Dewey-Hagborg for the original tutorial, 2005 + +*/ + + +// inslude the SPI library: +#include <SPI.h> + + +// set pin 10 as the slave select for the digital pot: +const int slaveSelectPin = 10; + +void setup(); +void loop(); +void digitalPotWrite(int address, int value); +void setup() { + // set the slaveSelectPin as an output: + pinMode(slaveSelectPin, OUTPUT); + // initialize SPI: + SPI.begin(); +} + +void loop() { + // go through the six channels of the digital pot: + for (int channel = 0; channel < 6; channel++) { + // change the resistance on this channel from min to max: + for (int level = 0; level < 255; level++) { + digitalPotWrite(channel, level); + delayMicroseconds(10); + } + // wait a second at the top: + delayMicroseconds(100); + // change the resistance on this channel from max to min: + for (int level = 0; level < 255; level++) { + digitalPotWrite(channel, 255 - level); + delayMicroseconds(10); + } + } + +} + +void digitalPotWrite(int address, int value) { + // take the SS pin low to select the chip: + digitalWrite(slaveSelectPin, LOW); + // send in the address and value via SPI: + SPI.transfer(address); + SPI.transfer(value); + // take the SS pin high to de-select the chip: + digitalWrite(slaveSelectPin, HIGH); +} +
diff --git a/verilog/dv/user_mcore/user_mcore_tb.v b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control_tb.v similarity index 64% copy from verilog/dv/user_mcore/user_mcore_tb.v copy to verilog/dv/arduino_digital_port_control/arduino_digital_port_control_tb.v index b43dcba..1b1cbe1 100644 --- a/verilog/dv/user_mcore/user_mcore_tb.v +++ b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control_tb.v
@@ -18,20 +18,23 @@ //// //// //// Standalone User validation Test bench //// //// //// -//// This file is part of the riscduino cores project //// +//// This file is part of the riscdunio cores project //// +//// https://github.com/dineshannayya/riscdunio.git //// //// //// //// Description //// //// This is a standalone test bench to validate the //// -//// Digital core multi-core behaviour. //// +//// Digital core. //// +//// This test bench to valid Arduino example: //// +//// <example><SPi><DigitalPortControl> //// //// //// //// To Do: //// //// nothing //// //// //// //// Author(s): //// -//// - Dinesh Annayya, dinesha@opencores.org //// +//// - Dinesh Annayya, dinesh.annayya@gmail.com //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// +//// 0.1 - 29th July 2022, Dinesh A //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -65,7 +68,10 @@ `timescale 1 ns / 1 ns `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v" -module user_mcore_tb; +`include "is62wvs1288.v" +`include "bfm_ad5205.sv" + +module arduino_digital_port_control_tb; reg clock; reg wb_rst_i; reg power1, power2; @@ -92,18 +98,49 @@ wire [7:0] mprj_io_0; reg test_fail; reg [31:0] read_data; + reg flag ; + +parameter P_FSM_C = 4'b0000; // Command Phase Only +parameter P_FSM_CW = 4'b0001; // Command + Write DATA Phase Only +parameter P_FSM_CA = 4'b0010; // Command -> Address Phase Only + +parameter P_FSM_CAR = 4'b0011; // Command -> Address -> Read Data +parameter P_FSM_CADR = 4'b0100; // Command -> Address -> Dummy -> Read Data +parameter P_FSM_CAMR = 4'b0101; // Command -> Address -> Mode -> Read Data +parameter P_FSM_CAMDR = 4'b0110; // Command -> Address -> Mode -> Dummy -> Read Data + +parameter P_FSM_CAW = 4'b0111; // Command -> Address ->Write Data +parameter P_FSM_CADW = 4'b1000; // Command -> Address -> DUMMY + Write Data +parameter P_FSM_CAMW = 4'b1001; // Command -> Address -> MODE + Write Data + +parameter P_FSM_CDR = 4'b1010; // COMMAND -> DUMMY -> READ +parameter P_FSM_CDW = 4'b1011; // COMMAND -> DUMMY -> WRITE +parameter P_FSM_CR = 4'b1100; // COMMAND -> READ + +parameter P_MODE_SWITCH_IDLE = 2'b00; +parameter P_MODE_SWITCH_AT_ADDR = 2'b01; +parameter P_MODE_SWITCH_AT_DATA = 2'b10; + +parameter P_SINGLE = 2'b00; +parameter P_DOUBLE = 2'b01; +parameter P_QUAD = 2'b10; +parameter P_QDDR = 2'b11; + + integer d_risc_id; + integer channel,level; + + integer i,j; - // External clock is used by default. Make this artificially fast for the - // simulation. Normally this would be a slow clock and the digital PLL - // would be the fast clock. - always #12.5 clock <= (clock === 1'b0); + // 50Mhz CLock + always #10 clock <= (clock === 1'b0); initial begin clock = 0; + flag = 0; wbd_ext_cyc_i ='h0; // strobe/request wbd_ext_stb_i ='h0; // strobe/request wbd_ext_adr_i ='h0; // address @@ -115,72 +152,100 @@ `ifdef WFDUMP initial begin $dumpfile("simx.vcd"); - $dumpvars(1, user_mcore_tb); - $dumpvars(1, user_mcore_tb.u_top); - $dumpvars(0, user_mcore_tb.u_top.u_riscv_top); + $dumpvars(3, arduino_digital_port_control_tb); + //$dumpvars(0, arduino_digital_port_control_tb.u_top.u_riscv_top.i_core_top_0); + //$dumpvars(0, arduino_digital_port_control_tb.u_top.u_riscv_top.u_connect); + //$dumpvars(0, arduino_digital_port_control_tb.u_top.u_riscv_top.u_intf); + $dumpvars(0, arduino_digital_port_control_tb.u_top.u_pinmux); + $dumpvars(0, arduino_digital_port_control_tb.u_top.u_uart_i2c_usb_spi); end `endif - initial begin + - $value$plusargs("risc_core_id=%d", d_risc_id); + initial begin #200; // Wait for reset removal repeat (10) @(posedge clock); $display("Monitor: Standalone User Risc Boot Test Started"); + $value$plusargs("risc_core_id=%d", d_risc_id); // Remove Wb Reset wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); - repeat (2) @(posedge clock); + repeat (2) @(posedge clock); #1; - // Remove all the reset - $display("STATUS: Working with Both core Risc core 0 & 1 "); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h31F); + + // Remove WB and SPI Reset and CORE under Reset + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F); + + // QSPI SRAM:CS#2 Switch to QSPI Mode + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_BANK_SEL,'h1000); // Change the Bank Sel 1000 + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL1,{16'h0,1'b0,1'b0,4'b0000,P_MODE_SWITCH_IDLE,P_SINGLE,P_SINGLE,4'b0100}); + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL2,{8'h0,2'b00,2'b00,P_FSM_C,8'h00,8'h38}); + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_WDATA,32'h0); + + // Remove all the reset + if(d_risc_id == 0) begin + $display("STATUS: Working with Risc core 0"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); + end else if(d_risc_id == 1) begin + $display("STATUS: Working with Risc core 1"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); + end else if(d_risc_id == 2) begin + $display("STATUS: Working with Risc core 2"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h41F); + end else if(d_risc_id == 3) begin + $display("STATUS: Working with Risc core 3"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h81F); + end + + repeat (100) @(posedge clock); // wait for Processor Get Ready - // Repeat cycles of 1000 clock edges as needed to complete testbench - repeat (22) begin - repeat (1000) @(posedge clock); - // $display("+1000 cycles"); - end + repeat (20000) @(posedge clock); // wait for Processor Get Ready + flag = 1; + fork + begin + for (channel = 0; channel < 1; channel = channel+1) begin + // change the resistance on this channel from min to max: + for (level = 0; level < 255; level = level+1) begin + wait(u_ad5205.channel == channel && u_ad5205.position == level); + $display("Channel: %x and Position: %x",u_ad5205.channel,u_ad5205.position); + end + // change the resistance on this channel from min to max: + for (level = 0; level < 255; level = level+1) begin + wait((u_ad5205.channel == channel) && (u_ad5205.position == (255 -level))); + $display("Channel: %x and Position: %x",u_ad5205.channel,u_ad5205.position); + end + end + test_fail = 0; + end + begin + repeat (6000000) @(posedge clock); // wait for Processor Get Ready + test_fail = 1; + end + join_any - $display("Monitor: Reading Back the expected value"); - // User RISC core expect to write these value in global - // register, read back and decide on pass fail - // 0x30000018 = 0x11223344; - // 0x3000001C = 0x22334455; - // 0x30000020 = 0x33445566; - // 0x30000024 = 0x44556677; - // 0x30000028 = 0x55667788; - // 0x3000002C = 0x66778899; + #100 - test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); - - - - $display("###################################################"); - if(test_fail == 0) begin - `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Passed"); - `else - $display("Monitor: Standalone User Risc Boot (RTL) Passed"); - `endif - end else begin - `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Failed"); - `else - $display("Monitor: Standalone User Risc Boot (RTL) Failed"); - `endif - end - $display("###################################################"); + $display("###################################################"); + if(test_fail == 0) begin + `ifdef GL + $display("Monitor: Ardunio Digital Port Control (GL) Passed"); + `else + $display("Monitor: Ardunio Digital Port Control (RTL) Passed"); + `endif + end else begin + `ifdef GL + $display("Monitor: Ardunio Digital Port Control (GL) Failed"); + `else + $display("Monitor: Ardunio Digital Port Control (RTL) Failed"); + `endif + end + $display("###################################################"); + #100 $finish; end @@ -227,6 +292,26 @@ ); +//------------------------------------------------------------------------------------- +// Integrate the Serial SPI to ad5204/5206 (4-/6-Channel Digital Potentiometers) +// https://www.analog.com/media/en/technical-documentation/data-sheets/ad5204_5206.pdf +// ----------------------------------------------------------------------------------- + wire sspi_sck = io_out[16]; + wire sspi_sdi = io_out[15]; + wire sspi_ssn = io_out[13]; + + wire [2:0] p_channel; // potentiometer channel + wire [7:0] p_position; // potentiometer position + + bfm_ad5205 u_ad5205( + .sck (sspi_sck ), + .sdi (sspi_sdi ), + .ssn (sspi_ssn ), + + .channel (p_channel ), + .position (p_position ) + ); + `ifndef GL // Drive Power for Hold Fix Buf // All standard cell need power hook-up for functionality work initial begin @@ -257,7 +342,7 @@ assign io_in[32] = flash_io3; // Quard flash - s25fl256s #(.mem_file_name("user_mcore.hex"), + s25fl256s #(.mem_file_name("arduino_digital_port_control.ino.hex"), .otp_file_name("none"), .TimingModel("S25FL512SAGMFI010_F_30pF")) u_spi_flash_256mb ( @@ -273,6 +358,21 @@ ); + wire spiram_csb = io_out[27]; + + is62wvs1288 #(.mem_file_name("none")) + u_sram ( + // Data Inputs/Outputs + .io0 (flash_io0), + .io1 (flash_io1), + // Controls + .clk (flash_clk), + .csb (spiram_csb), + .io2 (flash_io2), + .io3 (flash_io3) + ); + +//-------------------------------------
diff --git a/verilog/dv/arduino_hello_world/Makefile b/verilog/dv/arduino_hello_world/Makefile index 3eed1a1..497a39e 100644 --- a/verilog/dv/arduino_hello_world/Makefile +++ b/verilog/dv/arduino_hello_world/Makefile
@@ -52,6 +52,7 @@ vvp: ${PATTERN:=.vvp} %.vvp: %_tb.v + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${PATTERN}.ino.cpp -o ${PATTERN}.ino.cpp.o ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/Print.cpp -o Print.cpp.o ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WMath.cpp -o WMath.cpp.o ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WString.cpp -o WString.cpp.o
diff --git a/verilog/dv/arduino_hello_world/arduino_hello_world_tb.v b/verilog/dv/arduino_hello_world/arduino_hello_world_tb.v index 051b224..344e480 100644 --- a/verilog/dv/arduino_hello_world/arduino_hello_world_tb.v +++ b/verilog/dv/arduino_hello_world/arduino_hello_world_tb.v
@@ -18,30 +18,23 @@ //// //// //// Standalone User validation Test bench //// //// //// -//// This file is part of the YIFive cores project //// -//// https://github.com/dineshannayya/yifive_r0.git //// -//// http://www.opencores.org/cores/yifive/ //// +//// This file is part of the riscdunio cores project //// +//// https://github.com/dineshannayya/riscdunio.git //// //// //// //// Description //// //// This is a standalone test bench to validate the //// //// Digital core. //// -//// 1. User Risc core is booted using compiled code of //// -//// user_risc_boot.c //// -//// 2. User Risc core uses Serial Flash and SDRAM to boot //// -//// 3. After successful boot, Risc core will write signature //// -//// in to user register from 0x1003_0058 to 0x1003_006C //// -//// 4. Through the External Wishbone Interface we read back //// -//// from 0x3003_0058 to 0x3003_006C //// -//// and validate the user register to declared pass fail //// +//// This test bench to valid Arduino example: //// +//// //// //// //// //// To Do: //// //// nothing //// //// //// //// Author(s): //// -//// - Dinesh Annayya, dinesha@opencores.org //// +//// - Dinesh Annayya, dinesh.annayya@gmail.com //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// +//// 0.1 - 29th July 2022, Dinesh A //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -209,16 +202,16 @@ // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); end else if(d_risc_id == 1) begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); end else if(d_risc_id == 2) begin $display("STATUS: Working with Risc core 2"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h41F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h41F); end else if(d_risc_id == 3) begin $display("STATUS: Working with Risc core 3"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h81F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h81F); end repeat (100) @(posedge clock); // wait for Processor Get Ready
diff --git a/verilog/dv/arduino_i2c_scaner/Makefile b/verilog/dv/arduino_i2c_scaner/Makefile new file mode 100644 index 0000000..e6d5947 --- /dev/null +++ b/verilog/dv/arduino_i2c_scaner/Makefile
@@ -0,0 +1,142 @@ +# 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 + + +# ---- Include Partitioned Makefiles ---- + +CONFIG = caravel_user_project + +####################################################################### +## Caravel Verilog for Integration Tests +####################################################################### + +DESIGNS?=../../.. +TOOLS?=/opt/riscv32i/ + +export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog +export RISCDUINO_BOARD ?= $(USER_PROJECT_VERILOG)/dv/common/riscduino_board/custom_board/riscduino +## YIFIVE FIRMWARE +YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware +GCC_PREFIX?=riscv32-unknown-elf + + +## Simulation mode: RTL/GL +SIM?=RTL +DUMP?=OFF +RISC_CORE?=0 + +### To Enable IVERILOG FST DUMP +export IVERILOG_DUMPER = fst + + +.SUFFIXES: + +PATTERN = arduino_i2c_scaner + +all: ${PATTERN:=.vcd} + + +vvp: ${PATTERN:=.vvp} + +%.vvp: %_tb.v + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard -I${RISCDUINO_BOARD}/libraries/Wire ${PATTERN}.ino.cpp -o ${PATTERN}.ino.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard -I${RISCDUINO_BOARD}/libraries/Wire -I${RISCDUINO_BOARD}/libraries/Wire/utility ${RISCDUINO_BOARD}/libraries/Wire/Wire.cpp -o Wire.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard -I${RISCDUINO_BOARD}/libraries/Wire -I${RISCDUINO_BOARD}/libraries/Wire/utility ${RISCDUINO_BOARD}/libraries/Wire/utility/twi.c -o twi.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/Print.cpp -o Print.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WMath.cpp -o WMath.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WString.cpp -o WString.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WInterrupts.c -o WInterrupts.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/fe300prci/fe300prci_driver.c -o fe300prci_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/abi.cpp -o abi.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/plic/plic_driver.c -o plic_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/UARTClass.cpp -o UARTClass.cpp.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/entry.S -o entry.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/hooks.c -o hooks.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/init.S -o init.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/itoa.c -o itoa.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/main.cpp -o main.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/malloc.c -o malloc.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/new.cpp -o new.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/sbrk.c -o sbrk.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/start.S -o start.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring.c -o wiring.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_analog.c -o wiring_analog.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_digital.c -o wiring_digital.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_pulse.cpp -o wiring_pulse.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_shift.c -o wiring_shift.c.o + ${GCC_PREFIX}-ar rcs core.a Print.cpp.o + ${GCC_PREFIX}-ar rcs core.a UARTClass.cpp.o + ${GCC_PREFIX}-ar rcs core.a WInterrupts.c.o + ${GCC_PREFIX}-ar rcs core.a WMath.cpp.o + ${GCC_PREFIX}-ar rcs core.a WString.cpp.o + ${GCC_PREFIX}-ar rcs core.a abi.cpp.o + ${GCC_PREFIX}-ar rcs core.a fe300prci_driver.c.o + ${GCC_PREFIX}-ar rcs core.a plic_driver.c.o + ${GCC_PREFIX}-ar rcs core.a entry.S.o + ${GCC_PREFIX}-ar rcs core.a hooks.c.o + ${GCC_PREFIX}-ar rcs core.a init.S.o + ${GCC_PREFIX}-ar rcs core.a itoa.c.o + ${GCC_PREFIX}-ar rcs core.a main.cpp.o + ${GCC_PREFIX}-ar rcs core.a malloc.c.o + ${GCC_PREFIX}-ar rcs core.a new.cpp.o + ${GCC_PREFIX}-ar rcs core.a sbrk.c.o + ${GCC_PREFIX}-ar rcs core.a start.S.o + ${GCC_PREFIX}-ar rcs core.a wiring.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_analog.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_digital.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_pulse.cpp.o + ${GCC_PREFIX}-ar rcs core.a wiring_shift.c.o + ${GCC_PREFIX}-g++ -T ${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score/link.lds -nostartfiles -Wl,-N -Wl,--gc-sections -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=sbrk ${PATTERN}.ino.cpp.o Wire.cpp.o twi.c.o -nostdlib -Wl,--start-group core.a -lm -lstdc++ -lc -lgloss -Wl,--end-group -lgcc -o ${PATTERN}.ino.elf + ${GCC_PREFIX}-objcopy -R .rel.dyn -O binary ${PATTERN}.ino.elf ${PATTERN}.ino.bin + ${GCC_PREFIX}-objcopy -R .rel.dyn -O verilog ${PATTERN}.ino.elf ${PATTERN}.ino.hex + ${GCC_PREFIX}-objdump -D ${PATTERN}.ino.elf > ${PATTERN}.ino.dump + rm *.o *.a +ifeq ($(SIM),RTL) + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + endif +else + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + endif +endif + +%.vcd: %.vvp + vvp $< +risc_core_id=$(RISC_CORE) + + +# ---- Clean ---- + +clean: + rm -f *.elf *.hex *.bin *.vvp *.vcd *.log *.dump *.a *.o + +.PHONY: clean hex all
diff --git a/verilog/dv/arduino_i2c_scaner/arduino_i2c_scaner.ino b/verilog/dv/arduino_i2c_scaner/arduino_i2c_scaner.ino new file mode 100644 index 0000000..295edf7 --- /dev/null +++ b/verilog/dv/arduino_i2c_scaner/arduino_i2c_scaner.ino
@@ -0,0 +1,75 @@ +// -------------------------------------- +// i2c_scanner +// +// Version 1 +// This program (or code that looks like it) +// can be found in many places. +// For example on the Arduino.cc forum. +// The original author is not known. +// Version 2, Juni 2012, Using Arduino 1.0.1 +// Adapted to be as simple as possible by Arduino.cc user Krodal +// Version 3, Feb 26 2013 +// V3 by louarnold +// Version 4, March 3, 2013, Using Arduino 1.0.3 +// by Arduino.cc user Krodal. +// Changes by louarnold removed. +// Scanning addresses changed from 0...127 to 1...119, +// according to the i2c scanner by Nick Gammon +// https://www.gammon.com.au/forum/?id=10896 +// Version 5, March 28, 2013 +// As version 4, but address scans now to 127. +// A sensor seems to use address 120. +// Version 6, November 27, 2015. +// Added waiting for the Leonardo serial communication. +// +// +// This sketch tests the standard 7-bit addresses +// Devices with higher bit address might not be seen properly. +// + +#include <Wire.h> + +void setup() { + Wire.begin(); + + Serial.begin(9600); + while (!Serial); // Leonardo: wait for Serial Monitor + Serial.println("\nI2C Scanner"); +} + +void loop() { + int nDevices = 0; + + Serial.println("Scanning..."); + + for (byte address = 1; address < 127; ++address) { + // The i2c_scanner uses the return value of + // the Wire.endTransmission to see if + // a device did acknowledge to the address. + Wire.beginTransmission(address); + byte error = Wire.endTransmission(); + + if (error == 0) { + Serial.print("I2C device found at address 0x"); + if (address < 16) { + Serial.print("0"); + } + Serial.print(address, HEX); + Serial.println(" !"); + + ++nDevices; + } else if (error == 4) { + Serial.print("Unknown error at address 0x"); + if (address < 16) { + Serial.print("0"); + } + Serial.println(address, HEX); + } + } + if (nDevices == 0) { + Serial.println("No I2C devices found\n"); + } else { + Serial.println("done\n"); + } + delay(5000); // Wait 5 seconds for next scan +}
diff --git a/verilog/dv/arduino_i2c_scaner/arduino_i2c_scaner.ino.cpp b/verilog/dv/arduino_i2c_scaner/arduino_i2c_scaner.ino.cpp new file mode 100644 index 0000000..dc656cb --- /dev/null +++ b/verilog/dv/arduino_i2c_scaner/arduino_i2c_scaner.ino.cpp
@@ -0,0 +1,79 @@ +#include <Arduino.h> +// -------------------------------------- +// i2c_scanner +// +// Version 1 +// This program (or code that looks like it) +// can be found in many places. +// For example on the Arduino.cc forum. +// The original author is not known. +// Version 2, Juni 2012, Using Arduino 1.0.1 +// Adapted to be as simple as possible by Arduino.cc user Krodal +// Version 3, Feb 26 2013 +// V3 by louarnold +// Version 4, March 3, 2013, Using Arduino 1.0.3 +// by Arduino.cc user Krodal. +// Changes by louarnold removed. +// Scanning addresses changed from 0...127 to 1...119, +// according to the i2c scanner by Nick Gammon +// https://www.gammon.com.au/forum/?id=10896 +// Version 5, March 28, 2013 +// As version 4, but address scans now to 127. +// A sensor seems to use address 120. +// Version 6, November 27, 2015. +// Added waiting for the Leonardo serial communication. +// +// +// This sketch tests the standard 7-bit addresses +// Devices with higher bit address might not be seen properly. +// + +#include <Wire.h> + +void setup(); +void loop(); +void setup() { + Wire.begin(); + + Serial.begin(1152000); + while (!Serial); // Leonardo: wait for Serial Monitor + Serial.println("\nI2C Scanner"); +} + +void loop() { + int nDevices = 0; + + Serial.println("Scanning..."); + + for (byte address = 1; address < 127; ++address) { + // The i2c_scanner uses the return value of + // the Wire.endTransmission to see if + // a device did acknowledge to the address. + Wire.beginTransmission(address); + byte error = Wire.endTransmission(); + + if (error == 0) { + Serial.print("I2C device found at address 0x"); + if (address < 16) { + Serial.print("0"); + } + Serial.print(address, HEX); + Serial.println(" !"); + + ++nDevices; + } else if (error == 4) { + Serial.print("Unknown error at address 0x"); + if (address < 16) { + Serial.print("0"); + } + Serial.println(address, HEX); + } + } + if (nDevices == 0) { + Serial.println("No I2C devices found\n"); + } else { + Serial.println("done\n"); + } + delay(5000); // Wait 5 seconds for next scan +} +
diff --git a/verilog/dv/user_mcore/user_mcore_tb.v b/verilog/dv/arduino_i2c_scaner/arduino_i2c_scaner_tb.v similarity index 61% copy from verilog/dv/user_mcore/user_mcore_tb.v copy to verilog/dv/arduino_i2c_scaner/arduino_i2c_scaner_tb.v index b43dcba..98948a9 100644 --- a/verilog/dv/user_mcore/user_mcore_tb.v +++ b/verilog/dv/arduino_i2c_scaner/arduino_i2c_scaner_tb.v
@@ -18,20 +18,23 @@ //// //// //// Standalone User validation Test bench //// //// //// -//// This file is part of the riscduino cores project //// +//// This file is part of the riscdunio cores project //// +//// https://github.com/dineshannayya/riscdunio.git //// //// //// //// Description //// //// This is a standalone test bench to validate the //// -//// Digital core multi-core behaviour. //// +//// Digital core. //// +//// This test bench to valid Arduino example: //// +//// <example><Wire><i2c_scanner> //// //// //// //// To Do: //// //// nothing //// //// //// //// Author(s): //// -//// - Dinesh Annayya, dinesha@opencores.org //// +//// - Dinesh Annayya, dinesh.annayya@gmail.com //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// +//// 0.1 - 29th July 2022, Dinesh A //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -65,7 +68,10 @@ `timescale 1 ns / 1 ns `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v" -module user_mcore_tb; +`include "uart_agent.v" +`include "i2c_slave_model.v" + +module arduino_i2c_scaner_tb; reg clock; reg wb_rst_i; reg power1, power2; @@ -92,92 +98,182 @@ wire [7:0] mprj_io_0; reg test_fail; reg [31:0] read_data; + //---------------------------------- + // Uart Configuration + // --------------------------------- + reg [1:0] uart_data_bit ; + reg uart_stop_bits ; // 0: 1 stop bit; 1: 2 stop bit; + reg uart_stick_parity ; // 1: force even parity + reg uart_parity_en ; // parity enable + reg uart_even_odd_parity ; // 0: odd parity; 1: even parity + + reg [7:0] uart_data ; + reg [15:0] uart_divisor ; // divided by n * 16 + reg [15:0] uart_timeout ;// wait time limit + + reg [15:0] uart_rx_nu ; + reg [15:0] uart_tx_nu ; + reg [7:0] uart_write_data [0:39]; + reg uart_fifo_enable ; // fifo mode disable + reg flag ; + reg compare_start ; // User Need to make sure that compare start match with RiscV core completing initial booting + + reg [31:0] check_sum ; + integer d_risc_id; + integer i,j; - // External clock is used by default. Make this artificially fast for the - // simulation. Normally this would be a slow clock and the digital PLL - // would be the fast clock. - always #12.5 clock <= (clock === 1'b0); + + // 50Mhz CLock + always #10 clock <= (clock === 1'b0); initial begin clock = 0; - wbd_ext_cyc_i ='h0; // strobe/request - wbd_ext_stb_i ='h0; // strobe/request - wbd_ext_adr_i ='h0; // address - wbd_ext_we_i ='h0; // write - wbd_ext_dat_i ='h0; // data output - wbd_ext_sel_i ='h0; // byte enable + flag = 0; + compare_start = 0; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable end `ifdef WFDUMP initial begin $dumpfile("simx.vcd"); - $dumpvars(1, user_mcore_tb); - $dumpvars(1, user_mcore_tb.u_top); - $dumpvars(0, user_mcore_tb.u_top.u_riscv_top); + $dumpvars(3, arduino_i2c_scaner_tb); + $dumpvars(0, arduino_i2c_scaner_tb.u_top.u_riscv_top.i_core_top_0); + $dumpvars(0, arduino_i2c_scaner_tb.u_top.u_riscv_top.u_connect); + $dumpvars(0, arduino_i2c_scaner_tb.u_top.u_riscv_top.u_intf); + $dumpvars(0, arduino_i2c_scaner_tb.u_top.u_uart_i2c_usb_spi.u_uart0_core); + $dumpvars(0, arduino_i2c_scaner_tb.u_top.u_uart_i2c_usb_spi.u_i2cm); end `endif + /************************************************************************* + * This is Baud Rate to clock divider conversion for Test Bench + * Note: DUT uses 16x baud clock, where are test bench uses directly + * baud clock, Due to 16x Baud clock requirement at RTL, there will be + * some resolution loss, we expect at lower baud rate this resolution + * loss will be less. For Quick simulation perpose higher baud rate used + * *************************************************************************/ + task tb_set_uart_baud; + input [31:0] ref_clk; + input [31:0] baud_rate; + output [31:0] baud_div; + reg [31:0] baud_div; + begin + // for 230400 Baud = (50Mhz/230400) = 216.7 + baud_div = ref_clk/baud_rate; // Get the Bit Baud rate + // Baud 16x = 216/16 = 13 + baud_div = baud_div/16; // To find the RTL baud 16x div value to find similar resolution loss in test bench + // Test bench baud clock , 16x of above value + // 13 * 16 = 208, + // (Note if you see original value was 216, now it's 208 ) + baud_div = baud_div * 16; + // Test bench half cycle counter to toggle it + // 208/2 = 104 + baud_div = baud_div/2; + //As counter run's from 0 , substract from 1 + baud_div = baud_div-1; + end + endtask + + initial begin + uart_data_bit = 2'b11; + uart_stop_bits = 0; // 0: 1 stop bit; 1: 2 stop bit; + uart_stick_parity = 0; // 1: force even parity + uart_parity_en = 0; // parity enable + uart_even_odd_parity = 1; // 0: odd parity; 1: even parity + tb_set_uart_baud(50000000,1152000,uart_divisor);// 50Mhz Ref clock, Baud Rate: 230400 + uart_timeout = 2000;// wait time limit + uart_fifo_enable = 0; // fifo mode disable $value$plusargs("risc_core_id=%d", d_risc_id); #200; // Wait for reset removal - repeat (10) @(posedge clock); + repeat (10) @(posedge clock); $display("Monitor: Standalone User Risc Boot Test Started"); // Remove Wb Reset wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); - repeat (2) @(posedge clock); + repeat (2) @(posedge clock); #1; - // Remove all the reset - $display("STATUS: Working with Both core Risc core 0 & 1 "); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h31F); + // Remove all the reset + if(d_risc_id == 0) begin + $display("STATUS: Working with Risc core 0"); + wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + end else if(d_risc_id == 1) begin + $display("STATUS: Working with Risc core 1"); + wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + end else if(d_risc_id == 2) begin + $display("STATUS: Working with Risc core 2"); + wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h41F); + end else if(d_risc_id == 3) begin + $display("STATUS: Working with Risc core 3"); + wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h81F); + end + repeat (100) @(posedge clock); // wait for Processor Get Ready - // Repeat cycles of 1000 clock edges as needed to complete testbench - repeat (22) begin - repeat (1000) @(posedge clock); - // $display("+1000 cycles"); - end + tb_uart.debug_mode = 0; // disable debug display + tb_uart.uart_init; + tb_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity, + uart_stick_parity, uart_timeout, uart_divisor); + repeat (45000) @(posedge clock); // wait for Processor Get Ready + flag = 0; + check_sum = 0; + compare_start = 1; + + fork + begin + while(flag == 0) + begin + tb_uart.read_char(read_data,flag); + if(flag == 0) begin + $write ("%c",read_data); + check_sum = check_sum+read_data; + end + end + end + begin + repeat (200000) @(posedge clock); // wait for Processor Get Ready + end + join_any + + #100 + tb_uart.report_status(uart_rx_nu, uart_tx_nu); + + test_fail = 0; - $display("Monitor: Reading Back the expected value"); - // User RISC core expect to write these value in global - // register, read back and decide on pass fail - // 0x30000018 = 0x11223344; - // 0x3000001C = 0x22334455; - // 0x30000020 = 0x33445566; - // 0x30000024 = 0x44556677; - // 0x30000028 = 0x55667788; - // 0x3000002C = 0x66778899; - - test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); - + $display("Total Rx Char: %d Check Sum : %x ",uart_rx_nu, check_sum); + // Check + // if all the 102 byte received + // if no error + if(uart_rx_nu != 102) test_fail = 1; + if(check_sum != 32'h1fab) test_fail = 1; + if(tb_uart.err_cnt != 0) test_fail = 1; $display("###################################################"); if(test_fail == 0) begin `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Passed"); + $display("Monitor: Standalone String (GL) Passed"); `else - $display("Monitor: Standalone User Risc Boot (RTL) Passed"); + $display("Monitor: Standalone String (RTL) Passed"); `endif end else begin `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Failed"); + $display("Monitor: Standalone String (GL) Failed"); `else - $display("Monitor: Standalone User Risc Boot (RTL) Failed"); + $display("Monitor: Standalone String (RTL) Failed"); `endif end $display("###################################################"); @@ -227,6 +323,25 @@ ); +//--------------------------- +// I2C +// -------------------------- +tri scl,sda; + +assign sda = (io_oeb[22] == 1'b0) ? io_out[22] : 1'bz; +assign scl = (io_oeb[23] == 1'b0) ? io_out[23]: 1'bz; +assign io_in[22] = sda; +assign io_in[23] = scl; + +pullup p1(scl); // pullup scl line +pullup p2(sda); // pullup sda line + + +i2c_slave_model #(.I2C_ADR(7'h4)) u_i2c_slave ( + .scl (scl), + .sda (sda) + ); + `ifndef GL // Drive Power for Hold Fix Buf // All standard cell need power hook-up for functionality work initial begin @@ -257,8 +372,8 @@ assign io_in[32] = flash_io3; // Quard flash - s25fl256s #(.mem_file_name("user_mcore.hex"), - .otp_file_name("none"), + s25fl256s #(.mem_file_name("arduino_i2c_scaner.ino.hex"), + .otp_file_name("none"), .TimingModel("S25FL512SAGMFI010_F_30pF")) u_spi_flash_256mb ( // Data Inputs/Outputs @@ -274,6 +389,19 @@ ); +//--------------------------- +// UART Agent integration +// -------------------------- +wire uart_txd,uart_rxd; + +assign uart_txd = io_out[2]; +assign io_in[1] = uart_rxd ; + +uart_agent tb_uart( + .mclk (clock ), + .txd (uart_rxd ), + .rxd (uart_txd ) + ); task wb_user_core_write;
diff --git a/verilog/dv/arduino_multi_serial/arduino_multi_serial_tb.v b/verilog/dv/arduino_multi_serial/arduino_multi_serial_tb.v index f0cf862..6ad86a1 100644 --- a/verilog/dv/arduino_multi_serial/arduino_multi_serial_tb.v +++ b/verilog/dv/arduino_multi_serial/arduino_multi_serial_tb.v
@@ -18,30 +18,24 @@ //// //// //// Standalone User validation Test bench //// //// //// -//// This file is part of the YIFive cores project //// -//// https://github.com/dineshannayya/yifive_r0.git //// -//// http://www.opencores.org/cores/yifive/ //// +//// This file is part of the riscdunio cores project //// +//// https://github.com/dineshannayya/riscdunio.git //// //// //// //// Description //// //// This is a standalone test bench to validate the //// //// Digital core. //// -//// 1. User Risc core is booted using compiled code of //// -//// user_risc_boot.c //// -//// 2. User Risc core uses Serial Flash and SDRAM to boot //// -//// 3. After successful boot, Risc core will write signature //// -//// in to user register from 0x1003_0058 to 0x1003_006C //// -//// 4. Through the External Wishbone Interface we read back //// -//// from 0x3003_0058 to 0x3003_006C //// -//// and validate the user register to declared pass fail //// +//// This test bench to valid Arduino example: //// +//// <example><04.Communication><MultiSerial> //// +//// //// //// //// //// To Do: //// //// nothing //// //// //// //// Author(s): //// -//// - Dinesh Annayya, dinesha@opencores.org //// +//// - Dinesh Annayya, dinesh.annayya@gmail.com //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// +//// 0.1 - 29th July 2022, Dinesh A //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -213,16 +207,16 @@ // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); end else if(d_risc_id == 1) begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); end else if(d_risc_id == 2) begin $display("STATUS: Working with Risc core 2"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h41F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h41F); end else if(d_risc_id == 3) begin $display("STATUS: Working with Risc core 3"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h81F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h81F); end repeat (100) @(posedge clock); // wait for Processor Get Ready
diff --git a/verilog/dv/arduino_risc_boot/arduino_risc_boot.ino.cpp b/verilog/dv/arduino_risc_boot/arduino_risc_boot.ino.cpp index ca5efa0..c663a26 100644 --- a/verilog/dv/arduino_risc_boot/arduino_risc_boot.ino.cpp +++ b/verilog/dv/arduino_risc_boot/arduino_risc_boot.ino.cpp
@@ -1,34 +1,18 @@ #include <Arduino.h> #define uint32_t long -#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) -#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) -#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) -#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) -#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) -#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) -#define reg_mprj_globl_reg6 (*(volatile uint32_t*)0x10020018) -#define reg_mprj_globl_reg7 (*(volatile uint32_t*)0x1002001C) -#define reg_mprj_globl_reg8 (*(volatile uint32_t*)0x10020020) -#define reg_mprj_globl_reg9 (*(volatile uint32_t*)0x10020024) -#define reg_mprj_globl_reg10 (*(volatile uint32_t*)0x10020028) -#define reg_mprj_globl_reg11 (*(volatile uint32_t*)0x1002002C) -#define reg_mprj_globl_reg12 (*(volatile uint32_t*)0x10020030) -#define reg_mprj_globl_reg13 (*(volatile uint32_t*)0x10020034) -#define reg_mprj_globl_reg14 (*(volatile uint32_t*)0x10020038) -#define reg_mprj_globl_reg15 (*(volatile uint32_t*)0x1002003C) -#define reg_mprj_globl_reg16 (*(volatile uint32_t*)0x10020040) -#define reg_mprj_globl_reg17 (*(volatile uint32_t*)0x10020044) -#define reg_mprj_globl_reg18 (*(volatile uint32_t*)0x10020048) -#define reg_mprj_globl_reg19 (*(volatile uint32_t*)0x1002004C) -#define reg_mprj_globl_reg20 (*(volatile uint32_t*)0x10020050) -#define reg_mprj_globl_reg21 (*(volatile uint32_t*)0x10020054) -#define reg_mprj_globl_reg22 (*(volatile uint32_t*)0x10020058) -#define reg_mprj_globl_reg23 (*(volatile uint32_t*)0x1002005C) -#define reg_mprj_globl_reg24 (*(volatile uint32_t*)0x10020060) -#define reg_mprj_globl_reg25 (*(volatile uint32_t*)0x10020064) -#define reg_mprj_globl_reg26 (*(volatile uint32_t*)0x10020068) -#define reg_mprj_globl_reg27 (*(volatile uint32_t*)0x1002006C) +#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) // Chip ID +#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) // Global Config-0 +#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) // Global Config-1 +#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) // Global Interrupt Mask +#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) // Global Interrupt +#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) // Multi functional sel +#define reg_mprj_globl_soft0 (*(volatile uint32_t*)0x10020018) // Sof Register-0 +#define reg_mprj_globl_soft1 (*(volatile uint32_t*)0x1002001C) // Sof Register-1 +#define reg_mprj_globl_soft2 (*(volatile uint32_t*)0x10020020) // Sof Register-2 +#define reg_mprj_globl_soft3 (*(volatile uint32_t*)0x10020024) // Sof Register-3 +#define reg_mprj_globl_soft4 (*(volatile uint32_t*)0x10020028) // Sof Register-4 +#define reg_mprj_globl_soft5 (*(volatile uint32_t*)0x1002002C) // Sof Register-5 @@ -36,12 +20,12 @@ void loop(); void setup() { // put your setup code here, to run once: - reg_mprj_globl_reg22 = 0x11223344; - reg_mprj_globl_reg23 = 0x22334455; - reg_mprj_globl_reg24 = 0x33445566; - reg_mprj_globl_reg25 = 0x44556677; - reg_mprj_globl_reg26 = 0x55667788; - reg_mprj_globl_reg27 = 0x66778899; + reg_mprj_globl_soft0 = 0x11223344; + reg_mprj_globl_soft1 = 0x22334455; + reg_mprj_globl_soft2 = 0x33445566; + reg_mprj_globl_soft3 = 0x44556677; + reg_mprj_globl_soft4 = 0x55667788; + reg_mprj_globl_soft5 = 0x66778899; }
diff --git a/verilog/dv/arduino_risc_boot/arduino_risc_boot_tb.v b/verilog/dv/arduino_risc_boot/arduino_risc_boot_tb.v index c435c40..0349606 100644 --- a/verilog/dv/arduino_risc_boot/arduino_risc_boot_tb.v +++ b/verilog/dv/arduino_risc_boot/arduino_risc_boot_tb.v
@@ -18,30 +18,22 @@ //// //// //// Standalone User validation Test bench //// //// //// -//// This file is part of the YIFive cores project //// -//// https://github.com/dineshannayya/yifive_r0.git //// -//// http://www.opencores.org/cores/yifive/ //// +//// This file is part of the riscdunio cores project //// +//// https://github.com/dineshannayya/riscdunio.git //// //// //// //// Description //// //// This is a standalone test bench to validate the //// //// Digital core. //// -//// 1. User Risc core is booted using compiled code of //// -//// user_risc_boot.c //// -//// 2. User Risc core uses Serial Flash and SDRAM to boot //// -//// 3. After successful boot, Risc core will write signature //// -//// in to user register from 0x1003_0058 to 0x1003_006C //// -//// 4. Through the External Wishbone Interface we read back //// -//// from 0x3003_0058 to 0x3003_006C //// -//// and validate the user register to declared pass fail //// +//// This test bench to valid Arduino example: //// //// //// //// To Do: //// //// nothing //// //// //// //// Author(s): //// -//// - Dinesh Annayya, dinesha@opencores.org //// +//// - Dinesh Annayya, dinesh.annayya@gmail.com //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// +//// 0.1 - 29th July 2022, Dinesh A //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -145,10 +137,10 @@ // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); end else if(d_risc_id == 1) begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); end @@ -170,12 +162,12 @@ // 0x3000002C = 0x66778899; test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,read_data,32'h11223344); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,read_data,32'h22334455); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,read_data,32'h33445566); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,read_data,32'h44556677); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,read_data,32'h55667788); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,read_data,32'h66778899);
diff --git a/verilog/dv/arduino_string/Makefile b/verilog/dv/arduino_string/Makefile new file mode 100644 index 0000000..78fc16e --- /dev/null +++ b/verilog/dv/arduino_string/Makefile
@@ -0,0 +1,140 @@ +# 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 + + +# ---- Include Partitioned Makefiles ---- + +CONFIG = caravel_user_project + +####################################################################### +## Caravel Verilog for Integration Tests +####################################################################### + +DESIGNS?=../../.. +TOOLS?=/opt/riscv32i/ + +export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog +export RISCDUINO_BOARD ?= $(USER_PROJECT_VERILOG)/dv/common/riscduino_board/custom_board/riscduino +## YIFIVE FIRMWARE +YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware +GCC_PREFIX?=riscv32-unknown-elf + + +## Simulation mode: RTL/GL +SIM?=RTL +DUMP?=OFF +RISC_CORE?=0 + +### To Enable IVERILOG FST DUMP +export IVERILOG_DUMPER = fst + + +.SUFFIXES: + +PATTERN = arduino_string + +all: ${PATTERN:=.vcd} + + +vvp: ${PATTERN:=.vvp} + +%.vvp: %_tb.v + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${PATTERN}.ino.cpp -o ${PATTERN}.ino.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/Print.cpp -o Print.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WMath.cpp -o WMath.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WString.cpp -o WString.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WInterrupts.c -o WInterrupts.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/fe300prci/fe300prci_driver.c -o fe300prci_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/abi.cpp -o abi.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/plic/plic_driver.c -o plic_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/UARTClass.cpp -o UARTClass.cpp.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/entry.S -o entry.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/hooks.c -o hooks.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/init.S -o init.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/itoa.c -o itoa.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/main.cpp -o main.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/malloc.c -o malloc.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/new.cpp -o new.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/sbrk.c -o sbrk.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/start.S -o start.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring.c -o wiring.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_analog.c -o wiring_analog.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_digital.c -o wiring_digital.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_pulse.cpp -o wiring_pulse.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_shift.c -o wiring_shift.c.o + ${GCC_PREFIX}-ar rcs core.a Print.cpp.o + ${GCC_PREFIX}-ar rcs core.a UARTClass.cpp.o + ${GCC_PREFIX}-ar rcs core.a WInterrupts.c.o + ${GCC_PREFIX}-ar rcs core.a WMath.cpp.o + ${GCC_PREFIX}-ar rcs core.a WString.cpp.o + ${GCC_PREFIX}-ar rcs core.a abi.cpp.o + ${GCC_PREFIX}-ar rcs core.a fe300prci_driver.c.o + ${GCC_PREFIX}-ar rcs core.a plic_driver.c.o + ${GCC_PREFIX}-ar rcs core.a entry.S.o + ${GCC_PREFIX}-ar rcs core.a hooks.c.o + ${GCC_PREFIX}-ar rcs core.a init.S.o + ${GCC_PREFIX}-ar rcs core.a itoa.c.o + ${GCC_PREFIX}-ar rcs core.a main.cpp.o + ${GCC_PREFIX}-ar rcs core.a malloc.c.o + ${GCC_PREFIX}-ar rcs core.a new.cpp.o + ${GCC_PREFIX}-ar rcs core.a sbrk.c.o + ${GCC_PREFIX}-ar rcs core.a start.S.o + ${GCC_PREFIX}-ar rcs core.a wiring.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_analog.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_digital.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_pulse.cpp.o + ${GCC_PREFIX}-ar rcs core.a wiring_shift.c.o + ${GCC_PREFIX}-g++ -T ${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score/link.lds -nostartfiles -Wl,-N -Wl,--gc-sections -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=sbrk ${PATTERN}.ino.cpp.o -nostdlib -Wl,--start-group core.a -lm -lstdc++ -lc -lgloss -Wl,--end-group -lgcc -o ${PATTERN}.ino.elf + ${GCC_PREFIX}-objcopy -R .rel.dyn -O binary ${PATTERN}.ino.elf ${PATTERN}.ino.bin + ${GCC_PREFIX}-objcopy -R .rel.dyn -O verilog ${PATTERN}.ino.elf ${PATTERN}.ino.hex + ${GCC_PREFIX}-objdump -D ${PATTERN}.ino.elf > ${PATTERN}.ino.dump + rm *.o *.a +ifeq ($(SIM),RTL) + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + endif +else + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + endif +endif + +%.vcd: %.vvp + vvp $< +risc_core_id=$(RISC_CORE) + + +# ---- Clean ---- + +clean: + rm -f *.elf *.hex *.bin *.vvp *.vcd *.log *.dump *.a *.o + +.PHONY: clean hex all
diff --git a/verilog/dv/arduino_string/arduino_string.ino b/verilog/dv/arduino_string/arduino_string.ino new file mode 100644 index 0000000..3a4ea08 --- /dev/null +++ b/verilog/dv/arduino_string/arduino_string.ino
@@ -0,0 +1,28 @@ +void setup() { + String my_str = "This is my string."; + + Serial.begin(9600); + + // (1) print the string + Serial.println(my_str); + + // (2) change the string to upper-case + my_str.toUpperCase(); + Serial.println(my_str); + + // (3) overwrite the string + my_str = "My new string."; + Serial.println(my_str); + + // (4) replace a word in the string + my_str.replace("string", "Arduino sketch"); + Serial.println(my_str); + + // (5) get the length of the string + Serial.print("String length is: "); + Serial.println(my_str.length()); +} + +void loop() { +} +
diff --git a/verilog/dv/arduino_string/arduino_string.ino.cpp b/verilog/dv/arduino_string/arduino_string.ino.cpp new file mode 100644 index 0000000..6cdd523 --- /dev/null +++ b/verilog/dv/arduino_string/arduino_string.ino.cpp
@@ -0,0 +1,32 @@ +#include <Arduino.h> +void setup(); +void loop(); +void setup() { + String my_str = "This is my string."; + + Serial.begin(1152000); + + // (1) print the string + Serial.println(my_str); + + // (2) change the string to upper-case + my_str.toUpperCase(); + Serial.println(my_str); + + // (3) overwrite the string + my_str = "My new string."; + Serial.println(my_str); + + // (4) replace a word in the string + my_str.replace("string", "Arduino sketch"); + Serial.println(my_str); + + // (5) get the length of the string + Serial.print("String length is: "); + Serial.println(my_str.length()); +} + +void loop() { +} + +
diff --git a/verilog/dv/user_mcore/user_mcore_tb.v b/verilog/dv/arduino_string/arduino_string_tb.v similarity index 63% copy from verilog/dv/user_mcore/user_mcore_tb.v copy to verilog/dv/arduino_string/arduino_string_tb.v index b43dcba..1bd4b91 100644 --- a/verilog/dv/user_mcore/user_mcore_tb.v +++ b/verilog/dv/arduino_string/arduino_string_tb.v
@@ -18,20 +18,23 @@ //// //// //// Standalone User validation Test bench //// //// //// -//// This file is part of the riscduino cores project //// +//// This file is part of the riscdunio cores project //// +//// https://github.com/dineshannayya/riscdunio.git //// //// //// //// Description //// //// This is a standalone test bench to validate the //// -//// Digital core multi-core behaviour. //// +//// Digital core. //// +//// This test bench to valid Arduino example: //// +//// <example><04.Communication><String> //// //// //// //// To Do: //// //// nothing //// //// //// //// Author(s): //// -//// - Dinesh Annayya, dinesha@opencores.org //// +//// - Dinesh Annayya, dinesh.annayya@gmail.com //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// +//// 0.1 - 29th July 2022, Dinesh A //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -65,7 +68,9 @@ `timescale 1 ns / 1 ns `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v" -module user_mcore_tb; +`include "uart_agent.v" + +module arduino_string_tb; reg clock; reg wb_rst_i; reg power1, power2; @@ -92,92 +97,181 @@ wire [7:0] mprj_io_0; reg test_fail; reg [31:0] read_data; + //---------------------------------- + // Uart Configuration + // --------------------------------- + reg [1:0] uart_data_bit ; + reg uart_stop_bits ; // 0: 1 stop bit; 1: 2 stop bit; + reg uart_stick_parity ; // 1: force even parity + reg uart_parity_en ; // parity enable + reg uart_even_odd_parity ; // 0: odd parity; 1: even parity + + reg [7:0] uart_data ; + reg [15:0] uart_divisor ; // divided by n * 16 + reg [15:0] uart_timeout ;// wait time limit + + reg [15:0] uart_rx_nu ; + reg [15:0] uart_tx_nu ; + reg [7:0] uart_write_data [0:39]; + reg uart_fifo_enable ; // fifo mode disable + reg flag ; + reg compare_start ; // User Need to make sure that compare start match with RiscV core completing initial booting + + reg [31:0] check_sum ; + integer d_risc_id; + integer i,j; - // External clock is used by default. Make this artificially fast for the - // simulation. Normally this would be a slow clock and the digital PLL - // would be the fast clock. - always #12.5 clock <= (clock === 1'b0); + + // 50Mhz CLock + always #10 clock <= (clock === 1'b0); initial begin clock = 0; - wbd_ext_cyc_i ='h0; // strobe/request - wbd_ext_stb_i ='h0; // strobe/request - wbd_ext_adr_i ='h0; // address - wbd_ext_we_i ='h0; // write - wbd_ext_dat_i ='h0; // data output - wbd_ext_sel_i ='h0; // byte enable + flag = 0; + compare_start = 0; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable end `ifdef WFDUMP initial begin $dumpfile("simx.vcd"); - $dumpvars(1, user_mcore_tb); - $dumpvars(1, user_mcore_tb.u_top); - $dumpvars(0, user_mcore_tb.u_top.u_riscv_top); + $dumpvars(3, arduino_string_tb); + $dumpvars(0, arduino_string_tb.u_top.u_riscv_top.i_core_top_0); + $dumpvars(0, arduino_string_tb.u_top.u_riscv_top.u_connect); + $dumpvars(0, arduino_string_tb.u_top.u_riscv_top.u_intf); + $dumpvars(0, arduino_string_tb.u_top.u_uart_i2c_usb_spi.u_uart0_core); end `endif + /************************************************************************* + * This is Baud Rate to clock divider conversion for Test Bench + * Note: DUT uses 16x baud clock, where are test bench uses directly + * baud clock, Due to 16x Baud clock requirement at RTL, there will be + * some resolution loss, we expect at lower baud rate this resolution + * loss will be less. For Quick simulation perpose higher baud rate used + * *************************************************************************/ + task tb_set_uart_baud; + input [31:0] ref_clk; + input [31:0] baud_rate; + output [31:0] baud_div; + reg [31:0] baud_div; + begin + // for 230400 Baud = (50Mhz/230400) = 216.7 + baud_div = ref_clk/baud_rate; // Get the Bit Baud rate + // Baud 16x = 216/16 = 13 + baud_div = baud_div/16; // To find the RTL baud 16x div value to find similar resolution loss in test bench + // Test bench baud clock , 16x of above value + // 13 * 16 = 208, + // (Note if you see original value was 216, now it's 208 ) + baud_div = baud_div * 16; + // Test bench half cycle counter to toggle it + // 208/2 = 104 + baud_div = baud_div/2; + //As counter run's from 0 , substract from 1 + baud_div = baud_div-1; + end + endtask + + initial begin + uart_data_bit = 2'b11; + uart_stop_bits = 0; // 0: 1 stop bit; 1: 2 stop bit; + uart_stick_parity = 0; // 1: force even parity + uart_parity_en = 0; // parity enable + uart_even_odd_parity = 1; // 0: odd parity; 1: even parity + tb_set_uart_baud(50000000,1152000,uart_divisor);// 50Mhz Ref clock, Baud Rate: 230400 + uart_timeout = 20000;// wait time limit + uart_fifo_enable = 0; // fifo mode disable $value$plusargs("risc_core_id=%d", d_risc_id); #200; // Wait for reset removal - repeat (10) @(posedge clock); + repeat (10) @(posedge clock); $display("Monitor: Standalone User Risc Boot Test Started"); // Remove Wb Reset wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); - repeat (2) @(posedge clock); + repeat (2) @(posedge clock); #1; - // Remove all the reset - $display("STATUS: Working with Both core Risc core 0 & 1 "); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h31F); + // Remove all the reset + if(d_risc_id == 0) begin + $display("STATUS: Working with Risc core 0"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); + end else if(d_risc_id == 1) begin + $display("STATUS: Working with Risc core 1"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); + end else if(d_risc_id == 2) begin + $display("STATUS: Working with Risc core 2"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h41F); + end else if(d_risc_id == 3) begin + $display("STATUS: Working with Risc core 3"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h81F); + end + repeat (100) @(posedge clock); // wait for Processor Get Ready - // Repeat cycles of 1000 clock edges as needed to complete testbench - repeat (22) begin - repeat (1000) @(posedge clock); - // $display("+1000 cycles"); - end + tb_uart.debug_mode = 0; // disable debug display + tb_uart.uart_init; + tb_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity, + uart_stick_parity, uart_timeout, uart_divisor); + repeat (60000) @(posedge clock); // wait for Processor Get Ready + flag = 0; + check_sum = 0; + compare_start = 1; + + fork + begin + while(flag == 0) + begin + tb_uart.read_char(read_data,flag); + if(flag == 0) begin + $write ("%c",read_data); + check_sum = check_sum+read_data; + end + end + end + begin + repeat (200000) @(posedge clock); // wait for Processor Get Ready + end + join_any + + #100 + tb_uart.report_status(uart_rx_nu, uart_tx_nu); + + test_fail = 0; - $display("Monitor: Reading Back the expected value"); - // User RISC core expect to write these value in global - // register, read back and decide on pass fail - // 0x30000018 = 0x11223344; - // 0x3000001C = 0x22334455; - // 0x30000020 = 0x33445566; - // 0x30000024 = 0x44556677; - // 0x30000028 = 0x55667788; - // 0x3000002C = 0x66778899; - - test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); - + $display("Total Rx Char: %d Check Sum : %x ",uart_rx_nu, check_sum); + // Check + // if all the 102 byte received + // if no error + if(uart_rx_nu != 102) test_fail = 1; + if(check_sum != 32'h1fab) test_fail = 1; + if(tb_uart.err_cnt != 0) test_fail = 1; $display("###################################################"); if(test_fail == 0) begin `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Passed"); + $display("Monitor: Standalone String (GL) Passed"); `else - $display("Monitor: Standalone User Risc Boot (RTL) Passed"); + $display("Monitor: Standalone String (RTL) Passed"); `endif end else begin `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Failed"); + $display("Monitor: Standalone String (GL) Failed"); `else - $display("Monitor: Standalone User Risc Boot (RTL) Failed"); + $display("Monitor: Standalone String (RTL) Failed"); `endif end $display("###################################################"); @@ -257,8 +351,8 @@ assign io_in[32] = flash_io3; // Quard flash - s25fl256s #(.mem_file_name("user_mcore.hex"), - .otp_file_name("none"), + s25fl256s #(.mem_file_name("arduino_string.ino.hex"), + .otp_file_name("none"), .TimingModel("S25FL512SAGMFI010_F_30pF")) u_spi_flash_256mb ( // Data Inputs/Outputs @@ -274,6 +368,19 @@ ); +//--------------------------- +// UART Agent integration +// -------------------------- +wire uart_txd,uart_rxd; + +assign uart_txd = io_out[2]; +assign io_in[1] = uart_rxd ; + +uart_agent tb_uart( + .mclk (clock ), + .txd (uart_rxd ), + .rxd (uart_txd ) + ); task wb_user_core_write;
diff --git a/verilog/dv/arduino_switchCase2/Makefile b/verilog/dv/arduino_switchCase2/Makefile new file mode 100644 index 0000000..2533931 --- /dev/null +++ b/verilog/dv/arduino_switchCase2/Makefile
@@ -0,0 +1,140 @@ +# 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 + + +# ---- Include Partitioned Makefiles ---- + +CONFIG = caravel_user_project + +####################################################################### +## Caravel Verilog for Integration Tests +####################################################################### + +DESIGNS?=../../.. +TOOLS?=/opt/riscv32i/ + +export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog +export RISCDUINO_BOARD ?= $(USER_PROJECT_VERILOG)/dv/common/riscduino_board/custom_board/riscduino +## YIFIVE FIRMWARE +YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware +GCC_PREFIX?=riscv32-unknown-elf + + +## Simulation mode: RTL/GL +SIM?=RTL +DUMP?=OFF +RISC_CORE?=0 + +### To Enable IVERILOG FST DUMP +export IVERILOG_DUMPER = fst + + +.SUFFIXES: + +PATTERN = arduino_switchCase2 + +all: ${PATTERN:=.vcd} + + +vvp: ${PATTERN:=.vvp} + +%.vvp: %_tb.v + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${PATTERN}.ino.cpp -o ${PATTERN}.ino.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/Print.cpp -o Print.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WMath.cpp -o WMath.cpp.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WString.cpp -o WString.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/WInterrupts.c -o WInterrupts.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/fe300prci/fe300prci_driver.c -o fe300prci_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/abi.cpp -o abi.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/drivers/plic/plic_driver.c -o plic_driver.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/UARTClass.cpp -o UARTClass.cpp.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/entry.S -o entry.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/hooks.c -o hooks.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/init.S -o init.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/itoa.c -o itoa.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/main.cpp -o main.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/malloc.c -o malloc.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/new.cpp -o new.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/sbrk.c -o sbrk.c.o + ${GCC_PREFIX}-gcc -c -march=rv32imac -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/start.S -o start.S.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring.c -o wiring.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_analog.c -o wiring_analog.c.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_digital.c -o wiring_digital.c.o + ${GCC_PREFIX}-g++ -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -fpermissive -Wall -fno-rtti -fno-exceptions -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_pulse.cpp -o wiring_pulse.cpp.o + ${GCC_PREFIX}-gcc -c -O2 -march=rv32imac -fpeel-loops -ffreestanding -ffunction-sections -fdata-sections -Wall -I${RISCDUINO_BOARD}/system/include -I${RISCDUINO_BOARD}/sdk/bsp/include -I${RISCDUINO_BOARD}/sdk/bsp/env -I${RISCDUINO_BOARD}/sdk/bsp/drivers -I${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score -include sys/cdefs.h -g -DARDUINO=10607 -DF_CPU=50000000LL -DRISCDUINO_SCORE_DEVKIT -I${RISCDUINO_BOARD}/cores/arduino -I${RISCDUINO_BOARD}/variants/standard ${RISCDUINO_BOARD}/cores/arduino/wiring_shift.c -o wiring_shift.c.o + ${GCC_PREFIX}-ar rcs core.a Print.cpp.o + ${GCC_PREFIX}-ar rcs core.a UARTClass.cpp.o + ${GCC_PREFIX}-ar rcs core.a WInterrupts.c.o + ${GCC_PREFIX}-ar rcs core.a WMath.cpp.o + ${GCC_PREFIX}-ar rcs core.a WString.cpp.o + ${GCC_PREFIX}-ar rcs core.a abi.cpp.o + ${GCC_PREFIX}-ar rcs core.a fe300prci_driver.c.o + ${GCC_PREFIX}-ar rcs core.a plic_driver.c.o + ${GCC_PREFIX}-ar rcs core.a entry.S.o + ${GCC_PREFIX}-ar rcs core.a hooks.c.o + ${GCC_PREFIX}-ar rcs core.a init.S.o + ${GCC_PREFIX}-ar rcs core.a itoa.c.o + ${GCC_PREFIX}-ar rcs core.a main.cpp.o + ${GCC_PREFIX}-ar rcs core.a malloc.c.o + ${GCC_PREFIX}-ar rcs core.a new.cpp.o + ${GCC_PREFIX}-ar rcs core.a sbrk.c.o + ${GCC_PREFIX}-ar rcs core.a start.S.o + ${GCC_PREFIX}-ar rcs core.a wiring.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_analog.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_digital.c.o + ${GCC_PREFIX}-ar rcs core.a wiring_pulse.cpp.o + ${GCC_PREFIX}-ar rcs core.a wiring_shift.c.o + ${GCC_PREFIX}-g++ -T ${RISCDUINO_BOARD}/sdk/bsp/env/riscduino_score/link.lds -nostartfiles -Wl,-N -Wl,--gc-sections -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=sbrk ${PATTERN}.ino.cpp.o -nostdlib -Wl,--start-group core.a -lm -lstdc++ -lc -lgloss -Wl,--end-group -lgcc -o ${PATTERN}.ino.elf + ${GCC_PREFIX}-objcopy -R .rel.dyn -O binary ${PATTERN}.ino.elf ${PATTERN}.ino.bin + ${GCC_PREFIX}-objcopy -R .rel.dyn -O verilog ${PATTERN}.ino.elf ${PATTERN}.ino.hex + ${GCC_PREFIX}-objdump -D ${PATTERN}.ino.elf > ${PATTERN}.ino.dump + rm *.o *.a +ifeq ($(SIM),RTL) + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + endif +else + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + endif +endif + +%.vcd: %.vvp + vvp $< +risc_core_id=$(RISC_CORE) + + +# ---- Clean ---- + +clean: + rm -f *.elf *.hex *.bin *.vvp *.vcd *.log *.dump *.a *.o + +.PHONY: clean hex all
diff --git a/verilog/dv/arduino_switchCase2/arduino_switchCase2.ino b/verilog/dv/arduino_switchCase2/arduino_switchCase2.ino new file mode 100644 index 0000000..48cbaa4 --- /dev/null +++ b/verilog/dv/arduino_switchCase2/arduino_switchCase2.ino
@@ -0,0 +1,65 @@ +/* + Switch statement with serial input + + Demonstrates the use of a switch statement. The switch statement allows you + to choose from among a set of discrete values of a variable. It's like a + series of if statements. + + To see this sketch in action, open the Serial monitor and send any character. + The characters a, b, c, d, and e, will turn on LEDs. Any other character will + turn the LEDs off. + + The circuit: + - five LEDs attached to digital pins 2 through 6 through 220 ohm resistors + + created 1 Jul 2009 + by Tom Igoe + + This example code is in the public domain. + + https://www.arduino.cc/en/Tutorial/BuiltInExamples/SwitchCase2 +*/ + +void setup() { + // initialize serial communication: + Serial.begin(9600); + // initialize the LED pins: + for (int thisPin = 2; thisPin < 7; thisPin++) { + pinMode(thisPin, OUTPUT); + } +} + +void loop() { + // read the sensor: + if (Serial.available() > 0) { + int inByte = Serial.read(); + // do something different depending on the character received. + // The switch statement expects single number values for each case; in this + // example, though, you're using single quotes to tell the controller to get + // the ASCII value for the character. For example 'a' = 97, 'b' = 98, + // and so forth: + + switch (inByte) { + case 'a': + digitalWrite(2, HIGH); + break; + case 'b': + digitalWrite(3, HIGH); + break; + case 'c': + digitalWrite(4, HIGH); + break; + case 'd': + digitalWrite(5, HIGH); + break; + case 'e': + digitalWrite(6, HIGH); + break; + default: + // turn all the LEDs off: + for (int thisPin = 2; thisPin < 7; thisPin++) { + digitalWrite(thisPin, LOW); + } + } + } +}
diff --git a/verilog/dv/arduino_switchCase2/arduino_switchCase2.ino.cpp b/verilog/dv/arduino_switchCase2/arduino_switchCase2.ino.cpp new file mode 100644 index 0000000..e6c0924 --- /dev/null +++ b/verilog/dv/arduino_switchCase2/arduino_switchCase2.ino.cpp
@@ -0,0 +1,69 @@ +#include <Arduino.h> +/* + Switch statement with serial input + + Demonstrates the use of a switch statement. The switch statement allows you + to choose from among a set of discrete values of a variable. It's like a + series of if statements. + + To see this sketch in action, open the Serial monitor and send any character. + The characters a, b, c, d, and e, will turn on LEDs. Any other character will + turn the LEDs off. + + The circuit: + - five LEDs attached to digital pins 2 through 6 through 220 ohm resistors + + created 1 Jul 2009 + by Tom Igoe + + This example code is in the public domain. + + https://www.arduino.cc/en/Tutorial/BuiltInExamples/SwitchCase2 +*/ + +void setup(); +void loop(); +void setup() { + // initialize serial communication: + Serial.begin(1152000); + // initialize the LED pins: + for (int thisPin = 2; thisPin < 7; thisPin++) { + pinMode(thisPin, OUTPUT); + } +} + +void loop() { + // read the sensor: + if (Serial.available() > 0) { + int inByte = Serial.read(); + // do something different depending on the character received. + // The switch statement expects single number values for each case; in this + // example, though, you're using single quotes to tell the controller to get + // the ASCII value for the character. For example 'a' = 97, 'b' = 98, + // and so forth: + + switch (inByte) { + case 'a': + digitalWrite(2, HIGH); + break; + case 'b': + digitalWrite(3, HIGH); + break; + case 'c': + digitalWrite(4, HIGH); + break; + case 'd': + digitalWrite(5, HIGH); + break; + case 'e': + digitalWrite(6, HIGH); + break; + default: + // turn all the LEDs off: + for (int thisPin = 2; thisPin < 7; thisPin++) { + digitalWrite(thisPin, LOW); + } + } + } +} +
diff --git a/verilog/dv/arduino_switchCase2/arduino_switchCase2_tb.v b/verilog/dv/arduino_switchCase2/arduino_switchCase2_tb.v new file mode 100644 index 0000000..c3e9ffb --- /dev/null +++ b/verilog/dv/arduino_switchCase2/arduino_switchCase2_tb.v
@@ -0,0 +1,587 @@ +//////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org> +////////////////////////////////////////////////////////////////////// +//// //// +//// Standalone User validation Test bench //// +//// //// +//// This file is part of the YIFive cores project //// +//// https://github.com/dineshannayya/yifive_r0.git //// +//// http://www.opencores.org/cores/yifive/ //// +//// //// +//// Description //// +//// This is a standalone test bench to validate the //// +//// Digital core. //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 16th Feb 2021, Dinesh A //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Authors and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source is distributed in the hope that it will be //// +//// useful, but WITHOUT ANY WARRANTY; without even the implied //// +//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //// +//// PURPOSE. See the GNU Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from http://www.opencores.org/lgpl.shtml //// +//// //// +////////////////////////////////////////////////////////////////////// + +`default_nettype wire + +`timescale 1 ns / 1 ns + +`include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v" +`include "uart_agent.v" +`include "is62wvs1288.v" + +module arduino_switchCase2_tb; + reg clock; + reg wb_rst_i; + reg power1, power2; + reg power3, power4; + + reg wbd_ext_cyc_i; // strobe/request + reg wbd_ext_stb_i; // strobe/request + reg [31:0] wbd_ext_adr_i; // address + reg wbd_ext_we_i; // write + reg [31:0] wbd_ext_dat_i; // data output + reg [3:0] wbd_ext_sel_i; // byte enable + + wire [31:0] wbd_ext_dat_o; // data input + wire wbd_ext_ack_o; // acknowlegement + wire wbd_ext_err_o; // error + + // User I/O + wire [37:0] io_oeb; + wire [37:0] io_out; + wire [37:0] io_in; + + wire gpio; + wire [37:0] mprj_io; + wire [7:0] mprj_io_0; + reg test_fail; + reg [31:0] read_data; + //---------------------------------- + // Uart Configuration + // --------------------------------- + reg [1:0] uart_data_bit ; + reg uart_stop_bits ; // 0: 1 stop bit; 1: 2 stop bit; + reg uart_stick_parity ; // 1: force even parity + reg uart_parity_en ; // parity enable + reg uart_even_odd_parity ; // 0: odd parity; 1: even parity + + reg [7:0] uart_data ; + reg [15:0] uart_divisor ; // divided by n * 16 + reg [15:0] uart_timeout ;// wait time limit + + reg [15:0] uart_rx_nu ; + reg [15:0] uart_tx_nu ; + reg [7:0] uart_write_data [0:39]; + reg uart_fifo_enable ; // fifo mode disable + reg flag ; + + reg [31:0] check_sum ; + + integer d_risc_id; + + integer i,j; + +parameter P_FSM_C = 4'b0000; // Command Phase Only +parameter P_FSM_CW = 4'b0001; // Command + Write DATA Phase Only +parameter P_FSM_CA = 4'b0010; // Command -> Address Phase Only + +parameter P_FSM_CAR = 4'b0011; // Command -> Address -> Read Data +parameter P_FSM_CADR = 4'b0100; // Command -> Address -> Dummy -> Read Data +parameter P_FSM_CAMR = 4'b0101; // Command -> Address -> Mode -> Read Data +parameter P_FSM_CAMDR = 4'b0110; // Command -> Address -> Mode -> Dummy -> Read Data + +parameter P_FSM_CAW = 4'b0111; // Command -> Address ->Write Data +parameter P_FSM_CADW = 4'b1000; // Command -> Address -> DUMMY + Write Data +parameter P_FSM_CAMW = 4'b1001; // Command -> Address -> MODE + Write Data + +parameter P_FSM_CDR = 4'b1010; // COMMAND -> DUMMY -> READ +parameter P_FSM_CDW = 4'b1011; // COMMAND -> DUMMY -> WRITE +parameter P_FSM_CR = 4'b1100; // COMMAND -> READ + +parameter P_MODE_SWITCH_IDLE = 2'b00; +parameter P_MODE_SWITCH_AT_ADDR = 2'b01; +parameter P_MODE_SWITCH_AT_DATA = 2'b10; + +parameter P_SINGLE = 2'b00; +parameter P_DOUBLE = 2'b01; +parameter P_QUAD = 2'b10; +parameter P_QDDR = 2'b11; + + + + // 50Mhz CLock + always #10 clock <= (clock === 1'b0); + + initial begin + clock = 0; + flag = 0; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable + end + + `ifdef WFDUMP + initial begin + $dumpfile("simx.vcd"); + $dumpvars(3, arduino_switchCase2_tb); + $dumpvars(0, arduino_switchCase2_tb.u_top.u_riscv_top.i_core_top_0); + $dumpvars(0, arduino_switchCase2_tb.u_top.u_riscv_top.u_connect); + $dumpvars(0, arduino_switchCase2_tb.u_top.u_riscv_top.u_intf); + $dumpvars(0, arduino_switchCase2_tb.u_top.u_uart_i2c_usb_spi.u_uart0_core); + end + `endif + + /************************************************************************* + * This is Baud Rate to clock divider conversion for Test Bench + * Note: DUT uses 16x baud clock, where are test bench uses directly + * baud clock, Due to 16x Baud clock requirement at RTL, there will be + * some resolution loss, we expect at lower baud rate this resolution + * loss will be less. For Quick simulation perpose higher baud rate used + * *************************************************************************/ + task tb_set_uart_baud; + input [31:0] ref_clk; + input [31:0] baud_rate; + output [31:0] baud_div; + reg [31:0] baud_div; + begin + // for 230400 Baud = (50Mhz/230400) = 216.7 + baud_div = ref_clk/baud_rate; // Get the Bit Baud rate + // Baud 16x = 216/16 = 13 + baud_div = baud_div/16; // To find the RTL baud 16x div value to find similar resolution loss in test bench + // Test bench baud clock , 16x of above value + // 13 * 16 = 208, + // (Note if you see original value was 216, now it's 208 ) + baud_div = baud_div * 16; + // Test bench half cycle counter to toggle it + // 208/2 = 104 + baud_div = baud_div/2; + //As counter run's from 0 , substract from 1 + baud_div = baud_div-1; + end + endtask + + + /************* Port-D Mapping ********************************** + * Arduino-No + * Pin-2 0 PD0/RXD[0] digital_io[1] + * Pin-3 1 PD1/TXD[0] digital_io[2] + * Pin-4 2 PD2/RXD[1]/INT0 digital_io[3] + * Pin-5 3 PD3/INT1/OC2B(PWM0) digital_io[4] + * Pin-6 4 PD4/TXD[1] digital_io[5] + * Pin-11 5 PD5/SS[3]/OC0B(PWM1)/T1 digital_io[8] + * Pin-12 6 PD6/SS[2]/OC0A(PWM2)/AIN0 digital_io[9]/analog_io[2] + * Pin-13 7 PD7/A1N1 digital_io[10]/analog_io[3] + * ********************************************************/ + + wire [7:0] port_d_in = { io_out[10], + io_out[9], + io_out[8], + io_out[5], + io_out[4], + io_out[3], + io_out[2], + io_out[1] + }; + initial begin + uart_data_bit = 2'b11; + uart_stop_bits = 0; // 0: 1 stop bit; 1: 2 stop bit; + uart_stick_parity = 0; // 1: force even parity + uart_parity_en = 0; // parity enable + uart_even_odd_parity = 1; // 0: odd parity; 1: even parity + tb_set_uart_baud(50000000,1152000,uart_divisor);// 50Mhz Ref clock, Baud Rate: 230400 + uart_timeout = 2000;// wait time limit + uart_fifo_enable = 0; // fifo mode disable + + $value$plusargs("risc_core_id=%d", d_risc_id); + + #200; // Wait for reset removal + repeat (10) @(posedge clock); + $display("Monitor: Standalone User Risc Boot Test Started"); + + // Remove Wb Reset + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); + + repeat (2) @(posedge clock); + #1; + // Remove WB and SPI Reset, Keep SDARM and CORE under Reset + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F); + + // QSPI SRAM:CS#2 Switch to QSPI Mode + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_BANK_SEL,'h1000); // Change the Bank Sel 1000 + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL1,{16'h0,1'b0,1'b0,4'b0000,P_MODE_SWITCH_IDLE,P_SINGLE,P_SINGLE,4'b0100}); + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL2,{8'h0,2'b00,2'b00,P_FSM_C,8'h00,8'h38}); + wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_WDATA,32'h0); + + // Remove all the reset + if(d_risc_id == 0) begin + $display("STATUS: Working with Risc core 0"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); + end else if(d_risc_id == 1) begin + $display("STATUS: Working with Risc core 1"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); + end else if(d_risc_id == 2) begin + $display("STATUS: Working with Risc core 2"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h41F); + end else if(d_risc_id == 3) begin + $display("STATUS: Working with Risc core 3"); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h81F); + end + + repeat (100) @(posedge clock); // wait for Processor Get Ready + + tb_uart.debug_mode = 0; // disable debug display + tb_uart.uart_init; + tb_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity, + uart_stick_parity, uart_timeout, uart_divisor); + + repeat (45000) @(posedge clock); // wait for Processor Get Ready + flag = 1; + check_sum = 0; + fork + begin + fork + begin + tb_uart.write_char ("a"); + tb_uart.write_char ("b"); + tb_uart.write_char ("c"); + tb_uart.write_char ("d"); + tb_uart.write_char ("e"); + end + begin + wait(port_d_in[2] == 1'b1); + $display("PORT-D Pin-2 High Detected"); + wait(port_d_in[3] == 1'b1); + $display("PORT-D Pin-3 High Detected"); + wait(port_d_in[4] == 1'b1); + $display("PORT-D Pin-4 High Detected"); + wait(port_d_in[5] == 1'b1); + $display("PORT-D Pin-5 High Detected"); + wait(port_d_in[6] == 1'b1); + $display("PORT-D Pin-6 High Detected"); + test_fail =0; + end + join + end + begin + repeat (3000000) @(posedge clock); // wait for Processor Get Ready + test_fail =1; + end + join_any + + #100 + tb_uart.report_status(uart_rx_nu, uart_tx_nu); + + + + $display("###################################################"); + if(test_fail == 0) begin + `ifdef GL + $display("Monitor: arduino_switchCase2 (GL) Passed"); + `else + $display("Monitor: arduino_switchCase2 (RTL) Passed"); + `endif + end else begin + `ifdef GL + $display("Monitor: arduino_switchCase2 (GL) Failed"); + `else + $display("Monitor: arduino_switchCase2 (RTL) Failed"); + `endif + end + $display("###################################################"); + $finish; + end + + initial begin + wb_rst_i <= 1'b1; + #100; + wb_rst_i <= 1'b0; // Release reset + end +wire USER_VDD1V8 = 1'b1; +wire VSS = 1'b0; + +user_project_wrapper u_top( +`ifdef USE_POWER_PINS + .vccd1(USER_VDD1V8), // User area 1 1.8V supply + .vssd1(VSS), // User area 1 digital ground +`endif + .wb_clk_i (clock), // System clock + .user_clock2 (1'b1), // Real-time clock + .wb_rst_i (wb_rst_i), // Regular Reset signal + + .wbs_cyc_i (wbd_ext_cyc_i), // strobe/request + .wbs_stb_i (wbd_ext_stb_i), // strobe/request + .wbs_adr_i (wbd_ext_adr_i), // address + .wbs_we_i (wbd_ext_we_i), // write + .wbs_dat_i (wbd_ext_dat_i), // data output + .wbs_sel_i (wbd_ext_sel_i), // byte enable + + .wbs_dat_o (wbd_ext_dat_o), // data input + .wbs_ack_o (wbd_ext_ack_o), // acknowlegement + + + // Logic Analyzer Signals + .la_data_in ('1) , + .la_data_out (), + .la_oenb ('0), + + + // IOs + .io_in (io_in) , + .io_out (io_out) , + .io_oeb (io_oeb) , + + .user_irq () + +); + +`ifndef GL // Drive Power for Hold Fix Buf + // All standard cell need power hook-up for functionality work + initial begin + + end +`endif + +//------------------------------------------------------ +// Integrate the Serial flash with qurd support to +// user core using the gpio pads +// ---------------------------------------------------- + + wire flash_clk = io_out[24]; + wire flash_csb = io_out[25]; + // Creating Pad Delay + wire #1 io_oeb_29 = io_oeb[29]; + wire #1 io_oeb_30 = io_oeb[30]; + wire #1 io_oeb_31 = io_oeb[31]; + wire #1 io_oeb_32 = io_oeb[32]; + tri #1 flash_io0 = (io_oeb_29== 1'b0) ? io_out[29] : 1'bz; + tri #1 flash_io1 = (io_oeb_30== 1'b0) ? io_out[30] : 1'bz; + tri #1 flash_io2 = (io_oeb_31== 1'b0) ? io_out[31] : 1'bz; + tri #1 flash_io3 = (io_oeb_32== 1'b0) ? io_out[32] : 1'bz; + + assign io_in[29] = flash_io0; + assign io_in[30] = flash_io1; + assign io_in[31] = flash_io2; + assign io_in[32] = flash_io3; + + // Quard flash + s25fl256s #(.mem_file_name("arduino_switchCase2.ino.hex"), + .otp_file_name("none"), + .TimingModel("S25FL512SAGMFI010_F_30pF")) + u_spi_flash_256mb ( + // Data Inputs/Outputs + .SI (flash_io0), + .SO (flash_io1), + // Controls + .SCK (flash_clk), + .CSNeg (flash_csb), + .WPNeg (flash_io2), + .HOLDNeg (flash_io3), + .RSTNeg (!wb_rst_i) + + ); + + + wire spiram_csb = io_out[27]; + + is62wvs1288 #(.mem_file_name("none")) + u_sram ( + // Data Inputs/Outputs + .io0 (flash_io0), + .io1 (flash_io1), + // Controls + .clk (flash_clk), + .csb (spiram_csb), + .io2 (flash_io2), + .io3 (flash_io3) + ); +//--------------------------- +// UART Agent integration +// -------------------------- +wire uart_txd,uart_rxd; + +assign uart_txd = io_out[2]; +assign io_in[1] = uart_rxd ; + +uart_agent tb_uart( + .mclk (clock ), + .txd (uart_rxd ), + .rxd (uart_txd ) + ); + + +task wb_user_core_write; +input [31:0] address; +input [31:0] data; +begin + repeat (1) @(posedge clock); + #1; + wbd_ext_adr_i =address; // address + wbd_ext_we_i ='h1; // write + wbd_ext_dat_i =data; // data output + wbd_ext_sel_i ='hF; // byte enable + wbd_ext_cyc_i ='h1; // strobe/request + wbd_ext_stb_i ='h1; // strobe/request + wait(wbd_ext_ack_o == 1); + repeat (1) @(posedge clock); + #1; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable + $display("DEBUG WB USER ACCESS WRITE Address : %x, Data : %x",address,data); + repeat (2) @(posedge clock); +end +endtask + +task wb_user_core_read; +input [31:0] address; +output [31:0] data; +reg [31:0] data; +begin + repeat (1) @(posedge clock); + #1; + wbd_ext_adr_i =address; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='0; // data output + wbd_ext_sel_i ='hF; // byte enable + wbd_ext_cyc_i ='h1; // strobe/request + wbd_ext_stb_i ='h1; // strobe/request + wait(wbd_ext_ack_o == 1); + repeat (1) @(negedge clock); + data = wbd_ext_dat_o; + repeat (1) @(posedge clock); + #1; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable + $display("DEBUG WB USER ACCESS READ Address : %x, Data : %x",address,data); + repeat (2) @(posedge clock); +end +endtask + +task wb_user_core_read_check; +input [31:0] address; +output [31:0] data; +input [31:0] cmp_data; +reg [31:0] data; +begin + repeat (1) @(posedge clock); + #1; + wbd_ext_adr_i =address; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='0; // data output + wbd_ext_sel_i ='hF; // byte enable + wbd_ext_cyc_i ='h1; // strobe/request + wbd_ext_stb_i ='h1; // strobe/request + wait(wbd_ext_ack_o == 1); + repeat (1) @(negedge clock); + data = wbd_ext_dat_o; + repeat (1) @(posedge clock); + #1; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable + if(data !== cmp_data) begin + $display("ERROR : WB USER ACCESS READ Address : 0x%x, Exd: 0x%x Rxd: 0x%x ",address,cmp_data,data); + test_fail = 1; + end else begin + $display("STATUS: WB USER ACCESS READ Address : 0x%x, Data : 0x%x",address,data); + end + repeat (2) @(posedge clock); +end +endtask + +`ifdef GL + +wire wbd_spi_stb_i = u_top.u_qspi_master.wbd_stb_i; +wire wbd_spi_ack_o = u_top.u_qspi_master.wbd_ack_o; +wire wbd_spi_we_i = u_top.u_qspi_master.wbd_we_i; +wire [31:0] wbd_spi_adr_i = u_top.u_qspi_master.wbd_adr_i; +wire [31:0] wbd_spi_dat_i = u_top.u_qspi_master.wbd_dat_i; +wire [31:0] wbd_spi_dat_o = u_top.u_qspi_master.wbd_dat_o; +wire [3:0] wbd_spi_sel_i = u_top.u_qspi_master.wbd_sel_i; + +wire wbd_uart_stb_i = u_top.u_uart_i2c_usb_spi.reg_cs; +wire wbd_uart_ack_o = u_top.u_uart_i2c_usb_spi.reg_ack; +wire wbd_uart_we_i = u_top.u_uart_i2c_usb_spi.reg_wr; +wire [8:0] wbd_uart_adr_i = u_top.u_uart_i2c_usb_spi.reg_addr; +wire [7:0] wbd_uart_dat_i = u_top.u_uart_i2c_usb_spi.reg_wdata; +wire [7:0] wbd_uart_dat_o = u_top.u_uart_i2c_usb_spi.reg_rdata; +wire wbd_uart_sel_i = u_top.u_uart_i2c_usb_spi.reg_be; + +`endif + +/** +`ifdef GL +//----------------------------------------------------------------------------- +// RISC IMEM amd DMEM Monitoring TASK +//----------------------------------------------------------------------------- + +`define RISC_CORE user_uart_tb.u_top.u_core.u_riscv_top + +always@(posedge `RISC_CORE.wb_clk) begin + if(`RISC_CORE.wbd_imem_ack_i) + $display("RISCV-DEBUG => IMEM ADDRESS: %x Read Data : %x", `RISC_CORE.wbd_imem_adr_o,`RISC_CORE.wbd_imem_dat_i); + if(`RISC_CORE.wbd_dmem_ack_i && `RISC_CORE.wbd_dmem_we_o) + $display("RISCV-DEBUG => DMEM ADDRESS: %x Write Data: %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_o); + if(`RISC_CORE.wbd_dmem_ack_i && !`RISC_CORE.wbd_dmem_we_o) + $display("RISCV-DEBUG => DMEM ADDRESS: %x READ Data : %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_i); +end + +`endif +**/ +endmodule +`include "s25fl256s.sv" +`default_nettype wire
diff --git a/verilog/dv/bfm/bfm_ad5205.sv b/verilog/dv/bfm/bfm_ad5205.sv new file mode 100644 index 0000000..d2ea131 --- /dev/null +++ b/verilog/dv/bfm/bfm_ad5205.sv
@@ -0,0 +1,28 @@ +module bfm_ad5205 ( + input logic sck , + input logic sdi , + input logic ssn , + + output logic [2:0] channel , + output logic [7:0] position + ); + + +logic [10:0] shift_reg; +logic [10:0] load_reg; + + +always @(posedge ssn) + load_reg = shift_reg; + + +always @(posedge sck) + shift_reg = {shift_reg[9:0],sdi}; + + +assign channel = load_reg[10:8]; +assign position = load_reg[7:0]; + + +endmodule +
diff --git a/verilog/dv/c_func/inc/ext_reg_map.h b/verilog/dv/c_func/inc/ext_reg_map.h new file mode 100644 index 0000000..cdb04f3 --- /dev/null +++ b/verilog/dv/c_func/inc/ext_reg_map.h
@@ -0,0 +1,83 @@ +//-------------------------------------------------------------------- +// Register Address Map As Seen By the External/Caravel RISCV Core +//-------------------------------------------------------------------- + +//------------------------------------- +// PinMux Register +// ------------------------------------ +#define reg_glbl_chip_id (*(volatile uint32_t*)0x30020000) // reg_0 - Chip ID +#define reg_glbl_cfg0 (*(volatile uint32_t*)0x30020004) // reg_1 - Global Config-0 +#define reg_glbl_cfg1 (*(volatile uint32_t*)0x30020008) // reg_2 - Global Config-1 +#define reg_glbl_intr_msk (*(volatile uint32_t*)0x3002000C) // reg_3 - Global Interrupt Mask +#define reg_glbl_intr (*(volatile uint32_t*)0x30020010) // reg_4 - Global Interrupt +#define reg_glbl_multi_func (*(volatile uint32_t*)0x30020014) // reg_5 - GPIO Multi Function +#define reg_glbl_soft_reg_0 (*(volatile uint32_t*)0x30020018) // reg_6 - Soft Register-0 +#define reg_glbl_soft_reg_1 (*(volatile uint32_t*)0x3002001C) // reg_7 - Sof Register-1 +#define reg_glbl_soft_reg_2 (*(volatile uint32_t*)0x30020020) // reg_8 - Sof Register-2 +#define reg_glbl_soft_reg_3 (*(volatile uint32_t*)0x30020024) // reg_9 - Sof Register-3 +#define reg_glbl_soft_reg_4 (*(volatile uint32_t*)0x30020028) // reg_10 - Sof Register-4 +#define reg_glbl_soft_reg_5 (*(volatile uint32_t*)0x3002002C) // reg_11 - Sof Register-5 + +#define reg_gpio_dsel (*(volatile uint32_t*)0x30020040) // reg_0 - GPIO Direction Select +#define reg_gpio_type (*(volatile uint32_t*)0x30020044) // reg_1 - GPIO TYPE - Static/Waveform +#define reg_gpio_idata (*(volatile uint32_t*)0x30020048) // reg_2 - GPIO Data In +#define reg_gpio_odata (*(volatile uint32_t*)0x3002004C) // reg_3 - GPIO Data Out +#define reg_gpio_intr_stat (*(volatile uint32_t*)0x30020050) // reg_4 - GPIO Interrupt status +#define reg_gpio_intr_clr (*(volatile uint32_t*)0x30020050) // reg_5 - GPIO Interrupt Clear +#define reg_gpio_intr_set (*(volatile uint32_t*)0x30020054) // reg_6 - GPIO Interrupt Set +#define reg_gpio_intr_mask (*(volatile uint32_t*)0x30020058) // reg_7 - GPIO Interrupt Mask +#define reg_gpio_pos_intr (*(volatile uint32_t*)0x3002005C) // reg_8 - GPIO Posedge Interrupt +#define reg_gpio_neg_intr (*(volatile uint32_t*)0x30020060) // reg_9 - GPIO Neg Interrupt + +#define reg_pinmux_glbl_cfg (*(volatile uint32_t*)0x30020080) // reg_0 - PWM Reg-0 +#define reg_pinmux_cfg_pwm0 (*(volatile uint32_t*)0x30020084) // reg_1 - PWM Reg-0 +#define reg_pinmux_cfg_pwm1 (*(volatile uint32_t*)0x30020088) // reg_2 - PWM Reg-1 +#define reg_pinmux_cfg_pwm2 (*(volatile uint32_t*)0x3002008C) // reg_3 - PWM Reg-2 +#define reg_pinmux_cfg_pwm3 (*(volatile uint32_t*)0x30020090) // reg_4 - PWM Reg-3 +#define reg_pinmux_cfg_pwm4 (*(volatile uint32_t*)0x30020094) // reg_5 - PWM Reg-4 +#define reg_pinmux_cfg_pwm5 (*(volatile uint32_t*)0x30020098) // reg_6 - PWM Reg-5 + +#define reg_timer_glbl_cfg (*(volatile uint32_t*)0x300200C0) // reg_0 - Global config +#define reg_timer_cfg_timer0 (*(volatile uint32_t*)0x300200C4) // reg_1 - Timer-0 +#define reg_timer_cfg_timer1 (*(volatile uint32_t*)0x300200C8) // reg_2 - Timer-1 +#define reg_timer_cfg_timer2 (*(volatile uint32_t*)0x300200CC) // reg_3 - Timer-2 + +#define reg_sema_lock0 (*(volatile uint32_t*)0x30020100) // reg_0 - Hardware Lock-0 +#define reg_sema_lock1 (*(volatile uint32_t*)0x30020104) // reg_1 - Hardware Lock-1 +#define reg_sema_lock2 (*(volatile uint32_t*)0x30020108) // reg_2 - Hardware Lock-2 +#define reg_sema_lock3 (*(volatile uint32_t*)0x3002010C) // reg_3 - Hardware Lock-3 +#define reg_sema_lock4 (*(volatile uint32_t*)0x30020110) // reg_4 - Hardware Lock-4 +#define reg_sema_lock5 (*(volatile uint32_t*)0x30020114) // reg_5 - Hardware Lock-5 +#define reg_sema_lock6 (*(volatile uint32_t*)0x30020118) // reg_6 - Hardware Lock-6 +#define reg_sema_lock7 (*(volatile uint32_t*)0x3002011C) // reg_7 - Hardware Lock-7 +#define reg_sema_lock8 (*(volatile uint32_t*)0x30020120) // reg_8 - Hardware Lock-8 +#define reg_sema_lock9 (*(volatile uint32_t*)0x30020124) // reg_9 - Hardware Lock-9 +#define reg_sema_lock10 (*(volatile uint32_t*)0x30020128) // reg_10 - Hardware Lock-10 +#define reg_sema_lock11 (*(volatile uint32_t*)0x3002012C) // reg_11 - Hardware Lock-11 +#define reg_sema_lock12 (*(volatile uint32_t*)0x30020130) // reg_12 - Hardware Lock-12 +#define reg_sema_lock13 (*(volatile uint32_t*)0x30020134) // reg_13 - Hardware Lock-13 +#define reg_sema_lock14 (*(volatile uint32_t*)0x30020138) // reg_14 - Hardware Lock-14 +#define reg_sema_lock_cfg (*(volatile uint32_t*)0x3002013C) // reg_15 - Hardware Lock config +#define reg_sema_lock_stat (*(volatile uint32_t*)0x3002013C) // reg_15 - Hardware Lock Status + + +#define reg_uart0_ctrl (*(volatile uint32_t*)0x30010000) // Reg-0 +#define reg_uart0_intr_stat (*(volatile uint32_t*)0x30010004) // Reg-1 +#define reg_uart0_baud_ctrl1 (*(volatile uint32_t*)0x30010008) // Reg-2 +#define reg_uart0_baud_ctrl2 (*(volatile uint32_t*)0x3001000C) // Reg-3 +#define reg_uart0_status (*(volatile uint32_t*)0x30010010) // Reg-4 +#define reg_uart0_txdata (*(volatile uint32_t*)0x30010014) // Reg-5 +#define reg_uart0_rxdata (*(volatile uint32_t*)0x30010018) // Reg-6 +#define reg_uart0_txfifo_stat (*(volatile uint32_t*)0x3001001C) // Reg-7 +#define reg_uart0_rxfifo_stat (*(volatile uint32_t*)0x30010020) // Reg-8 + +#define reg_uart1_ctrl (*(volatile uint32_t*)0x30010100) // Reg-0 +#define reg_uart1_intr_stat (*(volatile uint32_t*)0x30010104) // Reg-1 +#define reg_uart1_baud_ctrl1 (*(volatile uint32_t*)0x30010108) // Reg-2 +#define reg_uart1_baud_ctrl2 (*(volatile uint32_t*)0x3001010C) // Reg-3 +#define reg_uart1_status (*(volatile uint32_t*)0x30010110) // Reg-4 +#define reg_uart1_txdata (*(volatile uint32_t*)0x30010114) // Reg-5 +#define reg_uart1_rxdata (*(volatile uint32_t*)0x30010118) // Reg-6 +#define reg_uart1_txfifo_stat (*(volatile uint32_t*)0x3001011C) // Reg-7 +#define reg_uart1_rxfifo_stat (*(volatile uint32_t*)0x30010120) // Reg-8 +
diff --git a/verilog/dv/c_func/inc/int_reg_map.h b/verilog/dv/c_func/inc/int_reg_map.h new file mode 100644 index 0000000..669499d --- /dev/null +++ b/verilog/dv/c_func/inc/int_reg_map.h
@@ -0,0 +1,83 @@ +//-------------------------------------------------------------------- +// Register Address Map As Seen By the Internal RISCV Core +//-------------------------------------------------------------------- + +//------------------------------------- +// PinMux Register +// ------------------------------------ +#define reg_glbl_chip_id (*(volatile uint32_t*)0x10020000) // reg_0 - Chip ID +#define reg_glbl_cfg0 (*(volatile uint32_t*)0x10020004) // reg_1 - Global Config-0 +#define reg_glbl_cfg1 (*(volatile uint32_t*)0x10020008) // reg_2 - Global Config-1 +#define reg_glbl_intr_msk (*(volatile uint32_t*)0x1002000C) // reg_3 - Global Interrupt Mask +#define reg_glbl_intr (*(volatile uint32_t*)0x10020010) // reg_4 - Global Interrupt +#define reg_glbl_multi_func (*(volatile uint32_t*)0x10020014) // reg_5 - GPIO Multi Function +#define reg_glbl_soft_reg_0 (*(volatile uint32_t*)0x10020018) // reg_6 - Soft Register-0 +#define reg_glbl_soft_reg_1 (*(volatile uint32_t*)0x1002001C) // reg_7 - Sof Register-1 +#define reg_glbl_soft_reg_2 (*(volatile uint32_t*)0x10020020) // reg_8 - Sof Register-2 +#define reg_glbl_soft_reg_3 (*(volatile uint32_t*)0x10020024) // reg_9 - Sof Register-3 +#define reg_glbl_soft_reg_4 (*(volatile uint32_t*)0x10020028) // reg_10 - Sof Register-4 +#define reg_glbl_soft_reg_5 (*(volatile uint32_t*)0x1002002C) // reg_11 - Sof Register-5 + +#define reg_gpio_dsel (*(volatile uint32_t*)0x10020040) // reg_0 - GPIO Direction Select +#define reg_gpio_type (*(volatile uint32_t*)0x10020044) // reg_1 - GPIO TYPE - Static/Waveform +#define reg_gpio_idata (*(volatile uint32_t*)0x10020048) // reg_2 - GPIO Data In +#define reg_gpio_odata (*(volatile uint32_t*)0x1002004C) // reg_3 - GPIO Data Out +#define reg_gpio_intr_stat (*(volatile uint32_t*)0x10020050) // reg_4 - GPIO Interrupt status +#define reg_gpio_intr_clr (*(volatile uint32_t*)0x10020050) // reg_5 - GPIO Interrupt Clear +#define reg_gpio_intr_set (*(volatile uint32_t*)0x10020054) // reg_6 - GPIO Interrupt Set +#define reg_gpio_intr_mask (*(volatile uint32_t*)0x10020058) // reg_7 - GPIO Interrupt Mask +#define reg_gpio_pos_intr (*(volatile uint32_t*)0x1002005C) // reg_8 - GPIO Posedge Interrupt +#define reg_gpio_neg_intr (*(volatile uint32_t*)0x10020060) // reg_9 - GPIO Neg Interrupt + +#define reg_pinmux_glbl_cfg (*(volatile uint32_t*)0x10020080) // reg_0 - PWM Reg-0 +#define reg_pinmux_cfg_pwm0 (*(volatile uint32_t*)0x10020084) // reg_1 - PWM Reg-0 +#define reg_pinmux_cfg_pwm1 (*(volatile uint32_t*)0x10020088) // reg_2 - PWM Reg-1 +#define reg_pinmux_cfg_pwm2 (*(volatile uint32_t*)0x1002008C) // reg_3 - PWM Reg-2 +#define reg_pinmux_cfg_pwm3 (*(volatile uint32_t*)0x10020090) // reg_4 - PWM Reg-3 +#define reg_pinmux_cfg_pwm4 (*(volatile uint32_t*)0x10020094) // reg_5 - PWM Reg-4 +#define reg_pinmux_cfg_pwm5 (*(volatile uint32_t*)0x10020098) // reg_6 - PWM Reg-5 + +#define reg_timer_glbl_cfg (*(volatile uint32_t*)0x100200C0) // reg_0 - Global config +#define reg_timer_cfg_timer0 (*(volatile uint32_t*)0x100200C4) // reg_1 - Timer-0 +#define reg_timer_cfg_timer1 (*(volatile uint32_t*)0x100200C8) // reg_2 - Timer-1 +#define reg_timer_cfg_timer2 (*(volatile uint32_t*)0x100200CC) // reg_3 - Timer-2 + +#define reg_sema_lock0 (*(volatile uint32_t*)0x10020100) // reg_0 - Hardware Lock-0 +#define reg_sema_lock1 (*(volatile uint32_t*)0x10020104) // reg_1 - Hardware Lock-1 +#define reg_sema_lock2 (*(volatile uint32_t*)0x10020108) // reg_2 - Hardware Lock-2 +#define reg_sema_lock3 (*(volatile uint32_t*)0x1002010C) // reg_3 - Hardware Lock-3 +#define reg_sema_lock4 (*(volatile uint32_t*)0x10020110) // reg_4 - Hardware Lock-4 +#define reg_sema_lock5 (*(volatile uint32_t*)0x10020114) // reg_5 - Hardware Lock-5 +#define reg_sema_lock6 (*(volatile uint32_t*)0x10020118) // reg_6 - Hardware Lock-6 +#define reg_sema_lock7 (*(volatile uint32_t*)0x1002011C) // reg_7 - Hardware Lock-7 +#define reg_sema_lock8 (*(volatile uint32_t*)0x10020120) // reg_8 - Hardware Lock-8 +#define reg_sema_lock9 (*(volatile uint32_t*)0x10020124) // reg_9 - Hardware Lock-9 +#define reg_sema_lock10 (*(volatile uint32_t*)0x10020128) // reg_10 - Hardware Lock-10 +#define reg_sema_lock11 (*(volatile uint32_t*)0x1002012C) // reg_11 - Hardware Lock-11 +#define reg_sema_lock12 (*(volatile uint32_t*)0x10020130) // reg_12 - Hardware Lock-12 +#define reg_sema_lock13 (*(volatile uint32_t*)0x10020134) // reg_13 - Hardware Lock-13 +#define reg_sema_lock14 (*(volatile uint32_t*)0x10020138) // reg_14 - Hardware Lock-14 +#define reg_sema_lock_cfg (*(volatile uint32_t*)0x1002013C) // reg_15 - Hardware Lock config +#define reg_sema_lock_stat (*(volatile uint32_t*)0x1002013C) // reg_15 - Hardware Lock Status + + +#define reg_uart0_ctrl (*(volatile uint32_t*)0x10010000) // Reg-0 +#define reg_uart0_intr_stat (*(volatile uint32_t*)0x10010004) // Reg-1 +#define reg_uart0_baud_ctrl1 (*(volatile uint32_t*)0x10010008) // Reg-2 +#define reg_uart0_baud_ctrl2 (*(volatile uint32_t*)0x1001000C) // Reg-3 +#define reg_uart0_status (*(volatile uint32_t*)0x10010010) // Reg-4 +#define reg_uart0_txdata (*(volatile uint32_t*)0x10010014) // Reg-5 +#define reg_uart0_rxdata (*(volatile uint32_t*)0x10010018) // Reg-6 +#define reg_uart0_txfifo_stat (*(volatile uint32_t*)0x1001001C) // Reg-7 +#define reg_uart0_rxfifo_stat (*(volatile uint32_t*)0x10010020) // Reg-8 + +#define reg_uart1_ctrl (*(volatile uint32_t*)0x10010100) // Reg-0 +#define reg_uart1_intr_stat (*(volatile uint32_t*)0x10010104) // Reg-1 +#define reg_uart1_baud_ctrl1 (*(volatile uint32_t*)0x10010108) // Reg-2 +#define reg_uart1_baud_ctrl2 (*(volatile uint32_t*)0x1001010C) // Reg-3 +#define reg_uart1_status (*(volatile uint32_t*)0x10010110) // Reg-4 +#define reg_uart1_txdata (*(volatile uint32_t*)0x10010114) // Reg-5 +#define reg_uart1_rxdata (*(volatile uint32_t*)0x10010118) // Reg-6 +#define reg_uart1_txfifo_stat (*(volatile uint32_t*)0x1001011C) // Reg-7 +#define reg_uart1_rxfifo_stat (*(volatile uint32_t*)0x10010120) // Reg-8 +
diff --git a/verilog/dv/c_func/inc/user_reg_map.h b/verilog/dv/c_func/inc/user_reg_map.h deleted file mode 100644 index 4508fb2..0000000 --- a/verilog/dv/c_func/inc/user_reg_map.h +++ /dev/null
@@ -1,38 +0,0 @@ - - -//------------------------------------- -// PinMux Register -// ------------------------------------ -#define reg_pinmux_chip_id (*(volatile uint32_t*)0x30020000) // reg_0 - Chip ID -#define reg_pinmux_gbl_cfg0 (*(volatile uint32_t*)0x30020004) // reg_1 - Global Config-2 -#define reg_pinmux_gbl_cfg1 (*(volatile uint32_t*)0x30020008) // reg_2 - Global Config-1 -#define reg_pinmux_gbl_intr_msk (*(volatile uint32_t*)0x3002000C) // reg_3 - Global Interrupt Mask -#define reg_pinmux_gbl_intr (*(volatile uint32_t*)0x30020010) // reg_4 - Global Interrupt -#define reg_pinmux_gpio_idata (*(volatile uint32_t*)0x30020014) // reg_5 - GPIO Data In -#define reg_pinmux_gpio_odata (*(volatile uint32_t*)0x30020018) // reg_6 - GPIO Data Out -#define reg_pinmux_gpio_dsel (*(volatile uint32_t*)0x3002001C) // reg_7 - GPIO Direction Select -#define reg_pinmux_gpio_type (*(volatile uint32_t*)0x30020020) // reg_8 - GPIO TYPE - Static/Waveform -#define reg_pinmux_gpio_intr_stat (*(volatile uint32_t*)0x30020024) // reg_9 - GPIO Interrupt status -#define reg_pinmux_gpio_intr_clr (*(volatile uint32_t*)0x30020024) // reg_9 - GPIO Interrupt Clear -#define reg_pinmux_gpio_intr_set (*(volatile uint32_t*)0x30020028) // reg_10 - GPIO Interrupt Set -#define reg_pinmux_gpio_intr_mask (*(volatile uint32_t*)0x3002002C) // reg_11 - GPIO Interrupt Mask -#define reg_pinmux_gpio_pos_intr (*(volatile uint32_t*)0x30020030) // reg_12 - GPIO Posedge Interrupt -#define reg_pinmux_gpio_neg_intr (*(volatile uint32_t*)0x30020034) // reg_13 - GPIO Neg Interrupt -#define reg_pinmux_gpio_multi_func (*(volatile uint32_t*)0x30020038) // reg_14 - GPIO Multi Function -#define reg_pinmux_soft_reg_0 (*(volatile uint32_t*)0x3002003C) // reg_15 - Soft Register -#define reg_pinmux_cfg_pwm0 (*(volatile uint32_t*)0x30020040) // reg_16 - PWM Reg-0 -#define reg_pinmux_cfg_pwm1 (*(volatile uint32_t*)0x30020044) // reg_17 - PWM Reg-1 -#define reg_pinmux_cfg_pwm2 (*(volatile uint32_t*)0x30020048) // reg_18 - PWM Reg-2 -#define reg_pinmux_cfg_pwm3 (*(volatile uint32_t*)0x3002004C) // reg_19 - PWM Reg-3 -#define reg_pinmux_cfg_pwm4 (*(volatile uint32_t*)0x30020050) // reg_20 - PWM Reg-4 -#define reg_pinmux_cfg_pwm5 (*(volatile uint32_t*)0x30020054) // reg_21 - PWM Reg-5 -#define reg_pinmux_soft_reg_1 (*(volatile uint32_t*)0x30020058) // reg_22 - Sof Register -#define reg_pinmux_soft_reg_2 (*(volatile uint32_t*)0x3002005C) // reg_23 - Sof Register -#define reg_pinmux_soft_reg_3 (*(volatile uint32_t*)0x30020060) // reg_24 - Sof Register -#define reg_pinmux_soft_reg_4 (*(volatile uint32_t*)0x30020064) // reg_25 - Sof Register -#define reg_pinmux_soft_reg_5 (*(volatile uint32_t*)0x30020068) // reg_26 - Sof Register -#define reg_pinmux_soft_reg_6 (*(volatile uint32_t*)0x3002006C) // reg_27 - Sof Register -#define reg_pinmux_cfg_timer0 (*(volatile uint32_t*)0x30020070) // reg_28 - Timer-0 -#define reg_pinmux_cfg_timer1 (*(volatile uint32_t*)0x30020074) // reg_28 - Timer-1 -#define reg_pinmux_cfg_timer2 (*(volatile uint32_t*)0x30020078) // reg_28 - Timer-2 -
diff --git a/verilog/dv/common/riscduino_board b/verilog/dv/common/riscduino_board index 5888540..09f42e8 160000 --- a/verilog/dv/common/riscduino_board +++ b/verilog/dv/common/riscduino_board
@@ -1 +1 @@ -Subproject commit 5888540bf2ae57d8c0326778a6d0c25b6ef95d35 +Subproject commit 09f42e80c78b05785fb7088fb3bff16b2044c6c8
diff --git a/verilog/dv/firmware/sc_print.c b/verilog/dv/firmware/sc_print.c index b736d42..f2a1192 100644 --- a/verilog/dv/firmware/sc_print.c +++ b/verilog/dv/firmware/sc_print.c
@@ -20,16 +20,37 @@ #include <stdarg.h> #include "sc_print.h" -#define SC_SIM_OUTPORT (0xf0000000) -#define CHAR_BIT (8) +#define SC_SIM_OUTPORT (0xf0000000) +#define REG_MPRJ_UART_CTRL (0x10010000) +#define REG_MPRJ_UART_INTR_STAT (0x10010004) +#define REG_MPRJ_UART_BAUD_CTRL1 (0x10010008) +#define REG_MPRJ_UART_BAUD_CTRL2 (0x1001000C) +#define REG_MPRJ_UART_STAT (0x10010010) +#define REG_MPRJ_UART_TXDATA (0x10010014) +#define REG_MPRJ_UART_RXDATA (0x10010018) +#define REG_MPRJ_UART_TFIFO_STAT (0x1001001C) +#define REG_MPRJ_UART_RFIFO_STAT (0x10010020) -static void -sc_puts(long str, long strlen) { +#define CHAR_BIT (8) +/** +static void sc_puts(long str, long strlen) { volatile char *out_ptr = (volatile char*)SC_SIM_OUTPORT; const char *in_ptr = (const char*)str; for (long len = strlen; len > 0; --len) *out_ptr = *in_ptr++; } +**/ +static void sc_puts(long str, long strlen) { + volatile char *out_ptr = (volatile char*)REG_MPRJ_UART_TXDATA; + volatile char *status = (volatile char*)REG_MPRJ_UART_STAT; + const char *in_ptr = (const char*)str; + for (long len = strlen; len > 0; --len) { + //if((*status & 0x1) != 0x1) { // check UART TX fifo is not full + *out_ptr = *in_ptr++; + //} + } + +} #undef putchar int
diff --git a/verilog/dv/risc_boot/Makefile b/verilog/dv/risc_boot/Makefile index a4e04d4..2601fc5 100644 --- a/verilog/dv/risc_boot/Makefile +++ b/verilog/dv/risc_boot/Makefile
@@ -53,7 +53,7 @@ export TOOLS ?= /opt/riscv32i export GCC_PATH ?= $(TOOLS)/bin -export GCC_PREFIX?= riscv32-unknown-linux-gnu +GCC_PREFIX?=riscv32-unknown-elf ############## USER SPECIFIC DEFINE ##################
diff --git a/verilog/dv/risc_boot/risc_boot.c b/verilog/dv/risc_boot/risc_boot.c index 00d308d..8ff48ff 100644 --- a/verilog/dv/risc_boot/risc_boot.c +++ b/verilog/dv/risc_boot/risc_boot.c
@@ -160,11 +160,11 @@ // Remove All Reset - reg_pinmux_gbl_cfg0 = 0x11F; + reg_glbl_cfg0 = 0x11F; // Enable UART Multi Functional Ports - reg_pinmux_gpio_multi_func = 0x100; + reg_glbl_multi_func = 0x100; // configure the user uart reg_mprj_uart_reg0 = 0x7;
diff --git a/verilog/dv/risc_boot/user_uart.dump b/verilog/dv/risc_boot/user_uart.dump new file mode 100644 index 0000000..4d5b8b2 --- /dev/null +++ b/verilog/dv/risc_boot/user_uart.dump
@@ -0,0 +1,212 @@ + +user_uart.elf: file format elf32-littleriscv + + +Disassembly of section .text.init: + +00000000 <SIM_EXIT-0xf4>: + ... + +000000f4 <SIM_EXIT>: + f4: 00000013 nop + +000000f8 <SIM_STOP>: + f8: 0000006f j f8 <SIM_STOP> + fc: ffff 0xffff + fe: ffff 0xffff + +Disassembly of section .text: + +00000100 <machine_trap_entry-0xc0>: + ... + +000001c0 <machine_trap_entry>: + 1c0: 1200006f j 2e0 <trap_entry> + 1c4: 00000013 nop + 1c8: 00000013 nop + 1cc: 00000013 nop + 1d0: 00000013 nop + 1d4: 00000013 nop + 1d8: 00000013 nop + 1dc: 00000013 nop + 1e0: 00000013 nop + 1e4: 00000013 nop + 1e8: 00000013 nop + 1ec: 00000013 nop + 1f0: 00000013 nop + 1f4: 00000013 nop + 1f8: 00000013 nop + 1fc: 00000013 nop + +00000200 <_start>: + 200: 00000093 li ra,0 + 204: 00000113 li sp,0 + 208: 00000193 li gp,0 + 20c: 00000213 li tp,0 + 210: 00000293 li t0,0 + 214: 00000313 li t1,0 + 218: 00000393 li t2,0 + 21c: 00000413 li s0,0 + 220: 00000493 li s1,0 + 224: 00000513 li a0,0 + 228: 00000593 li a1,0 + 22c: 00000613 li a2,0 + 230: 00000693 li a3,0 + 234: 00000713 li a4,0 + 238: 00000793 li a5,0 + 23c: 00000813 li a6,0 + 240: 00000893 li a7,0 + 244: 00000913 li s2,0 + 248: 00000993 li s3,0 + 24c: 00000a13 li s4,0 + 250: 00000a93 li s5,0 + 254: 00000b13 li s6,0 + 258: 00000b93 li s7,0 + 25c: 00000c13 li s8,0 + 260: 00000c93 li s9,0 + 264: 00000d13 li s10,0 + 268: 00000d93 li s11,0 + 26c: 00000e13 li t3,0 + 270: 00000e93 li t4,0 + 274: 00000f13 li t5,0 + 278: 00000f93 li t6,0 + 27c: 08000197 auipc gp,0x8000 + 280: 58418193 addi gp,gp,1412 # 8000800 <__global_pointer$> + 284: 08000597 auipc a1,0x8000 + 288: d7c58593 addi a1,a1,-644 # 8000000 <__BSS_START__> + 28c: 08000617 auipc a2,0x8000 + 290: d7460613 addi a2,a2,-652 # 8000000 <__BSS_START__> + 294: a021 j 29c <_start+0x9c> + 296: 0005a023 sw zero,0(a1) + 29a: 0591 addi a1,a1,4 + 29c: fec59de3 bne a1,a2,296 <_start+0x96> + 2a0: 0c480117 auipc sp,0xc480 + 2a4: 56010113 addi sp,sp,1376 # c480800 <__C_STACK_TOP__> + 2a8: 0c4902b7 lui t0,0xc490 + 2ac: 4305 li t1,1 + 2ae: 0062a023 sw t1,0(t0) # c490000 <__C_STACK_TOP__+0xf800> + 2b2: 0c4902b7 lui t0,0xc490 + 2b6: 00428293 addi t0,t0,4 # c490004 <__C_STACK_TOP__+0xf804> + 2ba: 06300313 li t1,99 + 2be: 0062a023 sw t1,0(t0) + 2c2: 0c4902b7 lui t0,0xc490 + 2c6: 01028293 addi t0,t0,16 # c490010 <__C_STACK_TOP__+0xf810> + 2ca: 537d li t1,-1 + 2cc: 0062a023 sw t1,0(t0) + 2d0: 0062a223 sw t1,4(t0) + 2d4: 4501 li a0,0 + 2d6: 4581 li a1,0 + 2d8: 0a8000ef jal ra,380 <main> + 2dc: 0c40006f j 3a0 <sc_exit> + +000002e0 <trap_entry>: + 2e0: 716d addi sp,sp,-272 + 2e2: c206 sw ra,4(sp) + 2e4: c40a sw sp,8(sp) + 2e6: c60e sw gp,12(sp) + 2e8: c812 sw tp,16(sp) + 2ea: ca16 sw t0,20(sp) + 2ec: cc1a sw t1,24(sp) + 2ee: ce1e sw t2,28(sp) + 2f0: d022 sw s0,32(sp) + 2f2: d226 sw s1,36(sp) + 2f4: d42a sw a0,40(sp) + 2f6: d62e sw a1,44(sp) + 2f8: d832 sw a2,48(sp) + 2fa: da36 sw a3,52(sp) + 2fc: dc3a sw a4,56(sp) + 2fe: de3e sw a5,60(sp) + 300: c0c2 sw a6,64(sp) + 302: c2c6 sw a7,68(sp) + 304: c4ca sw s2,72(sp) + 306: c6ce sw s3,76(sp) + 308: c8d2 sw s4,80(sp) + 30a: cad6 sw s5,84(sp) + 30c: ccda sw s6,88(sp) + 30e: cede sw s7,92(sp) + 310: d0e2 sw s8,96(sp) + 312: d2e6 sw s9,100(sp) + 314: d4ea sw s10,104(sp) + 316: d6ee sw s11,108(sp) + 318: d8f2 sw t3,112(sp) + 31a: daf6 sw t4,116(sp) + 31c: dcfa sw t5,120(sp) + 31e: defe sw t6,124(sp) + 320: 34202573 csrr a0,mcause + 324: 341025f3 csrr a1,mepc + 328: 860a mv a2,sp + 32a: 048000ef jal ra,372 <handle_trap> + 32e: 4092 lw ra,4(sp) + 330: 4122 lw sp,8(sp) + 332: 41b2 lw gp,12(sp) + 334: 4242 lw tp,16(sp) + 336: 42d2 lw t0,20(sp) + 338: 4362 lw t1,24(sp) + 33a: 43f2 lw t2,28(sp) + 33c: 5402 lw s0,32(sp) + 33e: 5492 lw s1,36(sp) + 340: 5522 lw a0,40(sp) + 342: 55b2 lw a1,44(sp) + 344: 5642 lw a2,48(sp) + 346: 56d2 lw a3,52(sp) + 348: 5762 lw a4,56(sp) + 34a: 57f2 lw a5,60(sp) + 34c: 4806 lw a6,64(sp) + 34e: 4896 lw a7,68(sp) + 350: 4926 lw s2,72(sp) + 352: 49b6 lw s3,76(sp) + 354: 4a46 lw s4,80(sp) + 356: 4ad6 lw s5,84(sp) + 358: 4b66 lw s6,88(sp) + 35a: 4bf6 lw s7,92(sp) + 35c: 5c06 lw s8,96(sp) + 35e: 5c96 lw s9,100(sp) + 360: 5d26 lw s10,104(sp) + 362: 5db6 lw s11,108(sp) + 364: 5e46 lw t3,112(sp) + 366: 5ed6 lw t4,116(sp) + 368: 5f66 lw t5,120(sp) + 36a: 5ff6 lw t6,124(sp) + 36c: 6151 addi sp,sp,272 + 36e: 30200073 mret + +00000372 <handle_trap>: + 372: d83ff06f j f4 <SIM_EXIT> + ... + +00000380 <main>: + 380: 10010737 lui a4,0x10010 + 384: 531c lw a5,32(a4) + 386: dffd beqz a5,384 <main+0x4> + 388: 01872283 lw t0,24(a4) # 10010018 <__C_STACK_TOP__+0x3b8f818> + 38c: 00572a23 sw t0,20(a4) + 390: bfd5 j 384 <main+0x4> + ... + +000003a0 <sc_exit>: + 3a0: 00000297 auipc t0,0x0 + 3a4: d5428293 addi t0,t0,-684 # f4 <SIM_EXIT> + 3a8: 8282 jr t0 + 3aa: 00000013 nop + 3ae: 00000013 nop + 3b2: 00000013 nop + 3b6: 00000013 nop + 3ba: 00000013 nop + 3be: 0001 nop + ... + +Disassembly of section .stack: + +0c480400 <__C_STACK_TOP__-0x400>: + ... + +Disassembly of section .comment: + +00000000 <.comment>: + 0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm + 4: 2820 fld fs0,80(s0) + 6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm + a: 3620 fld fs0,104(a2) + c: 312e fld ft2,232(sp) + e: 302e fld ft0,232(sp) + ...
diff --git a/verilog/dv/riscv_regress/Makefile b/verilog/dv/riscv_regress/Makefile index 609b7fe..d52ebf4 100644 --- a/verilog/dv/riscv_regress/Makefile +++ b/verilog/dv/riscv_regress/Makefile
@@ -16,7 +16,7 @@ export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog ## YIFIVE FIRMWARE YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware -GCC_PREFIX?=riscv32-unknown-elf +GCC_PREFIX?=riscv64-unknown-elf ## Simulation mode: RTL/GL @@ -158,7 +158,7 @@ todo_list := $(bld_dir)/todo.txt # Environment -export CROSS_PREFIX ?= riscv32-unknown-elf- +export CROSS_PREFIX ?= riscv64-unknown-elf- export RISCV_GCC ?= $(CROSS_PREFIX)gcc export RISCV_OBJDUMP ?= $(CROSS_PREFIX)objdump -D export RISCV_OBJCOPY ?= $(CROSS_PREFIX)objcopy -O verilog
diff --git a/verilog/dv/riscv_regress/tests/isr_sample/timer.h b/verilog/dv/riscv_regress/tests/isr_sample/timer.h index 827b849..c306b2f 100644 --- a/verilog/dv/riscv_regress/tests/isr_sample/timer.h +++ b/verilog/dv/riscv_regress/tests/isr_sample/timer.h
@@ -78,7 +78,7 @@ .macro _run_timer li TMP, MEM_MTIME_CTRL lw TMP2, 0(TMP) - li TMP3, (1 << YCR1_MTIME_CTRL_EN) + li TMP3, (1 << YCR_MTIME_CTRL_EN) or TMP2, TMP2, TMP3 sw TMP2, 0(TMP) .endm @@ -86,7 +86,7 @@ .macro _stop_timer li TMP, MEM_MTIME_CTRL lw TMP2, 0(TMP) - li TMP3, (1 << YCR1_MTIME_CTRL_EN) + li TMP3, (1 << YCR_MTIME_CTRL_EN) not TMP3, TMP3 and TMP2, TMP2, TMP3 sw TMP2, 0(TMP)
diff --git a/verilog/dv/riscv_regress/user_risc_regress_tb.v b/verilog/dv/riscv_regress/user_risc_regress_tb.v index ceaec71..e444404 100644 --- a/verilog/dv/riscv_regress/user_risc_regress_tb.v +++ b/verilog/dv/riscv_regress/user_risc_regress_tb.v
@@ -291,7 +291,7 @@ repeat (2) @(posedge clock); #1; // Remove WB and SPI Reset, Keep SDARM and CORE under Reset - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h01F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F); // CS#2 Switch to QSPI Mode wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_BANK_SEL,'h1000); // Change the Bank Sel 1000 @@ -305,10 +305,10 @@ // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); end else begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); end end
diff --git a/verilog/dv/uart_master/Makefile b/verilog/dv/uart_master/Makefile index 7bcd2b7..3ec839e 100644 --- a/verilog/dv/uart_master/Makefile +++ b/verilog/dv/uart_master/Makefile
@@ -51,15 +51,12 @@ ## Compiler Information ####################################################################### -export GCC_PATH?= $(TOOLS)/bin -export GCC_PREFIX?= riscv32-unknown-linux-gnu +export TOOLS ?= /opt/riscv32i +export GCC_PATH ?= $(TOOLS)/bin +GCC_PREFIX?=riscv32-unknown-elf -############## USER SPECIFIC DEFINE ################## -YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware - -###################################################### @@ -153,28 +150,30 @@ ############################################################################## %.vvp: %_tb.v %.hex + +## RTL ifeq ($(SIM),RTL) ifeq ($(DUMP),OFF) - iverilog -g2005-sv -Ttyp -DFUNCTIONAL -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#1 \ + iverilog -g2005-sv -Ttyp -DFUNCTIONAL -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#0.1 \ -f$(VERILOG_PATH)/includes/includes.rtl.caravel \ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) -o $@ $< else - iverilog -g2005-sv -DWFDUMP -Ttyp -DFUNCTIONAL -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#1 \ + iverilog -g2005-sv -DWFDUMP -Ttyp -DFUNCTIONAL -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#0.1 \ -f$(VERILOG_PATH)/includes/includes.rtl.caravel \ -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) -o $@ $< endif -endif +endif -## GL +##GL ifeq ($(SIM),GL) - ifeq ($(CONFIG),caravel_user_project) - iverilog -Ttyp -DFUNCTIONAL -DGL -DUSE_POWER_PINS -DUNIT_DELAY=#1 \ + ifeq ($(DUMP),OFF) + iverilog -Ttyp -DFUNCTIONAL -DGL -DUSE_POWER_PINS -DUNIT_DELAY=#0.1 \ -f$(VERILOG_PATH)/includes/includes.gl.caravel \ -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) -o $@ $< else - iverilog -Ttyp -DFUNCTIONAL -DGL -DUSE_POWER_PINS -DUNIT_DELAY=#1 \ - -f$(VERILOG_PATH)/includes/includes.gl.$(CONFIG) \ - -f$(CARAVEL_PATH)/gl/__user_project_wrapper.v -o $@ $< + iverilog -Ttyp -DWFDUMP -DFUNCTIONAL -DGL -DUSE_POWER_PINS -DUNIT_DELAY=#0.1 \ + -f$(VERILOG_PATH)/includes/includes.gl.caravel \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) -o $@ $< endif endif @@ -223,3 +222,9 @@ \rm -f *.elf *.hex *.bin *.vvp *.log *.vcd *.lst *.hexe .PHONY: clean hex all + + + + + +
diff --git a/verilog/dv/uart_master/uart_master_tb.v b/verilog/dv/uart_master/uart_master_tb.v index 2b021ee..f49daab 100644 --- a/verilog/dv/uart_master/uart_master_tb.v +++ b/verilog/dv/uart_master/uart_master_tb.v
@@ -138,19 +138,19 @@ $display("Monitor: Writing expected value"); test_fail = 0; - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,32'h11223344); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,32'h22334455); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,32'h33445566); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,32'h44556677); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,32'h55667788); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,32'h66778899); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,32'h11223344); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,32'h22334455); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,32'h33445566); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,32'h44556677); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,32'h55667788); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,32'h66778899); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,32'h11223344); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,32'h22334455); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,32'h33445566); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,32'h44556677); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,32'h55667788); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,32'h66778899); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,32'h11223344); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,32'h22334455); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,32'h33445566); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,32'h44556677); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,32'h55667788); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,32'h66778899); $display("###################################################"); if(test_fail == 0) begin
diff --git a/verilog/dv/user_aes/user_aes.c b/verilog/dv/user_aes/user_aes.c index f78b8fe..cd1bfec 100644 --- a/verilog/dv/user_aes/user_aes.c +++ b/verilog/dv/user_aes/user_aes.c
@@ -40,36 +40,20 @@ static int test_decrypt_ecb(void); static void test_encrypt_ecb_verbose(void); -#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) -#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) -#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) -#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) -#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) -#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) -#define reg_mprj_globl_reg6 (*(volatile uint32_t*)0x10020018) -#define reg_mprj_globl_reg7 (*(volatile uint32_t*)0x1002001C) -#define reg_mprj_globl_reg8 (*(volatile uint32_t*)0x10020020) -#define reg_mprj_globl_reg9 (*(volatile uint32_t*)0x10020024) -#define reg_mprj_globl_reg10 (*(volatile uint32_t*)0x10020028) -#define reg_mprj_globl_reg11 (*(volatile uint32_t*)0x1002002C) -#define reg_mprj_globl_reg12 (*(volatile uint32_t*)0x10020030) -#define reg_mprj_globl_reg13 (*(volatile uint32_t*)0x10020034) -#define reg_mprj_globl_reg14 (*(volatile uint32_t*)0x10020038) -#define reg_mprj_globl_reg15 (*(volatile uint32_t*)0x1002003C) -#define reg_mprj_globl_reg16 (*(volatile uint32_t*)0x10020040) -#define reg_mprj_globl_reg17 (*(volatile uint32_t*)0x10020044) -#define reg_mprj_globl_reg18 (*(volatile uint32_t*)0x10020048) -#define reg_mprj_globl_reg19 (*(volatile uint32_t*)0x1002004C) -#define reg_mprj_globl_reg20 (*(volatile uint32_t*)0x10020050) -#define reg_mprj_globl_reg21 (*(volatile uint32_t*)0x10020054) -#define reg_mprj_globl_reg22 (*(volatile uint32_t*)0x10020058) -#define reg_mprj_globl_reg23 (*(volatile uint32_t*)0x1002005C) -#define reg_mprj_globl_reg24 (*(volatile uint32_t*)0x10020060) -#define reg_mprj_globl_reg25 (*(volatile uint32_t*)0x10020064) -#define reg_mprj_globl_reg26 (*(volatile uint32_t*)0x10020068) -#define reg_mprj_globl_reg27 (*(volatile uint32_t*)0x1002006C) +#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) // Chip ID +#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) // Global Config-0 +#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) // Global Config-1 +#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) // Global Interrupt Mask +#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) // Global Interrupt +#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) // Multi functional sel +#define reg_mprj_globl_soft0 (*(volatile uint32_t*)0x10020018) // Sof Register-0 +#define reg_mprj_globl_soft1 (*(volatile uint32_t*)0x1002001C) // Sof Register-1 +#define reg_mprj_globl_soft2 (*(volatile uint32_t*)0x10020020) // Sof Register-2 +#define reg_mprj_globl_soft3 (*(volatile uint32_t*)0x10020024) // Sof Register-3 +#define reg_mprj_globl_soft4 (*(volatile uint32_t*)0x10020028) // Sof Register-4 +#define reg_mprj_globl_soft5 (*(volatile uint32_t*)0x1002002C) // Sof Register-5 -#define reg_mprg_pinmux_gpio_odata (*(volatile uint32_t*)0x10020018) +#define reg_mprg_gpio_odata (*(volatile uint32_t*)0x1002004C) int main(void) { @@ -86,34 +70,34 @@ return 0; #endif - reg_mprg_pinmux_gpio_odata = 0x00000100; - reg_mprj_globl_reg23 = 0x00000000; + reg_mprg_gpio_odata = 0x00000100; + reg_mprj_globl_soft0 = 0x00000000; exit = test_encrypt_cbc(); - reg_mprg_pinmux_gpio_odata = 0x00000200; - reg_mprj_globl_reg23 = exit; + reg_mprg_gpio_odata = 0x00000200; + reg_mprj_globl_soft0 = exit; exit += test_decrypt_cbc(); - reg_mprg_pinmux_gpio_odata = 0x00000300; - reg_mprj_globl_reg23 = exit; + reg_mprg_gpio_odata = 0x00000300; + reg_mprj_globl_soft0 = exit; exit += test_encrypt_ctr(); - reg_mprg_pinmux_gpio_odata = 0x00000400; - reg_mprj_globl_reg23 = exit; + reg_mprg_gpio_odata = 0x00000400; + reg_mprj_globl_soft0 = exit; exit += test_decrypt_ctr(); - reg_mprg_pinmux_gpio_odata = 0x00000500; - reg_mprj_globl_reg23 = exit; + reg_mprg_gpio_odata = 0x00000500; + reg_mprj_globl_soft0 = exit; exit += test_decrypt_ecb(); - reg_mprg_pinmux_gpio_odata = 0x00000600; - reg_mprj_globl_reg23 = exit; + reg_mprg_gpio_odata = 0x00000600; + reg_mprj_globl_soft0 = exit; exit += test_encrypt_ecb(); - reg_mprg_pinmux_gpio_odata = 0x00000700; - reg_mprj_globl_reg23 = exit; + reg_mprg_gpio_odata = 0x00000700; + reg_mprj_globl_soft0 = exit; test_encrypt_ecb_verbose(); - reg_mprg_pinmux_gpio_odata = 0x00000800; - reg_mprj_globl_reg23 = exit; + reg_mprg_gpio_odata = 0x00000800; + reg_mprj_globl_soft0 = exit; if(exit == 0) { - reg_mprg_pinmux_gpio_odata = 0x00001800; + reg_mprg_gpio_odata = 0x00001800; } else { - reg_mprg_pinmux_gpio_odata = 0x0000A800; + reg_mprg_gpio_odata = 0x0000A800; } return exit;
diff --git a/verilog/dv/user_aes/user_aes_tb.v b/verilog/dv/user_aes/user_aes_tb.v index 3c46014..8d236d4 100644 --- a/verilog/dv/user_aes/user_aes_tb.v +++ b/verilog/dv/user_aes/user_aes_tb.v
@@ -183,17 +183,17 @@ wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); // Enable UART Multi Functional Ports - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_MULTI_FUNC,'h100); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_MUTI_FUNC,'h100); repeat (2) @(posedge clock); #1; // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); end else if(d_risc_id == 1) begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); end repeat (100) @(posedge clock); // wait for Processor Get Ready @@ -204,9 +204,9 @@ uart_stick_parity, uart_timeout, uart_divisor); // Set the PORT-B Direction as Output - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_DSEL,'h0000FF00); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_DSEL,'h0000FF00); // Set the GPIO Output data: 0x00000000 - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_ODATA,'h0000000); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_ODATA,'h0000000); fork begin @@ -217,7 +217,7 @@ end join_any - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h00000000); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,read_data,32'h00000000); $display("###################################################"); if(test_fail == 0) begin
diff --git a/verilog/dv/user_basic/user_basic_tb.v b/verilog/dv/user_basic/user_basic_tb.v index bcd24cd..5f1c60b 100644 --- a/verilog/dv/user_basic/user_basic_tb.v +++ b/verilog/dv/user_basic/user_basic_tb.v
@@ -150,10 +150,10 @@ `ifdef WFDUMP initial begin $dumpfile("simx.vcd"); - $dumpvars(0, user_basic_tb); + $dumpvars(1, user_basic_tb); //$dumpvars(1, user_basic_tb.u_top); //$dumpvars(0, user_basic_tb.u_top.u_pll); - //$dumpvars(1, user_basic_tb.u_top.u_wb_host); + $dumpvars(0, user_basic_tb.u_top.u_wb_host); //$dumpvars(1, user_basic_tb.u_top.u_intercon); //$dumpvars(1, user_basic_tb.u_top.u_intercon); //$dumpvars(1, user_basic_tb.u_top.u_pinmux); @@ -167,10 +167,6 @@ end -// Hook to pll clock -wire pll_clock = u_top.u_wb_host.u_clkbuf_pll.X; - - initial begin @@ -244,35 +240,37 @@ test_step = 10; wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_CLK_CTRL2,{8'h63,8'h69,8'hFF,8'h64}); clock_monitor(5*CLK2_PERIOD,11*CLK2_PERIOD,257*CLK2_PERIOD,6*CLK2_PERIOD); - - $display("###################################################"); - $display("Monitor: Checking the PLL:"); - $display("###################################################"); + + `ifndef GL + $display("###################################################"); + $display("Monitor: Checking the PLL:"); + $display("###################################################"); test_step = 11; // Set PLL enable, no DCO mode ; Set PLL output divider to 0x03 - wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,{16'h0,1'b1,3'b100,4'b0000,8'h2}); - wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_PLL_CTRL,{1'b0,5'h3,26'h00000}); - repeat (100) @(posedge clock); + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,{16'h0,1'b1,3'b100,4'b0000,8'h2}); + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_PLL_CTRL,{1'b0,5'h3,26'h00000}); + repeat (100) @(posedge clock); pll_clock_monitor(5); test_step = 12; // Set PLL enable, DCO mode ; Set PLL output divider to 0x01 - wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,{16'h0,1'b1,3'b000,4'b0000,8'h2}); - wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_PLL_CTRL,{1'b1,5'h0,26'h0000}); - repeat (100) @(posedge clock); + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,{16'h0,1'b1,3'b000,4'b0000,8'h2}); + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_PLL_CTRL,{1'b1,5'h0,26'h0000}); + repeat (100) @(posedge clock); pll_clock_monitor(4); - $display("###################################################"); - $display("Monitor: Monitor Clock output:"); - $display("###################################################"); + $display("###################################################"); + $display("Monitor: Monitor Clock output:"); + $display("###################################################"); $display("Monitor: CPU: CLOCK2/(2+3), USB: CLOCK2/(2+9), RTC: CLOCK2/(2+255), WBS:CLOCK2/(2+4)"); test_step = 13; - wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_CLK_CTRL2,{8'h63,8'h69,8'hFF,8'h64}); + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_CLK_CTRL2,{8'h63,8'h69,8'hFF,8'h64}); // Set PLL enable, DCO mode ; Set PLL output divider to 0x01 - wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,{16'h0,1'b1,3'b000,4'b0000,8'h2}); - wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_PLL_CTRL,{1'b1,5'h0,26'h0000}); + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,{16'h0,1'b1,3'b000,4'b0000,8'h2}); + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_PLL_CTRL,{1'b1,5'h0,26'h0000}); dbg_clk_monitor(79,60,5*CLK2_PERIOD,11*CLK2_PERIOD,257*CLK2_PERIOD,6*CLK2_PERIOD); + `endif $display("###################################################"); $display("Monitor: Checking the chip signature :"); @@ -281,9 +279,9 @@ // Remove Wb/PinMux Reset wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h8273_8343); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h2007_2022); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h0004_8000); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,read_data,32'h8273_8343); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,read_data,32'h1508_2022); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,read_data,32'h0005_0000); end @@ -347,7 +345,7 @@ // IOs - .io_in (io_in) , + .io_in ('h0) , .io_out (io_out) , .io_oeb (io_oeb) , @@ -391,7 +389,12 @@ task pll_clock_monitor; input [15:0] exp_period; begin - force clock_mon = u_top.u_wb_host.u_clkbuf_pll.X; + //force clock_mon = u_top.u_wb_host.pll_clk_out[0]; + `ifdef GL + force clock_mon = u_top.u_wb_host.pll_clk_out[0]; + `else + force clock_mon = u_top.u_wb_host.u_clkbuf_pll.X; + `endif check_clock_period("PLL CLock",exp_period); release clock_mon; end
diff --git a/verilog/dv/user_cache_bypass/user_cache_bypass.c b/verilog/dv/user_cache_bypass/user_cache_bypass.c index 9c99cd9..a3e9b0d 100644 --- a/verilog/dv/user_cache_bypass/user_cache_bypass.c +++ b/verilog/dv/user_cache_bypass/user_cache_bypass.c
@@ -19,42 +19,28 @@ #define uint32_t long #define uint16_t int -#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) -#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) -#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) -#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) -#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) -#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) -#define reg_mprj_globl_reg6 (*(volatile uint32_t*)0x10020018) -#define reg_mprj_globl_reg7 (*(volatile uint32_t*)0x1002001C) -#define reg_mprj_globl_reg8 (*(volatile uint32_t*)0x10020020) -#define reg_mprj_globl_reg9 (*(volatile uint32_t*)0x10020024) -#define reg_mprj_globl_reg10 (*(volatile uint32_t*)0x10020028) -#define reg_mprj_globl_reg11 (*(volatile uint32_t*)0x1002002C) -#define reg_mprj_globl_reg12 (*(volatile uint32_t*)0x10020030) -#define reg_mprj_globl_reg13 (*(volatile uint32_t*)0x10020034) -#define reg_mprj_globl_reg14 (*(volatile uint32_t*)0x10020038) -#define reg_mprj_globl_reg15 (*(volatile uint32_t*)0x1002003C) -#define reg_mprj_globl_reg16 (*(volatile uint32_t*)0x10020040) -#define reg_mprj_globl_reg17 (*(volatile uint32_t*)0x10020044) -#define reg_mprj_globl_reg18 (*(volatile uint32_t*)0x10020048) -#define reg_mprj_globl_reg19 (*(volatile uint32_t*)0x1002004C) -#define reg_mprj_globl_reg20 (*(volatile uint32_t*)0x10020050) -#define reg_mprj_globl_reg21 (*(volatile uint32_t*)0x10020054) -#define reg_mprj_globl_reg22 (*(volatile uint32_t*)0x10020058) -#define reg_mprj_globl_reg23 (*(volatile uint32_t*)0x1002005C) -#define reg_mprj_globl_reg24 (*(volatile uint32_t*)0x10020060) -#define reg_mprj_globl_reg25 (*(volatile uint32_t*)0x10020064) -#define reg_mprj_globl_reg26 (*(volatile uint32_t*)0x10020068) -#define reg_mprj_globl_reg27 (*(volatile uint32_t*)0x1002006C) +#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) // Chip ID +#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) // Global Config-0 +#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) // Global Config-1 +#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) // Global Interrupt Mask +#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) // Global Interrupt +#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) // Multi functional sel +#define reg_mprj_globl_soft0 (*(volatile uint32_t*)0x10020018) // Sof Register-0 +#define reg_mprj_globl_soft1 (*(volatile uint32_t*)0x1002001C) // Sof Register-1 +#define reg_mprj_globl_soft2 (*(volatile uint32_t*)0x10020020) // Sof Register-2 +#define reg_mprj_globl_soft3 (*(volatile uint32_t*)0x10020024) // Sof Register-3 +#define reg_mprj_globl_soft4 (*(volatile uint32_t*)0x10020028) // Sof Register-4 +#define reg_mprj_globl_soft5 (*(volatile uint32_t*)0x1002002C) // Sof Register-5 + + // ------------------------------------------------------------------------- // Test copying code into SRAM and running it from there. // ------------------------------------------------------------------------- void test_function() { - reg_mprj_globl_reg24 = 0x33445566; // Sig-3 - reg_mprj_globl_reg25 = 0x44556677; // Sig-4 + reg_mprj_globl_soft2 = 0x33445566; // Sig-2 + reg_mprj_globl_soft3 = 0x44556677; // Sig-3 return; } @@ -69,18 +55,18 @@ src_ptr = &test_function; dst_ptr = func; - reg_mprj_globl_reg22 = 0x11223344; // Sig-1 + reg_mprj_globl_soft0 = 0x11223344; // Sig-0 while (src_ptr < &main) { *(dst_ptr++) = *(src_ptr++); } // Call the routine in SRAM - reg_mprj_globl_reg23 = 0x22334455; // Sig-2 + reg_mprj_globl_soft1 = 0x22334455; // Sig-1 ((void(*)())func)(); - reg_mprj_globl_reg26 = 0x55667788; - reg_mprj_globl_reg27 = 0x66778899; + reg_mprj_globl_soft4 = 0x55667788; + reg_mprj_globl_soft5 = 0x66778899; // Signal end of test }
diff --git a/verilog/dv/user_cache_bypass/user_cache_bypass_tb.v b/verilog/dv/user_cache_bypass/user_cache_bypass_tb.v index c5d1478..45a24d3 100644 --- a/verilog/dv/user_cache_bypass/user_cache_bypass_tb.v +++ b/verilog/dv/user_cache_bypass/user_cache_bypass_tb.v
@@ -135,15 +135,15 @@ repeat (2) @(posedge clock); #1; // Set the icahce and dcache bypass - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG1,{4'b0,2'b11,2'b00,8'b0,16'b0}); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG1,{4'b0,2'b11,2'b00,8'b0,16'b0}); // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); end else begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); end @@ -165,12 +165,12 @@ // 0x3000002C = 0x66778899; test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,read_data,32'h11223344); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,read_data,32'h22334455); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,read_data,32'h33445566); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,read_data,32'h44556677); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,read_data,32'h55667788); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,read_data,32'h66778899);
diff --git a/verilog/dv/user_gpio/user_gpio_tb.v b/verilog/dv/user_gpio/user_gpio_tb.v index 5a30dd9..0451459 100644 --- a/verilog/dv/user_gpio/user_gpio_tb.v +++ b/verilog/dv/user_gpio/user_gpio_tb.v
@@ -217,7 +217,7 @@ /*****************************/ - wire [15:0] irq_lines = u_top.u_pinmux.u_pinmux_reg.irq_lines; + wire [15:0] irq_lines = u_top.u_pinmux.u_glbl_reg.irq_lines; initial begin clock = 0; @@ -252,34 +252,34 @@ wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); // Disable Multi func - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_MULTI_FUNC,'h000); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_MUTI_FUNC,'h000); /************* GPIO As Output ******************/ $display("#####################################"); $display("Step-1: Testing GPIO As Output "); // Set the Direction as Output - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_DSEL,'hFFFFFFFF); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_DSEL,'hFFFFFFFF); // Set the GPIO Output data: 0x55555555 - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_ODATA,'h55555555); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_ODATA,'h55555555); cmp_gpio_output(8'h55,8'h55,8'h55,8'h55); // Set the GPIO Output data: 0xAAAAAAAA - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_ODATA,'hAAAAAAAA); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_ODATA,'hAAAAAAAA); cmp_gpio_output(8'hAA,8'hAA,8'hAA,8'hAA); // Set the GPIO Output data: 0x5A5A5A5A5A5A - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_ODATA,'h5A5A5A5A); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_ODATA,'h5A5A5A5A); cmp_gpio_output(8'h5A,8'h5A,8'h5A,8'h5A); // Set the GPIO Output data: 0xA5A5A5A5A5A5 - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_ODATA,'hA5A5A5A5); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_ODATA,'hA5A5A5A5); cmp_gpio_output(8'hA5,8'hA5,8'hA5,8'hA5); /************* GPIO As Input ******************/ $display("#####################################"); $display("Step-2: Testing GPIO As Input "); // Set the Direction as Input - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_DSEL,'h00000000); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_DSEL,'h00000000); cmp_gpio_input(8'h55,8'h55,8'h55,8'h55); cmp_gpio_input(8'hAA,8'hAA,8'hAA,8'hAA); @@ -290,12 +290,12 @@ $display("#####################################"); $display("Step-3: Testing GPIO As Posedge Interrupt "); // Set the Direction as Input - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_DSEL,'h00000000); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_DSEL,'h00000000); // Set GPIO for posedge Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_MASK,'hFFFFFFFF); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_POS_INTR,'hFFFFFFFF); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_NEG_INTR,'h00000000); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR_MSK,'hFFFF); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_MASK,'hFFFFFFFF); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_POS_INTR_SEL,'hFFFFFFFF); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_NEG_INTR_SEL,'h00000000); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_MSK,'hFFFF); // Drive GPIO with 0x55 cmp_gpio_pos_intr(8'h55,8'h55,8'h55,8'h55); @@ -314,12 +314,12 @@ $display("#####################################"); $display("Step-3: Testing GPIO As Negedge Interrupt "); // Set the Direction as Input - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_DSEL,'h00000000); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_DSEL,'h00000000); // Set GPIO for negedge Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_MASK,'hFFFFFFFF); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_POS_INTR,'h00000000); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_NEG_INTR,'hFFFFFFFF); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR_MSK,'hFFFF); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_MASK,'hFFFFFFFF); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_POS_INTR_SEL,'h00000000); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_NEG_INTR_SEL,'hFFFFFFFF); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_MSK,'hFFFF); // Drive GPIO with 0x55 cmp_gpio_neg_intr(8'h55,8'h55,8'h55,8'h55); @@ -506,7 +506,7 @@ port_c_out = port_c; port_d_out = port_d; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_IDATA,read_data,{port_d,port_c & 8'h7F,port_b,8'h0}); + wb_user_core_read_check(`ADDR_SPACE_GPIO+`GPIO_CFG_IDATA,read_data,{port_d,port_c & 8'h7F,port_b,8'h0}); end endtask @@ -523,12 +523,12 @@ cmp_gpio_input(8'h00,8'h00,8'h00,8'h00); // Clear Global Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,'h00008000); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_STAT,'h00008000); // Clear all the Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_CLR,'hFFFFFFFF); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_CLR,'hFFFFFFFF); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_STAT,read_data,32'h0); + wb_user_core_read_check(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_STAT,read_data,32'h0); // Drive Ports cmp_gpio_input(port_d,port_c,port_b,port_a); @@ -544,10 +544,10 @@ repeat (20) @(posedge clock); // Check the GPIO Interrupt - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_STAT,read_data,{port_d,port_c & 8'h7F,port_b,8'h0}); + wb_user_core_read_check(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_STAT,read_data,{port_d,port_c & 8'h7F,port_b,8'h0}); // Check The Global Interrupt - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data,32'h8000); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_STAT,read_data,32'h8000); if(irq_lines[15] != 1'b1) begin $display("ERROR: Global GPIO Interrupt not detected"); @@ -555,15 +555,15 @@ end // Clear The GPIO Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_CLR,32'hFFFFFFFF); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_CLR,32'hFFFFFFFF); // Clear GPIO Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,'h8000); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_STAT,'h8000); // Check Interrupt are cleared - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data,32'h0); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_STAT,read_data,32'h0); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_STAT,read_data,32'h0); + wb_user_core_read_check(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_STAT,read_data,32'h0); if(irq_lines[15] != 1'b0) begin $display("ERROR: Global GPIO Interrupt is not cleared"); `TB_GLBL.test_fail = 1; @@ -584,11 +584,11 @@ cmp_gpio_input(8'hFF,8'hFF,8'hFF,8'hFF); // Clear Global Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,'h00008000); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_STAT,'h00008000); // Clear all the Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_CLR,'hFFFFFFFF); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_STAT,read_data,32'h0); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_CLR,'hFFFFFFFF); + wb_user_core_read_check(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_STAT,read_data,32'h0); // Drive Ports cmp_gpio_input(port_d,port_c,port_b,port_a); @@ -603,10 +603,10 @@ repeat (20) @(posedge clock); // Neg edge interrupt is will compliment of input value - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_STAT,read_data,{port_d ^ 8'hFF,(port_c ^ 8'hFF) & 8'h7F,port_b ^ 8'hFF,8'h0}); + wb_user_core_read_check(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_STAT,read_data,{port_d ^ 8'hFF,(port_c ^ 8'hFF) & 8'h7F,port_b ^ 8'hFF,8'h0}); // Check The Global Interrupt - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data,32'h8000); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_STAT,read_data,32'h8000); if(irq_lines[15] != 1'b1) begin $display("ERROR: Global GPIO Interrupt not detected"); @@ -614,14 +614,14 @@ end // Clear The GPIO Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_CLR,32'hFFFFFFFF); + wb_user_core_write(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_CLR,32'hFFFFFFFF); // Clear GPIO Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,'h8000); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_STAT,'h8000); // Check Interrupt are cleared - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data,32'h0); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_INTR_STAT,read_data,32'h0); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_STAT,read_data,32'h0); + wb_user_core_read_check(`ADDR_SPACE_GPIO+`GPIO_CFG_INTR_STAT,read_data,32'h0); if(irq_lines[15] != 1'b0) begin $display("ERROR: Global GPIO Interrupt is not cleared");
diff --git a/verilog/dv/user_i2cm/user_i2cm_tb.v b/verilog/dv/user_i2cm/user_i2cm_tb.v index e41e0d2..87b94a3 100644 --- a/verilog/dv/user_i2cm/user_i2cm_tb.v +++ b/verilog/dv/user_i2cm/user_i2cm_tb.v
@@ -146,10 +146,10 @@ wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h01); // Enable I2C Multi Functional Ports - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_MULTI_FUNC,'h8000); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_MUTI_FUNC,'h8000); // Remove i2m reset - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h010); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h010); repeat (100) @(posedge clock);
diff --git a/verilog/dv/user_mcore/Makefile b/verilog/dv/user_mcore_test1/Makefile similarity index 89% copy from verilog/dv/user_mcore/Makefile copy to verilog/dv/user_mcore_test1/Makefile index f635413..9aa71f1 100644 --- a/verilog/dv/user_mcore/Makefile +++ b/verilog/dv/user_mcore_test1/Makefile
@@ -43,7 +43,7 @@ .SUFFIXES: -PATTERN = user_mcore +PATTERN = user_mcore_test1 all: ${PATTERN:=.vcd} @@ -51,13 +51,13 @@ vvp: ${PATTERN:=.vvp} %.vvp: %_tb.v - ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -c -I./ -I$(YIFIVE_FIRMWARE_PATH) user_mcore.c -o user_mcore.o + ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -c -I./ -I$(YIFIVE_FIRMWARE_PATH) ${PATTERN}.c -o ${PATTERN}.o ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -c -I./ -I$(YIFIVE_FIRMWARE_PATH) $(YIFIVE_FIRMWARE_PATH)/common_bthread.c -o common_bthread.o ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -D__ASSEMBLY__=1 -c -I./ -I$(YIFIVE_FIRMWARE_PATH) $(YIFIVE_FIRMWARE_PATH)/crt.S -o crt.o - ${GCC_PREFIX}-gcc -o user_mcore.elf -T $(YIFIVE_FIRMWARE_PATH)/link.ld user_mcore.o crt.o common_bthread.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32 -N - ${GCC_PREFIX}-objcopy -O verilog user_mcore.elf user_mcore.hex - ${GCC_PREFIX}-objdump -D user_mcore.elf > user_mcore.dump - rm crt.o user_mcore.o + ${GCC_PREFIX}-gcc -o ${PATTERN}.elf -T $(YIFIVE_FIRMWARE_PATH)/link.ld ${PATTERN}.o crt.o common_bthread.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32 -N + ${GCC_PREFIX}-objcopy -O verilog ${PATTERN}.elf ${PATTERN}.hex + ${GCC_PREFIX}-objdump -D ${PATTERN}.elf > ${PATTERN}.dump + rm crt.o ${PATTERN}.o ifeq ($(SIM),RTL) ifeq ($(DUMP),OFF) iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
diff --git a/verilog/dv/user_mcore/user_mcore.c b/verilog/dv/user_mcore_test1/user_mcore_test1.c similarity index 66% rename from verilog/dv/user_mcore/user_mcore.c rename to verilog/dv/user_mcore_test1/user_mcore_test1.c index 4a5e14d..a77f439 100644 --- a/verilog/dv/user_mcore/user_mcore.c +++ b/verilog/dv/user_mcore_test1/user_mcore_test1.c
@@ -24,34 +24,18 @@ #define uint16_t int #define size 10 -#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) -#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) -#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) -#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) -#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) -#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) -#define reg_mprj_globl_reg6 (*(volatile uint32_t*)0x10020018) -#define reg_mprj_globl_reg7 (*(volatile uint32_t*)0x1002001C) -#define reg_mprj_globl_reg8 (*(volatile uint32_t*)0x10020020) -#define reg_mprj_globl_reg9 (*(volatile uint32_t*)0x10020024) -#define reg_mprj_globl_reg10 (*(volatile uint32_t*)0x10020028) -#define reg_mprj_globl_reg11 (*(volatile uint32_t*)0x1002002C) -#define reg_mprj_globl_reg12 (*(volatile uint32_t*)0x10020030) -#define reg_mprj_globl_reg13 (*(volatile uint32_t*)0x10020034) -#define reg_mprj_globl_reg14 (*(volatile uint32_t*)0x10020038) -#define reg_mprj_globl_reg15 (*(volatile uint32_t*)0x1002003C) -#define reg_mprj_globl_reg16 (*(volatile uint32_t*)0x10020040) -#define reg_mprj_globl_reg17 (*(volatile uint32_t*)0x10020044) -#define reg_mprj_globl_reg18 (*(volatile uint32_t*)0x10020048) -#define reg_mprj_globl_reg19 (*(volatile uint32_t*)0x1002004C) -#define reg_mprj_globl_reg20 (*(volatile uint32_t*)0x10020050) -#define reg_mprj_globl_reg21 (*(volatile uint32_t*)0x10020054) -#define reg_mprj_globl_reg22 (*(volatile uint32_t*)0x10020058) -#define reg_mprj_globl_reg23 (*(volatile uint32_t*)0x1002005C) -#define reg_mprj_globl_reg24 (*(volatile uint32_t*)0x10020060) -#define reg_mprj_globl_reg25 (*(volatile uint32_t*)0x10020064) -#define reg_mprj_globl_reg26 (*(volatile uint32_t*)0x10020068) -#define reg_mprj_globl_reg27 (*(volatile uint32_t*)0x1002006C) +#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) // Chip ID +#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) // Global Config-0 +#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) // Global Config-1 +#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) // Global Interrupt Mask +#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) // Global Interrupt +#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) // Multi functional sel +#define reg_mprj_globl_soft0 (*(volatile uint32_t*)0x10020018) // Sof Register-0 +#define reg_mprj_globl_soft1 (*(volatile uint32_t*)0x1002001C) // Sof Register-1 +#define reg_mprj_globl_soft2 (*(volatile uint32_t*)0x10020020) // Sof Register-2 +#define reg_mprj_globl_soft3 (*(volatile uint32_t*)0x10020024) // Sof Register-3 +#define reg_mprj_globl_soft4 (*(volatile uint32_t*)0x10020028) // Sof Register-4 +#define reg_mprj_globl_soft5 (*(volatile uint32_t*)0x1002002C) // Sof Register-5 // ------------------------------------------------------------------------- // Multi-core test, Two Array is filled with below data, destination hold sum // source result remark @@ -124,12 +108,12 @@ arg_t arg0 = { dest, src0, src1, 0, buf_size/2 }; arg_t arg1 = { dest, src0, src1, buf_size/2, buf_size }; - reg_mprj_globl_reg22 = 0x11223344; // Sig-1 + reg_mprj_globl_soft0 = 0x11223344; // Sig-0 // Initialize bare threads (bthread). bthread_init(); - reg_mprj_globl_reg23 = 0x22334455; // Sig-2 + reg_mprj_globl_soft1 = 0x22334455; // Sig-1 // Start counting stats. //test_stats_on(); @@ -137,18 +121,18 @@ // Spawn work onto core 1 bthread_spawn( 1, &vvadd_mt, &arg1 ); - reg_mprj_globl_reg24 = 0x33445566; // Sig-3 + reg_mprj_globl_soft2 = 0x33445566; // Sig-2 // Have core 0 also do some work. vvadd_mt(&arg0); - reg_mprj_globl_reg25 = 0x44556677; // Sig-4 + reg_mprj_globl_soft3 = 0x44556677; // Sig-3 // Wait for core 1 to finish. bthread_join(1); // Stop counting stats //test_stats_off(); - reg_mprj_globl_reg26 = 0x55667788; // sig-5 + reg_mprj_globl_soft4 = 0x55667788; // sig-4 // Core 0 will verify the results. if ( bthread_get_core_id() == 0 ) { @@ -159,7 +143,7 @@ test_pass &= 0; } if(test_pass == 0x1) { - reg_mprj_globl_reg27 = 0x66778899; // sig-6 + reg_mprj_globl_soft5 = 0x66778899; // sig-5 } }
diff --git a/verilog/dv/user_mcore/user_mcore_tb.v b/verilog/dv/user_mcore_test1/user_mcore_test1_tb.v similarity index 94% rename from verilog/dv/user_mcore/user_mcore_tb.v rename to verilog/dv/user_mcore_test1/user_mcore_test1_tb.v index b43dcba..a4bda85 100644 --- a/verilog/dv/user_mcore/user_mcore_tb.v +++ b/verilog/dv/user_mcore_test1/user_mcore_test1_tb.v
@@ -65,7 +65,11 @@ `timescale 1 ns / 1 ns `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v" -module user_mcore_tb; + +`define TB_HEX_FILE "user_mcore_test1.hex" +`define TB_TOP user_mcore_test1_tb + +module `TB_TOP; reg clock; reg wb_rst_i; reg power1, power2; @@ -115,9 +119,9 @@ `ifdef WFDUMP initial begin $dumpfile("simx.vcd"); - $dumpvars(1, user_mcore_tb); - $dumpvars(1, user_mcore_tb.u_top); - $dumpvars(0, user_mcore_tb.u_top.u_riscv_top); + $dumpvars(1, `TB_TOP); + $dumpvars(1, `TB_TOP.u_top); + $dumpvars(0, `TB_TOP.u_top.u_riscv_top); end `endif @@ -136,11 +140,11 @@ #1; // Remove all the reset $display("STATUS: Working with Both core Risc core 0 & 1 "); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h31F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h31F); // Repeat cycles of 1000 clock edges as needed to complete testbench - repeat (22) begin + repeat (23) begin repeat (1000) @(posedge clock); // $display("+1000 cycles"); end @@ -157,12 +161,12 @@ // 0x3000002C = 0x66778899; test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,read_data,32'h11223344); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,read_data,32'h22334455); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,read_data,32'h33445566); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,read_data,32'h44556677); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,read_data,32'h55667788); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,read_data,32'h66778899); @@ -257,7 +261,7 @@ assign io_in[32] = flash_io3; // Quard flash - s25fl256s #(.mem_file_name("user_mcore.hex"), + s25fl256s #(.mem_file_name(`TB_HEX_FILE), .otp_file_name("none"), .TimingModel("S25FL512SAGMFI010_F_30pF")) u_spi_flash_256mb (
diff --git a/verilog/dv/user_mcore/Makefile b/verilog/dv/user_mcore_test2/Makefile similarity index 89% rename from verilog/dv/user_mcore/Makefile rename to verilog/dv/user_mcore_test2/Makefile index f635413..1c301e2 100644 --- a/verilog/dv/user_mcore/Makefile +++ b/verilog/dv/user_mcore_test2/Makefile
@@ -43,7 +43,7 @@ .SUFFIXES: -PATTERN = user_mcore +PATTERN = user_mcore_test2 all: ${PATTERN:=.vcd} @@ -51,13 +51,13 @@ vvp: ${PATTERN:=.vvp} %.vvp: %_tb.v - ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -c -I./ -I$(YIFIVE_FIRMWARE_PATH) user_mcore.c -o user_mcore.o + ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -c -I./ -I$(YIFIVE_FIRMWARE_PATH) ${PATTERN}.c -o ${PATTERN}.o ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -c -I./ -I$(YIFIVE_FIRMWARE_PATH) $(YIFIVE_FIRMWARE_PATH)/common_bthread.c -o common_bthread.o ${GCC_PREFIX}-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=0 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\" -D__ASSEMBLY__=1 -c -I./ -I$(YIFIVE_FIRMWARE_PATH) $(YIFIVE_FIRMWARE_PATH)/crt.S -o crt.o - ${GCC_PREFIX}-gcc -o user_mcore.elf -T $(YIFIVE_FIRMWARE_PATH)/link.ld user_mcore.o crt.o common_bthread.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32 -N - ${GCC_PREFIX}-objcopy -O verilog user_mcore.elf user_mcore.hex - ${GCC_PREFIX}-objdump -D user_mcore.elf > user_mcore.dump - rm crt.o user_mcore.o + ${GCC_PREFIX}-gcc -o ${PATTERN}.elf -T $(YIFIVE_FIRMWARE_PATH)/link.ld ${PATTERN}.o crt.o common_bthread.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32 -N + ${GCC_PREFIX}-objcopy -O verilog ${PATTERN}.elf ${PATTERN}.hex + ${GCC_PREFIX}-objdump -D ${PATTERN}.elf > ${PATTERN}.dump + rm crt.o ${PATTERN}.o ifeq ($(SIM),RTL) ifeq ($(DUMP),OFF) iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
diff --git a/verilog/dv/user_mcore_test2/user_mcore_test2.c b/verilog/dv/user_mcore_test2/user_mcore_test2.c new file mode 100644 index 0000000..4ba53eb --- /dev/null +++ b/verilog/dv/user_mcore_test2/user_mcore_test2.c
@@ -0,0 +1,110 @@ +/* + * 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 + */ + + +#include "common_misc.h" +#include "common_bthread.h" +#include "../c_func/inc/int_reg_map.h" + +#define SC_SIM_OUTPORT (0xf0000000) +#define uint32_t long +#define uint16_t int +#define size 10 + + print_message(const char *fmt) { + char ch; + // Wait for Semaphore-lock=0 + while((reg_sema_lock0 & 0x1) == 0x0); + while(ch = *(unsigned char *)fmt) { + + while((reg_uart0_status & 0x1) == 0x1); + + reg_uart0_txdata = ch; + ++fmt; + } + // Release Semaphore Lock + reg_sema_lock0 = 0x1; + + // Added nop to Semaphore to acquire by other core + asm ("nop"); + asm ("nop"); + asm ("nop"); + asm ("nop"); + + + } + + + int main( int argc, char* argv[] ) + { + char ch; + + // Common Sub-Routine + if ( bthread_get_core_id() == 0 ) { + + // Enable the GPIO UART I/F + reg_glbl_multi_func = 0x100; + + // Enable the UART TX/RX & STOP=2 + reg_uart0_ctrl = 0x7; + // 1152000 Baud at 50Mhz System clock + reg_uart0_baud_ctrl1 = 0x0; + reg_uart0_baud_ctrl2 = 0x0; + + reg_glbl_soft_reg_5 = 0x1; // Test Start Indication + } + // Core 0 thread + if ( bthread_get_core_id() == 0 ) { + print_message("UART command-0 from core-0\n"); + print_message("UART command-1 from core-0\n"); + print_message("UART command-2 from core-0\n"); + print_message("UART command-3 from core-0\n"); + + } + // Core 1 thread + if ( bthread_get_core_id() == 1 ) { + + while((reg_glbl_soft_reg_5 & 0x1) == 0x0); // wait for test start + print_message("UART command-0 from core-1\n"); + print_message("UART command-1 from core-1\n"); + print_message("UART command-2 from core-1\n"); + print_message("UART command-3 from core-1\n"); + + } + // Core 2 thread + if ( bthread_get_core_id() == 2 ) { + while((reg_glbl_soft_reg_5 & 0x1) == 0x0); // wait for test start + print_message("UART command-0 from core-2\n"); + print_message("UART command-1 from core-2\n"); + print_message("UART command-2 from core-2\n"); + print_message("UART command-3 from core-2\n"); + + } + // Core 3 thread + if ( bthread_get_core_id() == 3 ) { + while((reg_glbl_soft_reg_5 & 0x1) == 0x0); // wait for test start + print_message("UART command-0 from core-3\n"); + print_message("UART command-1 from core-3\n"); + print_message("UART command-2 from core-3\n"); + print_message("UART command-3 from core-3\n"); + + } + + return 0; + } + +
diff --git a/verilog/dv/user_mcore/user_mcore_tb.v b/verilog/dv/user_mcore_test2/user_mcore_test2_tb.v similarity index 68% copy from verilog/dv/user_mcore/user_mcore_tb.v copy to verilog/dv/user_mcore_test2/user_mcore_test2_tb.v index b43dcba..7ee2ba2 100644 --- a/verilog/dv/user_mcore/user_mcore_tb.v +++ b/verilog/dv/user_mcore_test2/user_mcore_test2_tb.v
@@ -65,7 +65,12 @@ `timescale 1 ns / 1 ns `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v" -module user_mcore_tb; +`include "uart_agent.v" + +`define TB_HEX_FILE "user_mcore_test2.hex" +`define TB_TOP user_mcore_test2_tb + +module `TB_TOP; reg clock; reg wb_rst_i; reg power1, power2; @@ -90,38 +95,105 @@ wire gpio; wire [37:0] mprj_io; wire [7:0] mprj_io_0; - reg test_fail; + reg test_fail; + reg test_start; reg [31:0] read_data; + //---------------------------------- + // Uart Configuration + // --------------------------------- + reg [1:0] uart_data_bit ; + reg uart_stop_bits ; // 0: 1 stop bit; 1: 2 stop bit; + reg uart_stick_parity ; // 1: force even parity + reg uart_parity_en ; // parity enable + reg uart_even_odd_parity ; // 0: odd parity; 1: even parity + + reg [7:0] uart_data ; + reg [15:0] uart_divisor ; // divided by n * 16 + reg [15:0] uart_timeout ;// wait time limit + + reg [15:0] uart_rx_nu ; + reg [15:0] uart_tx_nu ; + reg [7:0] uart_write_data [0:39]; + reg uart_fifo_enable ; // fifo mode disable + reg flag ; + + reg [31:0] check_sum ; + integer d_risc_id; + integer i,j; // External clock is used by default. Make this artificially fast for the // simulation. Normally this would be a slow clock and the digital PLL // would be the fast clock. - always #12.5 clock <= (clock === 1'b0); + + // 50Mhz CLock + always #10 clock <= (clock === 1'b0); initial begin - clock = 0; - wbd_ext_cyc_i ='h0; // strobe/request - wbd_ext_stb_i ='h0; // strobe/request - wbd_ext_adr_i ='h0; // address - wbd_ext_we_i ='h0; // write - wbd_ext_dat_i ='h0; // data output - wbd_ext_sel_i ='h0; // byte enable + clock = 0; + test_start = 0; + flag = 0; + wbd_ext_cyc_i ='h0; // strobe/request + wbd_ext_stb_i ='h0; // strobe/request + wbd_ext_adr_i ='h0; // address + wbd_ext_we_i ='h0; // write + wbd_ext_dat_i ='h0; // data output + wbd_ext_sel_i ='h0; // byte enable end `ifdef WFDUMP initial begin $dumpfile("simx.vcd"); - $dumpvars(1, user_mcore_tb); - $dumpvars(1, user_mcore_tb.u_top); - $dumpvars(0, user_mcore_tb.u_top.u_riscv_top); + $dumpvars(1, `TB_TOP); + $dumpvars(0, `TB_TOP.tb_uart); + $dumpvars(1, `TB_TOP.u_top); + $dumpvars(0, `TB_TOP.u_top.u_riscv_top); + $dumpvars(0, `TB_TOP.u_top.u_uart_i2c_usb_spi); end `endif + /************************************************************************* + * This is Baud Rate to clock divider conversion for Test Bench + * Note: DUT uses 16x baud clock, where are test bench uses directly + * baud clock, Due to 16x Baud clock requirement at RTL, there will be + * some resolution loss, we expect at lower baud rate this resolution + * loss will be less. For Quick simulation perpose higher baud rate used + * *************************************************************************/ + task tb_set_uart_baud; + input [31:0] ref_clk; + input [31:0] baud_rate; + output [31:0] baud_div; + reg [31:0] baud_div; + begin + // for 230400 Baud = (50Mhz/230400) = 216.7 + baud_div = ref_clk/baud_rate; // Get the Bit Baud rate + // Baud 16x = 216/16 = 13 + baud_div = baud_div/16; // To find the RTL baud 16x div value to find similar resolution loss in test bench + // Test bench baud clock , 16x of above value + // 13 * 16 = 208, + // (Note if you see original value was 216, now it's 208 ) + baud_div = baud_div * 16; + // Test bench half cycle counter to toggle it + // 208/2 = 104 + baud_div = baud_div/2; + //As counter run's from 0 , substract from 1 + baud_div = baud_div-1; + end + endtask + + initial begin + uart_data_bit = 2'b11; + uart_stop_bits = 0; // 0: 1 stop bit; 1: 2 stop bit; + uart_stick_parity = 0; // 1: force even parity + uart_parity_en = 0; // parity enable + uart_even_odd_parity = 1; // 0: odd parity; 1: even parity + tb_set_uart_baud(50000000,1152000,uart_divisor);// 50Mhz Ref clock, Baud Rate: 230400 + uart_timeout = 200;// wait time limit + uart_fifo_enable = 0; // fifo mode disable $value$plusargs("risc_core_id=%d", d_risc_id); @@ -136,48 +208,64 @@ #1; // Remove all the reset $display("STATUS: Working with Both core Risc core 0 & 1 "); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h31F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h31F); + read_data = 0; + // Wait for Software Reg-5 = 1 Set by the RiscV core + while (read_data !== 32'h1) begin + wb_user_core_read(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,read_data); + end - // Repeat cycles of 1000 clock edges as needed to complete testbench - repeat (22) begin - repeat (1000) @(posedge clock); - // $display("+1000 cycles"); - end + tb_uart.debug_mode = 0; // disable debug display + tb_uart.uart_init; + tb_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity, uart_stick_parity, uart_timeout, uart_divisor); + flag = 0; + check_sum = 0; + test_start = 1; + + fork + begin + while(flag == 0) + begin + tb_uart.read_char(read_data,flag); + if(flag == 0) begin + $write ("%c",read_data); + check_sum = check_sum+read_data; + end + end + end + begin + repeat (300000) @(posedge clock); // wait for Processor Get Ready + end + join_any + + #100 + tb_uart.report_status(uart_rx_nu, uart_tx_nu); + - $display("Monitor: Reading Back the expected value"); - // User RISC core expect to write these value in global - // register, read back and decide on pass fail - // 0x30000018 = 0x11223344; - // 0x3000001C = 0x22334455; - // 0x30000020 = 0x33445566; - // 0x30000024 = 0x44556677; - // 0x30000028 = 0x55667788; - // 0x3000002C = 0x66778899; - - test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); - + test_fail = 0; + $display("Total Rx Char: %d Check Sum : %x ",uart_rx_nu, check_sum); + // Check + // if all the 4224 byte received + // if no error + if(uart_rx_nu != 216) test_fail = 1; + if(check_sum != 32'h44f0) test_fail = 1; + if(tb_uart.err_cnt != 0) test_fail = 1; $display("###################################################"); if(test_fail == 0) begin `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Passed"); + $display("Monitor: multi core test (GL) Passed"); `else - $display("Monitor: Standalone User Risc Boot (RTL) Passed"); + $display("Monitor: multi core test (RTL) Passed"); `endif end else begin `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Failed"); + $display("Monitor: multi core test (GL) Failed"); `else - $display("Monitor: Standalone User Risc Boot (RTL) Failed"); + $display("Monitor: multi core test (RTL) Failed"); `endif end $display("###################################################"); @@ -257,7 +345,7 @@ assign io_in[32] = flash_io3; // Quard flash - s25fl256s #(.mem_file_name("user_mcore.hex"), + s25fl256s #(.mem_file_name(`TB_HEX_FILE), .otp_file_name("none"), .TimingModel("S25FL512SAGMFI010_F_30pF")) u_spi_flash_256mb ( @@ -274,6 +362,19 @@ ); +//--------------------------- +// UART Agent integration +// -------------------------- +wire uart_txd,uart_rxd; + +assign uart_txd = io_out[2]; +assign io_in[1] = uart_rxd ; + +uart_agent tb_uart( + .mclk (clock ), + .txd (uart_rxd ), + .rxd (uart_txd ) + ); task wb_user_core_write; @@ -326,7 +427,7 @@ wbd_ext_we_i ='h0; // write wbd_ext_dat_i ='h0; // data output wbd_ext_sel_i ='h0; // byte enable - $display("DEBUG WB USER ACCESS READ Address : %x, Data : %x",address,data); + //$display("DEBUG WB USER ACCESS READ Address : %x, Data : %x",address,data); repeat (2) @(posedge clock); end endtask
diff --git a/verilog/dv/user_pwm/user_pwm_tb.v b/verilog/dv/user_pwm/user_pwm_tb.v index e5222cc..c6f24b7 100644 --- a/verilog/dv/user_pwm/user_pwm_tb.v +++ b/verilog/dv/user_pwm/user_pwm_tb.v
@@ -144,17 +144,17 @@ wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); // Enable PWM Multi Functional Ports - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_MULTI_FUNC,'h03F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_MUTI_FUNC,'h03F); repeat (2) @(posedge clock); #1; // Remove the reset // Remove WB and SPI/UART Reset, Keep CORE under Reset - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h01F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F); // config 1us based on system clock - 1000/25ns = 40 - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG1,39); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_GLBL,39); test_fail = 0; repeat (200) @(posedge clock); @@ -162,12 +162,12 @@ $display("Step-1, PWM-0: 1ms/2 = 500Hz; PWM-1: 1ms/3; PWM-2: 1ms/4, PWM-3: 1ms/5, PWM-4: 1ms/6, PWM-5: 1ms/7"); test_step = 1; - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_PWM0,'h0000_0000); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_PWM1,'h0000_0001); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_PWM2,'h0001_0001); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_PWM3,'h0001_0002); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_PWM4,'h0002_0002); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_PWM5,'h0002_0003); + wb_user_core_write(`ADDR_SPACE_PWM+`PWM_CFG_PWM_0,'h0000_0000); + wb_user_core_write(`ADDR_SPACE_PWM+`PWM_CFG_PWM_1,'h0000_0001); + wb_user_core_write(`ADDR_SPACE_PWM+`PWM_CFG_PWM_2,'h0001_0001); + wb_user_core_write(`ADDR_SPACE_PWM+`PWM_CFG_PWM_3,'h0001_0002); + wb_user_core_write(`ADDR_SPACE_PWM+`PWM_CFG_PWM_4,'h0002_0002); + wb_user_core_write(`ADDR_SPACE_PWM+`PWM_CFG_PWM_5,'h0002_0003); pwm_monitor(OneMsPeriod*2,OneMsPeriod*3,OneMsPeriod*4,OneMsPeriod*5,OneMsPeriod*6,OneMsPeriod*7); repeat (100) @(posedge clock);
diff --git a/verilog/dv/user_qspi/user_qspi_tb.v b/verilog/dv/user_qspi/user_qspi_tb.v index 4fd07e5..8f984e1 100644 --- a/verilog/dv/user_qspi/user_qspi_tb.v +++ b/verilog/dv/user_qspi/user_qspi_tb.v
@@ -203,7 +203,7 @@ repeat (2) @(posedge clock); #1; // Remove only WB and SPI Reset - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h2); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h2); wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_BANK_SEL,'h0000); // Change the Bank Sel 0000
diff --git a/verilog/dv/user_qspi/user_risc_boot.c b/verilog/dv/user_qspi/user_risc_boot.c index 0711b7b..83fb41b 100644 --- a/verilog/dv/user_qspi/user_risc_boot.c +++ b/verilog/dv/user_qspi/user_risc_boot.c
@@ -18,34 +18,18 @@ #define SC_SIM_OUTPORT (0xf0000000) #define uint32_t long -#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x30030000) -#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x30030004) -#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x30030008) -#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x3003000C) -#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x30030010) -#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x30030014) -#define reg_mprj_globl_reg6 (*(volatile uint32_t*)0x30030018) -#define reg_mprj_globl_reg7 (*(volatile uint32_t*)0x3003001C) -#define reg_mprj_globl_reg8 (*(volatile uint32_t*)0x30030020) -#define reg_mprj_globl_reg9 (*(volatile uint32_t*)0x30030024) -#define reg_mprj_globl_reg10 (*(volatile uint32_t*)0x30030028) -#define reg_mprj_globl_reg11 (*(volatile uint32_t*)0x3003002C) -#define reg_mprj_globl_reg12 (*(volatile uint32_t*)0x30030030) -#define reg_mprj_globl_reg13 (*(volatile uint32_t*)0x30030034) -#define reg_mprj_globl_reg14 (*(volatile uint32_t*)0x30030038) -#define reg_mprj_globl_reg15 (*(volatile uint32_t*)0x3003003C) -#define reg_mprj_globl_reg16 (*(volatile uint32_t*)0x30030040) -#define reg_mprj_globl_reg17 (*(volatile uint32_t*)0x30030044) -#define reg_mprj_globl_reg18 (*(volatile uint32_t*)0x30030048) -#define reg_mprj_globl_reg19 (*(volatile uint32_t*)0x3003004C) -#define reg_mprj_globl_reg20 (*(volatile uint32_t*)0x30030050) -#define reg_mprj_globl_reg21 (*(volatile uint32_t*)0x30030054) -#define reg_mprj_globl_reg22 (*(volatile uint32_t*)0x30030058) -#define reg_mprj_globl_reg23 (*(volatile uint32_t*)0x3003005C) -#define reg_mprj_globl_reg24 (*(volatile uint32_t*)0x30030060) -#define reg_mprj_globl_reg25 (*(volatile uint32_t*)0x30030064) -#define reg_mprj_globl_reg26 (*(volatile uint32_t*)0x30030068) -#define reg_mprj_globl_reg27 (*(volatile uint32_t*)0x3003006C) +#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) // Chip ID +#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) // Global Config-0 +#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) // Global Config-1 +#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) // Global Interrupt Mask +#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) // Global Interrupt +#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) // Multi functional sel +#define reg_mprj_globl_soft0 (*(volatile uint32_t*)0x10020018) // Sof Register-0 +#define reg_mprj_globl_soft1 (*(volatile uint32_t*)0x1002001C) // Sof Register-1 +#define reg_mprj_globl_soft2 (*(volatile uint32_t*)0x10020020) // Sof Register-2 +#define reg_mprj_globl_soft3 (*(volatile uint32_t*)0x10020024) // Sof Register-3 +#define reg_mprj_globl_soft4 (*(volatile uint32_t*)0x10020028) // Sof Register-4 +#define reg_mprj_globl_soft5 (*(volatile uint32_t*)0x1002002C) // Sof Register-5 int main() { @@ -57,12 +41,12 @@ //*out_ptr = 0xDDEEFF00; // Write software Write & Read Register - reg_mprj_globl_reg22 = 0x11223344; - reg_mprj_globl_reg23 = 0x22334455; - reg_mprj_globl_reg24 = 0x33445566; - reg_mprj_globl_reg25 = 0x44556677; - reg_mprj_globl_reg26 = 0x55667788; - reg_mprj_globl_reg27 = 0x66778899; + reg_mprj_globl_soft0 = 0x11223344; + reg_mprj_globl_soft1 = 0x22334455; + reg_mprj_globl_soft2 = 0x33445566; + reg_mprj_globl_soft3 = 0x44556677; + reg_mprj_globl_soft4 = 0x55667788; + reg_mprj_globl_soft5 = 0x66778899; while(1) {} return 0;
diff --git a/verilog/dv/user_risc_boot/user_risc_boot.c b/verilog/dv/user_risc_boot/user_risc_boot.c index 37e424b..c14c9a7 100644 --- a/verilog/dv/user_risc_boot/user_risc_boot.c +++ b/verilog/dv/user_risc_boot/user_risc_boot.c
@@ -18,34 +18,18 @@ #define SC_SIM_OUTPORT (0xf0000000) #define uint32_t long -#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) -#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) -#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) -#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) -#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) -#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) -#define reg_mprj_globl_reg6 (*(volatile uint32_t*)0x10020018) -#define reg_mprj_globl_reg7 (*(volatile uint32_t*)0x1002001C) -#define reg_mprj_globl_reg8 (*(volatile uint32_t*)0x10020020) -#define reg_mprj_globl_reg9 (*(volatile uint32_t*)0x10020024) -#define reg_mprj_globl_reg10 (*(volatile uint32_t*)0x10020028) -#define reg_mprj_globl_reg11 (*(volatile uint32_t*)0x1002002C) -#define reg_mprj_globl_reg12 (*(volatile uint32_t*)0x10020030) -#define reg_mprj_globl_reg13 (*(volatile uint32_t*)0x10020034) -#define reg_mprj_globl_reg14 (*(volatile uint32_t*)0x10020038) -#define reg_mprj_globl_reg15 (*(volatile uint32_t*)0x1002003C) -#define reg_mprj_globl_reg16 (*(volatile uint32_t*)0x10020040) -#define reg_mprj_globl_reg17 (*(volatile uint32_t*)0x10020044) -#define reg_mprj_globl_reg18 (*(volatile uint32_t*)0x10020048) -#define reg_mprj_globl_reg19 (*(volatile uint32_t*)0x1002004C) -#define reg_mprj_globl_reg20 (*(volatile uint32_t*)0x10020050) -#define reg_mprj_globl_reg21 (*(volatile uint32_t*)0x10020054) -#define reg_mprj_globl_reg22 (*(volatile uint32_t*)0x10020058) -#define reg_mprj_globl_reg23 (*(volatile uint32_t*)0x1002005C) -#define reg_mprj_globl_reg24 (*(volatile uint32_t*)0x10020060) -#define reg_mprj_globl_reg25 (*(volatile uint32_t*)0x10020064) -#define reg_mprj_globl_reg26 (*(volatile uint32_t*)0x10020068) -#define reg_mprj_globl_reg27 (*(volatile uint32_t*)0x1002006C) +#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) // Chip ID +#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) // Global Config-0 +#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) // Global Config-1 +#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) // Global Interrupt Mask +#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) // Global Interrupt +#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) // Multi functional sel +#define reg_mprj_globl_soft0 (*(volatile uint32_t*)0x10020018) // Sof Register-0 +#define reg_mprj_globl_soft1 (*(volatile uint32_t*)0x1002001C) // Sof Register-1 +#define reg_mprj_globl_soft2 (*(volatile uint32_t*)0x10020020) // Sof Register-2 +#define reg_mprj_globl_soft3 (*(volatile uint32_t*)0x10020024) // Sof Register-3 +#define reg_mprj_globl_soft4 (*(volatile uint32_t*)0x10020028) // Sof Register-4 +#define reg_mprj_globl_soft5 (*(volatile uint32_t*)0x1002002C) // Sof Register-5 int main() { @@ -57,12 +41,12 @@ //*out_ptr = 0xDDEEFF00; // Write software Write & Read Register - reg_mprj_globl_reg22 = 0x11223344; - reg_mprj_globl_reg23 = 0x22334455; - reg_mprj_globl_reg24 = 0x33445566; - reg_mprj_globl_reg25 = 0x44556677; - reg_mprj_globl_reg26 = 0x55667788; - reg_mprj_globl_reg27 = 0x66778899; + reg_mprj_globl_soft0 = 0x11223344; + reg_mprj_globl_soft1 = 0x22334455; + reg_mprj_globl_soft2 = 0x33445566; + reg_mprj_globl_soft3 = 0x44556677; + reg_mprj_globl_soft4 = 0x55667788; + reg_mprj_globl_soft5 = 0x66778899; //reg_mprj_globl_reg12 = 0x778899AA; //reg_mprj_globl_reg13 = 0x8899AABB; //reg_mprj_globl_reg14 = 0x99AABBCC;
diff --git a/verilog/dv/user_risc_boot/user_risc_boot_tb.v b/verilog/dv/user_risc_boot/user_risc_boot_tb.v index f8af2e8..79c705b 100644 --- a/verilog/dv/user_risc_boot/user_risc_boot_tb.v +++ b/verilog/dv/user_risc_boot/user_risc_boot_tb.v
@@ -145,10 +145,10 @@ // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); end else begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); end @@ -170,12 +170,12 @@ // 0x3000002C = 0x66778899; test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,read_data,32'h11223344); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,read_data,32'h22334455); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,read_data,32'h33445566); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,read_data,32'h44556677); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,read_data,32'h55667788); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,read_data,32'h66778899); @@ -240,6 +240,11 @@ ); +// SSPI Slave I/F +assign io_in[0] = 1'b1; // RESET +assign io_in[16] = 1'b0 ; // SPIS SCK + + `ifndef GL // Drive Power for Hold Fix Buf // All standard cell need power hook-up for functionality work initial begin
diff --git a/verilog/dv/user_sema/Makefile b/verilog/dv/user_sema/Makefile new file mode 100644 index 0000000..c74412f --- /dev/null +++ b/verilog/dv/user_sema/Makefile
@@ -0,0 +1,84 @@ +# 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 + + +# ---- Include Partitioned Makefiles ---- + +CONFIG = caravel_user_project + +####################################################################### +## Caravel Verilog for Integration Tests +####################################################################### + +DESIGNS?=../../.. + +export USER_PROJECT_VERILOG ?= $(DESIGNS)/verilog + + +## Simulation mode: RTL/GL +SIM?=RTL +DUMP?=OFF + +### To Enable IVERILOG FST DUMP +export IVERILOG_DUMPER = fst + + +.SUFFIXES: + +PATTERN = user_sema + +all: ${PATTERN:=.vcd} + + +vvp: ${PATTERN:=.vvp} + +%.vvp: %_tb.v +ifeq ($(SIM),RTL) + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib \ + $< -o $@ + endif +else + ifeq ($(DUMP),OFF) + iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + else + iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ + -f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ + $< -o $@ + endif +endif + +%.vcd: %.vvp + vvp $< + + +# ---- Clean ---- + +clean: + rm -f *.elf *.hex *.bin *.vvp *.vcd *.log *.dump + +.PHONY: clean hex all
diff --git a/verilog/dv/user_mcore/user_mcore_tb.v b/verilog/dv/user_sema/user_sema_tb.v similarity index 66% copy from verilog/dv/user_mcore/user_mcore_tb.v copy to verilog/dv/user_sema/user_sema_tb.v index b43dcba..9b61ce6 100644 --- a/verilog/dv/user_mcore/user_mcore_tb.v +++ b/verilog/dv/user_sema/user_sema_tb.v
@@ -16,13 +16,14 @@ // SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org> ////////////////////////////////////////////////////////////////////// //// //// -//// Standalone User validation Test bench //// +//// Hardware Semaphore validation Test bench //// //// //// -//// This file is part of the riscduino cores project //// +//// This file is part of the YIFive cores project //// +//// https://github.com/dineshannayya/yifive_r0.git //// //// //// //// Description //// //// This is a standalone test bench to validate the //// -//// Digital core multi-core behaviour. //// +//// Digital core. //// //// //// //// To Do: //// //// nothing //// @@ -31,7 +32,7 @@ //// - Dinesh Annayya, dinesha@opencores.org //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// +//// 0.1 - 17th Aug 2022, Dinesh A //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -62,48 +63,61 @@ `default_nettype wire -`timescale 1 ns / 1 ns +`timescale 1 ns/10 ps `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v" -module user_mcore_tb; - reg clock; - reg wb_rst_i; - reg power1, power2; - reg power3, power4; - reg wbd_ext_cyc_i; // strobe/request - reg wbd_ext_stb_i; // strobe/request - reg [31:0] wbd_ext_adr_i; // address - reg wbd_ext_we_i; // write - reg [31:0] wbd_ext_dat_i; // data output - reg [3:0] wbd_ext_sel_i; // byte enable +`define TOP user_sema_tb - wire [31:0] wbd_ext_dat_o; // data input - wire wbd_ext_ack_o; // acknowlegement - wire wbd_ext_err_o; // error +module `TOP; +parameter CLK1_PERIOD = 10; +parameter CLK2_PERIOD = 2; - // User I/O - wire [37:0] io_oeb; - wire [37:0] io_out; - wire [37:0] io_in; +reg clock ; +reg clock2 ; +reg wb_rst_i ; +reg power1, power2; +reg power3, power4; - wire gpio; - wire [37:0] mprj_io; - wire [7:0] mprj_io_0; - reg test_fail; - reg [31:0] read_data; - integer d_risc_id; +reg wbd_ext_cyc_i; // strobe/request +reg wbd_ext_stb_i; // strobe/request +reg [31:0] wbd_ext_adr_i; // address +reg wbd_ext_we_i; // write +reg [31:0] wbd_ext_dat_i; // data output +reg [3:0] wbd_ext_sel_i; // byte enable +wire [31:0] wbd_ext_dat_o; // data input +wire wbd_ext_ack_o; // acknowlegement +wire wbd_ext_err_o; // error +// User I/O +wire [37:0] io_oeb ; +wire [37:0] io_out ; +wire [37:0] io_in ; + +wire [37:0] mprj_io ; +wire [7:0] mprj_io_0 ; +reg test_fail ; +reg [31:0] read_data ; +reg [31:0] exp_data ; +//---------------------------------- +// Uart Configuration +// --------------------------------- +integer test_step; + +integer i,j; // External clock is used by default. Make this artificially fast for the // simulation. Normally this would be a slow clock and the digital PLL // would be the fast clock. - always #12.5 clock <= (clock === 1'b0); + always #(CLK1_PERIOD/2) clock <= (clock === 1'b0); + always #(CLK2_PERIOD/2) clock2 <= (clock2 === 1'b0); initial begin + test_step = 0; clock = 0; + clock2 = 0; wbd_ext_cyc_i ='h0; // strobe/request wbd_ext_stb_i ='h0; // strobe/request wbd_ext_adr_i ='h0; // address @@ -115,90 +129,119 @@ `ifdef WFDUMP initial begin $dumpfile("simx.vcd"); - $dumpvars(1, user_mcore_tb); - $dumpvars(1, user_mcore_tb.u_top); - $dumpvars(0, user_mcore_tb.u_top.u_riscv_top); + $dumpvars(1, `TOP); + //$dumpvars(1, `TOP.u_top); + //$dumpvars(0, `TOP.u_top.u_pll); + $dumpvars(0, `TOP.u_top.u_wb_host); + //$dumpvars(1, `TOP.u_top.u_intercon); + //$dumpvars(1, `TOP.u_top.u_intercon); + $dumpvars(0, `TOP.u_top.u_pinmux); end `endif initial begin - - $value$plusargs("risc_core_id=%d", d_risc_id); - - #200; // Wait for reset removal - repeat (10) @(posedge clock); - $display("Monitor: Standalone User Risc Boot Test Started"); - - // Remove Wb Reset - wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); - - repeat (2) @(posedge clock); - #1; - // Remove all the reset - $display("STATUS: Working with Both core Risc core 0 & 1 "); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h31F); - - - // Repeat cycles of 1000 clock edges as needed to complete testbench - repeat (22) begin - repeat (1000) @(posedge clock); - // $display("+1000 cycles"); - end - - - $display("Monitor: Reading Back the expected value"); - // User RISC core expect to write these value in global - // register, read back and decide on pass fail - // 0x30000018 = 0x11223344; - // 0x3000001C = 0x22334455; - // 0x30000020 = 0x33445566; - // 0x30000024 = 0x44556677; - // 0x30000028 = 0x55667788; - // 0x3000002C = 0x66778899; - - test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); - - - - $display("###################################################"); - if(test_fail == 0) begin - `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Passed"); - `else - $display("Monitor: Standalone User Risc Boot (RTL) Passed"); - `endif - end else begin - `ifdef GL - $display("Monitor: Standalone User Risc Boot (GL) Failed"); - `else - $display("Monitor: Standalone User Risc Boot (RTL) Failed"); - `endif - end - $display("###################################################"); - $finish; - end - - initial begin wb_rst_i <= 1'b1; #100; wb_rst_i <= 1'b0; // Release reset end + + +initial +begin + + #200; // Wait for reset removal + repeat (10) @(posedge clock); + $display("Monitor: Standalone User Basic Test Started"); + + repeat (2) @(posedge clock); + + test_fail=0; + fork + begin + // Remove Wb/PinMux Reset + wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); + + // Setting Lock Bit Individually and clearing it imediatly + for(i=0; i < 15; i = i+1) begin + read_data = 'h0; + // Step-1: Wait for Semaphore lock bit to '1' + while(read_data[0] == 0) begin + @(posedge clock) ; + wb_user_core_read(`ADDR_SPACE_SEMA+ (i*4),read_data); + end + // Step-2: Check is Really Lock Bit it Set the corresponding lock status + wb_user_core_read_check(`ADDR_SPACE_SEMA+`SEMA_CFG_STATUS,read_data, 1<< i); + // Step-3: Clear the Lock Bit + wb_user_core_write(`ADDR_SPACE_SEMA+(i*4),1); + // Step-4: Check is Really Lock Bit it Cleared the corresponding lock status + wb_user_core_read_check(`ADDR_SPACE_SEMA+`SEMA_CFG_STATUS,read_data, 0); + + end + // Setting all Lock Bit and clearing it end + exp_data = 'h0; + for(i=0; i < 15; i = i+1) begin + read_data = 'h0; + // Step-1: Wait for Semaphore lock bit to '1' + while(read_data[0] == 0) begin + @(posedge clock) ; + wb_user_core_read(`ADDR_SPACE_SEMA+(i*4),read_data); + end + exp_data = exp_data | (1<< i); + wb_user_core_read_check(`ADDR_SPACE_SEMA+`SEMA_CFG_STATUS,read_data, exp_data); + end + // Step-2: Check all 15 Sema bit set + wb_user_core_read_check(`ADDR_SPACE_SEMA+`SEMA_CFG_STATUS,read_data, 32'h7FFF); + exp_data = 32'h7FFF; + for(i=0; i < 15; i = i+1) begin + // Step-3: clear the Sema Bit + wb_user_core_write(`ADDR_SPACE_SEMA+(i*4),32'h1); + exp_data = exp_data ^ (1<< i); + wb_user_core_read_check(`ADDR_SPACE_SEMA+`SEMA_CFG_STATUS,read_data, exp_data); + end + // Step-3: All hardware lock bit is cleared + wb_user_core_read_check(`ADDR_SPACE_SEMA+`SEMA_CFG_STATUS,read_data, 32'h0); + end + + begin + repeat (30000) @(posedge clock); + // $display("+1000 cycles"); + test_fail = 1; + end + join_any + disable fork; //disable pending fork activity + + + $display("###################################################"); + if(test_fail == 0) begin + `ifdef GL + $display("Monitor: Semaphore Test (GL) Passed"); + `else + $display("Monitor: Semaphore Test (RTL) Passed"); + `endif + end else begin + `ifdef GL + $display("Monitor: Semaphore Test (GL) Failed"); + `else + $display("Monitor: Semaphore Test (RTL) Failed"); + `endif + end + $display("###################################################"); + #100 + $finish; +end + + wire USER_VDD1V8 = 1'b1; wire VSS = 1'b0; + user_project_wrapper u_top( `ifdef USE_POWER_PINS .vccd1(USER_VDD1V8), // User area 1 1.8V supply .vssd1(VSS), // User area 1 digital ground `endif .wb_clk_i (clock), // System clock - .user_clock2 (1'b1), // Real-time clock + .user_clock2 (clock2), // Real-time clock .wb_rst_i (wb_rst_i), // Regular Reset signal .wbs_cyc_i (wbd_ext_cyc_i), // strobe/request @@ -231,47 +274,11 @@ // All standard cell need power hook-up for functionality work initial begin + end `endif -//------------------------------------------------------ -// Integrate the Serial flash with qurd support to -// user core using the gpio pads -// ---------------------------------------------------- - wire flash_clk = io_out[24]; - wire flash_csb = io_out[25]; - // Creating Pad Delay - wire #1 io_oeb_29 = io_oeb[29]; - wire #1 io_oeb_30 = io_oeb[30]; - wire #1 io_oeb_31 = io_oeb[31]; - wire #1 io_oeb_32 = io_oeb[32]; - tri #1 flash_io0 = (io_oeb_29== 1'b0) ? io_out[29] : 1'bz; - tri #1 flash_io1 = (io_oeb_30== 1'b0) ? io_out[30] : 1'bz; - tri #1 flash_io2 = (io_oeb_31== 1'b0) ? io_out[31] : 1'bz; - tri #1 flash_io3 = (io_oeb_32== 1'b0) ? io_out[32] : 1'bz; - - assign io_in[29] = flash_io0; - assign io_in[30] = flash_io1; - assign io_in[31] = flash_io2; - assign io_in[32] = flash_io3; - - // Quard flash - s25fl256s #(.mem_file_name("user_mcore.hex"), - .otp_file_name("none"), - .TimingModel("S25FL512SAGMFI010_F_30pF")) - u_spi_flash_256mb ( - // Data Inputs/Outputs - .SI (flash_io0), - .SO (flash_io1), - // Controls - .SCK (flash_clk), - .CSNeg (flash_csb), - .WPNeg (flash_io2), - .HOLDNeg (flash_io3), - .RSTNeg (!wb_rst_i) - - ); @@ -406,5 +413,4 @@ `endif **/ endmodule -`include "s25fl256s.sv" `default_nettype wire
diff --git a/verilog/dv/user_spi_isp/user_spi_isp_tb.v b/verilog/dv/user_spi_isp/user_spi_isp_tb.v index a0e0fb5..95e4e51 100644 --- a/verilog/dv/user_spi_isp/user_spi_isp_tb.v +++ b/verilog/dv/user_spi_isp/user_spi_isp_tb.v
@@ -154,19 +154,19 @@ $display("Monitor: Writing expected value"); test_fail = 0; - u_spim.reg_wr_dword(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,32'h11223344); - u_spim.reg_wr_dword(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,32'h22334455); - u_spim.reg_wr_dword(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,32'h33445566); - u_spim.reg_wr_dword(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,32'h44556677); - u_spim.reg_wr_dword(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,32'h55667788); - u_spim.reg_wr_dword(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,32'h66778899); + u_spim.reg_wr_dword(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,32'h11223344); + u_spim.reg_wr_dword(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,32'h22334455); + u_spim.reg_wr_dword(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,32'h33445566); + u_spim.reg_wr_dword(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,32'h44556677); + u_spim.reg_wr_dword(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,32'h55667788); + u_spim.reg_wr_dword(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,32'h66778899); - u_spim.reg_rd_dword_cmp(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,32'h11223344); - u_spim.reg_rd_dword_cmp(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,32'h22334455); - u_spim.reg_rd_dword_cmp(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,32'h33445566); - u_spim.reg_rd_dword_cmp(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,32'h44556677); - u_spim.reg_rd_dword_cmp(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,32'h55667788); - u_spim.reg_rd_dword_cmp(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,32'h66778899); + u_spim.reg_rd_dword_cmp(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,32'h11223344); + u_spim.reg_rd_dword_cmp(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,32'h22334455); + u_spim.reg_rd_dword_cmp(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,32'h33445566); + u_spim.reg_rd_dword_cmp(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,32'h44556677); + u_spim.reg_rd_dword_cmp(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,32'h55667788); + u_spim.reg_rd_dword_cmp(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,32'h66778899);
diff --git a/verilog/dv/user_sram_exec/user_sram_exec.c b/verilog/dv/user_sram_exec/user_sram_exec.c index 62546a8..3f36137 100644 --- a/verilog/dv/user_sram_exec/user_sram_exec.c +++ b/verilog/dv/user_sram_exec/user_sram_exec.c
@@ -20,42 +20,26 @@ #define uint32_t long #define uint16_t int -#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) -#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) -#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) -#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) -#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) -#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) -#define reg_mprj_globl_reg6 (*(volatile uint32_t*)0x10020018) -#define reg_mprj_globl_reg7 (*(volatile uint32_t*)0x1002001C) -#define reg_mprj_globl_reg8 (*(volatile uint32_t*)0x10020020) -#define reg_mprj_globl_reg9 (*(volatile uint32_t*)0x10020024) -#define reg_mprj_globl_reg10 (*(volatile uint32_t*)0x10020028) -#define reg_mprj_globl_reg11 (*(volatile uint32_t*)0x1002002C) -#define reg_mprj_globl_reg12 (*(volatile uint32_t*)0x10020030) -#define reg_mprj_globl_reg13 (*(volatile uint32_t*)0x10020034) -#define reg_mprj_globl_reg14 (*(volatile uint32_t*)0x10020038) -#define reg_mprj_globl_reg15 (*(volatile uint32_t*)0x1002003C) -#define reg_mprj_globl_reg16 (*(volatile uint32_t*)0x10020040) -#define reg_mprj_globl_reg17 (*(volatile uint32_t*)0x10020044) -#define reg_mprj_globl_reg18 (*(volatile uint32_t*)0x10020048) -#define reg_mprj_globl_reg19 (*(volatile uint32_t*)0x1002004C) -#define reg_mprj_globl_reg20 (*(volatile uint32_t*)0x10020050) -#define reg_mprj_globl_reg21 (*(volatile uint32_t*)0x10020054) -#define reg_mprj_globl_reg22 (*(volatile uint32_t*)0x10020058) -#define reg_mprj_globl_reg23 (*(volatile uint32_t*)0x1002005C) -#define reg_mprj_globl_reg24 (*(volatile uint32_t*)0x10020060) -#define reg_mprj_globl_reg25 (*(volatile uint32_t*)0x10020064) -#define reg_mprj_globl_reg26 (*(volatile uint32_t*)0x10020068) -#define reg_mprj_globl_reg27 (*(volatile uint32_t*)0x1002006C) +#define reg_mprj_globl_reg0 (*(volatile uint32_t*)0x10020000) // Chip ID +#define reg_mprj_globl_reg1 (*(volatile uint32_t*)0x10020004) // Global Config-0 +#define reg_mprj_globl_reg2 (*(volatile uint32_t*)0x10020008) // Global Config-1 +#define reg_mprj_globl_reg3 (*(volatile uint32_t*)0x1002000C) // Global Interrupt Mask +#define reg_mprj_globl_reg4 (*(volatile uint32_t*)0x10020010) // Global Interrupt +#define reg_mprj_globl_reg5 (*(volatile uint32_t*)0x10020014) // Multi functional sel +#define reg_mprj_globl_soft0 (*(volatile uint32_t*)0x10020018) // Sof Register-0 +#define reg_mprj_globl_soft1 (*(volatile uint32_t*)0x1002001C) // Sof Register-1 +#define reg_mprj_globl_soft2 (*(volatile uint32_t*)0x10020020) // Sof Register-2 +#define reg_mprj_globl_soft3 (*(volatile uint32_t*)0x10020024) // Sof Register-3 +#define reg_mprj_globl_soft4 (*(volatile uint32_t*)0x10020028) // Sof Register-4 +#define reg_mprj_globl_soft5 (*(volatile uint32_t*)0x1002002C) // Sof Register-5 // ------------------------------------------------------------------------- // Test copying code into SRAM and running it from there. // ------------------------------------------------------------------------- void test_function() { - reg_mprj_globl_reg24 = 0x33445566; // Sig-3 - reg_mprj_globl_reg25 = 0x44556677; // Sig-4 + reg_mprj_globl_soft2 = 0x33445566; // Sig-2 + reg_mprj_globl_soft3 = 0x44556677; // Sig-3 return; } @@ -70,18 +54,18 @@ src_ptr = &test_function; dst_ptr = func; - reg_mprj_globl_reg22 = 0x11223344; // Sig-1 + reg_mprj_globl_soft0 = 0x11223344; // Sig-0 while (src_ptr < &main) { *(dst_ptr++) = *(src_ptr++); } // Call the routine in SRAM - reg_mprj_globl_reg23 = 0x22334455; // Sig-2 + reg_mprj_globl_soft1 = 0x22334455; // Sig-1 ((void(*)())func)(); - reg_mprj_globl_reg26 = 0x55667788; - reg_mprj_globl_reg27 = 0x66778899; + reg_mprj_globl_soft4 = 0x55667788; // Sig-4 + reg_mprj_globl_soft5 = 0x66778899; // Sig-5 // Signal end of test }
diff --git a/verilog/dv/user_sram_exec/user_sram_exec_tb.v b/verilog/dv/user_sram_exec/user_sram_exec_tb.v index 2aaad02..a8f6568 100644 --- a/verilog/dv/user_sram_exec/user_sram_exec_tb.v +++ b/verilog/dv/user_sram_exec/user_sram_exec_tb.v
@@ -137,10 +137,10 @@ // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); end else begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); end @@ -162,12 +162,12 @@ // 0x3000002C = 0x66778899; test_fail = 0; - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,read_data,32'h11223344); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,read_data,32'h22334455); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,read_data,32'h33445566); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,read_data,32'h44556677); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,read_data,32'h55667788); - wb_user_core_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,read_data,32'h66778899); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,read_data,32'h11223344); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,read_data,32'h22334455); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,read_data,32'h33445566); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,read_data,32'h44556677); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,read_data,32'h55667788); + wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,read_data,32'h66778899);
diff --git a/verilog/dv/user_sspi/.sspi_task.v.swp b/verilog/dv/user_sspi/.sspi_task.v.swp deleted file mode 100644 index ecd1440..0000000 --- a/verilog/dv/user_sspi/.sspi_task.v.swp +++ /dev/null Binary files differ
diff --git a/verilog/dv/user_sspi/user_sspi_tb.v b/verilog/dv/user_sspi/user_sspi_tb.v index c8e3f5c..eee28ca 100644 --- a/verilog/dv/user_sspi/user_sspi_tb.v +++ b/verilog/dv/user_sspi/user_sspi_tb.v
@@ -142,14 +142,14 @@ // Enable SPI Multi Functional Ports // wire cfg_spim_enb = cfg_multi_func_sel[10]; // wire [3:0] cfg_spim_cs_enb = cfg_multi_func_sel[14:11]; - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_MULTI_FUNC,'h7C00); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_MUTI_FUNC,'h7C00); repeat (2) @(posedge clock); #1; // Remove the reset // Remove WB and SPI/UART Reset, Keep CORE under Reset - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h01F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F); test_fail = 0; @@ -448,6 +448,11 @@ ); +// SSPI Slave I/F +assign io_in[0] = 1'b1; // RESET +assign io_in[16] = 1'b0 ; // SPIS SCK + + `ifndef GL // Drive Power for Hold Fix Buf // All standard cell need power hook-up for functionality work initial begin @@ -456,7 +461,7 @@ `endif //------------------------------------------------------ -// Integrate the Serial flash with qurd support to +// Integrate the Serial flash with quad support to // user core using the gpio pads // ---------------------------------------------------- wire flash_io1;
diff --git a/verilog/dv/user_timer/user_timer_tb.v b/verilog/dv/user_timer/user_timer_tb.v index b27d655..5a4f0ab 100644 --- a/verilog/dv/user_timer/user_timer_tb.v +++ b/verilog/dv/user_timer/user_timer_tb.v
@@ -146,13 +146,13 @@ // Remove the reset // Remove WB and SPI/UART Reset, Keep CORE under Reset - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h01F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F); // config 1us based on system clock - 1000/25ns = 40 - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG1,39); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_GLBL,39); // Enable Timer Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR_MSK,'h700); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_INTR_MSK,'h700); test_fail = 0; repeat (200) @(posedge clock); @@ -160,25 +160,25 @@ $display("Step-1, Timer-0: 1us * 100 = 100us; Timer-1: 200us; Timer-2: 300us"); test_step = 1; - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER0,'h0001_0063); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER1,'h0001_00C7); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER2,'h0001_012B); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_0,'h0001_0063); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_1,'h0001_00C7); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_2,'h0001_012B); timer_monitor(OneUsPeriod*100,OneUsPeriod*200,OneUsPeriod*300); $display("Checking the Timer Interrupt generation and clearing"); // Disable the Timer - To avoid multiple interrupt generation // during status check and interrupt clearing - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER0,'h0000_0063); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER1,'h0000_00C7); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER2,'h0000_012B); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_0,'h0000_0063); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_1,'h0000_00C7); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_2,'h0000_012B); - wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data); + wb_user_core_read(`ADDR_SPACE_GLBL+`GPIO_CFG_INTR_STAT,read_data); if((u_top.u_pinmux.irq_lines[10:8] == 3'b111) && (read_data[10:8] == 3'b111)) begin $display("STATUS: Timer Interrupt detected "); // Clearing the Timer Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,'h700); - wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data); + wb_user_core_write(`ADDR_SPACE_GLBL+`GPIO_CFG_INTR_CLR,'h700); + wb_user_core_read(`ADDR_SPACE_GLBL+`GPIO_CFG_INTR_STAT,read_data); if((u_top.u_pinmux.irq_lines[10:8] == 3'b111) && (read_data[10:8] == 3'b000)) begin $display("ERROR: Timer Interrupt not cleared "); test_fail = 1; @@ -192,25 +192,25 @@ $display("Step-2, Timer-0: 1us * 200 = 200us; Timer-1: 300us; Timer-2: 400us"); test_step = 2; - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER0,'h0001_00C7); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER1,'h0001_012B); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER2,'h0001_018F); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_0,'h0001_00C7); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_1,'h0001_012B); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_2,'h0001_018F); timer_monitor(OneUsPeriod*200,OneUsPeriod*300,OneUsPeriod*400); $display("Checking the Timer Interrupt generation and clearing"); // Disable the Timer - To avoid multiple interrupt generation // during status check and interrupt clearing - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER0,'h0000_0063); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER1,'h0000_00C7); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_CFG_TIMER2,'h0000_012B); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_0,'h0000_0063); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_1,'h0000_00C7); + wb_user_core_write(`ADDR_SPACE_TIMER+`TIMER_CFG_TIMER_2,'h0000_012B); - wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data); + wb_user_core_read(`ADDR_SPACE_GLBL+`GPIO_CFG_INTR_STAT,read_data); if((u_top.u_pinmux.irq_lines[10:8] == 3'b111) && (read_data[10:8] == 3'b111)) begin $display("STATUS: Timer Interrupt detected "); // Clearing the Timer Interrupt - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,'h700); - wb_user_core_read(`ADDR_SPACE_PINMUX+`PINMUX_GBL_INTR,read_data); + wb_user_core_write(`ADDR_SPACE_GLBL+`GPIO_CFG_INTR_CLR,'h700); + wb_user_core_read(`ADDR_SPACE_GLBL+`GPIO_CFG_INTR_STAT,read_data); if((u_top.u_pinmux.irq_lines[10:8] == 3'b111) && (read_data[10:8] == 3'b000)) begin $display("ERROR: Timer Interrupt not cleared "); test_fail = 1;
diff --git a/verilog/dv/user_uart/user_uart_tb.v b/verilog/dv/user_uart/user_uart_tb.v index e0656e9..0096617 100644 --- a/verilog/dv/user_uart/user_uart_tb.v +++ b/verilog/dv/user_uart/user_uart_tb.v
@@ -146,7 +146,8 @@ `ifdef WFDUMP initial begin $dumpfile("simx.vcd"); - $dumpvars(0, user_uart_tb); + $dumpvars(1, user_uart_tb); + $dumpvars(1, user_uart_tb.u_top); end `endif @@ -176,23 +177,23 @@ wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); // Enable UART Multi Functional Ports - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_MULTI_FUNC,'h100); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_MUTI_FUNC,'h100); repeat (2) @(posedge clock); #1; // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h11F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F); end else if(d_risc_id == 1) begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h21F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F); end else if(d_risc_id == 2) begin $display("STATUS: Working with Risc core 2"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h41F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h41F); end else if(d_risc_id == 3) begin $display("STATUS: Working with Risc core 3"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h81F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h81F); end repeat (100) @(posedge clock); // wait for Processor Get Ready @@ -299,6 +300,11 @@ ); +// SSPI Slave I/F +assign io_in[0] = 1'b1; // RESET +assign io_in[16] = 1'b0 ; // SPIS SCK + + `ifndef GL // Drive Power for Hold Fix Buf // All standard cell need power hook-up for functionality work initial begin
diff --git a/verilog/dv/user_uart1/user_uart1_tb.v b/verilog/dv/user_uart1/user_uart1_tb.v index 44587e4..6a2d3c5 100644 --- a/verilog/dv/user_uart1/user_uart1_tb.v +++ b/verilog/dv/user_uart1/user_uart1_tb.v
@@ -176,23 +176,23 @@ wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); // Enable UART Multi Functional Ports - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_MULTI_FUNC,'h200); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_MUTI_FUNC,'h200); repeat (2) @(posedge clock); #1; // Remove all the reset if(d_risc_id == 0) begin $display("STATUS: Working with Risc core 0"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h143); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h143); end else if(d_risc_id == 1) begin $display("STATUS: Working with Risc core 1"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h243); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h243); end else if(d_risc_id == 2) begin $display("STATUS: Working with Risc core 2"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h443); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h443); end else if(d_risc_id == 3) begin $display("STATUS: Working with Risc core 2"); - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h84F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h84F); end repeat (100) @(posedge clock); // wait for Processor Get Ready @@ -299,6 +299,11 @@ ); +// SSPI Slave I/F +assign io_in[0] = 1'b1; // RESET +assign io_in[16] = 1'b0 ; // SPIS SCK + + `ifndef GL // Drive Power for Hold Fix Buf // All standard cell need power hook-up for functionality work initial begin
diff --git a/verilog/dv/user_uart_master/user_uart_master_tb.v b/verilog/dv/user_uart_master/user_uart_master_tb.v index 40d7b07..4ed2f00 100644 --- a/verilog/dv/user_uart_master/user_uart_master_tb.v +++ b/verilog/dv/user_uart_master/user_uart_master_tb.v
@@ -195,19 +195,19 @@ $display("Monitor: Writing expected value"); test_fail = 0; - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,32'h11223344); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,32'h22334455); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,32'h33445566); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,32'h44556677); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,32'h55667788); - uartm_reg_write(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,32'h66778899); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,32'h11223344); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,32'h22334455); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,32'h33445566); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,32'h44556677); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,32'h55667788); + uartm_reg_write(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,32'h66778899); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_1,32'h11223344); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_2,32'h22334455); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_3,32'h33445566); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_4,32'h44556677); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_5,32'h55667788); - uartm_reg_read_check(`ADDR_SPACE_PINMUX+`PINMUX_SOFT_REG_6,32'h66778899); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,32'h11223344); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,32'h22334455); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,32'h33445566); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_3,32'h44556677); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_4,32'h55667788); + uartm_reg_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_5,32'h66778899);
diff --git a/verilog/dv/user_usb/user_usb_tb.v b/verilog/dv/user_usb/user_usb_tb.v index 5974990..98115f7 100644 --- a/verilog/dv/user_usb/user_usb_tb.v +++ b/verilog/dv/user_usb/user_usb_tb.v
@@ -176,7 +176,7 @@ wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1); // Enable SPI Multi Functional Ports - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GPIO_MULTI_FUNC,'h400); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_MUTI_FUNC,'h400); repeat (2) @(posedge clock); #1; @@ -188,7 +188,7 @@ // Remove the reset // Remove WB and SPI/UART Reset, Keep CORE under Reset - wb_user_core_write(`ADDR_SPACE_PINMUX+`PINMUX_GBL_CFG0,'h03F); + wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h03F); test_fail = 0;
diff --git a/verilog/dv/wb_port/Makefile b/verilog/dv/wb_port/Makefile index 5ae8623..3ec839e 100644 --- a/verilog/dv/wb_port/Makefile +++ b/verilog/dv/wb_port/Makefile
@@ -53,7 +53,7 @@ export TOOLS ?= /opt/riscv32i export GCC_PATH ?= $(TOOLS)/bin -export GCC_PREFIX?= riscv32-unknown-linux-gnu +GCC_PREFIX?=riscv32-unknown-elf
diff --git a/verilog/dv/wb_port/wb_port.c b/verilog/dv/wb_port/wb_port.c index 03a5799..642303c 100644 --- a/verilog/dv/wb_port/wb_port.c +++ b/verilog/dv/wb_port/wb_port.c
@@ -98,31 +98,32 @@ reg_mprj_wbhost_reg0 = 0x1; // Remove Reset - reg_pinmux_gbl_cfg0 = 0x01f; + reg_glbl_cfg0 = 0x01f; - if (reg_pinmux_chip_id != 0x82682301) bFail = 1; + if (reg_glbl_chip_id != 0x82682501) bFail = 1; + if (bFail == 1) reg_mprj_datal = 0xAB610000; // write software write & read Register - reg_pinmux_soft_reg_1 = 0x11223344; - reg_pinmux_soft_reg_2 = 0x22334455; - reg_pinmux_soft_reg_3 = 0x33445566; - reg_pinmux_soft_reg_4 = 0x44556677; - reg_pinmux_soft_reg_5 = 0x55667788; - reg_pinmux_soft_reg_6 = 0x66778899; + reg_glbl_soft_reg_0 = 0x11223344; + reg_glbl_soft_reg_1 = 0x22334455; + reg_glbl_soft_reg_2 = 0x33445566; + reg_glbl_soft_reg_3 = 0x44556677; + reg_glbl_soft_reg_4 = 0x55667788; + reg_glbl_soft_reg_5 = 0x66778899; - if (reg_pinmux_soft_reg_1 != 0x11223344) bFail = 1; - if (bFail == 1) reg_mprj_datal = 0xAB610000; - if (reg_pinmux_soft_reg_2 != 0x22334455) bFail = 1; + if (reg_glbl_soft_reg_0 != 0x11223344) bFail = 1; if (bFail == 1) reg_mprj_datal = 0xAB620000; - if (reg_pinmux_soft_reg_3 != 0x33445566) bFail = 1; + if (reg_glbl_soft_reg_1 != 0x22334455) bFail = 1; if (bFail == 1) reg_mprj_datal = 0xAB630000; - if (reg_pinmux_soft_reg_4 != 0x44556677) bFail = 1; + if (reg_glbl_soft_reg_2 != 0x33445566) bFail = 1; if (bFail == 1) reg_mprj_datal = 0xAB640000; - if (reg_pinmux_soft_reg_5 != 0x55667788) bFail = 1; + if (reg_glbl_soft_reg_3 != 0x44556677) bFail = 1; if (bFail == 1) reg_mprj_datal = 0xAB650000; - if (reg_pinmux_soft_reg_6 != 0x66778899) bFail = 1; + if (reg_glbl_soft_reg_4 != 0x55667788) bFail = 1; if (bFail == 1) reg_mprj_datal = 0xAB660000; + if (reg_glbl_soft_reg_5 != 0x66778899) bFail = 1; + if (bFail == 1) reg_mprj_datal = 0xAB670000; if(bFail == 0) { reg_mprj_datal = 0xAB6A0000;
diff --git a/verilog/includes/includes.gl.caravel_user_project b/verilog/includes/includes.gl.caravel_user_project index 2876d64..d355b07 100644 --- a/verilog/includes/includes.gl.caravel_user_project +++ b/verilog/includes/includes.gl.caravel_user_project
@@ -117,7 +117,7 @@ #-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/pwm.sv #-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/timer.sv #else -$(USER_PROJECT_VERILOG)/gl/pinmux.v +$(USER_PROJECT_VERILOG)/gl/pinmux_top.v #endif ##################################################
diff --git a/verilog/includes/includes.rtl.caravel_user_project b/verilog/includes/includes.rtl.caravel_user_project index 5e4aeb0..01f8d3c 100644 --- a/verilog/includes/includes.rtl.caravel_user_project +++ b/verilog/includes/includes.rtl.caravel_user_project
@@ -7,11 +7,19 @@ +incdir+$(USER_PROJECT_VERILOG)/dv/model +incdir+$(USER_PROJECT_VERILOG)/dv/agents $(USER_PROJECT_VERILOG)/rtl/user_reg_map.v +-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/pinmux_top.sv -v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/pinmux.sv --v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/pinmux_reg.sv +-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/glbl_reg.sv +-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/gpio_top.sv -v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/gpio_intr.sv +-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/gpio_reg.sv +-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/pwm_top.sv +-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/pwm_reg.sv -v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/pwm.sv +-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/timer_top.sv +-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/timer_reg.sv -v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/timer.sv +-v $(USER_PROJECT_VERILOG)/rtl/pinmux/src/semaphore_reg.sv -v $(USER_PROJECT_VERILOG)/rtl/lib/pulse_gen_type1.sv -v $(USER_PROJECT_VERILOG)/rtl/lib/pulse_gen_type2.sv -v $(USER_PROJECT_VERILOG)/rtl/qspim/src/qspim_top.sv @@ -45,6 +53,7 @@ -v $(USER_PROJECT_VERILOG)/rtl/sspim/src/sspim_ctl.sv -v $(USER_PROJECT_VERILOG)/rtl/sspim/src/sspim_if.sv -v $(USER_PROJECT_VERILOG)/rtl/sspim/src/sspim_cfg.sv +-v $(USER_PROJECT_VERILOG)/rtl/sspim/src/sspim_clkgen.sv -v $(USER_PROJECT_VERILOG)/rtl/uart_i2c_usb_spi/src/uart_i2c_usb_spi.sv -v $(USER_PROJECT_VERILOG)/rtl/lib/async_fifo.sv -v $(USER_PROJECT_VERILOG)/rtl/lib/registers.v
diff --git a/verilog/rtl/lib/registers.v b/verilog/rtl/lib/registers.v index e4a87a1..b9a093e 100755 --- a/verilog/rtl/lib/registers.v +++ b/verilog/rtl/lib/registers.v
@@ -288,6 +288,45 @@ endmodule /********************************************************************* + module: generic 16b register +***********************************************************************/ +module gen_16b_reg ( + //List of Inputs + cs, + we, + data_in, + reset_n, + clk, + + //List of Outs + data_out + ); + + parameter RESET_DEFAULT = 16'h0; + input [1:0] we; + input cs; + input [15:0] data_in; + input reset_n; + input clk; + output [15:0] data_out; + + + reg [15:0] data_out; + +always @ (posedge clk or negedge reset_n) begin + if (reset_n == 1'b0) begin + data_out <= RESET_DEFAULT ; + end + else begin + if(cs && we[0]) data_out[7:0] <= data_in[7:0]; + if(cs && we[1]) data_out[15:8] <= data_in[15:8]; + end +end + + +endmodule + +/********************************************************************* module: generic 32b register ***********************************************************************/ module gen_32b_reg (
diff --git a/verilog/rtl/pinmux/src/glbl_reg.sv b/verilog/rtl/pinmux/src/glbl_reg.sv new file mode 100644 index 0000000..d91ff4e --- /dev/null +++ b/verilog/rtl/pinmux/src/glbl_reg.sv
@@ -0,0 +1,437 @@ +////////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> +// +////////////////////////////////////////////////////////////////////// +//// //// +//// Global Register //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +//// Hold all the Global and PinMux Register //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 16th Feb 2021, Dinesh A //// +//// initial version //// +////////////////////////////////////////////////////////////////////// +// +module glbl_reg ( + // System Signals + // Inputs + input logic mclk , + input logic h_reset_n , + + // Global Reset control + output logic [1:0] cpu_core_rst_n , + output logic cpu_intf_rst_n , + output logic qspim_rst_n , + output logic sspim_rst_n , + output logic [1:0] uart_rst_n , + output logic i2cm_rst_n , + output logic usb_rst_n , + + // Reg Bus Interface Signal + input logic reg_cs , + input logic reg_wr , + input logic [3:0] reg_addr , + input logic [31:0] reg_wdata , + input logic [3:0] reg_be , + + // Outputs + output logic [31:0] reg_rdata , + output logic reg_ack , + + input logic [1:0] ext_intr_in , + + // Risc configuration + output logic [15:0] irq_lines , + output logic soft_irq , + output logic [2:0] user_irq , + input logic usb_intr , + input logic i2cm_intr , + + output logic [15:0] cfg_riscv_ctrl , + output logic [31:0] cfg_multi_func_sel ,// multifunction pins + + + input logic [2:0] timer_intr , + input logic gpio_intr + ); + + + +//----------------------------------------------------------------------- +// Internal Wire Declarations +//----------------------------------------------------------------------- + +logic sw_rd_en ; +logic sw_wr_en; +logic [4:0] sw_addr; // addressing 16 registers +logic [31:0] sw_reg_wdata; +logic [3:0] wr_be ; + +logic [31:0] reg_out; +logic [31:0] reg_0; // Chip ID +logic [31:0] reg_1; // Global Reg-0 +logic [31:0] reg_2; // Global Reg-1 +logic [31:0] reg_3; // Global Interrupt Mask +logic [31:0] reg_4; // Global Interrupt Status +logic [31:0] reg_5; // Multi Function Sel +logic [31:0] reg_6; // Software Reg-0 +logic [31:0] reg_7; // Software Reg-1 +logic [31:0] reg_8; // Software Reg-2 +logic [31:0] reg_9; // Software Reg-3 +logic [31:0] reg_10; // Software Reg-4 +logic [31:0] reg_11; // Software Reg-5 + + +logic cs_int; + + +assign sw_addr = reg_addr ; +assign sw_rd_en = reg_cs & !reg_wr; +assign sw_wr_en = reg_cs & reg_wr; +assign wr_be = reg_be; +assign sw_reg_wdata = reg_wdata; + + +always @ (posedge mclk or negedge h_reset_n) +begin : preg_out_Seq + if (h_reset_n == 1'b0) begin + reg_rdata <= 'h0; + reg_ack <= 1'b0; + end else if (reg_cs && !reg_ack) begin + reg_rdata <= reg_out ; + reg_ack <= 1'b1; + end else begin + reg_ack <= 1'b0; + end +end + + + +//----------------------------------------------------------------------- +// register read enable and write enable decoding logic +//----------------------------------------------------------------------- +wire sw_wr_en_0 = sw_wr_en & (sw_addr == 4'h0); +wire sw_wr_en_1 = sw_wr_en & (sw_addr == 4'h1); +wire sw_wr_en_2 = sw_wr_en & (sw_addr == 4'h2); +wire sw_wr_en_3 = sw_wr_en & (sw_addr == 4'h3); +wire sw_wr_en_4 = sw_wr_en & (sw_addr == 4'h4); +wire sw_wr_en_5 = sw_wr_en & (sw_addr == 4'h5); +wire sw_wr_en_6 = sw_wr_en & (sw_addr == 4'h6); +wire sw_wr_en_7 = sw_wr_en & (sw_addr == 4'h7); +wire sw_wr_en_8 = sw_wr_en & (sw_addr == 4'h8); +wire sw_wr_en_9 = sw_wr_en & (sw_addr == 4'h9); +wire sw_wr_en_10 = sw_wr_en & (sw_addr == 4'hA); +wire sw_wr_en_11 = sw_wr_en & (sw_addr == 4'hB); + + +wire sw_rd_en_0 = sw_rd_en & (sw_addr == 4'h0); +wire sw_rd_en_1 = sw_rd_en & (sw_addr == 4'h1); +wire sw_rd_en_2 = sw_rd_en & (sw_addr == 4'h2); +wire sw_rd_en_3 = sw_rd_en & (sw_addr == 4'h3); +wire sw_rd_en_4 = sw_rd_en & (sw_addr == 4'h4); +wire sw_rd_en_5 = sw_rd_en & (sw_addr == 4'h5); +wire sw_rd_en_6 = sw_rd_en & (sw_addr == 4'h6); +wire sw_rd_en_7 = sw_rd_en & (sw_addr == 4'h7); +wire sw_rd_en_8 = sw_rd_en & (sw_addr == 4'h8); +wire sw_rd_en_9 = sw_rd_en & (sw_addr == 4'h9); +wire sw_rd_en_10 = sw_rd_en & (sw_addr == 4'hA); +wire sw_rd_en_11 = sw_rd_en & (sw_addr == 4'hB); + +//----------------------------------------------------------------------- +// Individual register assignments +//----------------------------------------------------------------------- + +// Chip ID +// chip-id[3:0] mapping +// 0 - YIFIVE (MPW-2) +// 1 - Riscdunio (MPW-3) +// 2 - Riscdunio (MPW-4) +// 3 - Riscdunio (MPW-5) +// 4 - Riscdunio (MPW-6) +// 5 - Riscdunio (MPW-7) +// 6 - Riscdunio (MPW-8) +// 7 - Riscdunio (MPW-9) + +wire [15:0] manu_id = 16'h8268; // Asci value of RD +wire [3:0] total_core = 4'h2; +wire [3:0] chip_id = 4'h5; +wire [7:0] chip_rev = 8'h01; + +assign reg_0 = {manu_id,total_core,chip_id,chip_rev}; + + +//------------------------------------------ +// reg-1: GLBL_CFG_0 +//------------------------------------------ +wire [31:0] cfg_glb_ctrl = reg_1; + +ctech_buf u_buf_cpu_intf_rst (.A(cfg_glb_ctrl[0]),.X(cpu_intf_rst_n)); +ctech_buf u_buf_qspim_rst (.A(cfg_glb_ctrl[1]),.X(qspim_rst_n)); +ctech_buf u_buf_sspim_rst (.A(cfg_glb_ctrl[2]),.X(sspim_rst_n)); +ctech_buf u_buf_uart0_rst (.A(cfg_glb_ctrl[3]),.X(uart_rst_n[0])); +ctech_buf u_buf_i2cm_rst (.A(cfg_glb_ctrl[4]),.X(i2cm_rst_n)); +ctech_buf u_buf_usb_rst (.A(cfg_glb_ctrl[5]),.X(usb_rst_n)); +ctech_buf u_buf_uart1_rst (.A(cfg_glb_ctrl[6]),.X(uart_rst_n[1])); + +ctech_buf u_buf_cpu0_rst (.A(cfg_glb_ctrl[8]),.X(cpu_core_rst_n[0])); +ctech_buf u_buf_cpu1_rst (.A(cfg_glb_ctrl[9]),.X(cpu_core_rst_n[1])); + +gen_32b_reg #(32'h0) u_reg_1 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_1 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_1 ) + ); + +//---------------------------------------------- +// reg-2: GLBL_CFG_1 +//------------------------------------------ + +gen_32b_reg #(32'h0) u_reg_2 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_2 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_2 ) + ); + +assign cfg_riscv_ctrl = reg_2[31:16]; + +//----------------------------------------------------------------------- +// reg-3 : Global Interrupt Mask +//----------------------------------------------------------------------- + +gen_32b_reg #(32'h0) u_reg_3 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_3 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_3 ) + ); + +//----------------------------------------------------------------------- +// reg-4 : Global Interrupt Status +//----------------------------------------------------------------- +assign irq_lines = reg_3[15:0] & reg_4[15:0]; +assign soft_irq = reg_3[16] & reg_4[16]; +assign user_irq = reg_3[19:17]& reg_4[19:17]; + + +generic_register #(8,0 ) u_reg4_be0 ( + .we ({8{sw_wr_en_4 & + wr_be[0] }} ), + .data_in (sw_reg_wdata[7:0] ), + .reset_n (h_reset_n ), + .clk (mclk ), + + //List of Outs + .data_out (reg_4[7:0] ) + ); + + +wire [7:0] hware_intr_req = {gpio_intr, ext_intr_in[1:0], usb_intr, i2cm_intr,timer_intr[2:0]}; + +generic_intr_stat_reg #(.WD(8), + .RESET_DEFAULT(0)) u_reg4_be1 ( + //inputs + .clk (mclk ), + .reset_n (h_reset_n ), + .reg_we ({8{sw_wr_en_4 & reg_ack & + wr_be[1] }} ), + .reg_din (sw_reg_wdata[15:8] ), + .hware_req (hware_intr_req ), + + //outputs + .data_out (reg_4[15:8] ) + ); + + + +generic_register #(4,0 ) u_reg4_be2 ( + .we ({4{sw_wr_en_4 & + wr_be[2] }} ), + .data_in (sw_reg_wdata[19:16]), + .reset_n (h_reset_n ), + .clk (mclk ), + + //List of Outs + .data_out (reg_4[19:16] ) + ); + +assign reg_4[31:20] = '0; + + +//----------------------------------------------------------------------- +// Logic for cfg_multi_func_sel :Enable GPIO to act as multi function pins +//----------------------------------------------------------------------- +assign cfg_multi_func_sel = reg_5[31:0]; // to be used for read + + +gen_32b_reg #(32'h0) u_reg_5 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_5 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_5 ) + ); + +//----------------------------------------- +// Software Reg-0 : ASCI Representation of RISC = 32'h8273_8343 +// ---------------------------------------- +gen_32b_reg #(32'h8273_8343) u_reg_6 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_6 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_6 ) + ); + +//----------------------------------------- +// Software Reg-1, Release date: <DAY><MONTH><YEAR> +// ---------------------------------------- +gen_32b_reg #(32'h1508_2022) u_reg_7 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_7 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_7 ) + ); + +//----------------------------------------- +// Software Reg-2: Poject Revison 5.0 = 0005000 +// ---------------------------------------- +gen_32b_reg #(32'h0005_0000) u_reg_8 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_8 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_8 ) + ); + +//----------------------------------------- +// Software Reg-3 +// ---------------------------------------- +gen_32b_reg #(32'h0) u_reg_9 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_9 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_9 ) + ); + +//----------------------------------------- +// Software Reg-4 +// ---------------------------------------- +gen_32b_reg #(32'h0) u_reg_10 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_10 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_10 ) + ); + +//----------------------------------------- +// Software Reg-5 +// ---------------------------------------- +gen_32b_reg #(32'h0) u_reg_11 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_11 ), + .we (wr_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_11 ) + ); + + + +//----------------------------------------------------------------------- +// Register Read Path Multiplexer instantiation +//----------------------------------------------------------------------- + +always_comb +begin + reg_out [31:0] = 32'h0; + + case (sw_addr [3:0]) + 4'b0000 : reg_out [31:0] = reg_0 [31:0]; + 4'b0001 : reg_out [31:0] = reg_1 [31:0]; + 4'b0010 : reg_out [31:0] = reg_2 [31:0]; + 4'b0011 : reg_out [31:0] = reg_3 [31:0]; + 4'b0100 : reg_out [31:0] = reg_4 [31:0]; + 4'b0101 : reg_out [31:0] = reg_5 [31:0]; + 4'b0110 : reg_out [31:0] = reg_6 [31:0]; + 4'b0111 : reg_out [31:0] = reg_7 [31:0]; + 4'b1000 : reg_out [31:0] = reg_8 [31:0]; + 4'b1001 : reg_out [31:0] = reg_9 [31:0]; + 4'b1010 : reg_out [31:0] = reg_10 [31:0]; + 4'b1011 : reg_out [31:0] = reg_11 [31:0]; + default : reg_out [31:0] = 32'h0; + endcase +end + + +endmodule
diff --git a/verilog/rtl/pinmux/src/gpio_control.sv b/verilog/rtl/pinmux/src/gpio_control.sv deleted file mode 100644 index 4c917dc..0000000 --- a/verilog/rtl/pinmux/src/gpio_control.sv +++ /dev/null
@@ -1,44 +0,0 @@ - -// GPIO Interrupt Generation -module gpio_intr ( - input logic mclk ,// System clk - input logic h_reset_n ,// system reset - input logic [31:0] gpio_prev_indata ,// previously captured GPIO I/P pins data - input logic [31:0] cfg_gpio_data_in ,// GPIO I/P pins data captured into this - input logic [31:0] cfg_gpio_out_data ,// GPIO statuc O/P data from config reg - input logic [31:0] cfg_gpio_dir_sel ,// decides on GPIO pin is I/P or O/P at pad level - input logic [31:0] cfg_gpio_posedge_int_sel ,// select posedge interrupt - input logic [31:0] cfg_gpio_negedge_int_sel ,// select negedge interrupt - - - output logic [31:0] pad_gpio_out ,// GPIO O/P to the gpio cfg reg - output logic [31:0] gpio_int_event // to the cfg interrupt status reg - -); - - -integer i; -//----------------------------------------------------------------------- -// Logic for interrupt detection -//----------------------------------------------------------------------- - -reg [31:0] local_gpio_int_event; // to the cfg interrupt status reg -always @(cfg_gpio_data_in or cfg_gpio_negedge_int_sel or cfg_gpio_posedge_int_sel - or gpio_prev_indata) -begin - for (i=0; i<32; i=i+1) - begin - // looking for rising edge int - local_gpio_int_event[i] = ((cfg_gpio_posedge_int_sel[i] & ~gpio_prev_indata[i] - & cfg_gpio_data_in[i]) | - (cfg_gpio_negedge_int_sel[i] & gpio_prev_indata[i] & - ~cfg_gpio_data_in[i])); - // looking for falling edge int - end -end - -assign gpio_int_event = local_gpio_int_event[31:0]; // goes as O/P to the cfg reg - -assign pad_gpio_out = cfg_gpio_out_data[31:0] ;// O/P on the GPIO bus - -endmodule
diff --git a/verilog/rtl/pinmux/src/gpio_reg.sv b/verilog/rtl/pinmux/src/gpio_reg.sv new file mode 100644 index 0000000..be61923 --- /dev/null +++ b/verilog/rtl/pinmux/src/gpio_reg.sv
@@ -0,0 +1,325 @@ +////////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> +// +////////////////////////////////////////////////////////////////////// +//// //// +//// GPIO Register //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 15th Aug 2022, Dinesh A //// +//// initial version //// +////////////////////////////////////////////////////////////////////// +// +module gpio_reg ( + // System Signals + // Inputs + input logic mclk , + input logic h_reset_n , + + // Reg Bus Interface Signal + input logic reg_cs , + input logic reg_wr , + input logic [3:0] reg_addr , + input logic [31:0] reg_wdata , + input logic [3:0] reg_be , + + // Outputs + output logic [31:0] reg_rdata , + output logic reg_ack , + + + input logic [31:0] gpio_in_data , + output logic [31:0] gpio_prev_indata ,// previously captured GPIO I/P pins data + input logic [31:0] gpio_int_event , + output logic [31:0] cfg_gpio_out_data ,// GPIO statuc O/P data from config reg + output logic [31:0] cfg_gpio_dir_sel ,// decides on GPIO pin is I/P or O/P at pad level, 0 -> Input, 1 -> Output + output logic [31:0] cfg_gpio_out_type ,// GPIO Type, Unused + output logic [31:0] cfg_multi_func_sel ,// GPIO Multi function type + output logic [31:0] cfg_gpio_posedge_int_sel ,// select posedge interrupt + output logic [31:0] cfg_gpio_negedge_int_sel ,// select negedge interrupt + output logic [31:00] cfg_gpio_data_in , + + output logic gpio_intr + + + ); + +//----------------------------------------------------------------------- +// Internal Wire Declarations +//----------------------------------------------------------------------- + +logic sw_rd_en ; +logic sw_wr_en ; +logic [3:0] sw_addr ; // addressing 16 registers +logic [31:0] sw_reg_wdata ; +logic [3:0] sw_be ; + +logic [31:0] reg_out ; +logic [31:0] reg_0 ; // GPIO Direction Select +logic [31:0] reg_1 ; // GPIO TYPE - Unused +logic [31:0] reg_2 ; // GPIO IN DATA +logic [31:0] reg_3 ; // GPIO OUT DATA +logic [31:0] reg_4 ; // GPIO INTERRUPT STATUS/CLEAR +logic [31:0] reg_5 ; // GPIO INTERRUPT SET +logic [31:0] reg_6 ; // GPIO INTERRUPT MASK +logic [31:0] reg_7 ; // GPIO POSEDGE INTERRUPT SEL +logic [31:0] reg_8 ; // GPIO NEGEDGE INTERRUPT SEL + +assign sw_addr = reg_addr; +assign sw_rd_en = reg_cs & !reg_wr; +assign sw_wr_en = reg_cs & reg_wr; +assign sw_be = reg_be; +assign sw_reg_wdata = reg_wdata; + +//----------------------------------------------------------------------- +// register read enable and write enable decoding logic +//----------------------------------------------------------------------- +wire sw_wr_en_0 = sw_wr_en & (sw_addr == 4'h0); +wire sw_wr_en_1 = sw_wr_en & (sw_addr == 4'h1); +wire sw_wr_en_2 = sw_wr_en & (sw_addr == 4'h2); +wire sw_wr_en_3 = sw_wr_en & (sw_addr == 4'h3); +wire sw_wr_en_4 = sw_wr_en & (sw_addr == 4'h4); +wire sw_wr_en_5 = sw_wr_en & (sw_addr == 4'h5); +wire sw_wr_en_6 = sw_wr_en & (sw_addr == 4'h6); +wire sw_wr_en_7 = sw_wr_en & (sw_addr == 4'h7); +wire sw_wr_en_8 = sw_wr_en & (sw_addr == 4'h8); + +wire sw_rd_en_0 = sw_rd_en & (sw_addr == 4'h0); +wire sw_rd_en_1 = sw_rd_en & (sw_addr == 4'h1); +wire sw_rd_en_2 = sw_rd_en & (sw_addr == 4'h2); +wire sw_rd_en_3 = sw_rd_en & (sw_addr == 4'h3); +wire sw_rd_en_4 = sw_rd_en & (sw_addr == 4'h4); +wire sw_rd_en_5 = sw_rd_en & (sw_addr == 4'h5); +wire sw_rd_en_6 = sw_rd_en & (sw_addr == 4'h6); +wire sw_rd_en_7 = sw_rd_en & (sw_addr == 4'h7); +wire sw_rd_en_8 = sw_rd_en & (sw_addr == 4'h8); + + +always @ (posedge mclk or negedge h_reset_n) +begin : preg_out_Seq + if (h_reset_n == 1'b0) begin + reg_rdata <= 'h0; + reg_ack <= 1'b0; + end else if (reg_cs && !reg_ack) begin + reg_rdata <= reg_out; + reg_ack <= 1'b1; + end else begin + reg_ack <= 1'b0; + end +end + +//----------------------------------------------------------------------- +// Logic for cfg_gpio_dir_sel +//----------------------------------------------------------------------- +assign cfg_gpio_dir_sel = reg_0[31:0]; // data to the GPIO O/P pins + +gen_32b_reg #(32'h0) u_reg_0 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_0 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_0 ) + ); +//----------------------------------------------------------------------- +// Logic for cfg_gpio_out_type +//----------------------------------------------------------------------- +assign cfg_gpio_out_type = reg_1[31:0]; // Un-used + +gen_32b_reg #(32'h0) u_reg_1 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_1 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_1 ) + ); +//----------------------------------------------------------------------- +// Logic for gpio_data_in +//----------------------------------------------------------------------- +logic [31:0] gpio_in_data_s; +logic [31:0] gpio_in_data_ss; +// Double Sync the gpio pin data for edge detection +always @ (posedge mclk or negedge h_reset_n) +begin + if (h_reset_n == 1'b0) begin + reg_2 <= 'h0 ; + gpio_in_data_s <= 32'd0; + gpio_in_data_ss <= 32'd0; + end + else begin + gpio_in_data_s <= gpio_in_data; + gpio_in_data_ss <= gpio_in_data_s; + reg_2 <= gpio_in_data_ss; + end +end + + +assign cfg_gpio_data_in = reg_2[31:0]; // to be used for edge interrupt detect +assign gpio_prev_indata = gpio_in_data_ss; + +//----------------------------------------------------------------------- +// Logic for cfg_gpio_out_data +//----------------------------------------------------------------------- +assign cfg_gpio_out_data = reg_3[31:0]; // data to the GPIO control blk + +gen_32b_reg #(32'h0) u_reg_3 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_3 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_3 ) + ); + + + +//-------------------------------------------------------- +// Interrupt Status Generation +// Note: Reg_4 --> Interrupt Status Register, Writting '1' will clear the +// corresponding interrupt status bit. Writting '0' has no +// effect +// Reg_5 --> Writting one to this register will set the interrupt in +// interrupt status register (reg_4), Writting '0' does not has any +// effect. +/// Always update int_status, even if no register write is occuring. +// Interrupt posting is higher priority than int clear by host +//-------------------------------------------------------- +wire [31:0] gpio_int_status = reg_4; + +generic_intr_stat_reg #(.WD(32), + .RESET_DEFAULT(0)) u_reg_4 ( + //inputs + .clk (mclk ), + .reset_n (h_reset_n ), + .reg_we ({ + {8{sw_wr_en_4 & reg_ack & sw_be[2]}}, + {8{sw_wr_en_4 & reg_ack & sw_be[2]}}, + {8{sw_wr_en_4 & reg_ack & sw_be[1]}}, + {8{sw_wr_en_4 & reg_ack & sw_be[0]}} + } ), + .reg_din (sw_reg_wdata[31:0] ), + .hware_req (gpio_int_event | { + {8{sw_wr_en_5 & reg_ack}} & sw_reg_wdata[31:24], + {8{sw_wr_en_5 & reg_ack}} & sw_reg_wdata[23:16], + {8{sw_wr_en_5 & reg_ack}} & sw_reg_wdata[15:8] , + {8{sw_wr_en_5 & reg_ack}} & sw_reg_wdata[7:0] + } ), + + //outputs + .data_out (reg_4[31:0] ) + ); +//------------------------------------------------- +// Returns same value as interrupt status register +//------------------------------------------------ + +assign reg_5 = reg_4; +//----------------------------------------------------------------------- +// Logic for cfg_gpio_int_mask : GPIO interrupt mask +//----------------------------------------------------------------------- +wire [31:0] cfg_gpio_int_mask = reg_6[31:0]; // to be used for read + +assign gpio_intr = ( | (reg_4 & reg_6) ); // interrupt pin to the RISC + + +// Register-11 +gen_32b_reg #(32'h0) u_reg_6 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_6 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_6 ) + ); +//----------------------------------------------------------------------- +// Logic for cfg_gpio_posedge_int_sel : Enable posedge GPIO interrupt +//----------------------------------------------------------------------- +assign cfg_gpio_posedge_int_sel = reg_7[31:0]; // to be used for read +gen_32b_reg #(32'h0) u_reg_7 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_7 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_7 ) + ); +//----------------------------------------------------------------------- +// Logic for cfg_gpio_negedge_int_sel : Enable negedge GPIO interrupt +//----------------------------------------------------------------------- +assign cfg_gpio_negedge_int_sel = reg_8[31:0]; // to be used for read +gen_32b_reg #(32'h0) u_reg_8 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_8 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_8 ) + ); + + +//----------------------------------------------------------------------- +// Register Read Path Multiplexer instantiation +//----------------------------------------------------------------------- + +always_comb +begin + reg_out [31:0] = 32'h0; + + case (sw_addr [3:0]) + 4'b0000 : reg_out [31:0] = reg_0 [31:0]; + 4'b0001 : reg_out [31:0] = reg_1 [31:0]; + 4'b0010 : reg_out [31:0] = reg_2 [31:0]; + 4'b0011 : reg_out [31:0] = reg_3 [31:0]; + 4'b0100 : reg_out [31:0] = reg_4 [31:0]; + 4'b0101 : reg_out [31:0] = reg_5 [31:0]; + 4'b0110 : reg_out [31:0] = reg_6 [31:0]; + 4'b0111 : reg_out [31:0] = reg_7 [31:0]; + 4'b1000 : reg_out [31:0] = reg_8 [31:0]; + default : reg_out [31:0] = 32'h0; + endcase +end + +endmodule
diff --git a/verilog/rtl/pinmux/src/gpio_top.sv b/verilog/rtl/pinmux/src/gpio_top.sv new file mode 100644 index 0000000..0a7fd02 --- /dev/null +++ b/verilog/rtl/pinmux/src/gpio_top.sv
@@ -0,0 +1,130 @@ +////////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> +// +////////////////////////////////////////////////////////////////////// +//// //// +//// GPIO Top //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +/// //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 15th Aug 2022, Dinesh A //// +//// initial version //// +////////////////////////////////////////////////////////////////////// + +module gpio_top ( + // System Signals + // Inputs + input logic mclk, + input logic h_reset_n, + + // Reg Bus Interface Signal + input logic reg_cs, + input logic reg_wr, + input logic [3:0] reg_addr, + input logic [31:0] reg_wdata, + input logic [3:0] reg_be, + + // Outputs + output logic [31:0] reg_rdata, + output logic reg_ack, + + output logic [31:0] cfg_gpio_dir_sel, + input logic [31:0] pad_gpio_in, + output logic [31:0] pad_gpio_out, + + output logic gpio_intr + + ); + + +logic [31:0] gpio_prev_indata ;// previously captured GPIO I/P pins data +logic [31:0] cfg_gpio_out_data ;// GPIO statuc O/P data from config reg +logic [31:0] cfg_gpio_out_type ;// GPIO Type, Unused +logic [31:0] cfg_multi_func_sel ;// GPIO Multi function type +logic [31:0] cfg_gpio_posedge_int_sel ;// select posedge interrupt +logic [31:0] cfg_gpio_negedge_int_sel ;// select negedge interrupt +logic [31:00] cfg_gpio_data_in ; +logic [31:0] gpio_int_event ; + + +gpio_reg u_reg ( + .mclk (mclk ), + .h_reset_n (h_reset_n ), + + // Reg Bus Interface Signal + .reg_cs (reg_cs ), + .reg_wr (reg_wr ), + .reg_addr (reg_addr ), + .reg_wdata (reg_wdata ), + .reg_be (reg_be ), + + // Outputs + .reg_rdata (reg_rdata ), + .reg_ack (reg_ack ), + + // GPIO input pins + .gpio_in_data (pad_gpio_in ), + .gpio_prev_indata (gpio_prev_indata ), + .gpio_int_event (gpio_int_event ), + + // GPIO config pins + .cfg_gpio_out_data (cfg_gpio_out_data ), + .cfg_gpio_dir_sel (cfg_gpio_dir_sel ), + .cfg_gpio_out_type (cfg_gpio_out_type ), + .cfg_gpio_posedge_int_sel (cfg_gpio_posedge_int_sel), + .cfg_gpio_negedge_int_sel (cfg_gpio_negedge_int_sel), + .cfg_multi_func_sel (cfg_multi_func_sel ), + .cfg_gpio_data_in (cfg_gpio_data_in ), + + .gpio_intr (gpio_intr ) + + + ); + + +gpio_intr_gen u_gpio_intr ( + // System Signals + // Inputs + .mclk (mclk ), + .h_reset_n (h_reset_n ), + + // GPIO cfg input pins + .gpio_prev_indata (gpio_prev_indata ), + .cfg_gpio_data_in (cfg_gpio_data_in ), + .cfg_gpio_dir_sel (cfg_gpio_dir_sel ), + .cfg_gpio_out_data (cfg_gpio_out_data ), + .cfg_gpio_posedge_int_sel(cfg_gpio_posedge_int_sel), + .cfg_gpio_negedge_int_sel(cfg_gpio_negedge_int_sel), + + + // GPIO output pins + .pad_gpio_out (pad_gpio_out ), + .gpio_int_event (gpio_int_event ) + ); + +endmodule
diff --git a/verilog/rtl/pinmux/src/pinmux.sv b/verilog/rtl/pinmux/src/pinmux.sv index e36556c..54c0ef9 100755 --- a/verilog/rtl/pinmux/src/pinmux.sv +++ b/verilog/rtl/pinmux/src/pinmux.sv
@@ -17,13 +17,13 @@ // ////////////////////////////////////////////////////////////////////// //// //// -//// Pinmux //// +//// Pinmux //// //// //// //// This file is part of the riscduino cores project //// //// https://github.com/dineshannayya/riscduino.git //// //// //// //// Description //// -//// PinMux Manages all the pin multiplexing //// +//// Manages all the pin multiplexing //// //// //// //// To Do: //// //// nothing //// @@ -32,482 +32,9 @@ //// - Dinesh Annayya, dinesha@opencores.org //// //// //// //// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// -//// initial version //// -//// 0.2 - 6 April 2021, Dinesh A //// -//// 1. SSPI CS# increased from 1 to 4 //// -// 2. UART I/F increase from 1 to 2 //// -//// 0.3 - 8 July 2022, Dinesh A //// -//// In ardunio, SPI chip select are control through //// -//// GPIO, So we have moved the Auto generated SPI CS //// -//// different config bit. I2C config position moved from//// -//// bit[14] to bit [15] //// -//// 0.4 - 20 July 2022, Dinesh A //// -//// On Power On, If RESET* = 0, then system will enter //// -//// in to SPIS slave mode to support boot //// +//// 0.1 - 16th Aug 2022, Dinesh A //// +//// Seperated the pinmux from pinmux_top module //// ////////////////////////////////////////////////////////////////////// - -module pinmux ( - `ifdef USE_POWER_PINS - input logic vccd1,// User area 1 1.8V supply - input logic vssd1,// User area 1 digital ground - `endif - // clock skew adjust - input logic [3:0] cfg_cska_pinmux, - input logic wbd_clk_int, - output logic wbd_clk_pinmux, - // System Signals - // Inputs - input logic mclk, - input logic h_reset_n, - - // Global Reset control - output logic [1:0] cpu_core_rst_n , - output logic cpu_intf_rst_n , - output logic qspim_rst_n , - output logic sspim_rst_n , - output logic [1:0] uart_rst_n , - output logic i2cm_rst_n , - output logic usb_rst_n , - - output logic [15:0] cfg_riscv_ctrl, - - // Reg Bus Interface Signal - input logic reg_cs, - input logic reg_wr, - input logic [7:0] reg_addr, - input logic [31:0] reg_wdata, - input logic [3:0] reg_be, - - // Outputs - output logic [31:0] reg_rdata, - output logic reg_ack, - - // Risc configuration - output logic [15:0] irq_lines, - output logic soft_irq, - output logic [2:0] user_irq, - input logic usb_intr, - input logic i2cm_intr, - - // Digital IO - output logic [37:0] digital_io_out, - output logic [37:0] digital_io_oen, - input logic [37:0] digital_io_in, - - // SFLASH I/F - input logic sflash_sck, - input logic [3:0] sflash_ss, - input logic [3:0] sflash_oen, - input logic [3:0] sflash_do, - output logic [3:0] sflash_di, - - // SSRAM I/F - Temp Masked - //input logic ssram_sck, - //input logic ssram_ss, - //input logic [3:0] ssram_oen, - //input logic [3:0] ssram_do, - //output logic [3:0] ssram_di, - - // USB I/F - input logic usb_dp_o, - input logic usb_dn_o, - input logic usb_oen, - output logic usb_dp_i, - output logic usb_dn_i, - - // UART I/F - input logic [1:0] uart_txd, - output logic [1:0] uart_rxd, - - // I2CM I/F - input logic i2cm_clk_o, - output logic i2cm_clk_i, - input logic i2cm_clk_oen, - input logic i2cm_data_oen, - input logic i2cm_data_o, - output logic i2cm_data_i, - - // SPI MASTER - input logic spim_sck, - input logic [3:0] spim_ssn, - input logic spim_miso, - output logic spim_mosi, - - // SPI SLAVE - output logic spis_sck, - output logic spis_ssn, - input logic spis_miso, - output logic spis_mosi, - - // UART MASTER I/F - output logic uartm_rxd , - input logic uartm_txd , - - output logic pulse1m_mclk, - output logic [31:0] pinmux_debug, - - input logic dbg_clk_mon - - ); - - - -logic sreset_n; // Sync Reset - -/* clock pulse */ -//******************************************************** -logic pulse_1us ; // 1 UsSecond Pulse for waveform Generator -logic pulse_1ms ; // 1 UsSecond Pulse for waveform Generator -logic pulse_1s ; // 1Second Pulse for waveform Generator -logic [9:0] cfg_pulse_1us ; // 1us pulse generation config - - -//--------------------------------------------------------- -// Timer Register -// ------------------------------------------------------- -logic [2:0] cfg_timer_update ; // CPU write to timer register -logic [31:0] cfg_timer0 ; // Timer-0 register -logic [31:0] cfg_timer1 ; // Timer-1 register -logic [31:0] cfg_timer2 ; // Timer-2 register -logic [2:0] timer_intr ; - -//--------------------------------------------------- -// 6 PWM variabled -//--------------------------------------------------- - -logic [5:0] pwm_wfm ; -logic [5:0] cfg_pwm_enb ; -logic [15:0] cfg_pwm0_high ; -logic [15:0] cfg_pwm0_low ; -logic [15:0] cfg_pwm1_high ; -logic [15:0] cfg_pwm1_low ; -logic [15:0] cfg_pwm2_high ; -logic [15:0] cfg_pwm2_low ; -logic [15:0] cfg_pwm3_high ; -logic [15:0] cfg_pwm3_low ; -logic [15:0] cfg_pwm4_high ; -logic [15:0] cfg_pwm4_low ; -logic [15:0] cfg_pwm5_high ; -logic [15:0] cfg_pwm5_low ; - - -wire [31:0] gpio_prev_indata ;// previously captured GPIO I/P pins data -wire [31:0] cfg_gpio_out_data ;// GPIO statuc O/P data from config reg -wire [31:0] cfg_gpio_dir_sel ;// decides on GPIO pin is I/P or O/P at pad level, 0 -> Input, 1 -> Output -wire [31:0] cfg_gpio_out_type ;// GPIO Type, Unused -wire [31:0] cfg_multi_func_sel ;// GPIO Multi function type -wire [31:0] cfg_gpio_posedge_int_sel ;// select posedge interrupt -wire [31:0] cfg_gpio_negedge_int_sel ;// select negedge interrupt -wire [31:00] cfg_gpio_data_in ; - - -reg [7:0] port_a_in; // PORT A Data In -reg [7:0] port_b_in; // PORT B Data In -reg [7:0] port_c_in; // PORT C Data In -reg [7:0] port_d_in; // PORT D Data In - -wire [7:0] port_a_out; // PORT A Data Out -wire [7:0] port_b_out; // PORT B Data Out -wire [7:0] port_c_out; // PORT C Data Out -wire [7:0] port_d_out; // PORT D Data Out -wire [31:0] pad_gpio_in; // GPIO data input from PAD -wire [31:0] pad_gpio_out; // GPIO Data out towards PAD -wire [31:0] gpio_int_event; // GPIO Interrupt indication -reg [1:0] ext_intr_in; // External PAD level interrupt - -// GPIO to PORT Mapping -assign pad_gpio_in[7:0] = port_a_in; -assign pad_gpio_in[15:8] = port_b_in; -assign pad_gpio_in[23:16] = port_c_in; -assign pad_gpio_in[31:24] = port_d_in; - -assign port_a_out = pad_gpio_out[7:0]; -assign port_b_out = pad_gpio_out[15:8]; -assign port_c_out = pad_gpio_out[23:16]; -assign port_d_out = pad_gpio_out[31:24]; - -assign pinmux_debug = '0; // Todo: Need to fix - -// SSRAM I/F - Temp masked -//input logic ssram_sck, -//input logic ssram_ss, -//input logic [3:0] ssram_oen, -//input logic [3:0] ssram_do, -//output logic [3:0] ssram_di, - -// pinmux clock skew control -clk_skew_adjust u_skew_pinmux - ( -`ifdef USE_POWER_PINS - .vccd1 (vccd1 ),// User area 1 1.8V supply - .vssd1 (vssd1 ),// User area 1 digital ground -`endif - .clk_in (wbd_clk_int ), - .sel (cfg_cska_pinmux ), - .clk_out (wbd_clk_pinmux ) - ); - -reset_sync u_rst_sync ( - .scan_mode (1'b0 ), - .dclk (mclk ), // Destination clock domain - .arst_n (h_reset_n ), // active low async reset - .srst_n (sreset_n ) - ); - -gpio_intr_gen u_gpio_intr ( - // System Signals - // Inputs - .mclk (mclk ), - .h_reset_n (sreset_n ), - - // GPIO cfg input pins - .gpio_prev_indata (gpio_prev_indata ), - .cfg_gpio_data_in (cfg_gpio_data_in ), - .cfg_gpio_dir_sel (cfg_gpio_dir_sel ), - .cfg_gpio_out_data (cfg_gpio_out_data ), - .cfg_gpio_posedge_int_sel(cfg_gpio_posedge_int_sel), - .cfg_gpio_negedge_int_sel(cfg_gpio_negedge_int_sel), - - - // GPIO output pins - .pad_gpio_out (pad_gpio_out ), - .gpio_int_event (gpio_int_event ) - ); - - -// 1us pulse -pulse_gen_type2 #(.WD(10)) u_pulse_1us ( - - .clk_pulse_o (pulse_1us ), - .clk (mclk ), - .reset_n (sreset_n ), - .cfg_max_cnt (cfg_pulse_1us ) - - ); - -// 1millisecond pulse -pulse_gen_type1 u_pulse_1ms ( - - .clk_pulse_o (pulse_1ms ), - .clk (mclk ), - .reset_n (sreset_n ), - .trigger (pulse_1us ) - - ); - -// 1 second pulse -pulse_gen_type1 u_pulse_1s ( - - .clk_pulse_o (pulse_1s ), - .clk (mclk ), - .reset_n (sreset_n ), - .trigger (pulse_1ms ) - - ); - - -// Timer - -wire cfg_timer0_enb = cfg_timer0[16]; -wire [1:0] cfg_timer0_clksel = cfg_timer0[18:17]; -wire [15:0] cfg_timer0_compare = cfg_timer0[15:0]; - -timer u_timer_0 - ( - .reset_n (sreset_n ),// system syn reset - .mclk (mclk ),// master clock - .pulse_1us (pulse_1us ), - .pulse_1ms (pulse_1ms ), - .pulse_1s (pulse_1s ), - - .cfg_timer_update (cfg_timer_update[0] ), - .cfg_timer_enb (cfg_timer0_enb ), - .cfg_timer_compare (cfg_timer0_compare ), - .cfg_timer_clksel (cfg_timer0_clksel ),// to select the timer 1us/1ms reference clock - - .timer_intr (timer_intr[0] ) - ); - -// Timer -wire cfg_timer1_enb = cfg_timer1[16]; -wire [1:0] cfg_timer1_clksel = cfg_timer1[18:17]; -wire [15:0] cfg_timer1_compare = cfg_timer1[15:0]; -timer u_timer_1 - ( - .reset_n (sreset_n ),// system syn reset - .mclk (mclk ),// master clock - .pulse_1us (pulse_1us ), - .pulse_1ms (pulse_1ms ), - .pulse_1s (pulse_1s ), - - .cfg_timer_update (cfg_timer_update[1] ), - .cfg_timer_enb (cfg_timer1_enb ), - .cfg_timer_compare (cfg_timer1_compare ), - .cfg_timer_clksel (cfg_timer1_clksel ),// to select the timer 1us/1ms reference clock - - .timer_intr (timer_intr[1] ) - ); - -// Timer -wire cfg_timer2_enb = cfg_timer2[16]; -wire [1:0] cfg_timer2_clksel = cfg_timer2[18:17]; -wire [15:0] cfg_timer2_compare = cfg_timer2[15:0]; -timer u_timer_2 - ( - .reset_n (sreset_n ),// system syn reset - .mclk (mclk ),// master clock - .pulse_1us (pulse_1us ), - .pulse_1ms (pulse_1ms ), - .pulse_1s (pulse_1s ), - - .cfg_timer_update (cfg_timer_update[2] ), - .cfg_timer_enb (cfg_timer2_enb ), - .cfg_timer_compare (cfg_timer2_compare ), - .cfg_timer_clksel (cfg_timer2_clksel ),// to select the timer 1us/1ms reference clock - - .timer_intr (timer_intr[2] ) - ); - - -pinmux_reg u_pinmux_reg( - // System Signals - // Inputs - .mclk (mclk ), - .h_reset_n (sreset_n ), - - .cpu_core_rst_n (cpu_core_rst_n ), - .cpu_intf_rst_n (cpu_intf_rst_n ), - .qspim_rst_n (qspim_rst_n ), - .sspim_rst_n (sspim_rst_n ), - .uart_rst_n (uart_rst_n ), - .i2cm_rst_n (i2cm_rst_n ), - .usb_rst_n (usb_rst_n ), - - .cfg_riscv_ctrl (cfg_riscv_ctrl ), - - - // Reg read/write Interface Inputs - .reg_cs (reg_cs ), - .reg_wr (reg_wr ), - .reg_addr (reg_addr ), - .reg_wdata (reg_wdata ), - .reg_be (reg_be ), - - .reg_rdata (reg_rdata ), - .reg_ack (reg_ack ), - - .ext_intr_in (ext_intr_in ), - - .irq_lines (irq_lines ), - .soft_irq (soft_irq ), - .user_irq (user_irq ), - .usb_intr (usb_intr ), - .i2cm_intr (i2cm_intr ), - - .cfg_pulse_1us (cfg_pulse_1us ), - - - .cfg_pwm0_high (cfg_pwm0_high ), - .cfg_pwm0_low (cfg_pwm0_low ), - .cfg_pwm1_high (cfg_pwm1_high ), - .cfg_pwm1_low (cfg_pwm1_low ), - .cfg_pwm2_high (cfg_pwm2_high ), - .cfg_pwm2_low (cfg_pwm2_low ), - .cfg_pwm3_high (cfg_pwm3_high ), - .cfg_pwm3_low (cfg_pwm3_low ), - .cfg_pwm4_high (cfg_pwm4_high ), - .cfg_pwm4_low (cfg_pwm4_low ), - .cfg_pwm5_high (cfg_pwm5_high ), - .cfg_pwm5_low (cfg_pwm5_low ), - - // GPIO input pins - .gpio_in_data (pad_gpio_in ), - .gpio_int_event (gpio_int_event ), - - // GPIO config pins - .cfg_gpio_out_data (cfg_gpio_out_data ), - .cfg_gpio_dir_sel (cfg_gpio_dir_sel ), - .cfg_gpio_out_type (cfg_gpio_out_type ), - .cfg_gpio_posedge_int_sel (cfg_gpio_posedge_int_sel), - .cfg_gpio_negedge_int_sel (cfg_gpio_negedge_int_sel), - .cfg_multi_func_sel (cfg_multi_func_sel ), - .cfg_gpio_data_in (cfg_gpio_data_in ), - - - // Outputs - .gpio_prev_indata (gpio_prev_indata ) , - - - .timer_intr (timer_intr ), - .cfg_timer_update (cfg_timer_update ), - .cfg_timer0 (cfg_timer0 ), - .cfg_timer1 (cfg_timer1 ), - .cfg_timer2 (cfg_timer2 ) - - - ); - - -// 6 PWM Waveform Generator -pwm u_pwm_0 ( - .waveform (pwm_wfm[0] ), - .h_reset_n (sreset_n ), - .mclk (mclk ), - .pulse1m_mclk (pulse_1ms ), - .cfg_pwm_enb (cfg_pwm_enb[0] ), - .cfg_pwm_high (cfg_pwm0_high ), - .cfg_pwm_low (cfg_pwm0_low ) - ); - -pwm u_pwm_1 ( - .waveform (pwm_wfm[1] ), - .h_reset_n (sreset_n ), - .mclk (mclk ), - .pulse1m_mclk (pulse_1ms ), - .cfg_pwm_enb (cfg_pwm_enb[1] ), - .cfg_pwm_high (cfg_pwm1_high ), - .cfg_pwm_low (cfg_pwm1_low ) - ); - -pwm u_pwm_2 ( - .waveform (pwm_wfm[2] ), - .h_reset_n (sreset_n ), - .mclk (mclk ), - .pulse1m_mclk (pulse_1ms ), - .cfg_pwm_enb (cfg_pwm_enb[2] ), - .cfg_pwm_high (cfg_pwm2_high ), - .cfg_pwm_low (cfg_pwm2_low ) - ); - -pwm u_pwm_3 ( - .waveform (pwm_wfm[3] ), - .h_reset_n (sreset_n ), - .mclk (mclk ), - .pulse1m_mclk (pulse_1ms ), - .cfg_pwm_enb (cfg_pwm_enb[3] ), - .cfg_pwm_high (cfg_pwm3_high ), - .cfg_pwm_low (cfg_pwm3_low ) - ); -pwm u_pwm_4 ( - .waveform (pwm_wfm[4] ), - .h_reset_n (sreset_n ), - .mclk (mclk ), - .pulse1m_mclk (pulse_1ms ), - .cfg_pwm_enb (cfg_pwm_enb[4] ), - .cfg_pwm_high (cfg_pwm4_high ), - .cfg_pwm_low (cfg_pwm4_low ) - ); -pwm u_pwm_5 ( - .waveform (pwm_wfm[5] ), - .h_reset_n (sreset_n ), - .mclk (mclk ), - .pulse1m_mclk (pulse_1ms ), - .cfg_pwm_enb (cfg_pwm_enb[5] ), - .cfg_pwm_high (cfg_pwm5_high ), - .cfg_pwm_low (cfg_pwm5_low ) - ); - /************************************************ * Pin Mapping ATMGE CONFIG * ATMEGA328 caravel Pin Mapping @@ -559,6 +86,99 @@ * Pin-1 RESET is not supported as there is no suppport for fuse config **************/ +module pinmux ( + // Digital IO + output logic [37:0] digital_io_out , + output logic [37:0] digital_io_oen , + input logic [37:0] digital_io_in , + + // Config + input logic [31:0] cfg_gpio_dir_sel , + input logic [31:0] cfg_multi_func_sel , + + output logic[5:0] cfg_pwm_enb , + input logic [5:0] pwm_wfm , + output logic [1:0] ext_intr_in , // External PAD level interrupt + output logic [31:0] pad_gpio_in , // GPIO data input from PAD + input logic [31:0] pad_gpio_out , // GPIO Data out towards PAD + + // SFLASH I/F + input logic sflash_sck , + input logic [3:0] sflash_ss , + input logic [3:0] sflash_oen , + input logic [3:0] sflash_do , + output logic [3:0] sflash_di , + + // SSRAM I/F - Temp Masked + //input logic ssram_sck, + //input logic ssram_ss, + //input logic [3:0] ssram_oen, + //input logic [3:0] ssram_do, + //output logic [3:0] ssram_di, + + // USB I/F + input logic usb_dp_o, + input logic usb_dn_o, + input logic usb_oen, + output logic usb_dp_i, + output logic usb_dn_i, + + // UART I/F + input logic [1:0] uart_txd, + output logic [1:0] uart_rxd, + + // I2CM I/F + input logic i2cm_clk_o, + output logic i2cm_clk_i, + input logic i2cm_clk_oen, + input logic i2cm_data_oen, + input logic i2cm_data_o, + output logic i2cm_data_i, + + // SPI MASTER + input logic spim_sck, + input logic [3:0] spim_ssn, + input logic spim_miso, + output logic spim_mosi, + + // SPI SLAVE + output logic spis_sck, + output logic spis_ssn, + input logic spis_miso, + output logic spis_mosi, + + // UART MASTER I/F + output logic uartm_rxd , + input logic uartm_txd , + + input logic dbg_clk_mon + + ); + + + +reg [7:0] port_a_in; // PORT A Data In +reg [7:0] port_b_in; // PORT B Data In +reg [7:0] port_c_in; // PORT C Data In +reg [7:0] port_d_in; // PORT D Data In + +wire [7:0] port_a_out; // PORT A Data Out +wire [7:0] port_b_out; // PORT B Data Out +wire [7:0] port_c_out; // PORT C Data Out +wire [7:0] port_d_out; // PORT D Data Out + +// GPIO to PORT Mapping +assign pad_gpio_in[7:0] = port_a_in; +assign pad_gpio_in[15:8] = port_b_in; +assign pad_gpio_in[23:16] = port_c_in; +assign pad_gpio_in[31:24] = port_d_in; + +assign port_a_out = pad_gpio_out[7:0]; +assign port_b_out = pad_gpio_out[15:8]; +assign port_c_out = pad_gpio_out[23:16]; +assign port_d_out = pad_gpio_out[31:24]; + + assign cfg_pwm_enb = cfg_multi_func_sel[5:0]; wire [1:0] cfg_int_enb = cfg_multi_func_sel[7:6]; wire [1:0] cfg_uart_enb = cfg_multi_func_sel[9:8];
diff --git a/verilog/rtl/pinmux/src/pinmux_reg.sv b/verilog/rtl/pinmux/src/pinmux_reg.sv deleted file mode 100644 index 744c07b..0000000 --- a/verilog/rtl/pinmux/src/pinmux_reg.sv +++ /dev/null
@@ -1,902 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// SPDX-FileCopyrightText: 2021 , Dinesh Annayya -// -// 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 -// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> -// -////////////////////////////////////////////////////////////////////// -//// //// -//// Pinmux Register //// -//// //// -//// This file is part of the riscduino cores project //// -//// https://github.com/dineshannayya/riscduino.git //// -//// //// -//// Description //// -//// Hold all the Global and PinMux Register //// -//// //// -//// To Do: //// -//// nothing //// -//// //// -//// Author(s): //// -//// - Dinesh Annayya, dinesha@opencores.org //// -//// //// -//// Revision : //// -//// 0.1 - 16th Feb 2021, Dinesh A //// -//// initial version //// -////////////////////////////////////////////////////////////////////// -// -module pinmux_reg ( - // System Signals - // Inputs - input logic mclk, - input logic h_reset_n, - - // Global Reset control - output logic [1:0] cpu_core_rst_n , - output logic cpu_intf_rst_n , - output logic qspim_rst_n , - output logic sspim_rst_n , - output logic [1:0] uart_rst_n , - output logic i2cm_rst_n , - output logic usb_rst_n , - - // Reg Bus Interface Signal - input logic reg_cs, - input logic reg_wr, - input logic [7:0] reg_addr, - input logic [31:0] reg_wdata, - input logic [3:0] reg_be, - - // Outputs - output logic [31:0] reg_rdata, - output logic reg_ack, - - input logic [1:0] ext_intr_in, - - // Risc configuration - output logic [15:0] irq_lines, - output logic soft_irq, - output logic [2:0] user_irq, - input logic usb_intr, - input logic i2cm_intr, - - output logic [9:0] cfg_pulse_1us, - output logic [15:0] cfg_riscv_ctrl, - - //--------------------------------------------------- - // 6 PWM Configuration - //--------------------------------------------------- - - output logic [15:0] cfg_pwm0_high , - output logic [15:0] cfg_pwm0_low , - output logic [15:0] cfg_pwm1_high , - output logic [15:0] cfg_pwm1_low , - output logic [15:0] cfg_pwm2_high , - output logic [15:0] cfg_pwm2_low , - output logic [15:0] cfg_pwm3_high , - output logic [15:0] cfg_pwm3_low , - output logic [15:0] cfg_pwm4_high , - output logic [15:0] cfg_pwm4_low , - output logic [15:0] cfg_pwm5_high , - output logic [15:0] cfg_pwm5_low , - - // GPIO input pins - input logic [31:0] gpio_in_data ,// GPIO I/P pins - input logic [31:0] gpio_int_event ,// from gpio control blk - - - - // GPIO config pins - output logic [31:0] cfg_gpio_out_data ,// to the GPIO control block - output logic [31:0] cfg_gpio_data_in ,// GPIO I/P pins data captured into this - output logic [31:0] cfg_gpio_dir_sel ,// decides on GPIO pin is I/P or O/P at pad level - output logic [31:0] cfg_gpio_out_type ,// O/P is static , '1' : waveform - output logic [31:0] cfg_gpio_posedge_int_sel ,// select posedge interrupt - output logic [31:0] cfg_gpio_negedge_int_sel ,// select negedge interrupt - output logic [31:0] cfg_multi_func_sel ,// multifunction pins - - // Outputs - output logic [31:0] gpio_prev_indata ,// prv data from GPIO I/P pins - - input logic [2:0] timer_intr , - output logic [2:0] cfg_timer_update , - output logic [31:0] cfg_timer0 , - output logic [31:0] cfg_timer1 , - output logic [31:0] cfg_timer2 - ); - - - -//----------------------------------------------------------------------- -// Internal Wire Declarations -//----------------------------------------------------------------------- - -logic sw_rd_en ; -logic sw_wr_en; -logic [4:0] sw_addr; // addressing 16 registers -logic [31:0] sw_reg_wdata; -logic [3:0] wr_be ; - -logic [31:0] reg_out; -logic [31:0] reg_0; // Chip ID -logic [31:0] reg_1; // Risc Fuse Id -logic [31:0] reg_2; // Global config-1 -logic [31:0] reg_3; // Global config-2 -logic [31:0] reg_4; // GPIO Read Data -logic [31:0] reg_5; // GPIO Output Data -logic [31:0] reg_6; // GPIO Dir Sel -logic [31:0] reg_7; // GPIO Type -logic [31:0] reg_8; // Interrupt -logic [31:0] reg_9; // GPIO Interrupt Status -logic [31:0] reg_10; // GPIO Interrupt Status -logic [31:0] reg_11; // GPIO Interrupt Mask -logic [31:0] reg_12; // GPIO Posedge Interrupt Select -logic [31:0] reg_13; // GPIO Negedge Interrupt Select -logic [31:0] reg_14; // Software-Reg_14 -logic [31:0] reg_15; // Software-Reg_15 -logic [31:0] reg_16; // PWN-0 Config -logic [31:0] reg_17; // PWN-1 Config -logic [31:0] reg_18; // PWN-2 Config -logic [31:0] reg_19; // PWN-3 Config -logic [31:0] reg_20; // PWN-4 Config -logic [31:0] reg_21; // PWN-5 Config -logic [31:0] reg_22; // Software-Reg1 -logic [31:0] reg_23; // Software-Reg2 -logic [31:0] reg_24; // Software-Reg3 -logic [31:0] reg_25; // Software-Reg4 -logic [31:0] reg_26; // Software-Reg5 -logic [31:0] reg_27; // Software-Reg6 -logic [31:0] reg_28; // Software-Reg6 -logic [31:0] reg_29; // Software-Reg6 -logic [31:0] reg_30; // Software-Reg6 - - -logic cs_int; -logic gpio_intr; - - -assign sw_addr = reg_addr [6:2]; -assign sw_rd_en = reg_cs & !reg_wr; -assign sw_wr_en = reg_cs & reg_wr; -assign wr_be = reg_be; -assign sw_reg_wdata = reg_wdata; - - -//----------------------------------- -// Edge detection for Logic Bist -// ---------------------------------- - -logic wb_req; -logic wb_req_d; -logic wb_req_pedge; - -always_ff @(negedge h_reset_n or posedge mclk) begin - if ( h_reset_n == 1'b0 ) begin - wb_req <= '0; - wb_req_d <= '0; - end else begin - wb_req <= reg_cs && (reg_ack == 0) ; - wb_req_d <= wb_req; - end -end - -// Detect pos edge of request -assign wb_req_pedge = (wb_req_d ==0) && (wb_req==1'b1); - - -always @ (posedge mclk or negedge h_reset_n) -begin : preg_out_Seq - if (h_reset_n == 1'b0) begin - reg_rdata <= 'h0; - reg_ack <= 1'b0; - end else if (reg_cs && !reg_ack) begin - reg_rdata <= reg_out ; - reg_ack <= 1'b1; - end else begin - reg_ack <= 1'b0; - end -end - - - -//----------------------------------------------------------------------- -// register read enable and write enable decoding logic -//----------------------------------------------------------------------- -wire sw_wr_en_0 = sw_wr_en & (sw_addr == 5'h0); -wire sw_wr_en_1 = sw_wr_en & (sw_addr == 5'h1); -wire sw_wr_en_2 = sw_wr_en & (sw_addr == 5'h2); -wire sw_wr_en_3 = sw_wr_en & (sw_addr == 5'h3); -wire sw_wr_en_4 = sw_wr_en & (sw_addr == 5'h4); -wire sw_wr_en_5 = sw_wr_en & (sw_addr == 5'h5); -wire sw_wr_en_6 = sw_wr_en & (sw_addr == 5'h6); -wire sw_wr_en_7 = sw_wr_en & (sw_addr == 5'h7); -wire sw_wr_en_8 = sw_wr_en & (sw_addr == 5'h8); -wire sw_wr_en_9 = sw_wr_en & (sw_addr == 5'h9); -wire sw_wr_en_10 = sw_wr_en & (sw_addr == 5'hA); -wire sw_wr_en_11 = sw_wr_en & (sw_addr == 5'hB); -wire sw_wr_en_12 = sw_wr_en & (sw_addr == 5'hC); -wire sw_wr_en_13 = sw_wr_en & (sw_addr == 5'hD); -wire sw_wr_en_14 = sw_wr_en & (sw_addr == 5'hE); -wire sw_wr_en_15 = sw_wr_en & (sw_addr == 5'hF); -wire sw_wr_en_16 = sw_wr_en & (sw_addr == 5'h10); -wire sw_wr_en_17 = sw_wr_en & (sw_addr == 5'h11); -wire sw_wr_en_18 = sw_wr_en & (sw_addr == 5'h12); -wire sw_wr_en_19 = sw_wr_en & (sw_addr == 5'h13); -wire sw_wr_en_20 = sw_wr_en & (sw_addr == 5'h14); -wire sw_wr_en_21 = sw_wr_en & (sw_addr == 5'h15); - -wire sw_wr_en_22 = sw_wr_en & (sw_addr == 5'h16); -wire sw_wr_en_23 = sw_wr_en & (sw_addr == 5'h17); -wire sw_wr_en_24 = sw_wr_en & (sw_addr == 5'h18); -wire sw_wr_en_25 = sw_wr_en & (sw_addr == 5'h19); -wire sw_wr_en_26 = sw_wr_en & (sw_addr == 5'h1A); -wire sw_wr_en_27 = sw_wr_en & (sw_addr == 5'h1B); -wire sw_wr_en_28 = sw_wr_en & (sw_addr == 5'h1C); -wire sw_wr_en_29 = sw_wr_en & (sw_addr == 5'h1D); -wire sw_wr_en_30 = sw_wr_en & (sw_addr == 5'h1E); -wire sw_wr_en_31 = sw_wr_en & (sw_addr == 5'h1F); - -wire sw_rd_en_28 = sw_rd_en & (sw_addr == 5'h1C); -wire sw_rd_en_29 = sw_rd_en & (sw_addr == 5'h1D); -wire sw_rd_en_30 = sw_rd_en & (sw_addr == 5'h1E); -wire sw_rd_en_31 = sw_rd_en & (sw_addr == 5'h1F); - - -//----------------------------------------------------------------------- -// Individual register assignments -//----------------------------------------------------------------------- - - -// Chip ID -// chip-id[3:0] mapping -// 0 - YIFIVE (MPW-2) -// 1 - Riscdunio (MPW-3) -// 2 - Riscdunio (MPW-4) -// 3 - Riscdunio (MPW-5) - -wire [15:0] manu_id = 16'h8268; // Asci value of RD -wire [3:0] total_core = 4'h2; -wire [3:0] chip_id = 4'h3; -wire [7:0] chip_rev = 8'h01; - -assign reg_0 = {manu_id,total_core,chip_id,chip_rev}; - - -//------------------------------------------ -// reg-2: GLBL_CFG_0 -//------------------------------------------ -wire [31:0] cfg_glb_ctrl = reg_1; - -ctech_buf u_buf_cpu_intf_rst (.A(cfg_glb_ctrl[0]),.X(cpu_intf_rst_n)); -ctech_buf u_buf_qspim_rst (.A(cfg_glb_ctrl[1]),.X(qspim_rst_n)); -ctech_buf u_buf_sspim_rst (.A(cfg_glb_ctrl[2]),.X(sspim_rst_n)); -ctech_buf u_buf_uart0_rst (.A(cfg_glb_ctrl[3]),.X(uart_rst_n[0])); -ctech_buf u_buf_i2cm_rst (.A(cfg_glb_ctrl[4]),.X(i2cm_rst_n)); -ctech_buf u_buf_usb_rst (.A(cfg_glb_ctrl[5]),.X(usb_rst_n)); -ctech_buf u_buf_uart1_rst (.A(cfg_glb_ctrl[6]),.X(uart_rst_n[1])); - -ctech_buf u_buf_cpu0_rst (.A(cfg_glb_ctrl[8]),.X(cpu_core_rst_n[0])); -ctech_buf u_buf_cpu1_rst (.A(cfg_glb_ctrl[9]),.X(cpu_core_rst_n[1])); - -gen_32b_reg #(32'h0) u_reg_1 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_1 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_1 ) - ); - -//---------------------------------------------- -// reg-2: GLBL_CFG_1 -//------------------------------------------ - -gen_32b_reg #(32'h0) u_reg_2 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_2 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_2 ) - ); - -assign cfg_pulse_1us = reg_2[9:0]; -assign cfg_riscv_ctrl = reg_2[31:16]; - -//----------------------------------------------------------------------- -// reg-3 : Global Interrupt Mask -//----------------------------------------------------------------------- - -gen_32b_reg #(32'h0) u_reg_3 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_3 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_3 ) - ); - -//----------------------------------------------------------------------- -// reg-4 : Global Interrupt Status -//----------------------------------------------------------------- -assign irq_lines = reg_3[15:0] & reg_4[15:0]; -assign soft_irq = reg_3[16] & reg_4[16]; -assign user_irq = reg_3[19:17]& reg_4[19:17]; - - -generic_register #(8,0 ) u_reg4_be0 ( - .we ({8{sw_wr_en_4 & - wr_be[0] }} ), - .data_in (sw_reg_wdata[7:0] ), - .reset_n (h_reset_n ), - .clk (mclk ), - - //List of Outs - .data_out (reg_4[7:0] ) - ); - - -wire [7:0] hware_intr_req = {gpio_intr, ext_intr_in[1:0], usb_intr, i2cm_intr,timer_intr[2:0]}; - -generic_intr_stat_reg #(.WD(8), - .RESET_DEFAULT(0)) u_reg4_be1 ( - //inputs - .clk (mclk ), - .reset_n (h_reset_n ), - .reg_we ({8{sw_wr_en_4 & reg_ack & - wr_be[1] }} ), - .reg_din (sw_reg_wdata[15:8] ), - .hware_req (hware_intr_req ), - - //outputs - .data_out (reg_4[15:8] ) - ); - - - -generic_register #(4,0 ) u_reg4_be2 ( - .we ({4{sw_wr_en_4 & - wr_be[2] }} ), - .data_in (sw_reg_wdata[19:16]), - .reset_n (h_reset_n ), - .clk (mclk ), - - //List of Outs - .data_out (reg_4[19:16] ) - ); - -assign reg_4[31:20] = '0; - - -//----------------------------------------------------------------------- -// Logic for gpio_data_in -//----------------------------------------------------------------------- -logic [31:0] gpio_in_data_s; -logic [31:0] gpio_in_data_ss; -// Double Sync the gpio pin data for edge detection -always @ (posedge mclk or negedge h_reset_n) -begin - if (h_reset_n == 1'b0) begin - reg_5 <= 'h0 ; - gpio_in_data_s <= 32'd0; - gpio_in_data_ss <= 32'd0; - end - else begin - gpio_in_data_s <= gpio_in_data; - gpio_in_data_ss <= gpio_in_data_s; - reg_5 <= gpio_in_data_ss; - end -end - - -assign cfg_gpio_data_in = reg_5[31:0]; // to be used for edge interrupt detect -assign gpio_prev_indata = gpio_in_data_ss; - -//----------------------------------------------------------------------- -// Logic for cfg_gpio_out_data -//----------------------------------------------------------------------- -assign cfg_gpio_out_data = reg_6[31:0]; // data to the GPIO control blk - -gen_32b_reg #(32'h0) u_reg_6 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_6 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_6 ) - ); -//----------------------------------------------------------------------- -// Logic for cfg_gpio_dir_sel -//----------------------------------------------------------------------- -assign cfg_gpio_dir_sel = reg_7[31:0]; // data to the GPIO O/P pins - -gen_32b_reg #(32'h0) u_reg_7 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_7 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_7 ) - ); -//----------------------------------------------------------------------- -// Logic for cfg_gpio_out_type -//----------------------------------------------------------------------- -assign cfg_gpio_out_type = reg_8[31:0]; // to be used for read - -gen_32b_reg #(32'h0) u_reg_8 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_8 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_8 ) - ); - - - -//----------------------------------------------------------------------- -// Logic for cfg_int_status -// Always update int_status, even if no register write is occuring. -// Interrupt posting is higher priority than int clear by host -//----------------------------------------------------------------------- -wire [31:0] cfg_gpio_int_status = reg_9[31:0]; // to be used for read - -//-------------------------------------------------------- -// Interrupt Status Generation -// Note: Reg_9 --> Interrupt Status Register, Writting '1' will clear the -// corresponding interrupt status bit. Writting '0' has no -// effect -// Reg_10 --> Writting one to this register will set the interrupt in -// interrupt status register (reg_9), Writting '0' does not has any -// effect. -/// Always update int_status, even if no register write is occuring. -// Interrupt posting is higher priority than int clear by host -//-------------------------------------------------------- -wire [31:0] gpio_int_status = reg_9; - -generic_intr_stat_reg #(.WD(32), - .RESET_DEFAULT(0)) u_reg_9 ( - //inputs - .clk (mclk ), - .reset_n (h_reset_n ), - .reg_we ({ - {8{sw_wr_en_9 & reg_ack & wr_be[2]}}, - {8{sw_wr_en_9 & reg_ack & wr_be[2]}}, - {8{sw_wr_en_9 & reg_ack & wr_be[1]}}, - {8{sw_wr_en_9 & reg_ack & wr_be[0]}} - } ), - .reg_din (sw_reg_wdata[31:0] ), - .hware_req (gpio_int_event | { - {8{sw_wr_en_10 & reg_ack}} & sw_reg_wdata[31:24], - {8{sw_wr_en_10 & reg_ack}} & sw_reg_wdata[23:16], - {8{sw_wr_en_10 & reg_ack}} & sw_reg_wdata[15:8] , - {8{sw_wr_en_10 & reg_ack}} & sw_reg_wdata[7:0] - } ), - - //outputs - .data_out (reg_9[31:0] ) - ); -//------------------------------------------------- -// Returns same value as interrupt status register -//------------------------------------------------ - -assign reg_10 = reg_9; -//----------------------------------------------------------------------- -// Logic for cfg_gpio_int_mask : GPIO interrupt mask -//----------------------------------------------------------------------- -wire [31:0] cfg_gpio_int_mask = reg_11[31:0]; // to be used for read - -assign gpio_intr = ( | (reg_9 & reg_11) ); // interrupt pin to the RISC - - -// Register-11 -gen_32b_reg #(32'h0) u_reg_11 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_11 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_11 ) - ); -//----------------------------------------------------------------------- -// Logic for cfg_gpio_posedge_int_sel : Enable posedge GPIO interrupt -//----------------------------------------------------------------------- -assign cfg_gpio_posedge_int_sel = reg_12[31:0]; // to be used for read -gen_32b_reg #(32'h0) u_reg_12 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_12 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_12 ) - ); -//----------------------------------------------------------------------- -// Logic for cfg_gpio_negedge_int_sel : Enable negedge GPIO interrupt -//----------------------------------------------------------------------- -assign cfg_gpio_negedge_int_sel = reg_13[31:0]; // to be used for read -gen_32b_reg #(32'h0) u_reg_13 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_13 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_13 ) - ); - -//----------------------------------------------------------------------- -// Logic for cfg_multi_func_sel :Enable GPIO to act as multi function pins -//----------------------------------------------------------------------- -assign cfg_multi_func_sel = reg_14[31:0]; // to be used for read - - -gen_32b_reg #(32'h0) u_reg_14 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_14 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_14 ) - ); - -// Reg-15 -gen_32b_reg #(32'h0) u_reg_15 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_15 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_15 ) - ); -//----------------------------------------------------------------------- -// Logic for PWM-0 Config -//----------------------------------------------------------------------- -assign cfg_pwm0_low = reg_16[15:0]; // low period of w/f -assign cfg_pwm0_high = reg_16[31:16]; // high period of w/f - -gen_32b_reg #(32'h0) u_reg_16 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_16 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_16 ) - ); - - -//----------------------------------------------------------------------- -// Logic for PWM-1 Config -//----------------------------------------------------------------------- -assign cfg_pwm1_low = reg_17[15:0]; // low period of w/f -assign cfg_pwm1_high = reg_17[31:16]; // high period of w/f -gen_32b_reg #(32'h0) u_reg_17 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_17 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_17 ) - ); - -//----------------------------------------------------------------------- -// Logic for PWM-2 Config -//----------------------------------------------------------------------- -assign cfg_pwm2_low = reg_18[15:0]; // low period of w/f -assign cfg_pwm2_high = reg_18[31:16]; // high period of w/f -gen_32b_reg #(32'h0) u_reg_18 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_18 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_18 ) - ); - -//----------------------------------------------------------------------- -// Logic for PWM-3 Config -//----------------------------------------------------------------------- -assign cfg_pwm3_low = reg_19[15:0]; // low period of w/f -assign cfg_pwm3_high = reg_19[31:16]; // high period of w/f -gen_32b_reg #(32'h0) u_reg_19 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_19 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_19 ) - ); - -//----------------------------------------------------------------------- -// Logic for PWM-4 Config -//----------------------------------------------------------------------- -assign cfg_pwm4_low = reg_20[15:0]; // low period of w/f -assign cfg_pwm4_high = reg_20[31:16]; // high period of w/f - -gen_32b_reg #(32'h0) u_reg_20 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_20 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_20 ) - ); - -//----------------------------------------------------------------------- -// Logic for PWM-5 Config -//----------------------------------------------------------------------- -assign cfg_pwm5_low = reg_21[15:0]; // low period of w/f -assign cfg_pwm5_high = reg_21[31:16]; // high period of w/f - -gen_32b_reg #(32'h0) u_reg_21 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_21 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_21 ) - ); - - -//----------------------------------------- -// Software Reg-1 : ASCI Representation of RISC = 32'h8273_8343 -// ---------------------------------------- -gen_32b_reg #(32'h8273_8343) u_reg_22 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_22 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_22 ) - ); - -//----------------------------------------- -// Software Reg-2, Release date: <DAY><MONTH><YEAR> -// ---------------------------------------- -gen_32b_reg #(32'h2007_2022) u_reg_23 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_23 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_23 ) - ); - -//----------------------------------------- -// Software Reg-3: Poject Revison 4.7 = 0004800 -// ---------------------------------------- -gen_32b_reg #(32'h0004_8000) u_reg_24 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_24 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_24 ) - ); - -//----------------------------------------- -// Software Reg-4 -// ---------------------------------------- -gen_32b_reg #(32'h0) u_reg_25 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_25 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_25 ) - ); - -//----------------------------------------- -// Software Reg-5 -// ---------------------------------------- -gen_32b_reg #(32'h0) u_reg_26 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_26 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_26 ) - ); - -//----------------------------------------- -// Software Reg-6 -// ---------------------------------------- -gen_32b_reg #(32'h0) u_reg_27 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_27 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_27 ) - ); - - -//----------------------------------------------------------------------- -// reg-28 -// Assumption: wr_en is two cycle and reg_ack is asserted in second cycle -// In first cycle, local register will be updated -// In second cycle, update indication sent to timer block -// ----------------------------------------------------------------- -assign cfg_timer0 = reg_28[18:0]; -assign cfg_timer_update[0] = sw_wr_en_28 & reg_ack; - -gen_32b_reg #(32'h0) u_reg_28 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_28 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_28[31:0] ) - ); - -//----------------------------------------------------------------------- -// reg-29 -// Assumption: wr_en is two cycle and reg_ack is asserted in second cycle -// In first cycle, local register will be updated -// In second cycle, update indication sent to timer block -// ----------------------------------------------------------------- -assign cfg_timer1 = reg_29[18:0]; -assign cfg_timer_update[1] = sw_wr_en_29 & reg_ack; - -gen_32b_reg #(32'h0) u_reg_29 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_29 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_29[31:0] ) - ); - - -//----------------------------------------------------------------------- -// reg-30 -// Assumption: wr_en is two cycle and reg_ack is asserted in second cycle -// In first cycle, local register will be updated -// In second cycle, update indication sent to timer block -// ----------------------------------------------------------------- -assign cfg_timer2 = reg_30[18:0]; -assign cfg_timer_update[2] = sw_wr_en_30 & reg_ack; - -gen_32b_reg #(32'h0) u_reg_30 ( - //List of Inputs - .reset_n (h_reset_n ), - .clk (mclk ), - .cs (sw_wr_en_30 ), - .we (wr_be ), - .data_in (sw_reg_wdata ), - - //List of Outs - .data_out (reg_30[31:0] ) - ); - -//----------------------------------------------------------------------- -// Register Read Path Multiplexer instantiation -//----------------------------------------------------------------------- - -always_comb -begin - reg_out [31:0] = 32'h0; - - case (sw_addr [4:0]) - 5'b00000 : reg_out [31:0] = reg_0 [31:0]; - 5'b00001 : reg_out [31:0] = reg_1 [31:0]; - 5'b00010 : reg_out [31:0] = reg_2 [31:0]; - 5'b00011 : reg_out [31:0] = reg_3 [31:0]; - 5'b00100 : reg_out [31:0] = reg_4 [31:0]; - 5'b00101 : reg_out [31:0] = reg_5 [31:0]; - 5'b00110 : reg_out [31:0] = reg_6 [31:0]; - 5'b00111 : reg_out [31:0] = reg_7 [31:0]; - 5'b01000 : reg_out [31:0] = reg_8 [31:0]; - 5'b01001 : reg_out [31:0] = reg_9 [31:0]; - 5'b01010 : reg_out [31:0] = reg_10 [31:0]; - 5'b01011 : reg_out [31:0] = reg_11 [31:0]; - 5'b01100 : reg_out [31:0] = reg_12 [31:0]; - 5'b01101 : reg_out [31:0] = reg_13 [31:0]; - 5'b01110 : reg_out [31:0] = reg_14 [31:0]; - 5'b01111 : reg_out [31:0] = reg_15 [31:0]; - 5'b10000 : reg_out [31:0] = reg_16 [31:0]; - 5'b10001 : reg_out [31:0] = reg_17 [31:0]; - 5'b10010 : reg_out [31:0] = reg_18 [31:0]; - 5'b10011 : reg_out [31:0] = reg_19 [31:0]; - 5'b10100 : reg_out [31:0] = reg_20 [31:0]; - 5'b10101 : reg_out [31:0] = reg_21 [31:0]; - 5'b10110 : reg_out [31:0] = reg_22 [31:0]; - 5'b10111 : reg_out [31:0] = reg_23 [31:0]; - 5'b11000 : reg_out [31:0] = reg_24 [31:0]; - 5'b11001 : reg_out [31:0] = reg_25 [31:0]; - 5'b11010 : reg_out [31:0] = reg_26 [31:0]; - 5'b11011 : reg_out [31:0] = reg_27 [31:0]; - 5'b11100 : reg_out [31:0] = reg_28 [31:0]; - 5'b11101 : reg_out [31:0] = reg_29 [31:0]; - 5'b11110 : reg_out [31:0] = reg_30 [31:0]; - 5'b11111 : reg_out [31:0] = 32'h0; - default : reg_out [31:0] = 32'h0; - endcase -end - - -endmodule
diff --git a/verilog/rtl/pinmux/src/pinmux_top.sv b/verilog/rtl/pinmux/src/pinmux_top.sv new file mode 100755 index 0000000..c84c1a7 --- /dev/null +++ b/verilog/rtl/pinmux/src/pinmux_top.sv
@@ -0,0 +1,485 @@ +////////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> +// +////////////////////////////////////////////////////////////////////// +//// //// +//// Pinmux //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +//// PinMux Manages all the pin multiplexing //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 16th Feb 2021, Dinesh A //// +//// initial version //// +//// 0.2 - 6 April 2021, Dinesh A //// +//// 1. SSPI CS# increased from 1 to 4 //// +// 2. UART I/F increase from 1 to 2 //// +//// 0.3 - 8 July 2022, Dinesh A //// +//// In ardunio, SPI chip select are control through //// +//// GPIO, So we have moved the Auto generated SPI CS //// +//// different config bit. I2C config position moved from//// +//// bit[14] to bit [15] //// +//// 0.4 - 20 July 2022, Dinesh A //// +//// On Power On, If RESET* = 0, then system will enter //// +//// in to SPIS slave mode to support boot //// +////////////////////////////////////////////////////////////////////// + +module pinmux_top ( + `ifdef USE_POWER_PINS + input logic vccd1,// User area 1 1.8V supply + input logic vssd1,// User area 1 digital ground + `endif + // clock skew adjust + input logic [3:0] cfg_cska_pinmux, + input logic wbd_clk_int, + output logic wbd_clk_pinmux, + // System Signals + // Inputs + input logic mclk, + input logic h_reset_n, + + // Global Reset control + output logic [1:0] cpu_core_rst_n , + output logic cpu_intf_rst_n , + output logic qspim_rst_n , + output logic sspim_rst_n , + output logic [1:0] uart_rst_n , + output logic i2cm_rst_n , + output logic usb_rst_n , + + output logic [15:0] cfg_riscv_ctrl, + + // Reg Bus Interface Signal + input logic reg_cs, + input logic reg_wr, + input logic [8:0] reg_addr, + input logic [31:0] reg_wdata, + input logic [3:0] reg_be, + + // Outputs + output logic [31:0] reg_rdata, + output logic reg_ack, + + // Risc configuration + output logic [15:0] irq_lines, + output logic soft_irq, + output logic [2:0] user_irq, + input logic usb_intr, + input logic i2cm_intr, + + // Digital IO + output logic [37:0] digital_io_out, + output logic [37:0] digital_io_oen, + input logic [37:0] digital_io_in, + + // SFLASH I/F + input logic sflash_sck, + input logic [3:0] sflash_ss, + input logic [3:0] sflash_oen, + input logic [3:0] sflash_do, + output logic [3:0] sflash_di, + + // SSRAM I/F - Temp Masked + //input logic ssram_sck, + //input logic ssram_ss, + //input logic [3:0] ssram_oen, + //input logic [3:0] ssram_do, + //output logic [3:0] ssram_di, + + // USB I/F + input logic usb_dp_o, + input logic usb_dn_o, + input logic usb_oen, + output logic usb_dp_i, + output logic usb_dn_i, + + // UART I/F + input logic [1:0] uart_txd, + output logic [1:0] uart_rxd, + + // I2CM I/F + input logic i2cm_clk_o, + output logic i2cm_clk_i, + input logic i2cm_clk_oen, + input logic i2cm_data_oen, + input logic i2cm_data_o, + output logic i2cm_data_i, + + // SPI MASTER + input logic spim_sck, + input logic [3:0] spim_ssn, + input logic spim_miso, + output logic spim_mosi, + + // SPI SLAVE + output logic spis_sck, + output logic spis_ssn, + input logic spis_miso, + output logic spis_mosi, + + // UART MASTER I/F + output logic uartm_rxd , + input logic uartm_txd , + + output logic pulse1m_mclk, + output logic [31:0] pinmux_debug, + + input logic dbg_clk_mon + + ); + + + +logic sreset_n; // Sync Reset + +/* clock pulse */ +//******************************************************** +logic pulse_1ms ; // 1 Milli Second Pulse for waveform Generator +logic [5:0] cfg_pwm_enb ; + + +//--------------------------------------------------------- +// Timer Register +// ------------------------------------------------------- +logic [2:0] timer_intr ; + +//--------------------------------------------------- +// 6 PWM variabled +//--------------------------------------------------- + +logic [5:0] pwm_wfm ; + + +wire [31:0] cfg_gpio_dir_sel ;// decides on GPIO pin is I/P or O/P at pad level, 0 -> Input, 1 -> Output +wire [31:0] cfg_gpio_out_type ;// GPIO Type, Unused +wire [31:0] cfg_multi_func_sel ;// GPIO Multi function type + + +reg [7:0] port_a_in; // PORT A Data In +reg [7:0] port_b_in; // PORT B Data In +reg [7:0] port_c_in; // PORT C Data In +reg [7:0] port_d_in; // PORT D Data In + +wire [7:0] port_a_out; // PORT A Data Out +wire [7:0] port_b_out; // PORT B Data Out +wire [7:0] port_c_out; // PORT C Data Out +wire [7:0] port_d_out; // PORT D Data Out +wire [31:0] pad_gpio_in; // GPIO data input from PAD +wire [31:0] pad_gpio_out; // GPIO Data out towards PAD +wire [31:0] gpio_int_event; // GPIO Interrupt indication +reg [1:0] ext_intr_in; // External PAD level interrupt + + +assign pinmux_debug = '0; // Todo: Need to fix + +//------------------------------------------------------ +// Register Map Decoding + +`define SEL_GLBL 3'b000 // GLOBAL REGISTER +`define SEL_GPIO 3'b001 // GPIO REGISTER +`define SEL_PWM 3'b010 // PWM REGISTER +`define SEL_TIMER 3'b011 // TIMER REGISTER +`define SEL_SEMA 3'b100 // SEMAPHORE REGISTER + + +//---------------------------------------- +// Register Response Path Mux +// -------------------------------------- +logic [31:0] reg_glbl_rdata; +logic reg_glbl_ack; + +logic [31:0] reg_gpio_rdata; +logic reg_gpio_ack; + +logic [31:0] reg_pwm_rdata; +logic reg_pwm_ack; + +logic [31:0] reg_timer_rdata; +logic reg_timer_ack; + +logic [15:0] reg_sema_rdata; +logic reg_sema_ack; + + +assign reg_rdata = (reg_addr[8:6] == `SEL_GLBL) ? {reg_glbl_rdata} : + (reg_addr[8:6] == `SEL_GPIO) ? {reg_gpio_rdata} : + (reg_addr[8:6] == `SEL_PWM) ? {reg_pwm_rdata} : + (reg_addr[8:6] == `SEL_TIMER) ? reg_timer_rdata : + (reg_addr[8:6] == `SEL_SEMA) ? {16'h0,reg_sema_rdata} : 'h0; + +assign reg_ack = (reg_addr[8:6] == `SEL_GLBL) ? reg_glbl_ack : + (reg_addr[8:6] == `SEL_GPIO) ? reg_gpio_ack : + (reg_addr[8:6] == `SEL_PWM) ? reg_pwm_ack : + (reg_addr[8:6] == `SEL_TIMER) ? reg_timer_ack : + (reg_addr[8:6] == `SEL_SEMA) ? reg_sema_ack : 1'b0; + +wire reg_glbl_cs = (reg_addr[8:6] == `SEL_GLBL) ? reg_cs : 1'b0; +wire reg_gpio_cs = (reg_addr[8:6] == `SEL_GPIO) ? reg_cs : 1'b0; +wire reg_pwm_cs = (reg_addr[8:6] == `SEL_PWM) ? reg_cs : 1'b0; +wire reg_timer_cs = (reg_addr[8:6] == `SEL_TIMER)? reg_cs : 1'b0; +wire reg_sema_cs = (reg_addr[8:6] == `SEL_SEMA) ? reg_cs : 1'b0; + +//--------------------------------------------------------------------- + +// SSRAM I/F - Temp masked +//input logic ssram_sck, +//input logic ssram_ss, +//input logic [3:0] ssram_oen, +//input logic [3:0] ssram_do, +//output logic [3:0] ssram_di, + +// pinmux clock skew control +clk_skew_adjust u_skew_pinmux + ( +`ifdef USE_POWER_PINS + .vccd1 (vccd1 ),// User area 1 1.8V supply + .vssd1 (vssd1 ),// User area 1 digital ground +`endif + .clk_in (wbd_clk_int ), + .sel (cfg_cska_pinmux ), + .clk_out (wbd_clk_pinmux ) + ); + +reset_sync u_rst_sync ( + .scan_mode (1'b0 ), + .dclk (mclk ), // Destination clock domain + .arst_n (h_reset_n ), // active low async reset + .srst_n (sreset_n ) + ); + +//------------------------------------------------------------------ +// Global Register +//------------------------------------------------------------------ +glbl_reg u_glbl_reg( + // System Signals + // Inputs + .mclk (mclk ), + .h_reset_n (sreset_n ), + + .cpu_core_rst_n (cpu_core_rst_n ), + .cpu_intf_rst_n (cpu_intf_rst_n ), + .qspim_rst_n (qspim_rst_n ), + .sspim_rst_n (sspim_rst_n ), + .uart_rst_n (uart_rst_n ), + .i2cm_rst_n (i2cm_rst_n ), + .usb_rst_n (usb_rst_n ), + + .cfg_riscv_ctrl (cfg_riscv_ctrl ), + .cfg_multi_func_sel (cfg_multi_func_sel ), + + + // Reg read/write Interface Inputs + .reg_cs (reg_glbl_cs ), + .reg_wr (reg_wr ), + .reg_addr (reg_addr[5:2] ), + .reg_wdata (reg_wdata ), + .reg_be (reg_be ), + + .reg_rdata (reg_glbl_rdata ), + .reg_ack (reg_glbl_ack ), + + .ext_intr_in (ext_intr_in ), + + .irq_lines (irq_lines ), + .soft_irq (soft_irq ), + .user_irq (user_irq ), + .usb_intr (usb_intr ), + .i2cm_intr (i2cm_intr ), + + + + .timer_intr (timer_intr ), + .gpio_intr (gpio_intr ) + + + ); + +//----------------------------------------------------------------------- +// GPIO Top +//----------------------------------------------------------------------- +gpio_top u_gpio( + // System Signals + // Inputs + .mclk ( mclk ), + .h_reset_n (h_reset_n ), + + // Reg Bus Interface Signal + .reg_cs (reg_gpio_cs ), + .reg_wr (reg_wr ), + .reg_addr (reg_addr[5:2] ), + .reg_wdata (reg_wdata ), + .reg_be (reg_be ), + + // Outputs + .reg_rdata (reg_gpio_rdata ), + .reg_ack (reg_gpio_ack ), + + + .cfg_gpio_dir_sel (cfg_gpio_dir_sel ), + .pad_gpio_in (pad_gpio_in ), + .pad_gpio_out (pad_gpio_out ), + + .gpio_intr (gpio_intr ) + + + ); + +//----------------------------------------------------------------------- +// PWM Top +//----------------------------------------------------------------------- +pwm_top u_pwm( + // System Signals + // Inputs + .mclk ( mclk ), + .h_reset_n (h_reset_n ), + + // Reg Bus Interface Signal + .reg_cs (reg_pwm_cs ), + .reg_wr (reg_wr ), + .reg_addr (reg_addr[4:2] ), + .reg_wdata (reg_wdata ), + .reg_be (reg_be ), + + // Outputs + .reg_rdata (reg_pwm_rdata ), + .reg_ack (reg_pwm_ack ), + + .pulse_1ms (pulse_1ms ), + .cfg_pwm_enb (cfg_pwm_enb ), + .pwm_wfm (pwm_wfm ) + ); + +//----------------------------------------------------------------------- +// Timer Top +//----------------------------------------------------------------------- +timer_top u_timer( + // System Signals + // Inputs + .mclk ( mclk ), + .h_reset_n (h_reset_n ), + + // Reg Bus Interface Signal + .reg_cs (reg_timer_cs ), + .reg_wr (reg_wr ), + .reg_addr (reg_addr[3:2] ), + .reg_wdata (reg_wdata ), + .reg_be (reg_be ), + + // Outputs + .reg_rdata (reg_timer_rdata ), + .reg_ack (reg_timer_ack ), + + .pulse_1ms (pulse_1ms ), + .timer_intr (timer_intr ) + ); + +//----------------------------------------------------------------------- +// Semaphore Register +//----------------------------------------------------------------------- +semaphore_reg u_semaphore( + // System Signals + // Inputs + .mclk ( mclk ), + .h_reset_n (h_reset_n ), + + // Reg Bus Interface Signal + .reg_cs (reg_sema_cs ), + .reg_wr (reg_wr ), + .reg_addr (reg_addr[5:2] ), + .reg_wdata (reg_wdata[15:0] ), + .reg_be (reg_be[1:0] ), + + // Outputs + .reg_rdata (reg_sema_rdata ), + .reg_ack (reg_sema_ack ) + ); + + +pinmux u_pinmux ( + // Digital IO + .digital_io_out (digital_io_out ), + .digital_io_oen (digital_io_oen ), + .digital_io_in (digital_io_in ), + + // Config + .cfg_gpio_dir_sel (cfg_gpio_dir_sel ), + .cfg_multi_func_sel (cfg_multi_func_sel ), + + .cfg_pwm_enb (cfg_pwm_enb ), + .pwm_wfm (pwm_wfm ), + .ext_intr_in (ext_intr_in ), // External PAD level interrupt + .pad_gpio_in (pad_gpio_in ), // GPIO data input from PAD + .pad_gpio_out (pad_gpio_out ), // GPIO Data out towards PAD + + // SFLASH I/F + .sflash_sck (sflash_sck ), + .sflash_ss (sflash_ss ), + .sflash_oen (sflash_oen ), + .sflash_do (sflash_do ), + .sflash_di (sflash_di ), + + // USB I/F + .usb_dp_o (usb_dp_o ), + .usb_dn_o (usb_dn_o ), + .usb_oen (usb_oen ), + .usb_dp_i (usb_dp_i ), + .usb_dn_i (usb_dn_i ), + + // UART I/F + .uart_txd (uart_txd ), + .uart_rxd (uart_rxd ), + + // I2CM I/F + .i2cm_clk_o (i2cm_clk_o ), + .i2cm_clk_i (i2cm_clk_i ), + .i2cm_clk_oen (i2cm_clk_oen ), + .i2cm_data_oen (i2cm_data_oen ), + .i2cm_data_o (i2cm_data_o ), + .i2cm_data_i (i2cm_data_i ), + + // SPI MASTER + .spim_sck (spim_sck ), + .spim_ssn (spim_ssn ), + .spim_miso (spim_miso ), + .spim_mosi (spim_mosi ), + + // SPI SLAVE + .spis_sck (spis_sck ), + .spis_ssn (spis_ssn ), + .spis_miso (spis_miso ), + .spis_mosi (spis_mosi ), + + // UART MASTER I/F + .uartm_rxd (uartm_rxd ), + .uartm_txd (uartm_txd ), + + .dbg_clk_mon (dbg_clk_mon ) + + ); + +endmodule + +
diff --git a/verilog/rtl/pinmux/src/pwm_reg.sv b/verilog/rtl/pinmux/src/pwm_reg.sv new file mode 100644 index 0000000..702c138 --- /dev/null +++ b/verilog/rtl/pinmux/src/pwm_reg.sv
@@ -0,0 +1,255 @@ +////////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> +// +////////////////////////////////////////////////////////////////////// +//// //// +//// PWM Register //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 15th Aug 2022, Dinesh A //// +//// initial version //// +////////////////////////////////////////////////////////////////////// +// +module pwm_reg ( + // System Signals + // Inputs + input logic mclk , + input logic h_reset_n , + + // Reg Bus Interface Signal + input logic reg_cs , + input logic reg_wr , + input logic [2:0] reg_addr , + input logic [31:0] reg_wdata , + input logic [3:0] reg_be , + + // Outputs + output logic [31:0] reg_rdata , + output logic reg_ack , + + output logic [15:0] cfg_pwm0_high , + output logic [15:0] cfg_pwm0_low , + output logic [15:0] cfg_pwm1_high , + output logic [15:0] cfg_pwm1_low , + output logic [15:0] cfg_pwm2_high , + output logic [15:0] cfg_pwm2_low , + output logic [15:0] cfg_pwm3_high , + output logic [15:0] cfg_pwm3_low , + output logic [15:0] cfg_pwm4_high , + output logic [15:0] cfg_pwm4_low , + output logic [15:0] cfg_pwm5_high , + output logic [15:0] cfg_pwm5_low + + ); + +//----------------------------------------------------------------------- +// Internal Wire Declarations +//----------------------------------------------------------------------- + +logic sw_rd_en ; +logic sw_wr_en ; +logic [2:0] sw_addr ; // addressing 16 registers +logic [31:0] sw_reg_wdata ; +logic [3:0] sw_be ; + +logic [31:0] reg_out ; +logic [31:0] reg_0 ; // CONFIG - Unused +logic [31:0] reg_1 ; // PWM-REG-0 +logic [31:0] reg_2 ; // PWM-REG-1 +logic [31:0] reg_3 ; // PWM-REG-2 +logic [31:0] reg_4 ; // PWM-REG-3 +logic [31:0] reg_5 ; // PWM-REG-4 +logic [31:0] reg_6 ; // PWM-REG-5 + +assign sw_addr = reg_addr; +assign sw_rd_en = reg_cs & !reg_wr; +assign sw_wr_en = reg_cs & reg_wr; +assign sw_be = reg_be; +assign sw_reg_wdata = reg_wdata; + +//----------------------------------------------------------------------- +// register read enable and write enable decoding logic +//----------------------------------------------------------------------- +wire sw_wr_en_0 = sw_wr_en & (sw_addr == 3'h0); +wire sw_wr_en_1 = sw_wr_en & (sw_addr == 3'h1); +wire sw_wr_en_2 = sw_wr_en & (sw_addr == 3'h2); +wire sw_wr_en_3 = sw_wr_en & (sw_addr == 3'h3); +wire sw_wr_en_4 = sw_wr_en & (sw_addr == 3'h4); +wire sw_wr_en_5 = sw_wr_en & (sw_addr == 3'h5); +wire sw_wr_en_6 = sw_wr_en & (sw_addr == 3'h6); + +wire sw_rd_en_0 = sw_rd_en & (sw_addr == 3'h0); +wire sw_rd_en_1 = sw_rd_en & (sw_addr == 3'h1); +wire sw_rd_en_2 = sw_rd_en & (sw_addr == 3'h2); +wire sw_rd_en_3 = sw_rd_en & (sw_addr == 3'h3); +wire sw_rd_en_4 = sw_rd_en & (sw_addr == 3'h4); +wire sw_rd_en_5 = sw_rd_en & (sw_addr == 3'h5); +wire sw_rd_en_6 = sw_rd_en & (sw_addr == 3'h6); + + +always @ (posedge mclk or negedge h_reset_n) +begin : preg_out_Seq + if (h_reset_n == 1'b0) begin + reg_rdata <= 'h0; + reg_ack <= 1'b0; + end else if (reg_cs && !reg_ack) begin + reg_rdata <= reg_out; + reg_ack <= 1'b1; + end else begin + reg_ack <= 1'b0; + end +end + +//-------------------------------------------- +// reg-0: Reserve for pwm global config +//--------------------------------------------- +assign reg_0 = 'h0; +//----------------------------------------------------------------------- +// Logic for PWM-0 Config +//----------------------------------------------------------------------- +assign cfg_pwm0_low = reg_1[15:0]; // low period of w/f +assign cfg_pwm0_high = reg_1[31:16]; // high period of w/f + +gen_32b_reg #(32'h0) u_reg_1 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_1 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_1 ) + ); + + +//----------------------------------------------------------------------- +// Logic for PWM-1 Config +//----------------------------------------------------------------------- +assign cfg_pwm1_low = reg_2[15:0]; // low period of w/f +assign cfg_pwm1_high = reg_2[31:16]; // high period of w/f +gen_32b_reg #(32'h0) u_reg_2 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_2 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_2 ) + ); + +//----------------------------------------------------------------------- +// Logic for PWM-2 Config +//----------------------------------------------------------------------- +assign cfg_pwm2_low = reg_3[15:0]; // low period of w/f +assign cfg_pwm2_high = reg_3[31:16]; // high period of w/f +gen_32b_reg #(32'h0) u_reg_3 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_3 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_3 ) + ); + +//----------------------------------------------------------------------- +// Logic for PWM-3 Config +//----------------------------------------------------------------------- +assign cfg_pwm3_low = reg_4[15:0]; // low period of w/f +assign cfg_pwm3_high = reg_4[31:16]; // high period of w/f +gen_32b_reg #(32'h0) u_reg_4 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_4 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_4 ) + ); + +//----------------------------------------------------------------------- +// Logic for PWM-4 Config +//----------------------------------------------------------------------- +assign cfg_pwm4_low = reg_5[15:0]; // low period of w/f +assign cfg_pwm4_high = reg_5[31:16]; // high period of w/f + +gen_32b_reg #(32'h0) u_reg_5 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_5 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_5 ) + ); + +//----------------------------------------------------------------------- +// Logic for PWM-5 Config +//----------------------------------------------------------------------- +assign cfg_pwm5_low = reg_6[15:0]; // low period of w/f +assign cfg_pwm5_high = reg_6[31:16]; // high period of w/f + +gen_32b_reg #(32'h0) u_reg_6 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_6 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_6 ) + ); + + +always_comb +begin + reg_out [31:0] = 32'h0; + + case (sw_addr [2:0]) + 3'b000 : reg_out [31:0] = reg_0 [31:0]; + 3'b001 : reg_out [31:0] = reg_1 [31:0]; + 3'b010 : reg_out [31:0] = reg_2 [31:0]; + 3'b011 : reg_out [31:0] = reg_3 [31:0]; + 3'b100 : reg_out [31:0] = reg_4 [31:0]; + 3'b101 : reg_out [31:0] = reg_5 [31:0]; + 3'b110 : reg_out [31:0] = reg_6 [31:0]; + default : reg_out [31:0] = 32'h0; + endcase +end + +endmodule
diff --git a/verilog/rtl/pinmux/src/pwm_top.sv b/verilog/rtl/pinmux/src/pwm_top.sv new file mode 100644 index 0000000..2b8d3a5 --- /dev/null +++ b/verilog/rtl/pinmux/src/pwm_top.sv
@@ -0,0 +1,172 @@ +////////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> +// +////////////////////////////////////////////////////////////////////// +//// //// +//// PWM Top //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +/// Includes 6 PWM //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 15th Aug 2022, Dinesh A //// +//// initial version //// +////////////////////////////////////////////////////////////////////// + +module pwm_top ( + // System Signals + // Inputs + input logic mclk, + input logic h_reset_n, + + // Reg Bus Interface Signal + input logic reg_cs, + input logic reg_wr, + input logic [2:0] reg_addr, + input logic [31:0] reg_wdata, + input logic [3:0] reg_be, + + // Outputs + output logic [31:0] reg_rdata, + output logic reg_ack, + + + input logic pulse_1ms, + input logic [5:0] cfg_pwm_enb, + output logic [5:0] pwm_wfm + + ); + +//--------------------------------------------------- +// 6 PWM variabled +//--------------------------------------------------- + +logic [15:0] cfg_pwm0_high ; +logic [15:0] cfg_pwm0_low ; +logic [15:0] cfg_pwm1_high ; +logic [15:0] cfg_pwm1_low ; +logic [15:0] cfg_pwm2_high ; +logic [15:0] cfg_pwm2_low ; +logic [15:0] cfg_pwm3_high ; +logic [15:0] cfg_pwm3_low ; +logic [15:0] cfg_pwm4_high ; +logic [15:0] cfg_pwm4_low ; +logic [15:0] cfg_pwm5_high ; +logic [15:0] cfg_pwm5_low ; + + + +pwm_reg u_reg ( + .mclk (mclk ), + .h_reset_n (h_reset_n ), + + // Reg Bus Interface Signal + .reg_cs (reg_cs ), + .reg_wr (reg_wr ), + .reg_addr (reg_addr ), + .reg_wdata (reg_wdata ), + .reg_be (reg_be ), + + // Outputs + .reg_rdata (reg_rdata ), + .reg_ack (reg_ack ), + + .cfg_pwm0_high (cfg_pwm0_high ), + .cfg_pwm0_low (cfg_pwm0_low ), + .cfg_pwm1_high (cfg_pwm1_high ), + .cfg_pwm1_low (cfg_pwm1_low ), + .cfg_pwm2_high (cfg_pwm2_high ), + .cfg_pwm2_low (cfg_pwm2_low ), + .cfg_pwm3_high (cfg_pwm3_high ), + .cfg_pwm3_low (cfg_pwm3_low ), + .cfg_pwm4_high (cfg_pwm4_high ), + .cfg_pwm4_low (cfg_pwm4_low ), + .cfg_pwm5_high (cfg_pwm5_high ), + .cfg_pwm5_low (cfg_pwm5_low ) + + ); + + +// 6 PWM Waveform Generator +pwm u_pwm_0 ( + .waveform (pwm_wfm[0] ), + .h_reset_n (h_reset_n ), + .mclk (mclk ), + .pulse1m_mclk (pulse_1ms ), + .cfg_pwm_enb (cfg_pwm_enb[0] ), + .cfg_pwm_high (cfg_pwm0_high ), + .cfg_pwm_low (cfg_pwm0_low ) + ); + +pwm u_pwm_1 ( + .waveform (pwm_wfm[1] ), + .h_reset_n (h_reset_n ), + .mclk (mclk ), + .pulse1m_mclk (pulse_1ms ), + .cfg_pwm_enb (cfg_pwm_enb[1] ), + .cfg_pwm_high (cfg_pwm1_high ), + .cfg_pwm_low (cfg_pwm1_low ) + ); + +pwm u_pwm_2 ( + .waveform (pwm_wfm[2] ), + .h_reset_n (h_reset_n ), + .mclk (mclk ), + .pulse1m_mclk (pulse_1ms ), + .cfg_pwm_enb (cfg_pwm_enb[2] ), + .cfg_pwm_high (cfg_pwm2_high ), + .cfg_pwm_low (cfg_pwm2_low ) + ); + +pwm u_pwm_3 ( + .waveform (pwm_wfm[3] ), + .h_reset_n (h_reset_n ), + .mclk (mclk ), + .pulse1m_mclk (pulse_1ms ), + .cfg_pwm_enb (cfg_pwm_enb[3] ), + .cfg_pwm_high (cfg_pwm3_high ), + .cfg_pwm_low (cfg_pwm3_low ) + ); +pwm u_pwm_4 ( + .waveform (pwm_wfm[4] ), + .h_reset_n (h_reset_n ), + .mclk (mclk ), + .pulse1m_mclk (pulse_1ms ), + .cfg_pwm_enb (cfg_pwm_enb[4] ), + .cfg_pwm_high (cfg_pwm4_high ), + .cfg_pwm_low (cfg_pwm4_low ) + ); +pwm u_pwm_5 ( + .waveform (pwm_wfm[5] ), + .h_reset_n (h_reset_n ), + .mclk (mclk ), + .pulse1m_mclk (pulse_1ms ), + .cfg_pwm_enb (cfg_pwm_enb[5] ), + .cfg_pwm_high (cfg_pwm5_high ), + .cfg_pwm_low (cfg_pwm5_low ) + ); + +endmodule
diff --git a/verilog/rtl/pinmux/src/semaphore_reg.sv b/verilog/rtl/pinmux/src/semaphore_reg.sv new file mode 100644 index 0000000..c347178 --- /dev/null +++ b/verilog/rtl/pinmux/src/semaphore_reg.sv
@@ -0,0 +1,165 @@ +////////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> +// +////////////////////////////////////////////////////////////////////// +//// //// +//// Semaphore Register //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +//// A semaphore is a variable or abstract data type that //// +//// provides a simple but useful abstraction for controlling //// +//// access by multiple processes to a common resource in a //// +//// parallel programming or multi-user environment. //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 15th Aug 2022, Dinesh A //// +//// initial version //// +////////////////////////////////////////////////////////////////////// +// +/*************************************************************** + Special Semaphore Register Implementation + Read access from 0 to 14 will return corresponsonding bit lock status. + If lock is free, then it return '1' and also lock the corresponding bit + If lock is busy, then it return '0' + Write & Read access with address 15 does normal write and read access, + this location should used for only debug purpose + +*****************************************************************/ +module semaphore_reg #(parameter DW = 16, // DATA WIDTH + parameter AW = $clog2(DW), // ADDRESS WIDTH + parameter BW = $clog2(AW) // BYTE WIDTH + ) ( + // System Signals + // Inputs + input logic mclk, + input logic h_reset_n, + + // Reg Bus Interface Signal + input logic reg_cs, + input logic reg_wr, + input logic [AW-1:0] reg_addr, + input logic [DW-1:0] reg_wdata, + input logic [BW-1:0] reg_be, + + // Outputs + output logic [DW-1:0] reg_rdata, + output logic reg_ack + + ); + +//----------------------------------------------------------------------- +// Internal Wire Declarations +//----------------------------------------------------------------------- + +logic sw_rd_en ; +logic sw_wr_en ; +logic [AW-1:0] sw_addr ; // addressing 16 registers +logic [DW-1:0] sw_reg_wdata ; +logic [BW-1:0] sw_be ; + +logic [DW-1:0] reg_out ; +logic [DW-1:0] reg_0 ; +logic sw_wr_en_0 ; + +assign sw_addr = reg_addr; +assign sw_rd_en = reg_cs & !reg_wr; +assign sw_wr_en = reg_cs & reg_wr; + + +always @ (posedge mclk or negedge h_reset_n) +begin : preg_out_Seq + if (h_reset_n == 1'b0) begin + reg_rdata <= 'h0; + reg_ack <= 1'b0; + end else if (reg_cs && !reg_ack) begin + reg_rdata <= reg_out[DW-1:0] ; + reg_ack <= 1'b1; + end else begin + reg_ack <= 1'b0; + end +end + +/*************************************************************** + Special Semaphore Register Implementation + Read access from 0 to 30 will return corresponsonding bit lock status. + If lock is free, then it return '1' and lock the corresponding bit + If lock is busy, then it return '0' and lock the corresponding bit +*****************************************************************/ + +gen_16b_reg #('h0) u_reg_0 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_0 ), + .we (sw_be[BW-1:0] ), + .data_in (sw_reg_wdata[DW-1:0] ), + + //List of Outs + .data_out (reg_0 ) + ); + + +//----------------------------------------------------------------------- +// Register Write Data +//----------------------------------------------------------------------- + +always_comb +begin + sw_reg_wdata = 'h0; + sw_wr_en_0 = 'b0; + sw_be = 'h0; + + // Address 0xF, is Simple Write Register + if(sw_addr == {AW {1'b1}}) begin + sw_reg_wdata = reg_0; + sw_wr_en_0 = sw_wr_en & reg_ack; + sw_be = reg_be[BW-1:0]; + end else begin // 0 to 0xE is Semaphore Register + if(sw_rd_en) begin // Read will always lock the bit '1' + sw_reg_wdata = (reg_0 | ( 1 << sw_addr)) ; + end else begin // To release the Lock Write with '1' + sw_reg_wdata = (reg_0 ^ ((reg_wdata [DW-1:0] & 'h1) << sw_addr)) ; + end + sw_wr_en_0 = reg_ack; + sw_be = {BW{1'b1}}; + end +end + +//----------------------------------------------------------------------- +// Register Read Path Multiplexer instantiation +//----------------------------------------------------------------------- + +always_comb +begin + if(sw_addr == {AW {1'b1}}) begin + reg_out = reg_0; + end else begin + reg_out = (reg_0 >> sw_addr ) ^ 'h1; + end +end + + +endmodule
diff --git a/verilog/rtl/pinmux/src/timer_reg.sv b/verilog/rtl/pinmux/src/timer_reg.sv new file mode 100644 index 0000000..cd48587 --- /dev/null +++ b/verilog/rtl/pinmux/src/timer_reg.sv
@@ -0,0 +1,213 @@ +////////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> +// +////////////////////////////////////////////////////////////////////// +//// //// +//// Timer Register //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 15th Aug 2022, Dinesh A //// +//// initial version //// +////////////////////////////////////////////////////////////////////// +// +module timer_reg ( + // System Signals + // Inputs + input logic mclk , + input logic h_reset_n , + + // Reg Bus Interface Signal + input logic reg_cs , + input logic reg_wr , + input logic [1:0] reg_addr , + input logic [31:0] reg_wdata , + input logic [3:0] reg_be , + + // Outputs + output logic [31:0] reg_rdata , + output logic reg_ack , + + output logic [9:0] cfg_pulse_1us , + output logic [2:0] cfg_timer_update , // CPU write to timer register + output logic [18:0] cfg_timer0 , // Timer-0 register + output logic [18:0] cfg_timer1 , // Timer-1 register + output logic [18:0] cfg_timer2 , // Timer-2 register + output logic [2:0] timer_intr + + ); + +//----------------------------------------------------------------------- +// Internal Wire Declarations +//----------------------------------------------------------------------- + +logic sw_rd_en ; +logic sw_wr_en ; +logic [1:0] sw_addr ; // addressing 16 registers +logic [31:0] sw_reg_wdata ; +logic [3:0] sw_be ; + +logic [31:0] reg_out ; +logic [31:0] reg_0 ; // TIMER GLOBAL CONFIG +logic [31:0] reg_1 ; // TIMER-0 +logic [31:0] reg_2 ; // TIMER-1 +logic [31:0] reg_3 ; // TIMER-2 + +assign sw_addr = reg_addr; +assign sw_rd_en = reg_cs & !reg_wr; +assign sw_wr_en = reg_cs & reg_wr; +assign sw_be = reg_be; +assign sw_reg_wdata = reg_wdata; + +//----------------------------------------------------------------------- +// register read enable and write enable decoding logic +//----------------------------------------------------------------------- +wire sw_wr_en_0 = sw_wr_en & (sw_addr == 2'h0); +wire sw_wr_en_1 = sw_wr_en & (sw_addr == 2'h1); +wire sw_wr_en_2 = sw_wr_en & (sw_addr == 2'h2); +wire sw_wr_en_3 = sw_wr_en & (sw_addr == 2'h3); + +wire sw_rd_en_0 = sw_rd_en & (sw_addr == 2'h0); +wire sw_rd_en_1 = sw_rd_en & (sw_addr == 2'h1); +wire sw_rd_en_2 = sw_rd_en & (sw_addr == 2'h2); +wire sw_rd_en_3 = sw_rd_en & (sw_addr == 2'h3); + + +always @ (posedge mclk or negedge h_reset_n) +begin : preg_out_Seq + if (h_reset_n == 1'b0) begin + reg_rdata <= 'h0; + reg_ack <= 1'b0; + end else if (reg_cs && !reg_ack) begin + reg_rdata <= reg_out; + reg_ack <= 1'b1; + end else begin + reg_ack <= 1'b0; + end +end + + +//---------------------------------------------- +// reg-0: GLBL_CFG +//------------------------------------------ + +gen_32b_reg #('h0) u_reg_0 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_0 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_0 ) + ); + +assign cfg_pulse_1us = reg_0[9:0]; + +//----------------------------------------------------------------------- +// reg-1 +// Assumption: wr_en is two cycle and reg_ack is asserted in second cycle +// In first cycle, local register will be updated +// In second cycle, update indication sent to timer block +// ----------------------------------------------------------------- +assign cfg_timer0 = reg_1[18:0]; +assign cfg_timer_update[0] = sw_wr_en_1 & reg_ack; + +gen_32b_reg #(32'h0) u_reg_1 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_1 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_1[31:0] ) + ); + +//----------------------------------------------------------------------- +// reg-2 +// Assumption: wr_en is two cycle and reg_ack is asserted in second cycle +// In first cycle, local register will be updated +// In second cycle, update indication sent to timer block +// ----------------------------------------------------------------- +assign cfg_timer1 = reg_2[18:0]; +assign cfg_timer_update[1] = sw_wr_en_2 & reg_ack; + +gen_32b_reg #(32'h0) u_reg_2 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_2 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_2[31:0] ) + ); + + +//----------------------------------------------------------------------- +// reg-3 +// Assumption: wr_en is two cycle and reg_ack is asserted in second cycle +// In first cycle, local register will be updated +// In second cycle, update indication sent to timer block +// ----------------------------------------------------------------- +assign cfg_timer2 = reg_3[18:0]; +assign cfg_timer_update[2] = sw_wr_en_3 & reg_ack; + +gen_32b_reg #(32'h0) u_reg_3 ( + //List of Inputs + .reset_n (h_reset_n ), + .clk (mclk ), + .cs (sw_wr_en_3 ), + .we (sw_be ), + .data_in (sw_reg_wdata ), + + //List of Outs + .data_out (reg_3[31:0] ) + ); + +//----------------------------------------------------------------------- +// Register Read Path Multiplexer instantiation +//----------------------------------------------------------------------- + +always_comb +begin + reg_out [31:0] = 32'h0; + + case (sw_addr [1:0]) + 2'b00 : reg_out [31:0] = reg_0 [31:0]; + 2'b01 : reg_out [31:0] = reg_1 [31:0]; + 2'b10 : reg_out [31:0] = reg_2 [31:0]; + 2'b11 : reg_out [31:0] = reg_3 [31:0]; + default : reg_out [31:0] = 32'h0; + endcase +end + +endmodule
diff --git a/verilog/rtl/pinmux/src/timer_top.sv b/verilog/rtl/pinmux/src/timer_top.sv new file mode 100644 index 0000000..ae981dc --- /dev/null +++ b/verilog/rtl/pinmux/src/timer_top.sv
@@ -0,0 +1,191 @@ +////////////////////////////////////////////////////////////////////////////// +// SPDX-FileCopyrightText: 2021 , Dinesh Annayya +// +// 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 +// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org> +// +////////////////////////////////////////////////////////////////////// +//// //// +//// Timer Top //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// 0.1 - 15th Aug 2022, Dinesh A //// +//// initial version //// +////////////////////////////////////////////////////////////////////// + +module timer_top ( + // System Signals + // Inputs + input logic mclk, + input logic h_reset_n, + + // Reg Bus Interface Signal + input logic reg_cs, + input logic reg_wr, + input logic [1:0] reg_addr, + input logic [31:0] reg_wdata, + input logic [3:0] reg_be, + + // Outputs + output logic [31:0] reg_rdata, + output logic reg_ack, + + output logic pulse_1ms, + output logic [2:0] timer_intr + + ); + +//--------------------------------------------------------- +// Timer Register +// ------------------------------------------------------- +logic [2:0] cfg_timer_update ; // CPU write to timer register +logic [18:0] cfg_timer0 ; // Timer-0 register +logic [18:0] cfg_timer1 ; // Timer-1 register +logic [18:0] cfg_timer2 ; // Timer-2 register + +/* clock pulse */ +//******************************************************** +logic pulse_1us ; // 1 UsSecond Pulse for waveform Generator +logic pulse_1s ; // 1Second Pulse for waveform Generator +logic [9:0] cfg_pulse_1us ; // 1us pulse generation config + +timer_reg u_reg ( + .mclk (mclk ), + .h_reset_n (h_reset_n ), + + // Reg Bus Interface Signal + .reg_cs (reg_cs ), + .reg_wr (reg_wr ), + .reg_addr (reg_addr ), + .reg_wdata (reg_wdata ), + .reg_be (reg_be ), + + // Outputs + .reg_rdata (reg_rdata ), + .reg_ack (reg_ack ), + + .cfg_pulse_1us (cfg_pulse_1us ), + .cfg_timer_update (cfg_timer_update ), + .cfg_timer0 (cfg_timer0 ), + .cfg_timer1 (cfg_timer1 ), + .cfg_timer2 (cfg_timer2 ) + + ); + +// 1us pulse +pulse_gen_type2 #(.WD(10)) u_pulse_1us ( + + .clk_pulse_o (pulse_1us ), + .clk (mclk ), + .reset_n (h_reset_n ), + .cfg_max_cnt (cfg_pulse_1us ) + + ); + +// 1us/1000 to 1millisecond pulse +pulse_gen_type1 u_pulse_1ms ( + + .clk_pulse_o (pulse_1ms ), + .clk (mclk ), + .reset_n (h_reset_n ), + .trigger (pulse_1us ) + + ); + +// 1ms/1000 => 1 second pulse +pulse_gen_type1 u_pulse_1s ( + + .clk_pulse_o (pulse_1s ), + .clk (mclk ), + .reset_n (h_reset_n ), + .trigger (pulse_1ms ) + + ); + +// Timer + +wire [1:0] cfg_timer0_clksel = cfg_timer0[18:17]; +wire cfg_timer0_enb = cfg_timer0[16]; +wire [15:0] cfg_timer0_compare = cfg_timer0[15:0]; + +timer u_timer_0 + ( + .reset_n (sreset_n ),// system syn reset + .mclk (mclk ),// master clock + .pulse_1us (pulse_1us ), + .pulse_1ms (pulse_1ms ), + .pulse_1s (pulse_1s ), + + .cfg_timer_update (cfg_timer_update[0] ), + .cfg_timer_enb (cfg_timer0_enb ), + .cfg_timer_compare (cfg_timer0_compare ), + .cfg_timer_clksel (cfg_timer0_clksel ),// to select the timer 1us/1ms reference clock + + .timer_intr (timer_intr[0] ) + ); + +// Timer +wire [1:0] cfg_timer1_clksel = cfg_timer1[18:17]; +wire cfg_timer1_enb = cfg_timer1[16]; +wire [15:0] cfg_timer1_compare = cfg_timer1[15:0]; +timer u_timer_1 + ( + .reset_n (sreset_n ),// system syn reset + .mclk (mclk ),// master clock + .pulse_1us (pulse_1us ), + .pulse_1ms (pulse_1ms ), + .pulse_1s (pulse_1s ), + + .cfg_timer_update (cfg_timer_update[1] ), + .cfg_timer_enb (cfg_timer1_enb ), + .cfg_timer_compare (cfg_timer1_compare ), + .cfg_timer_clksel (cfg_timer1_clksel ),// to select the timer 1us/1ms reference clock + + .timer_intr (timer_intr[1] ) + ); + +// Timer +wire [1:0] cfg_timer2_clksel = cfg_timer2[18:17]; +wire cfg_timer2_enb = cfg_timer2[16]; +wire [15:0] cfg_timer2_compare = cfg_timer2[15:0]; + +timer u_timer_2 + ( + .reset_n (sreset_n ),// system syn reset + .mclk (mclk ),// master clock + .pulse_1us (pulse_1us ), + .pulse_1ms (pulse_1ms ), + .pulse_1s (pulse_1s ), + + .cfg_timer_update (cfg_timer_update[2] ), + .cfg_timer_enb (cfg_timer2_enb ), + .cfg_timer_compare (cfg_timer2_compare ), + .cfg_timer_clksel (cfg_timer2_clksel ),// to select the timer 1us/1ms reference clock + + .timer_intr (timer_intr[2] ) + ); + + +endmodule
diff --git a/verilog/rtl/sspim/src/sspim_cfg.sv b/verilog/rtl/sspim/src/sspim_cfg.sv index e849f81..cc81df0 100755 --- a/verilog/rtl/sspim/src/sspim_cfg.sv +++ b/verilog/rtl/sspim/src/sspim_cfg.sv
@@ -46,17 +46,28 @@ //// from http://www.opencores.org/lgpl.shtml //// //// //// ////////////////////////////////////////////////////////////////////// +/******************************************************************* +SPI Mode: + Mode 0 (the default)− Clock is normally low (CPOL = 0), and Data sampled on rising edge and shifted out on the falling edge. (CPHA = 0). - Supported + Mode 1 − Clock is normally low (CPOL = 0), and Data sampled on the falling edge and shifted out on the rising edge. (CPHA = 1). - Not Supported + Mode 2 − Clock is normally high (CPOL = 1), and Data sampled on the rising edge and shifted out on the falling edge. (CPHA = 0). - Supported + Mode 3 − Clock is normally high (CPOL = 1), and Data sampled on the falling edge and shifted out on the rising edge (CPHA = 1). - Not Supported +********************************************************************/ + module sspim_cfg ( input logic mclk , input logic reset_n , output logic [1:0] cfg_tgt_sel , - + + output logic cfg_cpol , // spi clock idle phase + output logic cfg_cpha , // spi data sample and lanch phase + output logic cfg_bit_order , // SPI TX/RX Bit Order, 1 -> LSBFIRST or 0 -> MSBFIRST output logic cfg_op_req , // SPI operation request - output logic cfg_endian , // Endian selection + output logic cfg_endian , // Endian selection output logic [1:0] cfg_op_type , // SPI operation type output logic [1:0] cfg_transfer_size , // SPI transfer size output logic [5:0] cfg_sck_period , // sck clock period @@ -98,6 +109,7 @@ logic [31:0] reg_1; // Software-Reg_1 logic [31:0] reg_2; // Software-Reg_2 logic [31:0] reg_out; +logic [1:0] cfg_spi_mode; //----------------------------------------------------------------------- // Main code starts here @@ -168,7 +180,13 @@ //----------------------------------------------------------------------- // Logic for Register 0 : SPI Control Register //----------------------------------------------------------------------- + +assign cfg_cpha = cfg_spi_mode[0]; +assign cfg_cpol = cfg_spi_mode[1]; + assign cfg_op_req = reg_0[31]; // cpu request +assign cfg_bit_order = reg_0[28]; // 1 -> LSBFIRST or 0 -> MSBFIRST +assign cfg_spi_mode = reg_0[27:26]; // spi mode assign cfg_endian = reg_0[25]; // Endian, 0 - little, 1 - Big assign cfg_tgt_sel = reg_0[24:23]; // target chip select assign cfg_op_type = reg_0[22:21]; // SPI operation type @@ -210,18 +228,17 @@ .data_out (reg_0[23:16] ) ); -generic_register #(2,0 ) u_spi_ctrl_be3 ( - .we ({2{sw_wr_en_0 & +generic_register #(7,0 ) u_spi_ctrl_be3 ( + .we ({7{sw_wr_en_0 & wr_be[3] }} ), - .data_in (reg_wdata[25:24] ), + .data_in (reg_wdata[30:24] ), .reset_n (reset_n ), .clk (mclk ), //List of Outs - .data_out (reg_0[25:24] ) + .data_out (reg_0[30:24] ) ); -assign reg_0[30:26] = 5'h0; req_register #(0 ) u_spi_ctrl_req ( .cpu_we ({sw_wr_en_0 &
diff --git a/verilog/rtl/sspim/src/sspim_clkgen.sv b/verilog/rtl/sspim/src/sspim_clkgen.sv new file mode 100755 index 0000000..bb1a8b4 --- /dev/null +++ b/verilog/rtl/sspim/src/sspim_clkgen.sv
@@ -0,0 +1,146 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// Single SPI Master Interface Module //// +//// //// +//// This file is part of the riscduino cores project //// +//// https://github.com/dineshannayya/riscduino.git //// +//// //// +//// Description //// +//// SPI Clock Gen module //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +//// Revision : //// +//// V.0 - 06 Oct 2021 //// +//// Initial SpI Module picked from //// +//// http://www.opencores.org/cores/turbo8051/ //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Authors and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source is distributed in the hope that it will be //// +//// useful, but WITHOUT ANY WARRANTY; without even the implied //// +//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //// +//// PURPOSE. See the GNU Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from http://www.opencores.org/lgpl.shtml //// +//// //// +////////////////////////////////////////////////////////////////////// +/********************************************************************* + Design Implementation Reference + Reference: https://www.allaboutcircuits.com/technical-articles/spi-serial-peripheral-interface/ +*********************************************************************/ + + +module sspim_clkgen + ( + input logic clk, + input logic reset_n, + input logic cfg_op_req, + input logic cfg_cpol, // CPOL : clock polarity CPOL :0- Clock Idle state low, 1 - Clock idle state high + input logic cfg_cpha, // CPHA : Clock Phase + + input logic [5:0] cfg_sck_period, + + input logic sck_active, + + output logic sck_int, // SCLK + output logic shift, // Data Shift Phase + output logic sample, // Data Sample Phase + output logic sck_ne, // sclk negative phase + output logic sck_pe // sclk positive phase + + ); + + //************************************************************************* + + + logic [5:0] clk_cnt; + logic [5:0] sck_half_period; + + + + assign sck_ne = (cfg_cpha == 0) ? shift : sample; + assign sck_pe = (cfg_cpha == 0) ? sample : shift; + + assign sck_half_period = {1'b0, cfg_sck_period[5:1]}; + // The first transition on the sck_toggle happens one SCK period + // after op_en or boot_en is asserted + always @(posedge clk or negedge reset_n) begin + if(!reset_n) begin + shift <= 1'b0; + sample <= 1'b0; + clk_cnt <= 6'h0; + sck_int <= 1'b1; + end // if (!reset_n) + else + begin + if(cfg_op_req) + begin + // clock counter + if(clk_cnt == cfg_sck_period) begin + clk_cnt <= 'h0; + end else begin + clk_cnt <= clk_cnt + 1'b1; + end + + if(clk_cnt == sck_half_period) + begin + shift <= 1'b1; + sample <= 1'b0; + end // if (clk_cnt == sck_half_period) + else + begin + if(clk_cnt == cfg_sck_period) + begin + shift <= 1'b0; + sample <= 1'b1; + end // if (clk_cnt == cfg_sck_period) + else + begin + shift <= 1'b0; + sample <= 1'b0; + end // else: !if(clk_cnt == cfg_sck_period) + end // else: !if(clk_cnt == sck_half_period) + end // if (op_en) + else + begin + clk_cnt <= 6'h0; + shift <= 1'b0; + sample <= 1'b0; + end // else: !if(op_en) + + + if(sck_active) begin + if(sck_ne) sck_int <= 0; + else if(sck_pe) sck_int <= 1; + end else if (cfg_cpol == 0) begin // CPOL :0- Clock Idle state low + sck_int <= 0; + end else begin // CPOL :1- Clock Idle state High + sck_int <= 1; + end + end // else: !if(!reset_n) + end // always @ (posedge clk or negedge reset_n) + + + +endmodule
diff --git a/verilog/rtl/sspim/src/sspim_ctl.sv b/verilog/rtl/sspim/src/sspim_ctl.sv index ea6aa1f..25971e0 100755 --- a/verilog/rtl/sspim/src/sspim_ctl.sv +++ b/verilog/rtl/sspim/src/sspim_ctl.sv
@@ -52,25 +52,24 @@ ( input logic clk, input logic reset_n, + input logic cfg_cpol, input logic cfg_op_req, input logic cfg_endian, input logic [1:0] cfg_op_type, input logic [1:0] cfg_transfer_size, + input logic [4:0] cfg_sck_cs_period, - input logic [5:0] cfg_sck_period, - input logic [4:0] cfg_sck_cs_period, // cs setup & hold period input logic [7:0] cfg_cs_byte, input logic [31:0] cfg_datain, output logic [31:0] cfg_dataout, output logic [7:0] byte_out, // Byte out for Serial Shifting out input logic [7:0] byte_in, // Serial Received Byte - output logic sck_int, output logic cs_int_n, - output logic sck_pe, - output logic sck_ne, - output logic shift_out, - output logic shift_in, + input logic shift, + input logic sample, + + output logic sck_active, output logic load_byte, output logic op_done @@ -80,74 +79,25 @@ parameter LITTLE_ENDIAN = 1'b0; parameter BIG_ENDIAN = 1'b1; + + parameter SPI_WR = 2'b00; + parameter SPI_RD = 2'b01; + parameter SPI_WR_RD = 2'b10; - logic [5:0] clk_cnt; logic [5:0] sck_cnt; logic [3:0] spiif_cs; - logic shift_enb; - logic clr_sck_cnt ; - logic sck_out_en; - logic [5:0] sck_half_period; logic [2:0] byte_cnt; `define SPI_IDLE 4'b0000 `define SPI_CS_SU 4'b0001 - `define SPI_WRITE 4'b0010 - `define SPI_READ 4'b0011 - `define SPI_CS_HLD 4'b0100 - `define SPI_WAIT 4'b0101 + `define SPI_DATA 4'b0010 + `define SPI_CS_HLD 4'b0011 + `define SPI_WAIT 4'b0100 - assign sck_half_period = {1'b0, cfg_sck_period[5:1]}; - // The first transition on the sck_toggle happens one SCK period - // after op_en or boot_en is asserted - always @(posedge clk or negedge reset_n) begin - if(!reset_n) begin - sck_ne <= 1'b0; - clk_cnt <= 6'h1; - sck_pe <= 1'b0; - sck_int <= 1'b0; - end // if (!reset_n) - else - begin - if(cfg_op_req) - begin - if(clk_cnt == sck_half_period) - begin - sck_ne <= 1'b1; - sck_pe <= 1'b0; - if(sck_out_en) sck_int <= 0; - clk_cnt <= clk_cnt + 1'b1; - end // if (clk_cnt == sck_half_period) - else - begin - if(clk_cnt == cfg_sck_period) - begin - sck_ne <= 1'b0; - sck_pe <= 1'b1; - if(sck_out_en) sck_int <= 1; - clk_cnt <= 6'h1; - end // if (clk_cnt == cfg_sck_period) - else - begin - clk_cnt <= clk_cnt + 1'b1; - sck_pe <= 1'b0; - sck_ne <= 1'b0; - end // else: !if(clk_cnt == cfg_sck_period) - end // else: !if(clk_cnt == sck_half_period) - end // if (op_en) - else - begin - clk_cnt <= 6'h1; - sck_pe <= 1'b0; - sck_ne <= 1'b0; - end // else: !if(op_en) - end // else: !if(!reset_n) - end // always @ (posedge clk or negedge reset_n) - wire [1:0] cs_data = (byte_cnt == 2'b00) ? cfg_cs_byte[7:6] : (byte_cnt == 2'b01) ? cfg_cs_byte[5:4] : @@ -162,104 +112,72 @@ (byte_cnt == 2'b10) ? cfg_datain[15:8] : cfg_datain[7:0]) ; -assign shift_out = shift_enb && sck_ne; always @(posedge clk or negedge reset_n) begin if(!reset_n) begin spiif_cs <= `SPI_IDLE; sck_cnt <= 6'h0; - shift_in <= 1'b0; - clr_sck_cnt <= 1'b1; byte_cnt <= 2'b00; cs_int_n <= 1'b1; - sck_out_en <= 1'b0; - shift_enb <= 1'b0; cfg_dataout <= 32'h0; load_byte <= 1'b0; + sck_active <= 1'b0; end else begin - if(sck_ne) - sck_cnt <= clr_sck_cnt ? 6'h0 : sck_cnt + 1 ; - case(spiif_cs) `SPI_IDLE : begin + sck_active <= 1'b0; + load_byte <= 1'b0; op_done <= 0; - clr_sck_cnt <= 1'b1; - sck_out_en <= 1'b0; - shift_enb <= 1'b0; if(cfg_op_req) begin cfg_dataout <= 32'h0; spiif_cs <= `SPI_CS_SU; - end - else begin + end else begin spiif_cs <= `SPI_IDLE; end end `SPI_CS_SU : begin - if(sck_ne) begin + if(shift) begin cs_int_n <= cs_data[1]; if(sck_cnt == cfg_sck_cs_period) begin - clr_sck_cnt <= 1'b1; - if(cfg_op_type == 0) begin // Write Mode + sck_cnt <= 'h0; + if((cfg_op_type == SPI_WR) || (cfg_op_type == SPI_WR_RD )) begin // Write Mode load_byte <= 1'b1; - spiif_cs <= `SPI_WRITE; - shift_enb <= 1'b0; - end else begin - shift_in <= 1; - spiif_cs <= `SPI_READ; - end - end - else begin - clr_sck_cnt <= 1'b0; - end + end + spiif_cs <= `SPI_DATA; + end else begin + sck_cnt <= sck_cnt + 1 ; + end end end - `SPI_WRITE : + `SPI_DATA : begin load_byte <= 1'b0; - if(sck_ne) begin - if(sck_cnt == 3'h7 )begin - clr_sck_cnt <= 1'b1; - spiif_cs <= `SPI_CS_HLD; - shift_enb <= 1'b0; - sck_out_en <= 1'b0; // Disable clock output - end - else begin - shift_enb <= 1'b1; - sck_out_en <= 1'b1; - clr_sck_cnt <= 1'b0; - end - end else begin - shift_enb <= 1'b1; - end - end - - `SPI_READ : - begin - if(sck_ne) begin - if( sck_cnt == 3'h7 ) begin - clr_sck_cnt <= 1'b1; - shift_in <= 0; - spiif_cs <= `SPI_CS_HLD; - sck_out_en <= 1'b0; // Disable clock output - end - else begin - sck_out_en <= 1'b1; // Disable clock output - clr_sck_cnt <= 1'b0; - end + if((shift && (cfg_cpol == 1)) || (sample && (cfg_cpol == 0)) ) begin + sck_active <= 1'b1; + end else if((sample && (cfg_cpol == 1)) || (shift && (cfg_cpol == 0)) ) begin + if(sck_cnt == 4'h8 )begin + sck_active <= 1'b0; + sck_cnt <= 'h0; + spiif_cs <= `SPI_CS_HLD; + end + else begin + sck_active <= 1'b1; + sck_cnt <= sck_cnt + 1 ; + end end end `SPI_CS_HLD : begin - if(sck_ne) begin + if(shift) begin cs_int_n <= cs_data[0]; if(sck_cnt == cfg_sck_cs_period) begin - if(cfg_op_type == 1) begin // Read Mode + if((cfg_op_type == SPI_RD) || (cfg_op_type == SPI_WR_RD)) begin // Read Mode cfg_dataout <= (cfg_endian == LITTLE_ENDIAN) ? ((byte_cnt[1:0] == 2'b00) ? { cfg_dataout[31:8],byte_in } : (byte_cnt[1:0] == 2'b01) ? { cfg_dataout[31:16], byte_in, cfg_dataout[7:0] } : @@ -270,7 +188,7 @@ (byte_cnt[1:0] == 2'b10) ? { cfg_dataout[31:16], byte_in, cfg_dataout[7:0] } : { cfg_dataout[31:8],byte_in}) ; end - clr_sck_cnt <= 1'b1; + sck_cnt <= 'h0; if(byte_cnt == cfg_transfer_size) begin spiif_cs <= `SPI_WAIT; byte_cnt <= 0; @@ -281,7 +199,7 @@ end end else begin - clr_sck_cnt <= 1'b0; + sck_cnt <= sck_cnt + 1 ; end end end // case: `SPI_CS_HLD
diff --git a/verilog/rtl/sspim/src/sspim_if.sv b/verilog/rtl/sspim/src/sspim_if.sv index 42b18f2..ece9ffd 100755 --- a/verilog/rtl/sspim/src/sspim_if.sv +++ b/verilog/rtl/sspim/src/sspim_if.sv
@@ -47,24 +47,25 @@ module sspim_if ( - input logic clk, - input logic reset_n, - input logic sck_pe, - input logic sck_int, - input logic cs_int_n, + input logic clk, + input logic reset_n, + input logic sck_int, + input logic cs_int_n, + input logic cfg_bit_order, // 1 -> LSBFIRST or 0 -> MSBFIRST input logic load_byte, input logic [1:0] cfg_tgt_sel, input logic [7:0] byte_out, - input logic shift_out, - input logic shift_in, + input logic sck_active, + input logic shift, + input logic sample, - output logic [7:0] byte_in, - output logic sck, - output logic so, - output logic [3:0] cs_n, - input logic si + output logic [7:0]byte_in, + output logic sck, + output logic so, + output logic [3:0]cs_n, + input logic si ); @@ -73,6 +74,9 @@ logic [7:0] si_reg; + wire shift_out = shift & sck_active; + wire sample_in = sample & sck_active; + //Output Shift Register always @(posedge clk or negedge reset_n) begin @@ -86,13 +90,19 @@ if(shift_out) begin // Handling backto back case : // Last Transfer bit + New Trasfer Load - so <= so_reg[7]; + if(cfg_bit_order) so <= so_reg[0]; // LSB FIRST + else so <= so_reg[7]; // MSB FIRST end end // if (load_byte) else begin if(shift_out) begin - so <= so_reg[7]; - so_reg <= {so_reg[6:0],1'b0}; + if(cfg_bit_order) begin // LSB FIRST + so <= so_reg[0]; + so_reg <= {1'b0,so_reg[7:1]}; + end else begin + so <= so_reg[7]; + so_reg <= {so_reg[6:0],1'b0}; + end end // if (shift_out) end // else: !if(load_byte) end // else: !if(!reset_n) @@ -103,11 +113,14 @@ always @(posedge clk or negedge reset_n) begin if(!reset_n) begin si_reg <= 8'h0; - end - else begin - if(sck_pe & shift_in) begin - si_reg[7:0] <= {si_reg[6:0],si}; - end // if (sck_pe & shift_in) + end else begin + if(sample_in) begin + if(cfg_bit_order) begin // LSB FIRST + si_reg[7:0] <= {si,si_reg[7:1]}; + end else begin // MSB FIRST + si_reg[7:0] <= {si_reg[6:0],si}; + end + end // if (sample_in) end // else: !if(!reset_n) end // always @ (posedge clk or negedge reset_n)
diff --git a/verilog/rtl/sspim/src/sspim_top.sv b/verilog/rtl/sspim/src/sspim_top.sv index 2a28d2e..6f0f17f 100755 --- a/verilog/rtl/sspim/src/sspim_top.sv +++ b/verilog/rtl/sspim/src/sspim_top.sv
@@ -46,6 +46,9 @@ //// out is big endian, i.e bit[7],[6] ..[0] //// //// 0.3 - April 6, 2022, Dinesh A //// //// Four chip select are driven out //// +//// 0.4 - Aug 5, 2022, Dinesh A //// +//// A. SPI Mode 0 to 3 support added, //// +//// B. SPI Duplex mode TX-RX Mode added //// //// //// ////////////////////////////////////////////////////////////////////// //// //// @@ -125,54 +128,81 @@ logic [31:0] cfg_datain ; // data for transfer logic [31:0] cfg_dataout ; // data for received logic hware_op_done ; // operation done - +logic cfg_bit_order ; // Bit order 1 -> LSBFIRST or 0 -> MSBFIRST +logic cfg_cpol ; // spi clock idle phase +logic cfg_cpha ; // spi data sample and lanch phase sspim_if u_spi_if ( . clk (clk ), . reset_n (reset_n ), - // towards ctrl i/f - . sck_pe (sck_pe ), + // cfg + . cfg_bit_order (cfg_bit_order ), + . cfg_tgt_sel (cfg_tgt_sel ), + + // clkgen + . shift (shift ), + . sample (sample ), . sck_int (sck_int ), + + // towards ctrl i/f + . sck_active (sck_active ), . cs_int_n (cs_int_n ), . byte_in (byte_in ), . load_byte (load_byte ), . byte_out (byte_out ), - . shift_out (shift_out ), - . shift_in (shift_in ), - . cfg_tgt_sel (cfg_tgt_sel ), - + // External I/F . sck (sck ), . so (so ), . si (si ), . cs_n (ssn ) ); +sspim_clkgen u_clkgen + ( + . clk (clk ), + . reset_n (reset_n ), + + // cfg + . cfg_cpol (cfg_cpol ), + . cfg_cpha (cfg_cpha ), + . cfg_sck_period (cfg_sck_period ), + . cfg_op_req (cfg_op_req ), + + // ctrl + . sck_active (sck_active ), + + . sck_int (sck_int ), + . shift (shift ), + . sample (sample ), + . sck_ne (), + . sck_pe () + + ); sspim_ctl u_spi_ctrl ( . clk (clk ), . reset_n (reset_n ), + // cfg + . cfg_cpol (cfg_cpol ), . cfg_op_req (cfg_op_req ), . cfg_endian (cfg_endian ), . cfg_op_type (cfg_op_type ), . cfg_transfer_size (cfg_transfer_size ), - . cfg_sck_period (cfg_sck_period ), . cfg_sck_cs_period (cfg_sck_cs_period ), . cfg_cs_byte (cfg_cs_byte ), . cfg_datain (cfg_datain ), . cfg_dataout (cfg_dataout ), . op_done (hware_op_done ), - . sck_int (sck_int ), + . sck_active (sck_active ), . cs_int_n (cs_int_n ), - . sck_pe (sck_pe ), - . sck_ne (sck_ne ), - . shift_out (shift_out ), - . shift_in (shift_in ), + . shift (shift ), + . sample (sample ), . load_byte (load_byte ), . byte_out (byte_out ), . byte_in (byte_in ) @@ -200,6 +230,9 @@ // configuration signal + . cfg_cpol (cfg_cpol ), + . cfg_cpha (cfg_cpha ), + . cfg_bit_order (cfg_bit_order ), . cfg_tgt_sel (cfg_tgt_sel ), . cfg_op_req (cfg_op_req ), // SPI operation request . cfg_endian (cfg_endian ),
diff --git a/verilog/rtl/uart/src/uart_core.sv b/verilog/rtl/uart/src/uart_core.sv index 948cd35..653e285 100644 --- a/verilog/rtl/uart/src/uart_core.sv +++ b/verilog/rtl/uart/src/uart_core.sv
@@ -185,8 +185,9 @@ //############################################################## // 16x Baud clock generation +// Baud Rate config = (F_CPU / (BAUD * 16)) - 2 // Example: to generate 19200 Baud clock from 50Mhz Link clock -// 50 * 1000 * 1000 / (2 + cfg_baud_16x) = 19200 * 16 +// cfg_baud_16x = ((50 * 1000 * 1000) / (19200 * 16)) - 2 // cfg_baud_16x = 0xA0 (160) //###############################################################
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v index 34c8794..3429628 100644 --- a/verilog/rtl/user_project_wrapper.v +++ b/verilog/rtl/user_project_wrapper.v
@@ -35,6 +35,7 @@ //// 8. 2KB icache and 2KB dcache //// //// 8. 6 Channel ADC //// //// 9. Pinmux with GPIO and 6 PWM //// +//// //// //// //// To Do: //// //// nothing //// @@ -216,6 +217,20 @@ //// SPI ISP boot option added in wb_host, spi slave uses //// //// same spi master interface, but will be active only //// //// when internal SPI config disabled + RESET PIN = 0 //// +//// 4.9 Aug 5 2022, Dinesh A //// +//// changes in sspim //// +//// A. SPI Mode 0 to 3 support added, //// +//// B. SPI Duplex mode TX-RX Mode added //// +//// 5.0 Aug 15 2022, Dinesh A //// +//// A. 15 Hardware Semahore added //// +//// B. Pinmux Address Space are Split as //// +//// `define ADDR_SPACE_PINMUX 32'h1002_0000 //// +//// `define ADDR_SPACE_GLBL 32'h1002_0000 //// +//// `define ADDR_SPACE_GPIO 32'h1002_0040 //// +//// `define ADDR_SPACE_PWM 32'h1002_0080 //// +//// `define ADDR_SPACE_TIMER 32'h1002_00C0 //// +//// `define ADDR_SPACE_SEMA 32'h1002_0100 //// +//// //// ////////////////////////////////////////////////////////////////////// //// //// //// Copyright (C) 2000 Authors and OPENCORES.ORG //// @@ -243,6 +258,32 @@ //// //// ////////////////////////////////////////////////////////////////////// +/********************************************************************* + Memory Map: //// + //// + SOC Memory Map //// + 0x0000_0000 to 0x0FFF_FFFF - QSPIM MEMORY //// + 0x1000_0000 to 0x1000_00FF - QSPIM REG + 0x1001_0000 to 0x1001_003F - UART0 + 0x1001_0040 to 0x1001_007F - I2 + 0x1001_0080 to 0x1001_00BF - USB + 0x1001_00C0 to 0x1001_00FF - SSPIM + 0x1001_0100 to 0x1001_013F - UART1 + 0x1002_0000 to 0x1002_00FF - PINMUX + + Caravel Memory Map: +----------------------------------------------------------------------- + caravel user space is 0x3000_0000 to 0x300F_FFFF + So we have allocated + 0x3008_0000 - 0x3008_00FF - Assigned to WB Host Address Space + Since We need more than 16MB Address space to access SDRAM/SPI we have + added indirect MSB 13 bit address select option + So Address will be {Bank_Sel[15:3], wbm_adr_i[18:0]} + --------------------------------------------------------------------- + 0x3080_0000 to 0x3080_00FF - WB HOST + 0x3000_0000 to 0x307F_FFFF - Indirect Address + {Bank_Sel[15:3],WB ADDR[18:0]} +***********************************************************************/ module user_project_wrapper ( `ifdef USE_POWER_PINS @@ -418,7 +459,7 @@ // Global Register Wishbone Interface //--------------------------------------------------------------------- wire wbd_glbl_stb_o ; // strobe/request -wire [7:0] wbd_glbl_adr_o ; // address +wire [8:0] wbd_glbl_adr_o ; // address wire wbd_glbl_we_o ; // write wire [WB_WIDTH-1:0] wbd_glbl_dat_o ; // data output wire [3:0] wbd_glbl_sel_o ; // byte enable @@ -1214,7 +1255,7 @@ ); -pinmux u_pinmux( +pinmux_top u_pinmux( `ifdef USE_POWER_PINS .vccd1 (vccd1 ),// User area 1 1.8V supply .vssd1 (vssd1 ),// User area 1 digital ground
diff --git a/verilog/rtl/user_reg_map.v b/verilog/rtl/user_reg_map.v index 42f9e73..53d8331 100644 --- a/verilog/rtl/user_reg_map.v +++ b/verilog/rtl/user_reg_map.v
@@ -9,6 +9,11 @@ `define ADDR_SPACE_SSPI 32'h3001_00C0 `define ADDR_SPACE_UART1 32'h3001_0100 `define ADDR_SPACE_PINMUX 32'h3002_0000 +`define ADDR_SPACE_GLBL 32'h3002_0000 +`define ADDR_SPACE_GPIO 32'h3002_0040 +`define ADDR_SPACE_PWM 32'h3002_0080 +`define ADDR_SPACE_TIMER 32'h3002_00C0 +`define ADDR_SPACE_SEMA 32'h3002_0100 `define ADDR_SPACE_WBHOST 32'h3008_0000 //-------------------------------------------------- @@ -21,41 +26,74 @@ `define WBHOST_PLL_CTRL 8'h10 // reg_4 - PLL Control //-------------------------------------------------- -// Pinmux Register +// GLOBAL Register // ------------------------------------------------- +`define GLBL_CFG_CHIP_ID 8'h00 // reg_0 - Chip ID +`define GLBL_CFG_CFG0 8'h04 // reg_1 - Global Config-0 +`define GLBL_CFG_CFG1 8'h08 // reg_2 - Global Config-1 +`define GLBL_CFG_INTR_MSK 8'h0C // reg_3 - Global Interrupt Mask +`define GLBL_CFG_INTR_STAT 8'h10 // reg_4 - Global Interrupt +`define GLBL_CFG_MUTI_FUNC 8'h14 // reg_5 - Multi functional sel +`define GLBL_CFG_SOFT_REG_0 8'h18 // reg_6 - Sof Register +`define GLBL_CFG_SOFT_REG_1 8'h1C // reg_7 - Sof Register +`define GLBL_CFG_SOFT_REG_2 8'h20 // reg_8 - Sof Register +`define GLBL_CFG_SOFT_REG_3 8'h24 // reg_9 - Sof Register +`define GLBL_CFG_SOFT_REG_4 8'h28 // reg_10 - Sof Register +`define GLBL_CFG_SOFT_REG_5 8'h2C // reg_11 - Sof Register -`define PINMUX_CHIP_ID 8'h00 // reg_0 - Chip ID -`define PINMUX_GBL_CFG0 8'h04 // reg_1 - Global Config-2 -`define PINMUX_GBL_CFG1 8'h08 // reg_2 - Global Config-1 -`define PINMUX_GBL_INTR_MSK 8'h0C // reg_3 - Global Interrupt Mask -`define PINMUX_GBL_INTR 8'h10 // reg_4 - Global Interrupt -`define PINMUX_GPIO_IDATA 8'h14 // reg_5 - GPIO Data In -`define PINMUX_GPIO_ODATA 8'h18 // reg_6 - GPIO Data Out -`define PINMUX_GPIO_DSEL 8'h1C // reg_7 - GPIO Direction Select -`define PINMUX_GPIO_TYPE 8'h20 // reg_8 - GPIO TYPE - Static/Waveform -`define PINMUX_GPIO_INTR_STAT 8'h24 // reg_9 - GPIO Interrupt status -`define PINMUX_GPIO_INTR_CLR 8'h24 // reg_9 - GPIO Interrupt Clear -`define PINMUX_GPIO_INTR_SET 8'h28 // reg_10 - GPIO Interrupt Set -`define PINMUX_GPIO_INTR_MASK 8'h2C // reg_11 - GPIO Interrupt Mask -`define PINMUX_GPIO_POS_INTR 8'h30 // reg_12 - GPIO Posedge Interrupt -`define PINMUX_GPIO_NEG_INTR 8'h34 // reg_13 - GPIO Neg Interrupt -`define PINMUX_GPIO_MULTI_FUNC 8'h38 // reg_14 - GPIO Multi Function -`define PINMUX_SOFT_REG_0 8'h3C // reg_15 - Soft Register -`define PINMUX_CFG_PWM0 8'h40 // reg_16 - PWM Reg-0 -`define PINMUX_CFG_PWM1 8'h44 // reg_17 - PWM Reg-1 -`define PINMUX_CFG_PWM2 8'h48 // reg_18 - PWM Reg-2 -`define PINMUX_CFG_PWM3 8'h4C // reg_19 - PWM Reg-3 -`define PINMUX_CFG_PWM4 8'h50 // reg_20 - PWM Reg-4 -`define PINMUX_CFG_PWM5 8'h54 // reg_21 - PWM Reg-5 -`define PINMUX_SOFT_REG_1 8'h58 // reg_22 - Sof Register -`define PINMUX_SOFT_REG_2 8'h5C // reg_23 - Sof Register -`define PINMUX_SOFT_REG_3 8'h60 // reg_24 - Sof Register -`define PINMUX_SOFT_REG_4 8'h64 // reg_25 - Sof Register -`define PINMUX_SOFT_REG_5 8'h68 // reg_26 - Sof Register -`define PINMUX_SOFT_REG_6 8'h6C // reg_27 - Sof Register -`define PINMUX_CFG_TIMER0 8'h70 // reg_28 - Timer-0 -`define PINMUX_CFG_TIMER1 8'h74 // reg_28 - Timer-1 -`define PINMUX_CFG_TIMER2 8'h78 // reg_28 - Timer-2 +//-------------------------------------------------- +// GPIO Register +// ------------------------------------------------- +`define GPIO_CFG_DSEL 8'h00 // reg_0 - GPIO Direction Select +`define GPIO_CFG_TYPE 8'h04 // reg_1 - GPIO TYPE - Static/Waveform +`define GPIO_CFG_IDATA 8'h08 // reg_2 - GPIO Data In +`define GPIO_CFG_ODATA 8'h0C // reg_3 - GPIO Data Out +`define GPIO_CFG_INTR_STAT 8'h10 // reg_4 - GPIO Interrupt status +`define GPIO_CFG_INTR_CLR 8'h10 // reg_4 - GPIO Interrupt Clear +`define GPIO_CFG_INTR_SET 8'h14 // reg_5 - GPIO Interrupt Set +`define GPIO_CFG_INTR_MASK 8'h18 // reg_6 - GPIO Interrupt Mask +`define GPIO_CFG_POS_INTR_SEL 8'h1C // reg_7 - GPIO Posedge Interrupt +`define GPIO_CFG_NEG_INTR_SEL 8'h20 // reg_8 - GPIO Neg Interrupt + + +//-------------------------------------------------- +// PWM Register +// ------------------------------------------------- +`define PWM_GLBL_CFG 8'h00 // reg_0 - PWM Global Config +`define PWM_CFG_PWM_0 8'h04 // reg_1 - PWM Reg-0 +`define PWM_CFG_PWM_1 8'h08 // reg_2 - PWM Reg-1 +`define PWM_CFG_PWM_2 8'h0C // reg_3 - PWM Reg-2 +`define PWM_CFG_PWM_3 8'h10 // reg_4 - PWM Reg-3 +`define PWM_CFG_PWM_4 8'h14 // reg_5 - PWM Reg-4 +`define PWM_CFG_PWM_5 8'h18 // reg_6 - PWM Reg-5 + +//-------------------------------------------------- +// TIMER Register +// ------------------------------------------------- +`define TIMER_CFG_GLBL 8'h00 // reg_0 - Global Config +`define TIMER_CFG_TIMER_0 8'h04 // reg_1 - Timer-0 +`define TIMER_CFG_TIMER_1 8'h08 // reg_2 - Timer-1 +`define TIMER_CFG_TIMER_2 8'h0C // reg_3 - Timer-2 + +//-------------------------------------------------- +// SEMAPHORE Register +// ------------------------------------------------- +`define SEMA_CFG_LOCK_0 8'h00 // reg_0 - Semaphore Lock Bit-0 +`define SEMA_CFG_LOCK_1 8'h04 // reg_1 - Semaphore Lock Bit-1 +`define SEMA_CFG_LOCK_2 8'h08 // reg_2 - Semaphore Lock Bit-2 +`define SEMA_CFG_LOCK_3 8'h0C // reg_3 - Semaphore Lock Bit-3 +`define SEMA_CFG_LOCK_4 8'h10 // reg_4 - Semaphore Lock Bit-4 +`define SEMA_CFG_LOCK_5 8'h14 // reg_5 - Semaphore Lock Bit-5 +`define SEMA_CFG_LOCK_6 8'h18 // reg_6 - Semaphore Lock Bit-6 +`define SEMA_CFG_LOCK_7 8'h1C // reg_7 - Semaphore Lock Bit-7 +`define SEMA_CFG_LOCK_8 8'h20 // reg_8 - Semaphore Lock Bit-8 +`define SEMA_CFG_LOCK_9 8'h24 // reg_9 - Semaphore Lock Bit-9 +`define SEMA_CFG_LOCK_10 8'h28 // reg_10 - Semaphore Lock Bit-10 +`define SEMA_CFG_LOCK_11 8'h2C // reg_11 - Semaphore Lock Bit-11 +`define SEMA_CFG_LOCK_12 8'h30 // reg_12 - Semaphore Lock Bit-12 +`define SEMA_CFG_LOCK_13 8'h34 // reg_13 - Semaphore Lock Bit-13 +`define SEMA_CFG_LOCK_14 8'h38 // reg_14 - Semaphore Lock Bit-14 +`define SEMA_CFG_STATUS 8'h3C // reg_15 - Semaphore Lock Status //---------------------------------------------------------- // QSPI Register Map
diff --git a/verilog/rtl/wb_host/src/wb_host.sv b/verilog/rtl/wb_host/src/wb_host.sv index 26029c2..d3d85cc 100644 --- a/verilog/rtl/wb_host/src/wb_host.sv +++ b/verilog/rtl/wb_host/src/wb_host.sv
@@ -411,11 +411,11 @@ // Locally there register are define to control the reset and clock for user // area //----------------------------------------------------------------------- -// caravel user space is 0x3000_0000 to 0x3007_FFFF +// caravel user space is 0x3000_0000 to 0x300F_FFFF // So we have allocated // 0x3008_0000 - 0x3008_00FF - Assigned to WB Host Address Space // Since We need more than 16MB Address space to access SDRAM/SPI we have -// added indirect MSB 8 bit address select option +// added indirect MSB 13 bit address select option // So Address will be {Bank_Sel[15:3], wbm_adr_i[18:0]} // --------------------------------------------------------------------- assign reg_sel = wb_req & (wb_adr_i[19] == 1'b1);
diff --git a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv index 9fb6344..7e348fc 100644 --- a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv +++ b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
@@ -203,8 +203,8 @@ input logic s2_wbd_ack_i, // input logic s2_wbd_err_i, - unused output logic [31:0] s2_wbd_dat_o, - output logic [7:0] s2_wbd_adr_o, // glbl reg need only 8 bits - output logic [3:0] s2_wbd_sel_o, + output logic [8:0] s2_wbd_adr_o, // glbl reg need only 9 bits + output logic [3:0] s2_wbd_sel_o, output logic s2_wbd_we_o, output logic s2_wbd_cyc_o, output logic s2_wbd_stb_o @@ -677,7 +677,7 @@ assign s1_wbd_stb_o = s1_wb_wr.wbd_stb ; assign s2_wbd_dat_o = s2_wb_wr.wbd_dat ; - assign s2_wbd_adr_o = s2_wb_wr.wbd_adr[7:0] ; // Global Reg Need 8 bit + assign s2_wbd_adr_o = s2_wb_wr.wbd_adr[8:0] ; // Global Reg Need 8 bit assign s2_wbd_sel_o = s2_wb_wr.wbd_sel ; assign s2_wbd_we_o = s2_wb_wr.wbd_we ; assign s2_wbd_cyc_o = s2_wb_wr.wbd_cyc ;