Merge pull request #31 from LNIS-Projects/dev
Update master with latest development version
This commit is contained in:
commit
eec64bb63f
|
@ -0,0 +1,2 @@
|
|||
# Ignore everything
|
||||
*
|
|
@ -32,7 +32,17 @@ vpr7_x2p/vpr/vpr
|
|||
vpr7_x2p/printhandler/printhandlerdemo
|
||||
vpr7_x2p/libarchfpga/read_arch
|
||||
vpr7_x2p/pcre/pcredemo
|
||||
ace2/ace
|
||||
vpr7_x2p/libpcre/pcredemo
|
||||
vpr7_x2p/libprinthandler/printhandlerdemo
|
||||
vpr7_x2p/vpr/vpr_shell
|
||||
|
||||
# Some local temporary files
|
||||
.vscode
|
||||
*_local.bat
|
||||
*_local.bat
|
||||
fpga_flow/csv_rpts
|
||||
tmp/
|
||||
build/
|
||||
|
||||
message.txt
|
||||
deploy_key
|
66
.travis.yml
66
.travis.yml
|
@ -1,6 +1,17 @@
|
|||
language: cpp
|
||||
|
||||
# Currently sudo is not required, NO ENV is used
|
||||
# cache results
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $TRAVIS_BUILD_DIR/abc
|
||||
- $TRAVIS_BUILD_DIR/yosys
|
||||
- $TRAVIS_BUILD_DIR/ace2
|
||||
- $TRAVIS_BUILD_DIR/libs
|
||||
- $HOME/.ccache
|
||||
# - $HOME/deps
|
||||
|
||||
# Currently sudo is not required, NO ENV is used
|
||||
|
||||
# Supported Operating systems
|
||||
#os:
|
||||
|
@ -8,13 +19,11 @@ language: cpp
|
|||
# - osx
|
||||
# Create a matrix to branch the building environment
|
||||
matrix:
|
||||
allow_failures:
|
||||
- os: osx
|
||||
#dist: trusty
|
||||
include:
|
||||
- os: linux
|
||||
# Compiler is specified in ./travis/common.sh
|
||||
sudo: false
|
||||
dist: bionic
|
||||
compiler: g++-8
|
||||
addons:
|
||||
apt:
|
||||
|
@ -35,8 +44,6 @@ matrix:
|
|||
- fontconfig
|
||||
- g++-8
|
||||
- gcc-8
|
||||
- g++-4.9
|
||||
- gcc-4.9
|
||||
- gdb
|
||||
- git
|
||||
- gperf
|
||||
|
@ -56,25 +63,25 @@ matrix:
|
|||
- valgrind
|
||||
- zip
|
||||
- qt5-default
|
||||
- os: osx
|
||||
osx_image: xcode10.2 # we target latest MacOS Mojave
|
||||
sudo: true
|
||||
compiler: gcc-4.9 # Use clang instead of gcc in MacOS
|
||||
addons:
|
||||
homebrew:
|
||||
packages:
|
||||
- bison
|
||||
- cmake
|
||||
- ctags
|
||||
- flex
|
||||
- fontconfig
|
||||
- git
|
||||
- gcc@6
|
||||
- gcc@4.9
|
||||
- gawk
|
||||
- icarus-verilog
|
||||
- libxml++
|
||||
- qt5
|
||||
# - os: osx
|
||||
# osx_image: xcode10.2 # we target latest MacOS Mojave
|
||||
# sudo: true
|
||||
# compiler: gcc-4.9 # Use clang instead of gcc in MacOS
|
||||
# addons:
|
||||
# homebrew:
|
||||
# packages:
|
||||
# - bison
|
||||
# - cmake
|
||||
# - ctags
|
||||
# - flex
|
||||
# - fontconfig
|
||||
# - git
|
||||
# - gcc@6
|
||||
# - gcc@4.9
|
||||
# - gawk
|
||||
# - icarus-verilog
|
||||
# - libxml++
|
||||
# - qt5
|
||||
|
||||
before_install:
|
||||
- source .travis/common.sh
|
||||
|
@ -84,8 +91,8 @@ install:
|
|||
- mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
|
||||
- |
|
||||
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
|
||||
CMAKE_URL="https://cmake.org/files/v3.13/cmake-3.13.0-rc3-Linux-x86_64.tar.gz"
|
||||
mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
|
||||
CMAKE_URL="https://cmake.org/files/v3.12/cmake-3.12.4-Linux-x86_64.tar.gz"
|
||||
mkdir -p cmake && travis_retry wget --no-clobber --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
|
||||
export PATH=${DEPS_DIR}/cmake/bin:${PATH}
|
||||
echo ${PATH}
|
||||
else
|
||||
|
@ -93,7 +100,7 @@ install:
|
|||
fi
|
||||
- cmake --version
|
||||
- cd -
|
||||
- .travis/install.sh
|
||||
- source .travis/install.sh
|
||||
|
||||
script:
|
||||
- .travis/script.sh
|
||||
|
@ -104,3 +111,6 @@ after_failure:
|
|||
|
||||
after_success:
|
||||
- .travis/after_success.sh
|
||||
notifications:
|
||||
slack:
|
||||
secure: L8tzicFh+EKcK21GBA2m3rQ3jmnDdqiRXIZcb0iqYlhT0V5asYvCqwlpPDUDV1wmBXqPgRJBI/jitAJlKFWu74pLTVc6FscUIDYM7S0DJfHEcufLknZx88lMmmV0IsYLQe3/s89tWoudMf1bNBo/8YWzLDffqUQ7s/rTPD9SWLppb01X0Xm158oDlA0rWETs35nuNFgJxWcSyIyIvnRNE3dHjzmBETUR9mYDsUSYlcOI44FMD8rE6emicdkqdn1zVxScobrl4Dt2bPsMfKopgIKK1x+38AuaqQa7t5F5ICnF0WfxmQ6/TcRNwIij0fDu68w/fcU8SyV+Ex5aZBKYUU7PG7ELTOq+q1geDoTlbguvFSIT4EzqErc4hbJmcUn79BKLhdjshZtGihKatntJx2faXYNYGFjwmnPFRYpqsozydztgMjzv4prZ5yoh7jhoDiGj44QcpXlQ9otM17JdfqveowMLHBYzATsxIRG93irZfXG/E3S8FvXg8mYOIEn8UK7H6i8VWL3JHlw8RbpLdNLswZOUlpEaDAeTm5tvYcw7FGH2nlZ2e5aXLxN6dTovSSRztQHbWdJTGG0N+xldBXcCiChmok4nXGReIkMc+99nZjRsiCB0R16tCNb25/p7NAVkItfVe1qRTzdnhi1hdE7LPURK4kxoFRJ6sFVuYjw=
|
||||
|
|
|
@ -9,4 +9,7 @@ travis_fold end after_failure.1
|
|||
|
||||
start_section "failure.tail" "${RED}Failure output...${NC}"
|
||||
tail -n 1000 output.log
|
||||
echo "Failed uploading files to LNIS Server"
|
||||
scp -qCr $TRAVIS_BUILD_DIR/openfpga_flow/tasks/ u1249762@lab1-1.eng.utah.edu:/var/tmp/travis_bc/$TRAVIS_JOB_ID/
|
||||
scp output.log u1249762@lab1-1.eng.utah.edu:/var/tmp/travis_bc/$TRAVIS_JOB_ID/
|
||||
end_section "failure.tail"
|
||||
|
|
|
@ -15,6 +15,7 @@ export -f travis_time_start
|
|||
export -f travis_time_finish
|
||||
|
||||
function start_section() {
|
||||
$SPACER
|
||||
travis_fold start "$1"
|
||||
travis_time_start
|
||||
echo -e "${PURPLE}OpenFPGA${NC}: - $2${NC}"
|
||||
|
@ -25,6 +26,7 @@ function end_section() {
|
|||
echo -e "${GRAY}-------------------------------------------------------------------${NC}"
|
||||
travis_time_finish
|
||||
travis_fold end "$1"
|
||||
$SPACER
|
||||
}
|
||||
|
||||
# For Mac OS, we use g++ and gcc as default compilers
|
||||
|
@ -34,10 +36,11 @@ if [[ $TRAVIS_OS_NAME == 'osx' ]]; then
|
|||
# export PATH="/usr/local/opt/bison/bin:/usr/local/bin:$PATH"
|
||||
# export PATH="/usr/local/opt/qt/bin:$PATH"
|
||||
# Install header files in Mojave, if not gcc-4.9 cannot spot stdio.h
|
||||
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
|
||||
else
|
||||
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target / -allowUntrusted
|
||||
else
|
||||
# For linux, we use g++-8 and gcc-8 as default compilers
|
||||
export CC=gcc-8
|
||||
export CXX=g++-8
|
||||
fi
|
||||
|
||||
|
||||
|
|
|
@ -3,6 +3,39 @@
|
|||
source .travis/common.sh
|
||||
set -e
|
||||
|
||||
## Install necessary package which is not available on Travis CI
|
||||
#export DEPS_DIR="${HOME}/deps"
|
||||
#mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
|
||||
## Install CMake
|
||||
#if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
|
||||
# export CMAKE_URL="https://cmake.org/files/v3.13/cmake-3.13.0-rc3-Linux-x86_64.tar.gz"
|
||||
# mkdir -p cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
|
||||
# export PATH=${DEPS_DIR}/cmake/bin:${PATH}
|
||||
# echo ${PATH}
|
||||
#else
|
||||
# brew install cmake || brew upgrade cmake
|
||||
#fi
|
||||
# cmake --version
|
||||
#
|
||||
## Install latest iVerilog. Since no deb is provided, compile from source codes
|
||||
#if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
|
||||
# export IVERILOG_URL="https://github.com/steveicarus/iverilog/archive/v10_3.tar.gz"
|
||||
# travis_retry wget --no-clobber --no-check-certificate --quiet -O - ${IVERILOG_URL}
|
||||
# mkdir -p iverilog-10_3
|
||||
# tar -xz v10_3.tar.gz
|
||||
# cd iverlog-10_3
|
||||
# sh autoconf.sh --prefix=${DEPS_DIR}/iverilog-10_3/bin
|
||||
# ./configure --prefix=${DEPS_DIR}/iverilog-10_3/bin
|
||||
# make -j4
|
||||
# make check
|
||||
# make install --prefix=${HOME}/iverilog-10_3/bin
|
||||
# export PATH=${DEPS_DIR}/iverilog-10_3/bin:${PATH}
|
||||
# echo ${PATH}
|
||||
#fi
|
||||
#iverilog -V
|
||||
#cd -
|
||||
|
||||
|
||||
# Git repo fixup
|
||||
#start_section "environment.git" "Setting up ${YELLOW}git checkout${NC}"
|
||||
#set -x
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Regression test version 1.0
|
||||
|
||||
# Set variables
|
||||
my_pwd=$PWD
|
||||
fpga_flow_scripts=${my_pwd}/fpga_flow/scripts
|
||||
vpr_path=${my_pwd}/vpr7_x2p/vpr
|
||||
benchmark="test_modes"
|
||||
include_netlists="_include_netlists.v"
|
||||
compiled_file="compiled_$benchmark"
|
||||
tb_formal_postfix="_top_formal_verification_random_tb"
|
||||
verilog_output_dirname="${benchmark}_Verilog"
|
||||
log_file="${benchmark}_sim.log"
|
||||
new_reg_sh="my_regression.sh"
|
||||
|
||||
|
||||
cd $fpga_flow_scripts
|
||||
|
||||
perl rewrite_path_in_file.pl -i $vpr_path/regression_verilog.sh -o $vpr_path/$new_reg_sh
|
||||
|
||||
cd $my_pwd
|
||||
|
||||
# Move to vpr folder
|
||||
cd $vpr_path
|
||||
|
||||
# Remove former log file
|
||||
rm -f $log_file
|
||||
rm -f $compiled_file
|
||||
|
||||
# Start the script -> run the fpga generation -> run the simulation -> check the log file
|
||||
source $new_reg_sh
|
||||
iverilog -o $compiled_file $verilog_output_dirname/SRC/$benchmark$include_netlists -s $benchmark$tb_formal_postfix
|
||||
vvp $compiled_file -j 16 >> $log_file
|
||||
|
||||
result=`grep "Succeed" $log_file`
|
||||
if ["$result" = ""]; then
|
||||
result=`grep "Failed" $log_file`
|
||||
if ["$result" = ""]; then
|
||||
echo "Unexpected error, Verification didn't run"
|
||||
cd $my_pwd
|
||||
exit 1
|
||||
else
|
||||
echo "Verification failed"
|
||||
cd $my_pwd
|
||||
exit 2
|
||||
fi
|
||||
else
|
||||
echo "Verification succeed"
|
||||
cd $my_pwd
|
||||
fi
|
|
@ -3,31 +3,35 @@
|
|||
source .travis/common.sh
|
||||
set -e
|
||||
|
||||
$SPACER
|
||||
|
||||
start_section "OpenFPGA.build" "${GREEN}Building..${NC}"
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
if [[ $TRAVIS_OS_NAME == 'osx' ]]; then
|
||||
#make
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_BUILD_TYPE=debug -DENABLE_VPR_GRAPHICS=off
|
||||
make -j2
|
||||
else
|
||||
# For linux, we enable full package compilation
|
||||
#make
|
||||
mkdir build
|
||||
cd build
|
||||
cmake --version
|
||||
cmake .. -DCMAKE_BUILD_TYPE=debug -DENABLE_VPR_GRAPHICS=off
|
||||
else
|
||||
cmake .. -DCMAKE_BUILD_TYPE=debug
|
||||
make -j16
|
||||
fi
|
||||
make -j16
|
||||
end_section "OpenFPGA.build"
|
||||
|
||||
$SPACER
|
||||
|
||||
start_section "OpenFPGA.TaskTun" "${GREEN}..Running_Regression..${NC}"
|
||||
cd -
|
||||
./.travis/regression.sh
|
||||
echo -e "Testing single-mode architectures";
|
||||
python3 openfpga_flow/scripts/run_fpga_task.py single_mode --debug --show_thread_logs
|
||||
#python3 openfpga_flow/scripts/run_fpga_task.py s298
|
||||
|
||||
#cd fpga_flow
|
||||
#./regression_fpga_flow.sh
|
||||
#cd -
|
||||
echo -e "Testing multi-mode architectures";
|
||||
python3 openfpga_flow/scripts/run_fpga_task.py multi_mode --maxthreads 4 --debug --show_thread_logs
|
||||
|
||||
echo -e "Testing compact routing techniques";
|
||||
python3 openfpga_flow/scripts/run_fpga_task.py compact_routing --debug --show_thread_logs
|
||||
|
||||
echo -e "Testing tileable architectures";
|
||||
python3 openfpga_flow/scripts/run_fpga_task.py tileable_routing --debug --show_thread_logs
|
||||
|
||||
echo -e "Testing Verilog generation with explicit port mapping ";
|
||||
python3 openfpga_flow/scripts/run_fpga_task.py explicit_verilog --debug --show_thread_logs
|
||||
|
||||
end_section "OpenFPGA.TaskTun"
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
cmake_minimum_required(VERSION 2.8.12)
|
||||
|
||||
find_program(CCACHE_FOUND ccache)
|
||||
if(CCACHE_FOUND)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
||||
endif(CCACHE_FOUND)
|
||||
|
||||
if (${CMAKE_VERSION} VERSION_GREATER "3.8")
|
||||
#For cmake >= 3.9 INTERPROCEDURAL_OPTIMIZATION behaviour we need to explicitly
|
||||
#set the cmake policy version number
|
||||
|
@ -176,6 +182,13 @@ set_target_properties(libace ace
|
|||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ace2"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ace2")
|
||||
|
||||
# Set output locations to be in the main source tree under the relevant folder
|
||||
set_target_properties(libini
|
||||
PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/libs/external/libini"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/libs/external/libini"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/libs/external/libini")
|
||||
|
||||
# Set output locations to be in the main source tree under the relevant folder
|
||||
set_target_properties(libvtrutil
|
||||
PROPERTIES
|
||||
|
|
20
Dockerfile
20
Dockerfile
|
@ -1,16 +1,16 @@
|
|||
FROM ubuntu:16.04
|
||||
|
||||
RUN apt-get update -qq -y
|
||||
RUN apt-get -y install python3 python3-dev tcl tcl8.6-dev gawk libreadline-dev
|
||||
RUN apt-get update -qq -y
|
||||
RUN apt-get -y install python3 python3-dev tcl tcl8.6-dev gawk libreadline-dev
|
||||
|
||||
RUN apt-get -y install autoconf automake bison build-essential cmake ctags curl doxygen flex fontconfig g++-4.9 gcc-4.9 gdb git gtkwave gperf iverilog libffi-dev libcairo2-dev libevent-dev libfontconfig1-dev liblist-moreutils-perl libncurses5-dev libx11-dev libxft-dev libxml++2.6-dev perl texinfo time valgrind zip qt5-default
|
||||
|
||||
RUN echo "git clone https://github.com/LNIS-Projects/OpenFPGA.git" >> build.sh
|
||||
RUN echo "cd OpenFPGA" >> build.sh
|
||||
RUN echo "mkdir -p build && cd build" >> build.sh
|
||||
RUN echo "cmake .. -DCMAKE_BUILD_TYPE=debug" >> build.sh
|
||||
RUN echo "make" >> build.sh
|
||||
RUN chmod +x build.sh
|
||||
RUN ./build.sh
|
||||
RUN mkdir -p /release /dev
|
||||
|
||||
VOLUME /OpenFPGA
|
||||
RUN cd release && git clone --single-branch --branch master https://github.com/LNIS-Projects/OpenFPGA.git OpenFPGA
|
||||
|
||||
RUN cd /release/OpenFPGA && mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=debug -DCMAKE_NO_GRAPHICS=on && make -j
|
||||
|
||||
RUN rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /release/OpenFPGA
|
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
_build/
|
|
@ -3,11 +3,11 @@
|
|||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build-3.6
|
||||
SPHINXBUILD = sphinx-build
|
||||
SOURCEDIR = source
|
||||
BUILDDIR = build
|
||||
|
||||
PAPER =
|
||||
PAPER =
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALL_SPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCEDIR)
|
||||
|
@ -16,7 +16,10 @@ ALL_SPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SO
|
|||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
clean:
|
||||
livehtml:
|
||||
sphinx-autobuild -b html $(ALL_SPHINXOPTS) $(BUILDDIR)/html
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILDDIR)/*
|
||||
|
||||
.PHONY: help clean Makefile
|
||||
|
@ -27,4 +30,4 @@ clean:
|
|||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
#html:
|
||||
# $(SPHINXBUILD) -b html $@ "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS)
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Circuit model examples
|
||||
======================
|
||||
The next subsections are dedicated to detailed examples of each circuit model type. Through these examples awe give a global overview of the different implementations which are available for the user.
|
||||
The next subsections are dedicated to detailed examples of each circuit model type. Through these examples, we give a global overview of the different implementations which are available for the user.
|
||||
|
||||
Inverters and Buffers
|
||||
---------------------
|
||||
|
@ -13,15 +13,15 @@ Inverters and Buffers
|
|||
<port type="output" prefix="string" size="int"/>
|
||||
</circuit_model>
|
||||
|
||||
.. note:: customized SPICE netlists are not currently supported for inverters and buffers.
|
||||
.. note:: customized Verilog/SPICE netlists are not currently supported for inverters and buffers.
|
||||
|
||||
* design_technology:
|
||||
|
||||
* **topology:** [inverter|buffer]. Specify the type of this component, can be either an inverter or a buffer.
|
||||
* **topology:** [``inverter`` | ``buffer``]. Specify the type of this component, can be either an inverter or a buffer.
|
||||
|
||||
* **size:** Specify the driving strength of inverter/buffer. For a buffer, the size is the driving strength of the inverter at the second level. We consider a two-level structure for a buffer here. The support for multi-level structure of a buffer will be introduced in the tapered options.
|
||||
|
||||
* **tapered:** [on|off]. Define if the buffer is a tapered (multi-level) buffer. *If "on" the following parameter are required.*
|
||||
* **tapered:** [``on`` | ``off``]. Define if the buffer is a tapered (multi-level) buffer. When ``on`` is defined, the following parameter are required.*
|
||||
|
||||
* **tap_drive_level:** Define the number of levels of a tapered buffer. This parameter is valid only when tapered is turned on.
|
||||
|
||||
|
@ -54,6 +54,21 @@ This example shows:
|
|||
* Size of 1 for the output strength
|
||||
* The tapered parameter is not declared and is off by default
|
||||
|
||||
**Power-gated Inverter x1 example**
|
||||
|
||||
The XML code describing an inverter which can be power-gated by the control signals ``EN`` and ``ENB`` :
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<circuit_model type="inv_buf" name="INVTX1" prefix="INVTX1">
|
||||
<design_technology type="cmos" topology="inverter" size="3" tapered="off" power_gated="true"/>
|
||||
<port type="input" prefix="in" size="1" lib_name="I"/>
|
||||
<port type="input" prefix="EN" size="1" lib_name="EN" is_global="true" default_val="0" is_config_enable="true"/>
|
||||
<port type="input" prefix="ENB" size="1" lib_name="ENB" is_global="true" default_val="1" is_config_enable="true"/>
|
||||
<port type="output" prefix="out" size="1" lib_name="Z"/>
|
||||
</circuit_model>
|
||||
|
||||
.. note:: For power-gated inverters: all the control signals must be set as ``config_enable`` so that the testbench generation will generate testing waveforms. If the power-gated inverters are auto-generated , all the ``config_enable`` signals must be ``global`` signals as well. If the pwoer-gated inverters come from user-defined netlists, restrictions on ``global`` signals are free.
|
||||
|
||||
**Buffer x2 example**
|
||||
|
||||
|
@ -128,11 +143,11 @@ Pass-gate Logic
|
|||
<port type="output" prefix="string" size="int"/>
|
||||
</circuit_model>
|
||||
|
||||
.. note:: customized SPICE netlists are not currently supported for pass-gate logics.
|
||||
.. note:: customized Verilog/SPICE netlists are not currently supported for pass-gate logics.
|
||||
|
||||
* design_technology:
|
||||
|
||||
* **topology:** [transmission_gate|pass_transistor]. The transmission gate consists of a NMOS transistor and a PMOS transistor. The pass transistor consists of a NMOS transistor.
|
||||
* **topology:** [``transmission_gate`` | ``pass_transistor``]. The transmission gate consists of a NMOS transistor and a PMOS transistor. The pass transistor consists of a NMOS transistor.
|
||||
|
||||
* **nmos_size:** the size of NMOS transistor in a transmission gate or pass_transistor, expressed in terms of the min_width defined in XML node <transistors>.
|
||||
|
||||
|
@ -163,7 +178,7 @@ The XML code describing this pass-gate is:
|
|||
</circuit_model>
|
||||
|
||||
This example shows:
|
||||
* Topology is **transmission_gate**, which means the component need entries for each transistor gate (pmos and nmos)
|
||||
* Topology is ``transmission_gate``, which means the component need entries for each transistor gate (pmos and nmos)
|
||||
* 3 inputs considered, 1 for signal and 2 to control the transistors gates
|
||||
* No input or output buffer used, these parameters can be uninitialized
|
||||
|
||||
|
@ -191,7 +206,7 @@ The XML code describing this pass-gate is:
|
|||
</circuit_model>
|
||||
|
||||
This example shows:
|
||||
* Topology is **pass_transistor**, which means the component need an entry for the transistor gate (nmos)
|
||||
* Topology is ``pass_transistor``, which means the component need an entry for the transistor gate (nmos)
|
||||
* 2 inputs considered, 1 for signal and 1 to control the transistor gate
|
||||
* No input or output buffer used, these parameters can be uninitialized
|
||||
|
||||
|
@ -209,9 +224,9 @@ SRAMs
|
|||
<port type="output" prefix="string" size="int"/>
|
||||
</circuit_model>
|
||||
|
||||
.. note:: The circuit designs of SRAMs are highly dependent on the technology node and well optimized by engineers. Therefore, FPGA-SPICE requires users to provide their customized SRAM SPICE/Verilog netlists. A sample SPICE netlist of SRAM can be found in the directory SpiceNetlists in the released package. FPGA-SPICE assumes that all the LUTs and MUXes employ the SRAM circuit design. Therefore, currently only one SRAM type is allowed to be defined.
|
||||
.. note:: The circuit designs of SRAMs are highly dependent on the technology node and well optimized by engineers. Therefore, FPGA-Verilog/SPICE requires users to provide their customized SRAM Verilog/SPICE/Verilog netlists. A sample Verilog/SPICE netlist of SRAM can be found in the directory SpiceNetlists in the released package. FPGA-Verilog/SPICE assumes that all the LUTs and MUXes employ the SRAM circuit design. Therefore, currently only one SRAM type is allowed to be defined.
|
||||
|
||||
.. note:: The information of input and output buffer should be clearly specified according to the customized SPICE netlist! The existence of input/output buffers will influence the decision in creating testbenches, which may leads to larger errors in power analysis.
|
||||
.. note:: The information of input and output buffer should be clearly specified according to the customized Verilog/SPICE netlist! The existence of input/output buffers will influence the decision in creating testbenches, which may leads to larger errors in power analysis.
|
||||
|
||||
.. note:: The support SRAM modules should have a BL and a WL when the memory-bank-style configuration circuit is declared. Note that the WL should be the write/read enable signal, while BL is the data input.
|
||||
|
||||
|
@ -230,9 +245,9 @@ Logic gates
|
|||
|
||||
.. note:: The circuit model in the type of gate aims to support direct mapping to standard cells or customized cells provided by technology vendors or users.
|
||||
|
||||
.. note:: The logic functionality of a gate can be defined through the XML keyword topology. Currently, OpenFPGA supports AND, OR and MUX2 gates. As for standard cells, the size of each port is limited to 1. Currently, only 2-input and single-output logic gates are supported.
|
||||
.. note:: The logic functionality of a gate can be defined through the XML keyword ``topology``. Currently, OpenFPGA supports AND, OR and MUX2 gates. As for standard cells, the size of each port is limited to 1. Currently, only 2-input and single-output logic gates are supported.
|
||||
|
||||
.. note:: It may happen that the port sequence in generated Verilog netlists has conflicts with the port sequence in standard and customized cells. To avoid this, users can set the XML keyword dump_explicit_port_map to be true, which enables explicit port mapping are dumped. Users can specify the pin/port name in the standard cell library using the XML keyword lib_name.
|
||||
.. note:: It may happen that the port sequence in generated Verilog netlists has conflicts with the port sequence in standard and customized cells. To avoid this, users can set the XML keyword ``dump_explicit_port_map`` to be true, which enables explicit port mapping are dumped. Users can specify the pin/port name in the standard cell library using the XML keyword ``lib_name``.
|
||||
|
||||
Multiplexers
|
||||
------------
|
||||
|
@ -240,8 +255,7 @@ Multiplexers
|
|||
.. code-block:: xml
|
||||
|
||||
<circuit_model type="mux" name="string" prefix="string" is_default="int">
|
||||
<design_technology type="string" structure="string" num_level="int" ron="float" roff="float"
|
||||
prog_transistor_size="float"/>
|
||||
<design_technology type="string" structure="string" num_level="int" add_const_input="string" const_input_val="int" local_encoder="string" ron="float" roff="float" prog_transistor_size="float"/>
|
||||
<input_buffer exist="string" circuit_model_name="string"/>
|
||||
<output_buffer exist="string" circuit_model_name="string"/>
|
||||
<pass_gate_logic type="string" circuit_model_name="string"/>
|
||||
|
@ -250,24 +264,31 @@ Multiplexers
|
|||
<port type="sram" prefix="string" size="int"/>
|
||||
</circuit_model>
|
||||
|
||||
.. note:: customized SPICE netlists are not currently supported for multiplexers.
|
||||
.. note:: customized Verilog/SPICE netlists are not currently supported for multiplexers.
|
||||
|
||||
* design_technology:
|
||||
|
||||
* **structure:** can be [tree|multi-level|one-level]. The structure options are valid for SRAM-based multiplexers. For RRAM-based multiplexers, currently we only support the circuit design in [5]. If *multi-level* the following parameter is required:
|
||||
* **structure:** can be [``tree`` \| ``multi-level`` \| ``one-level``]. The structure options are valid for SRAM-based multiplexers. For RRAM-based multiplexers, currently we only support the circuit design in [5]. If ``multi-level`` the following parameter is required:
|
||||
|
||||
* **num_level:** specify the number of levels when multi-level structure is selected, only.
|
||||
|
||||
* **add_const_input:** can be [``true`` \| ``false``]. When enabled, an extra input will be added to the multiplexer circuits defined in this ``circuit_model``. For example, an 4-input multiplexer will be turned to a 5-input multiplexer. The extra input will be wired to a constant value, which can be specified through the XML syntax ``const_input_val``. The constant value can be either 0 or 1 (By default it is 0). Note that adding such input will help reducing the leakage power of FPGA and parasitic signal activities, with a limited area overhead.
|
||||
|
||||
* **const_input_val:** specify the constant value, to which the extra input will be connected. This syntax is only valid when the ``add_const_input`` is set to true.
|
||||
|
||||
* **local_encoder:** can be [``true`` \| ``false``]. When enabled, an local encoder will be added to the multiplexer circuits defined in this ``circuit_model``. The local encoder will be interface the SRAM inputs of multiplexing structure and SRAMs. It can encode the one-hot codes (that drive the select port of multiplexing structure) to a binary code. For example, 8-bit ``00000001`` will be encoded to 3-bit ``000``. This will help reduce the number of SRAM cells used in FPGAs as well as configuration time (especially for scan-chain configuration protocols). But it may cost an area overhead.
|
||||
|
||||
* **prog_transistor_size:** valid only when the type of design technology is rram. Specify the size of programming transistors used in the RRAM-based multiplexer, we use only n-type transistor and the size should be expressed in terms of the min_width defined in XML node <transistors>.
|
||||
.. note:: Local encoders are only applicable for one-level and multi-level multiplexers. Tree-like multiplexers are already encoded in their nature.
|
||||
|
||||
* If type of design technology is **rram**, then the following parameters are required:
|
||||
* **prog_transistor_size:** valid only when the type of design technology is ``rram``. Specify the size of programming transistors used in the RRAM-based multiplexer, we use only n-type transistor and the size should be expressed in terms of the min_width defined in XML node ``transistors``. If type of design technology is ``rram``, then the following parameters are required:
|
||||
|
||||
* **ron:** valid only when the type of design technology is rram. Specify the on-resistance of the RRAM device used in the RRAM-based multiplexer.
|
||||
|
||||
* **roff:** valid only when the type of design technology is rram. Specify the off-resistance of the RRAM device used in the RRAM-based multiplexer.
|
||||
|
||||
* port: for a multiplexer, the three types of ports, input, output and sram should be defined.
|
||||
* port: for a multiplexer, the three types of ports, ``input``, ``output`` and ``sram`` should be defined.
|
||||
|
||||
.. note:: For tree-like multiplexers, they can be built with standard cell MUX2. To enable this, users should define a ``circuit_model``, which describes a 2-input multiplexer (See details and examples in how to define a logic gate using ``circuit_model``. In this case, the ``circuit_model_name`` in the ``pass_gate_logic`` should be the name of MUX2 ``circuit_model``.
|
||||
|
||||
**Mux 1 level example**
|
||||
|
||||
|
@ -329,7 +350,7 @@ If we arbitrarily fix the number of Mux entries at 4, the following code could i
|
|||
**This example shows:**
|
||||
* The tree topology, 4 entries split in 2 2-to-1 Muxes then another one make the final selection.
|
||||
* The possibility to select the input or output buffers
|
||||
* The number of entries parametrized by *size* in input port-type.
|
||||
* The number of entries parametrized by ``size`` in input port-type.
|
||||
|
||||
Look-Up Tables
|
||||
--------------
|
||||
|
@ -349,9 +370,9 @@ Look-Up Tables
|
|||
<port type="sram" prefix="string" size="int" mode_select="true|false" circuit_model_name="string" default_val="0|1"/>
|
||||
</circuit_model>
|
||||
|
||||
.. note:: The SPICE netlists of LUT can be auto-generated or customized.
|
||||
.. note:: The Verilog/SPICE netlists of LUT can be auto-generated or customized.
|
||||
The auto-generated LUTs are based on a tree-like multiplexer, whose gates of the transistors are used as the inputs of LUTs and the drains/sources of the transistors are used for configurable memories (SRAMs).
|
||||
The LUT provided in customized SPICE netlist should have the same decoding methodology as the traditional LUT.
|
||||
The LUT provided in customized Verilog/SPICE netlist should have the same decoding methodology as the traditional LUT.
|
||||
|
||||
Additional design parameters for LUTs:
|
||||
|
||||
|
@ -369,9 +390,9 @@ Instructions of defining design parameters:
|
|||
|
||||
* **pass_gate_logic:** Specify the pass-gates of the internal multiplexer, the same as the multiplexers.
|
||||
|
||||
* **port:** three types of ports (input, output and sram) should be defined. If the user provides an customized SPICE netlist, the bandwidth of ports should be defined to the same as the SPICE netlist. To support customizable LUTs, each type of port contain special keywords. For input ports, the keyword tri_state_map aims to customize which inputs are fixed to constant values when the LUT is in fracturable modes. For example, tri_state_map="----11" indicates that the last two inputs will be fixed to be logic '1' when a 6-input LUT is in fracturable modes. The circuit_model_name of input port is used to specify which logic gates will be used to tri-state the inputs in fracturable LUT modes. It is required to use an AND gate to force logic '0' or an OR gate to force logic '1' for the input ports. For output ports, the keyword lut_frac_level is used to specify the level in LUT multiplexer tree where the output port are wired to. For example, lut_frac_level="4" in a fracturable LUT6 means that the output are potentially wired to the 4th stage of a LUT multiplexer and it is an output of a LUT4. The keyword lut_output_mask describes which fracturable outputs are used. For instance, in a 6-LUT, there are potentially four LUT4 outputs can be wired out. lut_output_mask="0,2" indicates that only the first and the thrid LUT4 outputs will be used in fracturable mode. Note that the size of the output port should be consistent to the length of lut_output_mask.
|
||||
* **port:** three types of ports (input, output and sram) should be defined. If the user provides an customized Verilog/SPICE netlist, the bandwidth of ports should be defined to the same as the Verilog/SPICE netlist. To support customizable LUTs, each type of port contain special keywords. For input ports, the keyword tri_state_map aims to customize which inputs are fixed to constant values when the LUT is in fracturable modes. For example, ``tri_state_map`` ="----11" indicates that the last two inputs will be fixed to be logic '1' when a 6-input LUT is in fracturable modes. The circuit_model_name of input port is used to specify which logic gates will be used to tri-state the inputs in fracturable LUT modes. It is required to use an AND gate to force logic '0' or an OR gate to force logic '1' for the input ports. For output ports, the keyword lut_frac_level is used to specify the level in LUT multiplexer tree where the output port are wired to. For example, lut_frac_level="4" in a fracturable LUT6 means that the output are potentially wired to the 4th stage of a LUT multiplexer and it is an output of a LUT4. The keyword lut_output_mask describes which fracturable outputs are used. For instance, in a 6-LUT, there are potentially four LUT4 outputs can be wired out. lut_output_mask="0,2" indicates that only the first and the thrid LUT4 outputs will be used in fracturable mode. Note that the size of the output port should be consistent to the length of lut_output_mask.
|
||||
|
||||
* **SRAM port for mode selection:** To enable switch between different operating modes, the SRAM bits of a fracturable LUT consists of two parts: configuration memory and mode selecting. The SRAM port for mode selection is specified through the XML keyword mode_select. Note that the size of such SRAM port should be consistent to the number of 1s or 0s in the tri_state_map.
|
||||
* **SRAM port for mode selection:** To enable switch between different operating modes, the SRAM bits of a fracturable LUT consists of two parts: configuration memory and mode selecting. The SRAM port for mode selection is specified through the XML keyword mode_select. Note that the size of such SRAM port should be consistent to the number of 1s or 0s in the ``tri_state_map``.
|
||||
|
||||
**LUT example**
|
||||
|
||||
|
@ -400,7 +421,7 @@ The code describing this LUT is:
|
|||
</circuit_model>
|
||||
|
||||
**This example shows:**
|
||||
* The difference between *input_buffer* and *lut_input_buffer* and that they are independent.
|
||||
* The difference between ``input_buffer`` and ``lut_input_buffer`` and that they are independent.
|
||||
* How each blocks is defined
|
||||
|
||||
Flip-Flops
|
||||
|
@ -417,17 +438,19 @@ Flip-Flops
|
|||
<port type="clock" prefix="string" size="int"/>
|
||||
</circuit_model>
|
||||
|
||||
.. note:: The circuit designs of flip-flops are highly dependent on the technology node and well optimized by engineers. Therefore, FPGA-SPICE requires users to provide their customized FF SPICE/Verilog netlists. A sample SPICE netlist of FF can be found in the directory SpiceNetlists in the released package.
|
||||
.. note:: The circuit designs of flip-flops are highly dependent on the technology node and well optimized by engineers. Therefore, FPGA-Verilog/SPICE requires users to provide their customized FF Verilog/SPICE/Verilog netlists. A sample Verilog/SPICE netlist of FF can be found in the directory SpiceNetlists in the released package.
|
||||
|
||||
The information of input and output buffer should be clearly specified according to the customized SPICE netlist! The existence of input/output buffers will influence the decision in creating testbenches, which may leads to larger errors in power analysis.
|
||||
The information of input and output buffer should be clearly specified according to the customized Verilog/SPICE netlist! The existence of input/output buffers will influence the decision in creating testbenches, which may leads to larger errors in power analysis.
|
||||
|
||||
FPGA-SPICE currently support only one clock domain in the FPGA. Therefore there should be only one clock port to be defined and the size of the clock port should be 1.
|
||||
FPGA-Verilog/SPICE currently support only one clock domain in the FPGA. Therefore there should be only one clock port to be defined and the size of the clock port should be 1.
|
||||
|
||||
Instructions of defining design parameters:
|
||||
|
||||
* **circuit_model type:** can be ff or scff. FF is typical Flip-Flop, SCFF is Scan-Chain Flip-Flop
|
||||
* **circuit_model type:** can be ``ff`` or ``scff``. FF is typical Flip-Flop, SCFF is Scan-Chain Flip-Flop
|
||||
|
||||
* **port:** three types of ports (input, output and clock) should be defined. If the user provides a customized SPICE netlist, the bandwidth of ports should be defined to the same as the SPICE netlist.
|
||||
* **port:** three types of ports (``input``, ``output`` and ``clock``) should be defined. If the user provides a customized Verilog/SPICE netlist, the bandwidth of ports should be defined to the same as the Verilog/SPICE netlist.
|
||||
|
||||
.. note:: In a valid FPGA architecture, users should provide at least either a SCFF or a SRAM, so that the configurations can loaded to core logic.
|
||||
|
||||
**FF example**
|
||||
|
||||
|
@ -454,9 +477,9 @@ The code describing this FF is:
|
|||
</circuit_model>
|
||||
|
||||
**This example shows:**
|
||||
* Circuit model type as ff
|
||||
* The verilog netlist file associated to this component *ff.v*
|
||||
* 3 ports, *Set*, *Reset* and *clk*, defined as global
|
||||
* Circuit model type as ``ff``
|
||||
* The verilog netlist file associated to this component ``ff.v``
|
||||
* 3 ports, ``Set``, ``Reset`` and ``clk``, defined as global
|
||||
|
||||
**SCFF example**
|
||||
|
||||
|
@ -481,9 +504,9 @@ The code describing this FF is:
|
|||
</circuit_model>
|
||||
|
||||
**This example shows:**
|
||||
* Circuit model type as scff
|
||||
* The verilog netlist file associated to this component *scff.v*
|
||||
* 1 port, *clk*, defined as global
|
||||
* Circuit model type as ``scff``
|
||||
* The verilog netlist file associated to this component ``scff.v``
|
||||
* 1 port, ``clk``, defined as global
|
||||
|
||||
Hard Logics
|
||||
-----------
|
||||
|
@ -501,21 +524,21 @@ Hard Logics
|
|||
.. note:: Hard logics are defined for non-configurable resources in FPGA architectures, such as adders, multipliers and RAM blocks.
|
||||
Their circuit designs are highly dependent on the technology node and well optimized by engineers.
|
||||
As more functional units are included in FPGA architecture, it is impossible to auto-generate these functional units [3].
|
||||
Therefore, FPGA-SPICE requires users to provide their customized SPICE netlists. A sample SPICE netlist of a 1-bit adder can be found in the directory SpiceNetlists in the released package.
|
||||
Therefore, FPGA-Verilog/SPICE requires users to provide their customized Verilog/SPICE netlists. A sample Verilog/SPICE netlist of a 1-bit adder can be found in the directory SpiceNetlists in the released package.
|
||||
|
||||
The information of input and output buffer should be clearly specified according to the customized SPICE netlist! The existence of input/output buffers will influence the decision in creating testbenches, which may leads to larger errors in power analysis.
|
||||
The information of input and output buffer should be clearly specified according to the customized Verilog/SPICE netlist! The existence of input/output buffers will influence the decision in creating testbenches, which may leads to larger errors in power analysis.
|
||||
|
||||
Instructions of defining design parameters:
|
||||
|
||||
* **port:** two types of ports (input and output) should be defined. If the user provides a user-defined SPICE netlist, the bandwidth of ports should be defined to the same as the SPICE netlist.
|
||||
* **port:** two types of ports (``input`` and ``output``) should be defined. If the user provides a user-defined Verilog/SPICE netlist, the bandwidth of ports should be defined to the same as the Verilog/SPICE netlist.
|
||||
|
||||
Routing Wire Segments
|
||||
---------------------
|
||||
|
||||
FPGA-SPICE provides two types of SPICE models for the wire segments in FPGA architecture:
|
||||
FPGA-Verilog/SPICE provides two types of Verilog/SPICE models for the wire segments in FPGA architecture:
|
||||
|
||||
* One type is called **wire**, which targets the local wires inside the logic blocks. The wire has one input and one output, directly connecting the output of a driver and the input of the downstream unit, respectively
|
||||
* The other type is called **chan_wire**, especially targeting the channel wires. The channel wires have one input and two outputs, one of which is connected to the inputs of Connection Boxes while the other is connected to the inputs of Switch Boxes. Two outputs are created because from the view of layout, the inputs of Connection Boxes are typically connected to the middle point of channel wires, which has less parasitic resistances and capacitances than connected to the ending point.
|
||||
* One type is called ``wire``, which targets the local wires inside the logic blocks. The wire has one input and one output, directly connecting the output of a driver and the input of the downstream unit, respectively
|
||||
* The other type is called ``chan_wire``, especially targeting the channel wires. The channel wires have one input and two outputs, one of which is connected to the inputs of Connection Boxes while the other is connected to the inputs of Switch Boxes. Two outputs are created because from the view of layout, the inputs of Connection Boxes are typically connected to the middle point of channel wires, which has less parasitic resistances and capacitances than connected to the ending point.
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
|
@ -528,19 +551,19 @@ FPGA-SPICE provides two types of SPICE models for the wire segments in FPGA arch
|
|||
<wire_param model_type="string" res_val="float" cap_val="float" level="int"/>
|
||||
</circuit_model>
|
||||
|
||||
.. note:: FPGA-SPICE can auto-generate the SPICE model for wires while also allows users to provide their customized SPICE netlists.
|
||||
.. note:: FPGA-Verilog/SPICE can auto-generate the Verilog/SPICE model for wires while also allows users to provide their customized Verilog/SPICE netlists.
|
||||
|
||||
The information of input and output buffer should be clearly specified according to the customized netlist! The existence of input/output buffers will influence the decision in creating testbenches, which may leads to larger errors in power analysis.
|
||||
|
||||
Instructions of defining design parameters:
|
||||
|
||||
* **type:** can be [wire|chan_wire]. The SPICE model wire targets the local wire inside the logic block while the chan_wire targets the channel wires in global routing.
|
||||
* **type:** can be [``wire`` | ``chan_wire``]. The Verilog/SPICE model wire targets the local wire inside the logic block while the chan_wire targets the channel wires in global routing.
|
||||
|
||||
* **port:** two types of ports (input and output) should be defined. If the user provides an customized SPICE netlist, the bandwidth of ports should be defined to the same as the SPICE netlist.
|
||||
* **port:** two types of ports (``input`` and ``output``) should be defined. If the user provides an customized Verilog/SPICE netlist, the bandwidth of ports should be defined to the same as the Verilog/SPICE netlist.
|
||||
|
||||
* **wire_param:**
|
||||
|
||||
* **model_type:** can be [pi|T], corresponding to the π-type and T-type RC wire models.
|
||||
* **model_type:** can be [``pi`` | ``T``], corresponding to the π-type and T-type RC wire models.
|
||||
* **res_val:** specify the total resistance of the wire
|
||||
* **cap_val:** specify the total capacitance of the wire.
|
||||
* **level:** specify the number of levels of the RC wire model.
|
||||
|
@ -569,8 +592,8 @@ The code describing this wire is:
|
|||
</circuit_model>
|
||||
|
||||
**This example shows**
|
||||
* How to use the *wire_param* for a π-type RC wire model
|
||||
* How to use this circuit_model to auto-generate the SPICE netlist
|
||||
* How to use the ``wire_param`` for a π-type RC wire model
|
||||
* How to use this circuit_model to auto-generate the Verilog/SPICE netlist
|
||||
|
||||
I/O pads
|
||||
--------
|
||||
|
@ -588,13 +611,13 @@ I/O pads
|
|||
</circuit_model>
|
||||
|
||||
.. note:: The circuit designs of I/O pads are highly dependent on the technology node and well optimized by engineers.
|
||||
Therefore, FPGA-SPICE requires users to provide their customized SPICE/Verilog netlists. A sample SPICE netlist of an I/O pad can be found in the directory SpiceNetlists in the released package.
|
||||
Therefore, FPGA-Verilog/SPICE requires users to provide their customized Verilog/SPICE/Verilog netlists. A sample Verilog/SPICE netlist of an I/O pad can be found in the directory SpiceNetlists in the released package.
|
||||
|
||||
The information of input and output buffer should be clearly specified according to the customized netlist! The existence of input/output buffers will influence the decision in creating testbenches, which may leads to larger errors in power analysis.
|
||||
|
||||
Instructions of defining design parameters:
|
||||
|
||||
* **port:** two types of ports (input and output) should be defined. If the user provides a user-defined SPICE netlist, the bandwidth of ports should be defined to the same as the SPICE netlist.
|
||||
* **port:** four types of ports (``input``, ``output``, ``inout`` and ``sram``) should be defined. If the user provides a user-defined Verilog/SPICE netlist, the bandwidth of ports should be defined to the same as the Verilog/SPICE netlist.
|
||||
|
||||
**IO-pad example**
|
||||
|
||||
|
@ -622,6 +645,6 @@ The code describing this IO-Pad is:
|
|||
|
||||
**This example shows**
|
||||
|
||||
* The association of the verilog netlist file *io.v*
|
||||
* The association of the verilog netlist file ``io.v``
|
||||
* The inout pad port_type, which means as inout as output.
|
||||
* The instantiation of a SCFF as sram
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
Define Circuit-level Modules
|
||||
============================
|
||||
|
||||
To support FPGA SPICE, Verily and Bitstream Generator, physical modules containing gate-level and transistor-level features are required for FPGA primitive blocks.
|
||||
To support FPGA Verilog/SPICE, Verily and Bitstream Generator, physical modules containing gate-level and transistor-level features are required for FPGA primitive blocks.
|
||||
The physical modules are defined in XML syntax, similar to the original VPR FPGA architecture description language.
|
||||
|
||||
For each module that appears in the FPGA architecture, a circuit model should be defined. In the definition of a circuit model, the user can specify if the SPICE netlist of the module is either auto-generated or user-defined.
|
||||
For each module that appears in the FPGA architecture, a circuit model should be defined. In the definition of a circuit model, the user can specify if the Verilog/SPICE netlist of the module is either auto-generated or user-defined.
|
||||
|
||||
Define circuit_models
|
||||
---------------------
|
||||
|
@ -13,34 +13,34 @@ Define circuit_models
|
|||
|
||||
<module_circuit_models>
|
||||
<circuit_model type="string" name="string" prefix="string" is_default="int"
|
||||
spice_netlist="string" verilog_netlist="string" dump_structural_verilog="string">
|
||||
circuit_netlist="string" verilog_netlist="string" dump_structural_verilog="string">
|
||||
<transistor-level circuit_design_features="developped_further" />
|
||||
</circuit_model>
|
||||
</module_circuit_models>
|
||||
|
||||
* **module_circuit_models**: the father node for all the spice models. All the spice models should be defined under this XML node.
|
||||
* **module_circuit_models**: the father node for all the circuit models. All the circuit models should be defined under this XML node.
|
||||
|
||||
* **circuit_model**: the child node defining transistor-level modeling parameters.
|
||||
|
||||
* **type**: can be [ inv_buf | pass_gate | mux | wire | chan_wire | sram | lut | ff | scff | hard_logic | iopad ]. Specify the type of circuit model. The provided types cover all the modules in FPGAs. For the circuit models in the type of mux/wire/chan_wire/lut, FPGA-SPICE can auto-generate SPICE netlists. For the rest, FPGA-SPICE requires a user-defined SPICE netlist.
|
||||
* **type**: can be [ ``inv_buf`` | ``pass_gate`` | ``gate`` | ``mux`` | ``wire`` | ``chan_wire`` | ``sram`` | ``lut`` | ``ff`` | ``scff`` | ``hard_logic`` | ``iopad`` ]. Specify the type of circuit model. The provided types cover all the modules in FPGAs. For the circuit models in the type of mux/wire/chan_wire/lut, FPGA-Verilog/SPICE can auto-generate Verilog/SPICE netlists. For the rest, FPGA-Verilog/SPICE requires a user-defined Verilog/SPICE netlist.
|
||||
|
||||
* **name**: define the name of this circuit model. The name should be unique and will be used to create the sub-circuit of the circuit model in SPICE netlists. Note that for a customized SPICE netlist, the name defined here should be the name of the top-level sub-circuit in the customized SPICE netlist. FPGA-SPICE will check if the given name is conflicted with any reserved words.
|
||||
* **name**: define the name of this circuit model. The name should be unique and will be used to create the sub-circuit of the circuit model in Verilog/SPICE netlists. Note that for a customized Verilog/SPICE netlist, the name defined here should be the name of the top-level sub-circuit in the customized Verilog/SPICE netlist. FPGA-Verilog/SPICE will check if the given name is conflicted with any reserved words.
|
||||
|
||||
* **prefix**: specify the name of the circuit_model to shown in the auto-generated SPICE netlists. The prefix can be the same as the name defined above. And again, the prefix should be unique.
|
||||
* **prefix**: specify the name of the circuit_model to shown in the auto-generated Verilog/SPICE netlists. The prefix can be the same as the name defined above. And again, the prefix should be unique.
|
||||
|
||||
* **is_default**: can be [1|0], corresponding to [true|false] respectively. Specify this circuit model is the default one for some modules, such as multiplexers. If a module is not linked to any spice model by users, FPGA-SPICE will find the default spice model defined in the same type and link. For a spice model type, only one spice model can be set as default.
|
||||
* **is_default**: can be [``1`` | ``0``], corresponding to [``true`` | ``false``] respectively. Specify this circuit model is the default one for some modules, such as multiplexers. If a module is not linked to any circuit model by users, FPGA-Verilog/SPICE will find the default circuit model defined in the same type and link. For a circuit model type, only one circuit model can be set as default.
|
||||
|
||||
* **spice_netlist**: specify the path and file name of a customized SPICE netlist. For some modules such as SRAMs, FFs, inpads, and outpads, FPGA-SPICE does not support auto-generation of the transistor-level sub-circuits because their circuit design is highly dependent on the technology nodes. These circuit designs should be specified by users. For the other modules that can be auto-generated by FPGA-SPICE, the user can also define a custom netlist. Multiplexers cannot be user-defined.
|
||||
* **circuit_netlist**: specify the path and file name of a customized Verilog/SPICE netlist. For some modules such as SRAMs, FFs, inpads, and outpads, FPGA-Verilog/SPICE does not support auto-generation of the transistor-level sub-circuits because their circuit design is highly dependent on the technology nodes. These circuit designs should be specified by users. For the other modules that can be auto-generated by FPGA-Verilog/SPICE, the user can also define a custom netlist. Multiplexers cannot be user-defined.
|
||||
|
||||
* **verilog_netlist**: specify the path and file name of a customized Verilog netlist. For some modules such as SRAMs, FFs, inpad and outpads, FPGA-SPICE does not support auto-generation of the transistor-level sub-circuits because their circuit design is highly dependent on the technology nodes. These circuit designs should be specified by users. For the other modules that can be auto-generated by FPGA-SPICE, the user can also define a custom netlist. Multiplexers cannot be user-defined.
|
||||
* **verilog_netlist**: specify the path and file name of a customized Verilog netlist. For some modules such as SRAMs, FFs, inpad and outpads, FPGA-Verilog/SPICE does not support auto-generation of the transistor-level sub-circuits because their circuit design is highly dependent on the technology nodes. These circuit designs should be specified by users. For the other modules that can be auto-generated by FPGA-Verilog/SPICE, the user can also define a custom netlist. Multiplexers cannot be user-defined.
|
||||
|
||||
* **dump_structural_verilog**: when the value of this keyword is set to be true, Verilog generator will output gate-level netlists of this module, instead of behavior-level. Gate-level netlists bring more opportunities in layout-level optimization while behavior-level is more suitable for high-speed formal verification and easier in debugging with HDL simulators.
|
||||
|
||||
.. note:: If netlist is not specified, FPGA-SPICE auto-generates the SPICE netlists for multiplexers, wires, and LUTs.
|
||||
.. note:: If netlist is not specified, FPGA-Verilog/SPICE auto-generates the Verilog/SPICE netlists for multiplexers, wires, and LUTs.
|
||||
|
||||
.. note:: The user-defined netlists, such as LUTs, the decoding methodology should comply with the auto-generated LUTs (See Section 4.5)
|
||||
|
||||
.. note:: Under the XML node circuit_model, the features of transistor-level designs can be defined. In the following table, we show the common features supported for all the modules. Then, we will introduce unique features supported only for some spice models types.
|
||||
.. note:: Under the XML node circuit_model, the features of transistor-level designs can be defined. In the following table, we show the common features supported for all the modules. Then, we will introduce unique features supported only for some circuit models types.
|
||||
|
||||
|
||||
Transistor level
|
||||
|
@ -67,19 +67,19 @@ Transistor level
|
|||
|
||||
* input_buffer and output_buffer:
|
||||
|
||||
* **exist:** [on|off]. Define the existence of the input_buffer or output_buffer. Note that the existence is valid for all the inputs and outputs. Note that if users want only part of the inputs (or outputs) to be buffered, this is not supported here. A solution can be building a user-defined SPICE netlist.
|
||||
* **exist:** [on|off]. Define the existence of the input_buffer or output_buffer. Note that the existence is valid for all the inputs and outputs. Note that if users want only part of the inputs (or outputs) to be buffered, this is not supported here. A solution can be building a user-defined Verilog/SPICE netlist.
|
||||
|
||||
* **circuit_model_name:** Specify the name of circuit model which is used to implement input/output buffer, the type of specified circuit model should be inv_buf.
|
||||
|
||||
* pass_gate_logic: defined the parameters in pass-gates, which are used in building multiplexers and LUTs.
|
||||
|
||||
* **circuit_model_name:** Specify the name of the circuit model which is used to implement transmission gate, the type of specified spice model should be pass_gate.
|
||||
* **circuit_model_name:** Specify the name of the circuit model which is used to implement transmission gate, the type of specified circuit model should be pass_gate.
|
||||
|
||||
* port: define the port list of a circuit model.
|
||||
|
||||
* **type:** can be [input|output|sram|clock]. For programmable modules, such as multiplexers and LUTs, SRAM ports should be defined. For registers, such as FFs and memory banks, clock ports should be defined.
|
||||
|
||||
* **prefix:** the name of the port. Each port will be shown as <prefix>[i], 0≤i<size in SPICE netlists.
|
||||
* **prefix:** the name of the port. Each port will be shown as ``<prefix>[i]`` in Verilog/SPICE netlists.
|
||||
|
||||
* **size:** bandwidth of the port.
|
||||
|
||||
|
@ -87,12 +87,14 @@ Transistor level
|
|||
|
||||
* **circuit_model_name:** only valid when the type of port is sram. Specify the name of the circuit model which is connected to this port.
|
||||
|
||||
* **mode_select:** can be either true or false. Specify if this port controls the mode switching in a configurable logic block. Only valid when the type of this port is sram. (A configurable logic block can operate in different modes, which is controlled by SRAM bits.)
|
||||
* **mode_select:** can be either ``true`` or ``false``. Specify if this port controls the mode switching in a configurable logic block. Only valid when the type of this port is sram. (A configurable logic block can operate in different modes, which is controlled by SRAM bits.)
|
||||
|
||||
* **is_global:** can be either true or false. Specify if this port is a global port, which will be routed globally. Note that when multiple global ports are defined with the same name, these global ports will be short-wired together.
|
||||
* **is_global:** can be either ``true`` or ``false``. Specify if this port is a global port, which will be routed globally. Note that when multiple global ports are defined with the same name, these global ports will be short-wired together.
|
||||
|
||||
* **is_set:** can be either true or false. Specify if this port controls a set signal. Only valid when is_global is true. All the set ports are connected to global set voltage stimuli in testbenches.
|
||||
* **is_set:** can be either ``true`` or ``false``. Specify if this port controls a set signal. Only valid when ``is_global`` is true. All the set ports are connected to global set voltage stimuli in testbenches.
|
||||
|
||||
* **is_reset:** can be either true or false. Specify if this port controls a reset signal. Only valid when is_global is true. All the reset ports are connected to a global reset voltage stimuli in testbenches.
|
||||
* **is_reset:** can be either ``true`` or ``false``. Specify if this port controls a reset signal. Only valid when ``is_global`` is true. All the reset ports are connected to a global reset voltage stimuli in testbenches.
|
||||
|
||||
* **is_config_enable:** can be either true or false. Only valid when is_global is true. Specify if this port controls a configuration-enable signal. This port is only enabled during FPGA configuration, and always disabled during FPGA operation. All the config_enable ports are connected to global configuration-enable voltage stimuli in testbenches.
|
||||
* **is_config_enable:** can be either ``true`` or ``false``. Only valid when ``is_global`` is true. Specify if this port controls a configuration-enable signal. This port is only enabled during FPGA configuration, and always disabled during FPGA operation. All the ``config_enable`` ports are connected to global configuration-enable voltage stimuli in testbenches.
|
||||
|
||||
.. note:: Different types of ``circuit_model`` have different XML syntax, with which users can highly customize their circuit topologies. See refer to examples of ``circuit_model`` for more details.
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
Binary file not shown.
After Width: | Height: | Size: 90 KiB |
|
@ -8,6 +8,8 @@ Extended Architecture Description Language
|
|||
:maxdepth: 2
|
||||
|
||||
generality
|
||||
|
||||
interconnect
|
||||
|
||||
spice_sim_setting
|
||||
|
||||
|
@ -19,6 +21,4 @@ Extended Architecture Description Language
|
|||
|
||||
link_circuit_modules
|
||||
|
||||
.. multimode_support
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,94 @@
|
|||
Interconnection extensions
|
||||
==========================
|
||||
|
||||
This section introduces extensions on the architecture description file about existing interconnection description.
|
||||
|
||||
Directlist
|
||||
----------
|
||||
|
||||
The original direct connections in the directlist section are documented here_. Its description is given below:
|
||||
|
||||
.. _here: http://docs.verilogtorouting.org/en/latest/arch/reference/?highlight=directlist#direct-inter-block-connections
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<directlist>
|
||||
<direct name="string" from_pin="string" to_pin="string" x_offset="int" y_offset="int" z_offset="int" switch_name="string"/>
|
||||
</directlist>
|
||||
|
||||
.. note:: These options are required
|
||||
|
||||
Our extension include three more options:
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<directlist>
|
||||
<direct name="string" from_pin="string" to_pin="string" x_offset="int" y_offset="int" z_offset="int" switch_name="string" interconnection_type="string" x_dir="string" y_dir="string"/>
|
||||
</directlist>
|
||||
|
||||
.. note:: these options are optional. However, if *interconnection_type* is set *x_dir* and *y_dir* are required.
|
||||
|
||||
* **interconnection_type**: [``NONE`` | ``column`` | ``row``], specifies if it applies on a column or a row ot if it doesn't apply.
|
||||
|
||||
* **x_dir**: [``positive`` | ``negative``], specifies if the next cell to connect has a bigger or lower x value. Considering a coordinate system where (0,0) is the origin at the bottom left and *x* and *y* are positives:
|
||||
|
||||
* x_dir="positive":
|
||||
|
||||
* interconnection_type="column": a column will be connected to a column on the **right**, if it exists.
|
||||
|
||||
* interconnection_type="row": the most on the **right** cell from a row connection will connect the most on the **left** cell of next row, if it exists.
|
||||
|
||||
* x_dir="negative":
|
||||
|
||||
* interconnection_type="column": a column will be connected to a column on the **left**, if it exists.
|
||||
|
||||
* interconnection_type="row": the most on the **left** cell from a row connection will connect the most on the **right** cell of next row, if it exists.
|
||||
|
||||
* **y_dir**: [``positive`` | ``negative``], specifies if the next cell to connect has a bigger or lower x value. Considering a coordinate system where (0,0) is the origin at the bottom left and *x* and *y* are positives:
|
||||
|
||||
* y_dir="positive":
|
||||
|
||||
* interconnection_type="column": the **bottom** cell of a column will be connected to the next column **top** cell, if it exists.
|
||||
|
||||
* interconnection_type="row": a row will be connected on an **above** row, if it exists.
|
||||
|
||||
* y_dir="negative":
|
||||
|
||||
* interconnection_type="column": the **top** cell of a column will be connected to the next column **bottom** cell, if it exists.
|
||||
|
||||
* interconnection_type="row": a row will be connected on a row **below**, if it exists.
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
For this example, we will study a scan-chain implementation. The description could be:
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<directlist>
|
||||
<direct name="scff_chain" from_pin="clb.sc_out" to_pin="clb.sc_in" x_offset="0" y_offset="-1" z_offset="0" interconnection_type="column" x_dir="positive" y_dir="positive"/>
|
||||
</directlist>
|
||||
|
||||
:numref:`fig_p2p_exple` is the graphical representation of the above scan-chain description on a 4x4 FPGA.
|
||||
|
||||
.. _fig_p2p_exple:
|
||||
|
||||
.. figure:: ./figures/point2point_example.png
|
||||
|
||||
An example of scan-chain implementation
|
||||
|
||||
|
||||
In this figure, the red arrows represent the initial direct connection. The green arrows represent the point to point connection to connect all the columns of CLB.
|
||||
|
||||
Truth table
|
||||
-----------
|
||||
|
||||
A point to point connection can be applied in different ways than showed in the example section. To help the designer implement his point to point connection, a truth table with our new parameters id provided below.
|
||||
|
||||
:numref:`fig_p2p_trtable` provides all possible variable combination and the connection it will generate.
|
||||
|
||||
.. _fig_p2p_trtable:
|
||||
|
||||
.. figure:: ./figures/point2point_truthtable.png
|
||||
|
||||
Point to point truth table
|
|
@ -1,6 +1,6 @@
|
|||
Link circuit modules
|
||||
--------------------
|
||||
Each defined SPICE model should be linked to an FPGA module defined in the original part of architecture descriptions. It helps FPGA-SPICE creating the SPICE netlists for logic/routing blocks. Since the original part lacks such support, we create a few XML properties to link to Circuit models.
|
||||
Each defined circuit model should be linked to an FPGA module defined in the original part of architecture descriptions. It helps FPGA-circuit creating the circuit netlists for logic/routing blocks. Since the original part lacks such support, we create a few XML properties to link to Circuit models.
|
||||
|
||||
SRAM
|
||||
====
|
||||
|
@ -30,7 +30,7 @@ To link the defined circuit model of SRAM into the FPGA architecture description
|
|||
|
||||
Example of a memory organization using memory decoders
|
||||
|
||||
.. note:: Currently SPICE only supports standalone memory organization.
|
||||
.. note:: Currently circuit only supports standalone memory organization.
|
||||
|
||||
.. note:: Currently RRAM-based FPGA only supports memory-bank organization for Verilog Generator.
|
||||
|
||||
|
@ -45,7 +45,7 @@ Switch Boxes
|
|||
=============
|
||||
|
||||
Original VPR architecture description contains an XML node called switchlist under which all the multiplexers of switch blocks are described.
|
||||
To link a defined SPICE model to a multiplexer in the switch blocks, a new XML property circuit_model_name should be added to the descriptions.
|
||||
To link a defined circuit model to a multiplexer in the switch blocks, a new XML property circuit_model_name should be added to the descriptions.
|
||||
|
||||
Here is an example:
|
||||
|
||||
|
@ -59,10 +59,10 @@ Here is an example:
|
|||
|
||||
|
||||
Connection Blocks
|
||||
================
|
||||
==================
|
||||
|
||||
To link the defined SPICE model of the multiplexer to the Connection Blocks, a circuit_model_name should be added to the definition of Connection Blocks switches. However, the original architecture descriptions do not offer a switch description for connection boxes as they do for the switch blocks.
|
||||
Therefore, FPGA-SPICE requires a new XML node called **cblock** under the root XML node architecture, where a switch for connection blocks can be defined.
|
||||
To link the defined circuit model of the multiplexer to the Connection Blocks, a circuit_model_name should be added to the definition of Connection Blocks switches. However, the original architecture descriptions do not offer a switch description for connection boxes as they do for the switch blocks.
|
||||
Therefore, FPGA-circuit requires a new XML node called **cblock** under the root XML node architecture, where a switch for connection blocks can be defined.
|
||||
|
||||
Here is the example:
|
||||
|
||||
|
@ -87,30 +87,98 @@ Similar to the Switch Boxes and Connection Blocks, the channel wire segments in
|
|||
|
||||
* circuit_model_name: should match a circuit model whose type is chan_wire defined under module_circuit_models.
|
||||
|
||||
Primitive Blocks inside Configurable Logic Blocks
|
||||
=================================================
|
||||
Primitive Blocks inside Multi-mode Configurable Logic Blocks
|
||||
=============================================================
|
||||
|
||||
The architecture description employs a hierarchy of pb_types to depict the sub-modules and complex interconnections inside logic blocks. Each leaf node and interconnection in the pb_type hierarchy should be linked to a circuit model.
|
||||
The architecture description employs a hierarchy of ``pb_types`` to depict the sub-modules and complex interconnections inside logic blocks. Each leaf node and interconnection in the pb_type hierarchy should be linked to a circuit model.
|
||||
Each primitive block, i.e., the leaf ``pb_types``, should be linked to a valid circuit model, using the XML syntax ``circuit_model_name``.
|
||||
The ``circuit_model_name`` should match the given name of a ``circuit_model`` defined by users.
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<pb_type name="clb" idle_mode_name="ble" physical_mode_name="ble">
|
||||
<pb_type name="ble">
|
||||
<pb_type name="lut" circuit_model_name="lut6">
|
||||
<pb_type name="ff" circuit_model_name="dff">
|
||||
|
||||
<!-- Multi-mode BLE -->
|
||||
<pb_type name="ble" num_pb="10" physical_mode_name="ble_phy"/>
|
||||
<!-- Physical implementation of BLE shown in Fig. :ref:`` -->
|
||||
<mode name="ble_phy" disabled_in_packing="true"/>
|
||||
<!-- Define a 6-input LUT in BLE and link it to circuit model -->
|
||||
<pb_type name="flut6_phy" circuit_model_name="frac_lut6">
|
||||
<input name="in" num_pins="6"/>
|
||||
<output name="lut4_out" num_pins="4"/>
|
||||
<output name="lut5_out" num_pins="2"/>
|
||||
<output name="lut6_out" num_pins="1"/>
|
||||
</pb_type>
|
||||
<pb_type name="lut4_phy" circuit_model_name="lut4">
|
||||
<input name="in" num_pins="4"/>
|
||||
<output name="out" num_pins="1"/>
|
||||
</pb_type>
|
||||
<pb_type name="adder_phy" num_pb="2" circuit_model_name="adder">
|
||||
<input name="a" num_pins="1"/>
|
||||
<input name="b" num_pins="1"/>
|
||||
<input name="cin" num_pins="1"/>
|
||||
<output name="cout" num_pins="1"/>
|
||||
<output name="sumout" num_pins="1"/>
|
||||
</pb_type>
|
||||
<pb_type name="ff_phy" num_pb="2" circuit_model_name="dff">
|
||||
<input name="D" num_pins="1"/>
|
||||
<output name="Q" num_pins="1"/>
|
||||
<clock name="clk" num_pins="1"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<mux input="lut.out ff.Q" output="ble.out" circuit_model_name="mux_1level">
|
||||
<!-- Routing multiplexers are omitted in this example. -->
|
||||
</interconnect>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<mux input="ble.out clb.in" output="ble.in" circuit_model_name="mux_2level">
|
||||
</interconnect>
|
||||
</mode>
|
||||
<!-- Arithmetic mode of BLE shown in Fig. 2(b)-->
|
||||
<mode name="flut4_arithmetic"/>
|
||||
<pb_type name="flut4_arith" num_pb="4"/>
|
||||
<!-- Define a virtual 4-input LUT in BLE and link it to physical 6-input LUT defined at LINE 6 -->
|
||||
<pb_type name="lut4" mode_bits="01" physical_pb_type_name="flut6_phy">
|
||||
<!-- Define an input port and link it to its physical port defined at LINE 7 -->
|
||||
<input name="in" num_pins="4" physical_mode_pin="in[3:0]"/>
|
||||
<!-- Define an output port and link it to its physical port defined at LINE 8 -->
|
||||
<output name="out" num_pins="1" physical_mode_pin="lut4_out"/>
|
||||
</pb_type>
|
||||
<pb_type name="adder" num_pb="2" physical_pb_type_name="adder_phy">
|
||||
<input name="a" num_pins="1" physical_mode_pin="a"/>
|
||||
<input name="b" num_pins="1" physical_mode_pin="b"/>
|
||||
<input name="cin" num_pins="1" physical_mode_pin="cin"/>
|
||||
<output name="cout" num_pins="1" physical_mode_pin="cout"/>
|
||||
<output name="sumout" num_pins="1" physical_mode_pin="sumout"/>
|
||||
</pb_type>
|
||||
<pb_type name="ff" num_pb="2" physical_pb_type_name="ff_phy">
|
||||
<input name="D" num_pins="1" physical_mode_pin="D"/>
|
||||
<output name="Q" num_pins="1" physical_mode_pin="Q"/>
|
||||
<clock name="clk" num_pins="1" physical_mode_pin="clk"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<!-- Routing multiplexers are omitted in this example. Full details can be found in [21] -->
|
||||
</interconnect>
|
||||
</pb_type>
|
||||
</mode>
|
||||
<!-- More operating modes can be defined -->
|
||||
</pb_type>
|
||||
|
||||
* **circuit_model_name:** should match a SPICE model defined under module_circuit_models. For the interconnection type direct, the type of the linked SPICE model should be wire. For mux, the type of linked SPICE model should be mux. For complete, the type of the linked SPICE model can be either mux or wire, depending on the case.
|
||||
* **physical_mode_name:** tell the name of the mode that describes the physical implementation of the configurable block. This is critical in modeling actual circuit designs and architecture of an FPGA. Typically, only one physical_mode should be specified for each multi-mode ``pb_type``.
|
||||
|
||||
* **idle_mode_name:** tell the name of the mode that the pb_type is configured to be by default. This is critical in building SPICE netlists for unused logic blocks.
|
||||
* **idle_mode_name:** tell the name of the mode that the ``pb_type`` is configured to be by default. This is critical in building circuit netlists for unused logic blocks.
|
||||
|
||||
* **physical_mode_name:** tell the name of the mode that describes the physical implementation of the block. This is critical in modeling actual circuit designs and architecture of an FPGA.
|
||||
* **circuit_model_name:** should match a circuit model defined under ``module_circuit_models``. The ``circuit_model_name`` is mandatory for every leaf ``pb_type`` in a physical_mode ``pb_type``. For the interconnection type direct, the type of the linked circuit model should be wire. For multiplexers, the type of linked circuit model should be ``mux``. For complete, the type of the linked circuit model can be either ``mux`` or ``wire``, depending on the case.
|
||||
|
||||
* **mode_bits** specifies the configuration bits for the ``circuit_model`` when operating at an operating mode. The length of ``mode_bits`` should match the ``port`` size defined in ``circuit_model``. The ``mode_bits`` should be derived from circuit designs while users are responsible for its correctness. FPGA-Bitstreamm will add the ``mode_bits`` during bitstream generation.
|
||||
|
||||
* **physical_pb_type_name** creates the link on ``pb_type`` between operating and physical modes. This syntax is mandatory for every leaf ``pb_type`` in an operating mode ``pb_type``. It should be a valid name of leaf ``pb_type`` in physical mode.
|
||||
|
||||
* **physical_pb_type_index_factor** aims to align the indices for ``pb_type`` between operating and physical modes, especially when an operating mode contains multiple ``pb_type`` (``num_pb``>1) that are linked to the same physical ``pb_type``. When ``physical_pb_type_name`` is larger than 1, the index of ``pb_type`` will be multipled by the given factor.
|
||||
|
||||
* **physical_pb_type_index_offset** aims to align the indices for ``pb_type`` between operating and physical modes, especially when an operating mode contains multiple ``pb_type`` (``num_pb``>1) that are linked to the same physical ``pb_type``. When ``physical_pb_type_name`` is larger than 1, the index of ``pb_type`` will be shifted by the given factor.
|
||||
|
||||
* **physical_mode_pin** creates the linke on ``port`` of ``pb_type`` between operating and physical modes. This syntax is mandatory for every leaf ``pb_type`` in an operating mode ``pb_type``. It should be a valid ``port`` name of leaf ``pb_type`` in physical mode and the port size should also match.
|
||||
|
||||
* **physical_mode_pin_rotate_offset** aims to align the pin indices for ``port`` of ``pb_type`` between operating and physical modes, especially when an operating mode contains multiple ``pb_type`` (``num_pb``>1) that are linked to the same physical ``pb_type``. When ``physical_mode_pin_rotate_offset`` is larger than zero, the pin index of ``pb_type`` (whose index is large than 1) will be shifted by the given offset.
|
||||
|
||||
.. note::
|
||||
It is highly recommended that only one physical mode is defined for a multi-mode configurable block. Try not to use nested physical mode definition. This will ease the debugging and lead to clean XML description.
|
||||
|
||||
.. note::
|
||||
Be careful in using ``physical_pb_type_index_factor``, ``physical_pb_type_index_offset`` and ``physical_mode_pin_rotate_offset``! Try to avoid using them unless for highly complex configuration blocks with very deep hierarchy.
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
Modeling Physical Design of Multi-mode Configurable Logic Block Architectures
|
||||
=============================================================================
|
||||
|
||||
Under construction
|
|
@ -19,7 +19,7 @@ import shlex
|
|||
|
||||
import sphinx_rtd_theme
|
||||
|
||||
# Uncomment for local build
|
||||
# Uncomment for local build
|
||||
#html_theme = "sphinx_rtd_theme"
|
||||
#html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
|
||||
|
||||
|
@ -55,7 +55,8 @@ extensions = [
|
|||
'sphinx.ext.todo',
|
||||
'sphinx.ext.mathjax',
|
||||
'sphinx.ext.graphviz',
|
||||
'sphinxcontrib.bibtex'
|
||||
'sphinxcontrib.bibtex',
|
||||
'sphinx.ext.autosectionlabel',
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
|
@ -89,7 +90,7 @@ pygments_style = 'sphinx'
|
|||
# If true, `todo` and `todoList` produce output, else they produce nothing.
|
||||
todo_include_todos = True
|
||||
|
||||
#Number figures for referencing
|
||||
# Number figures for referencing
|
||||
numfig = True
|
||||
|
||||
|
||||
|
|
|
@ -12,10 +12,15 @@ Welcome to OpenFPGA's documentation!
|
|||
motivation
|
||||
|
||||
.. toctree::
|
||||
:caption: Getting Started
|
||||
:caption: Getting Started
|
||||
|
||||
eda_flow
|
||||
|
||||
run_fpga_flow
|
||||
|
||||
run_fpga_task
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Tools Guide
|
||||
|
@ -37,10 +42,10 @@ Welcome to OpenFPGA's documentation!
|
|||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Appendix
|
||||
|
||||
|
||||
contact
|
||||
reference
|
||||
|
||||
|
||||
For more information on the VTR see vtr_doc_ or vtr_github_
|
||||
|
||||
For more information on the Yosys see yosys_doc_ or yosys_github_
|
||||
|
|
|
@ -15,7 +15,7 @@ In this manual, we will introduce how to use FPGA-SPICE to conduct an accurate p
|
|||
|
||||
In the appendix, we introduce the hierarchy of the generated SPICE netlists and testbenches, to help you customize the SPICE netlists. We also attach an example of an architecture XML file for your interest.
|
||||
|
||||
The technical details can be found in our ICCD’15 paper :cite:`XTang_ICCD_2015`.
|
||||
The technical details can be found in our ICCD’15 paper :cite:`XTang_ICCD_2015` and TVLSI'19 paper :cite:`XTang_TVLSI_2019`.
|
||||
|
||||
FPGA-Verilog
|
||||
------------
|
||||
|
@ -24,7 +24,9 @@ On a second note, it is becoming more and more necessary to have fast access to
|
|||
|
||||
This motivates us to generate the Verilog code of the architecture to enable a second level of research concerning the architectures to be explored. This Verilog code encompasses the whole design and is divided into multiple sub-directories for targetted analysis or a global one. This is left to the choice of the user.
|
||||
|
||||
In this manual, we present FPGA-Verilog. This extension enables the generation of a fully functional Verilog code enabling a deeper understanding of the architectures of the FPGAs. We introduce different options to this module to do the verification of the system. This will be presented in more depth in the FPGA-Bitstream section
|
||||
In this manual, we present FPGA-Verilog. This extension enables the generation of a fully functional Verilog code enabling a deeper understanding of the architectures of the FPGAs. We introduce different options to this module to do the verification of the system. This will be presented in more depth in the FPGA-Bitstream section.
|
||||
|
||||
The technical details can be found in our TVLSI'19 paper :cite:`XTang_TVLSI_2019`.
|
||||
|
||||
FPGA-Bitstream
|
||||
--------------
|
||||
|
|
|
@ -0,0 +1,183 @@
|
|||
.. _run_fpga_flow:
|
||||
|
||||
OpenFPGA Flow
|
||||
---------------
|
||||
|
||||
This python script executes the supported OpenFPGA flow for a
|
||||
single benchmark and architecture file for given script parameters.
|
||||
|
||||
The script is located at::
|
||||
|
||||
${OPENFPGA_PATH}/openfpga_flow/scripts/run_fpga_flow.py
|
||||
|
||||
.. program:: run_fpga_flow.py
|
||||
|
||||
Basic Usage
|
||||
~~~~~~~~~~~
|
||||
|
||||
At a minimum ``open_fpga_flow.py`` requires following command-line arguments::
|
||||
|
||||
open_fpga_flow.py <architecture_file> <benchmark_files> --top_module <top_module_name>
|
||||
|
||||
where:
|
||||
|
||||
* ``<architecture_file>`` is the target :ref:`FPGA architecture <fpga_architecture_description>`
|
||||
* ``<circuit_file>`` The list of files in the benchmark (Supports ../directory/\*.v)
|
||||
* ``<top_module_name>`` The name of the top level module in Verilog project
|
||||
|
||||
.. note::
|
||||
The script will create a ``tmp`` run directory in base OpenFPGA path, unless otherwise specified with the :option:`--run_dir` option.
|
||||
All stages of the flow will be run within run directory.
|
||||
Several intermediate files will be generated and maintian in run directory.
|
||||
The path variables declared in architecture XML file will be resolved with absolute path and copied to the ``tmp/arch`` directory before executing flow.
|
||||
All the benchmark files provided will be copied to ``tmp/bench`` directory without maintaining any directory structure.
|
||||
**Users should ensure that no important files are kept in this directory as script will clear directory before each execution**
|
||||
|
||||
.. _openfpga-variables:
|
||||
|
||||
OpenFPGA Variables
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
Frequently, while running OpenFPGA flow User is suppose to refer external files.
|
||||
To avoid long names and referencing errors user can use
|
||||
following openfpga variables.
|
||||
These variables are resolved with absolute path while execution making
|
||||
each run independent of launch directory.
|
||||
|
||||
|
||||
* ``<OPENFPGA_PATH>`` Path to the base OpenFPGA directory
|
||||
* ``<OPENFPGA_FLOW_PATH>`` Path to the run_fpga_flow script directory
|
||||
* ``<SPICENETLIST_PATH>`` Path where spice netlists are saved
|
||||
* ``<VERILOG_PATH>`` Path where Verilog modules are saved
|
||||
* ``<TECH_PATH>`` Path where all characterized XML files are stored
|
||||
|
||||
For example in architecture file path vairable can be used as follows::
|
||||
|
||||
.... lib_path="${TECH_PATH}/PTM_45nm/45nm.pm" ....
|
||||
|
||||
Output
|
||||
~~~~~~
|
||||
Based on which flow is executed, resulting in intermediate files are generated in run_directory
|
||||
|
||||
The output log of the script provides the status of each stage to the user.
|
||||
If any stage failed to execute, the output log would indicate the stage at which execution failed, and execution traceback.
|
||||
|
||||
In case of successful execution, The OpenFPGA flow script will parse
|
||||
parameters listed in configuration from different result files and will create
|
||||
``vpr_stat.txt``, ``vpr_stat_power.txt`` \(optional\) file in run_directory.
|
||||
|
||||
Advanced Usage
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
User can pass additional *optional* command arguments to ``run_fpga_flow.py`` script::
|
||||
|
||||
run_fpga_flow.py <architecture_file> <benchmark_files> [<options>] [<vpr_options>] [<fpga-verilog_options>] [<fpga-spice_options>] [<fpga-bitstream_options>] [<ace_options>]
|
||||
|
||||
|
||||
where:
|
||||
|
||||
* ``<options>`` are additional arguments passed to ``run_fpga_flow.py`` (described below),
|
||||
* ``<vpr_options>`` Any argument prefixed with ``--vpr-*`` will be forwarded to vpr script as it is. The detail of supported vpr argument is available ``Add corrrect reference``
|
||||
* ``<fpga-verilog_options>`` are any arguments not recognized by ``run_vtr_flow.pl``. These will be forwarded to VPR.
|
||||
* ``<ace_options>`` these arguments will be passed to ACE activity estimator program
|
||||
|
||||
For example::
|
||||
|
||||
run_fpga_flow.py my_circuit.v my_arch.xml -track_memory_usage --pack --place
|
||||
|
||||
will run the VTR flow to map the circuit ``my_circuit.v`` onto the architecture ``my_arch.xml``; the arguments ``--pack`` and ``--place`` will be passed to VPR (since they are unrecognized arguments to ``run_vtr_flow.pl``).
|
||||
They will cause VPR to perform only :ref:`packing and placement <general_options>`.
|
||||
|
||||
Detailed Command-line Options
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. Note:: All the commnadline arguments starting with ``vpr_*`` , ``fpga-verilog_*`` , ``fpga-spice_*`` or ``fpga-bitstream_*`` will be passed to VPR without suffix
|
||||
|
||||
General Arguments
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. option:: --top_module <name>
|
||||
|
||||
Provide top module name of the benchmark. Default ``top``
|
||||
|
||||
.. option:: --run_dir <directory_path>
|
||||
|
||||
Using this option user can provide a custom path as a run directory. Default is ``tmp`` directory in OpenFPGA root path.
|
||||
|
||||
.. option:: --K <lut_inputs>
|
||||
|
||||
This option defines the number of inputs to the LUT. By default, the script parses provided architecture file and finds out inputs to the biggest LUT.
|
||||
|
||||
.. option:: --yosys_tmpl <yosys_template_file>
|
||||
|
||||
This option allows the user to provide a custom Yosys template
|
||||
While running a yosys_vpr flow. Default template is stored in a directory ``open_fpga_flow\misc\ys_tmpl_yosys_vpr_flow.ys``. Yosys template script supports ``TOP_MODULE`` ``READ_VERILOG_FILE`` ``LUT_SIZE`` & ``OUTPUT_BLIF`` variables, which can be used as ``${var_name}``. Alternately, user can create a copy and modify according to their need.
|
||||
|
||||
.. option:: --debug
|
||||
|
||||
To enable detailed log printing.
|
||||
|
||||
.. option:: --flow_config
|
||||
|
||||
User can provide option flow configuration file to override some of the default script parameters.
|
||||
for detail information refer :ref:`OpenFPGA Flow Configuration <OpenFPGA_Conf_File>`
|
||||
|
||||
ACE Arguments
|
||||
^^^^^^^^^^^^^
|
||||
.. option:: --black_box_ace
|
||||
|
||||
Performs ACE simulation on the black box [deprecated]
|
||||
|
||||
VPR RUN Arguments
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. option:: --fix_route_chan_width <channel_number>
|
||||
|
||||
Performs VPR implementation for a fixed number of channels defined as the 'channel_number'
|
||||
|
||||
.. option:: --min_route_chan_width <percentage_slack>
|
||||
|
||||
Performs VPR implementation to get minimum channel width and then perform fixed channel rerouting with ``percentage_slack`` increase in the channel width.
|
||||
|
||||
.. option:: --max_route_width_retry <max_retry_count>
|
||||
|
||||
Number of times the channel width should be increased and attempt VPR implementation, while performing ``min_route_chan_width``
|
||||
|
||||
.. option:: --power
|
||||
.. option:: --power_tech
|
||||
|
||||
|
||||
blif_vpr_flow Arguments
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. option:: --activity_file
|
||||
|
||||
Activity to be used for the given benchmark while running ``blif_vpr_flow``
|
||||
|
||||
.. option:: --base_verilog
|
||||
|
||||
Verilog benchmark file to perform verification while running ``bliff_vpr_flow``
|
||||
|
||||
|
||||
|
||||
.. _OpenFPGA_Conf_File:
|
||||
OpenFPGA Flow Configuration file
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The OpenFPGA Flow configuration file consists of following sections
|
||||
|
||||
* ``CAD_TOOLS_PATH``
|
||||
Lists executable file path for different CAD tools used in the script
|
||||
|
||||
* ``FLOW_SCRIPT_CONFIG``
|
||||
Lists the supported flows by the script.
|
||||
|
||||
* ``DEFAULT_PARSE_RESULT_VPR``
|
||||
List of default parameters to be parsed from Place, Pack, and Route output
|
||||
|
||||
* ``DEFAULT_PARSE_RESULT_POWER``
|
||||
List of default parameters to be parsed from VPR power analysis output
|
||||
|
||||
* ``INTERMIDIATE_FILE_PREFIX``
|
||||
[Not implemented yet]
|
||||
|
||||
Default OpenFPGA_flow Configuration file is located in ``open_fpga_flow\misc\fpgaflow_default_tool_path.conf``.
|
||||
User-supplied configuration file overrides or extends the default configuration.
|
|
@ -0,0 +1,244 @@
|
|||
.. _run_fpga_task:
|
||||
|
||||
OpenFPGA Task
|
||||
---------------
|
||||
|
||||
Tasks provide a framework for running the :ref:`run_fpga_flow` on
|
||||
multiple benchmarks, architectures, and set of OpenFPGA parameters.
|
||||
The structure of the framework is very similar to
|
||||
`VTR-Tasks <https://docs.verilogtorouting.org/en/latest/vtr/tasks/>`_
|
||||
implementation with additional functionality and minor file extension changes.
|
||||
|
||||
Task Directory
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
The tasks are stored in a ``TASK_DIRECTORY``, which by default points to
|
||||
``${OPENFPGA_PATH}/openfpga_flow/tasks``. Every directory or sub-directory in
|
||||
task directory consisting of ``../config/task.conf`` file can be referred to as a
|
||||
task.
|
||||
|
||||
To create as task name called ``basic_flow`` following directory has to exist::
|
||||
|
||||
${TASK_DIRECTORY}/basic_flow/conf/task.conf
|
||||
|
||||
Similarly ``regression/regression_quick`` expect following structure::
|
||||
|
||||
${TASK_DIRECTORY}/regression/regression_quick/conf/task.conf
|
||||
|
||||
|
||||
Running OpenFPGA Task:
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
At a minimum ``open_fpga_flow.py`` requires following command-line arguments::
|
||||
|
||||
open_fpga_flow.py <task1_name> <task2_name> ... [<options>]
|
||||
|
||||
where:
|
||||
|
||||
* ``<task_name>`` is the name of the task to run
|
||||
* ``<options>`` Other command line arguments described below
|
||||
|
||||
|
||||
Command-line Options
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. option:: --maxthreads <number_of_threads>
|
||||
|
||||
This option defines the number of threads to run while executing task.
|
||||
Each combination of architecture, benchmark and set of OpenFPGA Flow options
|
||||
runs in a individual thread.
|
||||
|
||||
.. option:: --skip_thread_logs
|
||||
|
||||
Passsing this option skips printing logs from each OpenFPGA Flow script run.
|
||||
|
||||
.. option:: --exit_on_fail
|
||||
|
||||
Passsing this option exits the OpenFPGA task script with returncode 1,
|
||||
if any threads fail to execute successfully. It is mainly used to while
|
||||
performing regression test.
|
||||
|
||||
.. option:: --test_run
|
||||
|
||||
This option allows to debug OpenFPGA Task script
|
||||
by skiping actual execution of OpenFPGA flow .
|
||||
Passing this option prints the list of
|
||||
commnad generated to execute using OpenFPGA flow.
|
||||
|
||||
.. option:: --debug
|
||||
|
||||
To enable detailed log printing.
|
||||
|
||||
|
||||
Creating a new OpenFPGA Task
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Create the folder ``${TASK_DIRECTORY}/<task_name>``
|
||||
- Create a file ``${TASK_DIRECTORY}/<task_name>/config/task.conf`` in it
|
||||
- Configure the task as explained in :ref:`Configuring a new OpenFPGA Task`
|
||||
|
||||
|
||||
Configuring a new OpenFPGA Task
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The task configuration file ``task.conf`` consists of ``GENERAL``,
|
||||
``ARCHITECTURES``, ``BENCHMARKS``, ``SYNTHESIS_PARAM`` and
|
||||
``SCRIPT_PARAM_<var_name>`` sections.
|
||||
Declaring all the above sections are mandatory.
|
||||
|
||||
.. note::
|
||||
The configuration file supports all the OpenFPGA Variables refer
|
||||
:ref:`openfpga-variables` section to know more. Variable in the configuration
|
||||
file is declared as ``${PATH:<variable_name>}``
|
||||
|
||||
General Section
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. option:: fpga_flow==<yosys_vpr|vpr_blif>
|
||||
|
||||
This option defines which OpenFPGA flow to run. By default ``yosys_vpr`` is executed.
|
||||
|
||||
.. option:: power_analysis=<true|false>
|
||||
|
||||
Specifies whether to perform power analysis or not.
|
||||
|
||||
.. option:: power_tech_file=<path_to_tech_XML_file>
|
||||
|
||||
Declares which tech XML file to use while performing Power Analysis.
|
||||
|
||||
.. option:: spice_output=<true|false>
|
||||
|
||||
Setting up this variable generates Spice Netlist at the end of the flow.
|
||||
Equivalent of passing ``--vpr_fpga_spice`` command to :ref:`run_fpga_flow`
|
||||
|
||||
.. option:: verilog_output=<true|false>
|
||||
|
||||
Setting up this variable generates Verilog Netlist at the end of the flow.
|
||||
Equivalent of passing ``--vpr_fpga_spice`` command to :ref:`run_fpga_flow`
|
||||
|
||||
.. option:: timeout_each_job=<true|false>
|
||||
|
||||
Specifies the timeout for each :ref:`run_fpga_flow` execution. Default is set to ``20 min. ``
|
||||
|
||||
|
||||
Architectures Sections
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
User can define the list of architecture files in this section.
|
||||
|
||||
.. option:: arch<arch_label>=<xml_architecture_file_path>
|
||||
|
||||
The ``arch_label`` variable can be any number of string without
|
||||
white-spaces. ``xml_architecture_file_path`` is path to the actual XML
|
||||
architecture file
|
||||
|
||||
.. note::
|
||||
|
||||
In the final OpenFPGA Task result, the architecture will be referred by its
|
||||
``arch_label``.
|
||||
|
||||
Benchmarks Sections
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
User can define the list of benchmarks files in this section.
|
||||
|
||||
.. option:: bench<bench_label>=<list_of_files_in_benchmark>
|
||||
|
||||
The ``bench_label`` variable can be any number of string without
|
||||
white-spaces. ``xml_architecture_file_path`` is path to the actual XML
|
||||
architecture file
|
||||
|
||||
For Example following code shows how to define a benchmarks,
|
||||
with a single file, multiple files and files added from a specific directory.
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
[BENCHMARKS]
|
||||
# To declare single benchmark file
|
||||
bench_design1=${BENCH_PATH}/design/top.v
|
||||
|
||||
# To declare multiple benchmark file
|
||||
bench_design2=${BENCH_PATH}/design/top.v,${BENCH_PATH}/design/sub_module.v
|
||||
|
||||
# To add all files in specific directory to the benchmark
|
||||
bench_design3=${BENCH_PATH}/design/top.v,${BENCH_PATH}/design/lib/*.v
|
||||
|
||||
.. note::
|
||||
``bench_label`` is referred again in ``Synthesis_Param`` section to
|
||||
provide additional information about benchmark
|
||||
|
||||
Synthesis Parameter Sections
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
User can define extra parameters for each benchmark in the
|
||||
``BENCHMARKS`` sections.
|
||||
|
||||
.. option:: bench<bench_label>_top=<Top_Module_Name>
|
||||
|
||||
This option defines the Top Level module name for ``bench_label`` benchmark.
|
||||
By default, the top-level module name is considered as a ``top``.
|
||||
|
||||
.. option:: bench<bench_label>_yosys_tmpl=<yosys_template_file>
|
||||
|
||||
[TODO]
|
||||
|
||||
.. option:: bench<bench_label>_chan_width=<chan_width_to_use>
|
||||
|
||||
In case of running fixed channel width routing for each benchmark,
|
||||
this option defines the channel width to be used for ``bench_label``
|
||||
benchmark
|
||||
|
||||
.. option:: bench<bench_label>_act=<activity_file_path>
|
||||
|
||||
In case of running ``blif_vpr_flow`` this option provides the activity files
|
||||
to be used to generate testbench for ``bench_label`` benchmark
|
||||
|
||||
.. option:: bench<bench_label>_verilog=<source_verilog_file_path>
|
||||
|
||||
In case of running ``blif_vpr_flow`` with verification this option provides
|
||||
the source Verilog design for ``bench_label`` benchmark to be used
|
||||
while verification.
|
||||
|
||||
Script Parameter Sections
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
The script parameter section lists set of commnad line pararmeters to be passed to :ref:`run_fpga_flow` script. The section name is defines as ``SCRIPT_PARAM_<parameter_set_label>`` where `parameter_set_label` can be any word without white spaces.
|
||||
The section is referred with ``parameter_set_label`` in the final result file.
|
||||
|
||||
For example following code Specifies the two sets (``Fixed_Routing_30`` and ``Fixed_Routing_50``) of :ref:`run_fpga_flow` arguments.
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
[SCRIPT_PARAM_Fixed_Routing_30]
|
||||
# Execute fixed routing with channel with 30
|
||||
fix_route_chan_width=30
|
||||
|
||||
[SCRIPT_PARAM_Fixed_Routing_50]
|
||||
# Execute fixed routing with channel with 50
|
||||
fix_route_chan_width=50
|
||||
|
||||
Example Task Configuration File
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.. code-block:: text
|
||||
|
||||
[GENERAL]
|
||||
spice_output=false
|
||||
verilog_output=false
|
||||
power_analysis = true
|
||||
power_tech_file = ${PATH:TECH_PATH}/winbond90nm/winbond90nm_power_properties.xml
|
||||
timeout_each_job = 20*60
|
||||
|
||||
[ARCHITECTURES]
|
||||
arch0=${PATH:ARCH_PATH}/winbond90/k6_N10_rram_memory_bank_SC_winbond90.xml
|
||||
|
||||
[BENCHMARKS]
|
||||
bench0=${PATH:BENCH_PATH}/MCNC_Verilog/s298/s298.v
|
||||
bench1=${PATH:BENCH_PATH}/MCNC_Verilog/elliptic/elliptic.v
|
||||
|
||||
[SYNTHESIS_PARAM]
|
||||
bench0_top = s298
|
||||
bench1_top = elliptic
|
||||
|
||||
[SCRIPT_PARAM_Slack_30]
|
||||
min_route_chan_width=1.3
|
||||
|
||||
[SCRIPT_PARAM_Slack_80]
|
||||
min_route_chan_width=1.8
|
|
@ -38,7 +38,7 @@ month={Sept},}
|
|||
|
||||
@article{XTang_TCAS1_2016,
|
||||
title={{A Study on the Programming Structures for RRAM-based FPGA Architectures}},
|
||||
author={Tang, Xifan and Kim, Gain and Gaillardon, Pierre-Emmanuel and De Micheli, Giovanni},
|
||||
author={X. Tang and Kim, Gain and Gaillardon, Pierre-Emmanuel and De Micheli, Giovanni},
|
||||
journal={IEEE Transactions on Circuits and Systems I: Regular Papers},
|
||||
volume={63},
|
||||
number={4},
|
||||
|
@ -106,3 +106,16 @@ month={Sept},}
|
|||
address = {New York, NY, USA},
|
||||
keywords = {CAD, FPGA, architecture},
|
||||
}
|
||||
|
||||
@ARTICLE{XTang_TVLSI_2019,
|
||||
author={X. Tang and E. Giacomin and G. D. Micheli and P. Gaillardon},
|
||||
journal={{IEEE Transactions on Very Large Scale Integration (VLSI) Systems}},
|
||||
title={{FPGA-SPICE: A Simulation-Based Architecture Evaluation Framework for FPGAs}},
|
||||
year={2019},
|
||||
volume={27},
|
||||
number={3},
|
||||
pages={637-650},
|
||||
doi={10.1109/TVLSI.2018.2883923},
|
||||
ISSN={1063-8210},
|
||||
month={March},
|
||||
}
|
||||
|
|
|
@ -164,7 +164,7 @@
|
|||
|
||||
<!-- Physical descriptions begin -->
|
||||
<layout auto="1.0" tileable_routing="off"/>
|
||||
<!--layout width="5" height="5" tileable_routing="off"/-->
|
||||
<!--layout width="12" height="12" tileable_routing="off"/-->
|
||||
<spice_settings>
|
||||
<parameters>
|
||||
<options sim_temp="25" post="off" captab="off" fast="on"/>
|
||||
|
@ -201,8 +201,8 @@
|
|||
<io_nmos model_name="nch_25" chan_length="270e-9" min_width="320e-9"/>
|
||||
<io_pmos model_name="pch_25" chan_length="270e-9" min_width="320e-9"/>
|
||||
</transistors>
|
||||
<module_spice_models>
|
||||
<spice_model type="inv_buf" name="INV1X" prefix="INV1X" is_default="1">
|
||||
<module_circuit_models>
|
||||
<circuit_model type="inv_buf" name="INV1X" prefix="INV1X" is_default="1">
|
||||
<design_technology type="cmos" topology="inverter" size="1" tapered="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
|
@ -212,9 +212,9 @@
|
|||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</spice_model>
|
||||
<spice_model type="inv_buf" name="buf4" prefix="buf4" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_buf_level="2" f_per_stage="4"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="buf4" prefix="buf4" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
|
@ -223,9 +223,9 @@
|
|||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</spice_model>
|
||||
<spice_model type="inv_buf" name="INV4X" prefix="INV4X" is_default="0" >
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_buf_level="3" f_per_stage="4"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INV4X" prefix="INV4X" is_default="0" >
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="3" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
|
@ -234,9 +234,9 @@
|
|||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</spice_model>
|
||||
<spice_model type="inv_buf" name="INV2X" prefix="INV2X" is_default="0" >
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_buf_level="3" f_per_stage="4"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INV2X" prefix="INV2X" is_default="0" >
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="3" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
|
@ -245,9 +245,9 @@
|
|||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</spice_model>
|
||||
<spice_model type="inv_buf" name="buf2" prefix="buf2" is_default="0" >
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_buf_level="2" f_per_stage="2"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="buf2" prefix="buf2" is_default="0" >
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="2"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
|
@ -256,8 +256,8 @@
|
|||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</spice_model>
|
||||
<spice_model type="inv_buf" name="buf1" prefix="buf1" is_default="0" >
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="buf1" prefix="buf1" is_default="0" >
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
|
@ -267,8 +267,8 @@
|
|||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</spice_model>
|
||||
<spice_model type="pass_gate" name="TGATEX1" prefix="TGATEX1" is_default="1">
|
||||
</circuit_model>
|
||||
<circuit_model type="pass_gate" name="TGATEX1" prefix="TGATEX1" is_default="1">
|
||||
<design_technology type="cmos" topology="transmission_gate" nmos_size="1" pmos_size="2"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
|
@ -282,8 +282,8 @@
|
|||
<delay_matrix type="fall" in_port="in sel selb" out_port="out">
|
||||
10e-12 5e-12 5e-12
|
||||
</delay_matrix>
|
||||
</spice_model>
|
||||
<spice_model type="gate" name="OR2" prefix="OR2" is_default="1">
|
||||
</circuit_model>
|
||||
<circuit_model type="gate" name="OR2" prefix="OR2" is_default="1">
|
||||
<design_technology type="cmos" topology="OR"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
|
@ -296,135 +296,135 @@
|
|||
<delay_matrix type="fall" in_port="a b" out_port="out">
|
||||
10e-12 10e-12
|
||||
</delay_matrix>
|
||||
</spice_model>
|
||||
<spice_model type="chan_wire" name="chan_segment" prefix="track_seg" is_default="1">
|
||||
</circuit_model>
|
||||
<circuit_model type="chan_wire" name="chan_segment" prefix="track_seg" is_default="1">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<wire_param model_type="pie" res_val="101" cap_val="22.5e-15" level="1"/> <!-- model_type could be T, res_val and cap_val DON'T CARE -->
|
||||
</spice_model>
|
||||
<spice_model type="wire" name="direct_interc" prefix="direct_interc" is_default="1">
|
||||
</circuit_model>
|
||||
<circuit_model type="wire" name="direct_interc" prefix="direct_interc" is_default="1">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<wire_param model_type="pie" res_val="0" cap_val="0" level="1"/> <!-- model_type could be T, res_val cap_val should be defined -->
|
||||
</spice_model>
|
||||
<spice_model type="mux" name="mux_2level" prefix="mux_2level" dump_structural_verilog="true">
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_2level" prefix="mux_2level" dump_structural_verilog="true">
|
||||
<design_technology type="cmos" structure="multi-level" num_level="2" add_const_input="true" const_input_val="1"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic spice_model_name="TGATEX1"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</spice_model>
|
||||
<spice_model type="mux" name="mux_2level_tapbuf" prefix="mux_2level_tapbuf" dump_structural_verilog="true">
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_2level_tapbuf" prefix="mux_2level_tapbuf" dump_structural_verilog="true">
|
||||
<design_technology type="cmos" structure="multi-level" num_level="2" add_const_input="true" const_input_val="1"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV4X"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV4X"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic spice_model_name="TGATEX1"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</spice_model>
|
||||
<spice_model type="mux" name="mux_1level_tapbuf" prefix="mux_1level_tapbuf" is_default="1" dump_structural_verilog="true">
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_1level_tapbuf" prefix="mux_1level_tapbuf" is_default="1" dump_structural_verilog="true">
|
||||
<design_technology type="cmos" structure="one-level" add_const_input="true" const_input_val="1"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV4X"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV4X"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic spice_model_name="TGATEX1"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</spice_model>
|
||||
</circuit_model>
|
||||
<!--DFF subckt ports should be defined as <D> <Q> <CLK> <RESET> <SET> -->
|
||||
<spice_model type="ff" name="static_dff" prefix="dff" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="FFPATHKEYWORD">
|
||||
<circuit_model type="ff" name="static_dff" prefix="dff" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="FFPATHKEYWORD">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<pass_gate_logic spice_model_name="TGATEX1"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="D" size="1"/>
|
||||
<port type="input" prefix="Set" size="1" is_global="true" default_val="0" is_set="true"/>
|
||||
<port type="input" prefix="Reset" size="1" is_global="true" default_val="0" is_reset="true"/>
|
||||
<port type="output" prefix="Q" size="1"/>
|
||||
<port type="clock" prefix="clk" size="1" is_global="true" default_val="0" />
|
||||
</spice_model>
|
||||
<spice_model type="lut" name="frac_lut6" prefix="frac_lut6" dump_structural_verilog="true">
|
||||
</circuit_model>
|
||||
<circuit_model type="lut" name="frac_lut6" prefix="frac_lut6" dump_structural_verilog="true">
|
||||
<design_technology type="cmos" fracturable_lut="true"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<lut_input_buffer exist="on" spice_model_name="buf2"/>
|
||||
<lut_intermediate_buffer exist="on" spice_model_name="buf1" location_map="-1-1-"/>
|
||||
<lut_input_inverter exist="on" spice_model_name="INV2X"/>
|
||||
<pass_gate_logic spice_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="6" tri_state_map="----11" spice_model_name="OR2"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<lut_input_buffer exist="on" circuit_model_name="buf2"/>
|
||||
<lut_intermediate_buffer exist="on" circuit_model_name="buf1" location_map="-1-1-"/>
|
||||
<lut_input_inverter exist="on" circuit_model_name="INV2X"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="6" tri_state_map="----11" circuit_model_name="OR2"/>
|
||||
<port type="output" prefix="lut4_out" size="4" lut_frac_level="4" lut_output_mask="0,1,2,3"/>
|
||||
<port type="output" prefix="lut5_out" size="2" lut_frac_level="5" lut_output_mask="0,1"/>
|
||||
<port type="output" prefix="lut6_out" size="1" lut_output_mask="0"/>
|
||||
<port type="sram" prefix="sram" size="64"/>
|
||||
<port type="sram" prefix="mode" size="2" mode_select="true" spice_model_name="sc_dff_compact" default_val="1"/>
|
||||
</spice_model>
|
||||
<spice_model type="lut" name="frac_lut4" prefix="frac_lut4" dump_structural_verilog="true">
|
||||
<port type="sram" prefix="mode" size="2" mode_select="true" circuit_model_name="sc_dff_compact" default_val="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="lut" name="frac_lut4" prefix="frac_lut4" dump_structural_verilog="true">
|
||||
<design_technology type="cmos" fracturable_lut="true"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<lut_input_inverter exist="on" spice_model_name="INV1X"/>
|
||||
<lut_intermediate_buffer exist="on" spice_model_name="buf1" location_map="-1-"/>
|
||||
<lut_input_buffer exist="on" spice_model_name="buf2"/>
|
||||
<pass_gate_logic spice_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="4" tri_state_map="--11" spice_model_name="OR2"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<lut_input_inverter exist="on" circuit_model_name="INV1X"/>
|
||||
<lut_intermediate_buffer exist="on" circuit_model_name="buf1" location_map="-1-"/>
|
||||
<lut_input_buffer exist="on" circuit_model_name="buf2"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="4" tri_state_map="--11" circuit_model_name="OR2"/>
|
||||
<port type="output" prefix="lut2_out" size="4" lut_frac_level="2" lut_output_mask="0,1,2,3"/>
|
||||
<port type="output" prefix="lut3_out" size="2" lut_frac_level="3" lut_output_mask="0,1"/>
|
||||
<port type="output" prefix="lut4_out" size="1" lut_output_mask="0"/>
|
||||
<port type="sram" prefix="sram" size="16"/>
|
||||
<port type="sram" prefix="mode" size="2" mode_select="true" spice_model_name="sc_dff_compact" default_val="1"/>
|
||||
</spice_model>
|
||||
<port type="sram" prefix="mode" size="2" mode_select="true" circuit_model_name="sc_dff_compact" default_val="1"/>
|
||||
</circuit_model>
|
||||
<!--Scan-chain DFF subckt ports should be defined as <D> <Q> <Qb> <CLK> <RESET> <SET> -->
|
||||
<spice_model type="sff" name="sc_dff_compact" prefix="scff" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="FFPATHKEYWORD">
|
||||
<circuit_model type="sff" name="sc_dff_compact" prefix="scff" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="FFPATHKEYWORD">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<pass_gate_logic spice_model_name="TGATEX1"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="pReset" size="1" is_global="true" default_val="0" is_reset="true" is_prog="true"/>
|
||||
<!-- <port type="input" prefix="pSet" size="1" is_global="true" default_val="0" is_set="true" is_prog="true"/> -->
|
||||
<port type="input" prefix="D" size="1"/>
|
||||
<port type="output" prefix="Q" size="1"/>
|
||||
<port type="output" prefix="Qb" size="1"/>
|
||||
<port type="clock" prefix="prog_clk" size="1" is_global="true" default_val="0" is_prog="true"/>
|
||||
</spice_model>
|
||||
<spice_model type="iopad" name="iopad" prefix="iopad" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/io.sp" verilog_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/io.v">
|
||||
</circuit_model>
|
||||
<circuit_model type="iopad" name="iopad" prefix="iopad" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/io.sp" verilog_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/io.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<pass_gate_logic spice_model_name="TGATEX1"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="inout" prefix="pad" size="1"/>
|
||||
<port type="sram" prefix="en" size="1" mode_select="true" spice_model_name="sc_dff_compact" default_val="1"/>
|
||||
<!--port type="sram" prefix="enb" size="1" mode_select="true" spice_model_name="sc_dff_compact" default_val="0"/-->
|
||||
<port type="sram" prefix="en" size="1" mode_select="true" circuit_model_name="sc_dff_compact" default_val="1"/>
|
||||
<!--port type="sram" prefix="enb" size="1" mode_select="true" circuit_model_name="sc_dff_compact" default_val="0"/-->
|
||||
<port type="input" prefix="outpad" size="1"/>
|
||||
<!-- <port type="input" prefix="zin" size="1" is_global="true" default_val="0" /> -->
|
||||
<port type="output" prefix="inpad" size="1"/>
|
||||
</spice_model>
|
||||
</circuit_model>
|
||||
<!-- Hard logic definition for heterogenous blocks -->
|
||||
<spice_model type="hard_logic" name="adder" prefix="adder" dump_explicit_port_map="true" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/adder.sp" verilog_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/adder.v">
|
||||
<circuit_model type="hard_logic" name="adder" prefix="adder" dump_explicit_port_map="true" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/adder.sp" verilog_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/adder.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<port type="input" prefix="a" size="1"/>
|
||||
<port type="input" prefix="b" size="1"/>
|
||||
<port type="input" prefix="cin" size="1"/>
|
||||
<port type="output" prefix="sumout" size="1"/>
|
||||
<port type="output" prefix="cout" size="1"/>
|
||||
</spice_model>
|
||||
<spice_model type="hard_logic" name="dpram" prefix="dpram" dump_explicit_port_map="true" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/spram.sp" verilog_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/memory_wrapper.v">
|
||||
</circuit_model>
|
||||
<circuit_model type="hard_logic" name="dpram" prefix="dpram" dump_explicit_port_map="true" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/spram.sp" verilog_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/memory_wrapper.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" spice_model_name="buf1"/>
|
||||
<output_buffer exist="on" spice_model_name="buf1"/>
|
||||
<input_buffer exist="on" circuit_model_name="buf1"/>
|
||||
<output_buffer exist="on" circuit_model_name="buf1"/>
|
||||
<port type="input" prefix="waddr" size="11"/>
|
||||
<port type="input" prefix="raddr" size="11"/>
|
||||
<port type="input" prefix="d_in" size="64"/>
|
||||
|
@ -432,17 +432,17 @@
|
|||
<port type="input" prefix="ren" size="1"/>
|
||||
<port type="output" prefix="d_out" size="64"/>
|
||||
<port type="clock" prefix="clk" size="1" is_global="true" default_val="0"/>
|
||||
</spice_model>
|
||||
<spice_model type="sram" name="sram6T" prefix="sram" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/sram.v">
|
||||
</circuit_model>
|
||||
<circuit_model type="sram" name="sram6T" prefix="sram" spice_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/VerilogNetlists/sram.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<output_buffer exist="on" spice_model_name="INV1X"/>
|
||||
<pass_gate_logic spice_model_name="TGATEX1"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="2"/>
|
||||
</spice_model>
|
||||
</circuit_model>
|
||||
|
||||
</module_spice_models>
|
||||
</module_circuit_models>
|
||||
</spice_settings>
|
||||
<device>
|
||||
<!-- VB & JL: Using Ian Kuon's transistor sizing and drive strength data for routing, at 40 nm. Ian used BPTM
|
||||
|
@ -469,9 +469,9 @@
|
|||
-->
|
||||
<area grid_logic_tile_area="0"/>
|
||||
<sram area="6">
|
||||
<verilog organization="scan-chain" spice_model_name="sc_dff_compact"/>
|
||||
<!--verilog organization="memory-bank" spice_model_name="sram6T_blwl"/-->
|
||||
<spice organization="standalone" spice_model_name="sram6T" />
|
||||
<verilog organization="scan-chain" circuit_model_name="sc_dff_compact"/>
|
||||
<!--verilog organization="memory-bank" circuit_model_name="sram6T_blwl"/-->
|
||||
<spice organization="standalone" circuit_model_name="sram6T" />
|
||||
</sram>
|
||||
<chan_width_distr>
|
||||
<io width="1.000000"/>
|
||||
|
@ -482,7 +482,7 @@
|
|||
</device>
|
||||
|
||||
<cblocks>
|
||||
<switch type="mux" name="cb_mux" R="0" Cin="596e-18" Cout="0" Tdel="77.93e-12" mux_trans_size="3" buf_size="63" spice_model_name="mux_2level_tapbuf" structure="multi-level" num_level="2">
|
||||
<switch type="mux" name="cb_mux" R="0" Cin="596e-18" Cout="0" Tdel="77.93e-12" mux_trans_size="3" buf_size="63" circuit_model_name="mux_2level_tapbuf" structure="multi-level" num_level="2">
|
||||
</switch>
|
||||
</cblocks>
|
||||
<switchlist>
|
||||
|
@ -499,25 +499,25 @@
|
|||
2.5x when looking up in Jeff's tables.
|
||||
Finally, we choose a switch delay (58 ps) that leads to length 4 wires having a delay equal to that of SIV of 126 ps.
|
||||
This also leads to the switch being 46% of the total wire delay, which is reasonable. -->
|
||||
<switch type="mux" name="sb_mux_L16" R="0" Cin="0" Cout="" Tdel="1.3e-9" mux_trans_size="3" buf_size="63" spice_model_name="mux_2level_tapbuf" structure="multi-level" num_level="2">
|
||||
<switch type="mux" name="sb_mux_L16" R="0" Cin="0" Cout="" Tdel="1.3e-9" mux_trans_size="3" buf_size="63" circuit_model_name="mux_2level_tapbuf" structure="multi-level" num_level="2">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L4" R="0" Cin="0" Cout="" Tdel="0.72e-9" mux_trans_size="3" buf_size="63" spice_model_name="mux_2level_tapbuf" structure="multi-level" num_level="2">
|
||||
<switch type="mux" name="sb_mux_L4" R="0" Cin="0" Cout="" Tdel="0.72e-9" mux_trans_size="3" buf_size="63" circuit_model_name="mux_2level_tapbuf" structure="multi-level" num_level="2">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L2" R="115" Cin="596e-18" Cout="0e-15" Tdel="47.2e-12" mux_trans_size="3" buf_size="63" spice_model_name="mux_1level_tapbuf" structure="multi-level" num_level="1">
|
||||
<switch type="mux" name="sb_mux_L2" R="115" Cin="596e-18" Cout="0e-15" Tdel="47.2e-12" mux_trans_size="3" buf_size="63" circuit_model_name="mux_1level_tapbuf" structure="multi-level" num_level="1">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L1" R="128" Cin="596e-18" Cout="0e-15" Tdel="47.2e-12" mux_trans_size="3" buf_size="63" spice_model_name="mux_1level_tapbuf" structure="multi-level" num_level="1">
|
||||
<switch type="mux" name="sb_mux_L1" R="128" Cin="596e-18" Cout="0e-15" Tdel="47.2e-12" mux_trans_size="3" buf_size="63" circuit_model_name="mux_1level_tapbuf" structure="multi-level" num_level="1">
|
||||
</switch>
|
||||
</switchlist>
|
||||
<segmentlist>
|
||||
<!--- VB & JL: using ITRS metal stack data, 96 nm half pitch wires, which are intermediate metal width/space.
|
||||
With the 96 nm half pitch, such wires would take 60 um of height, vs. a 90 nm high (approximated as square) Stratix IV tile so this seems
|
||||
reasonable. Using a tile length of 90 nm, corresponding to the length of a Stratix IV tile if it were square. -->
|
||||
<segment freq="0.13" length="16" type="unidir" Rmetal="101" Cmetal="22.5e-15" spice_model_name="chan_segment">
|
||||
<segment freq="0.13" length="16" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L16"/>
|
||||
<sb type="pattern">1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1</sb>
|
||||
<cb type="pattern">1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1</cb>
|
||||
</segment>
|
||||
<segment freq="0.87" length="4" type="unidir" Rmetal="101" Cmetal="22.5e-15" spice_model_name="chan_segment">
|
||||
<segment freq="0.87" length="4" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L4"/>
|
||||
<sb type="pattern">1 1 1 1 1</sb>
|
||||
<cb type="pattern">1 1 1 1</cb>
|
||||
|
@ -548,7 +548,7 @@
|
|||
|
||||
<!-- physical design description -->
|
||||
<mode name="io_phy" disabled_in_packing="true">
|
||||
<pb_type name="iopad" blif_model=".subckt io" num_pb="1" spice_model_name="iopad" mode_bits="1">
|
||||
<pb_type name="iopad" blif_model=".subckt io" num_pb="1" circuit_model_name="iopad" mode_bits="1">
|
||||
<input name="outpad" num_pins="1"/>
|
||||
<output name="inpad" num_pins="1"/>
|
||||
</pb_type>
|
||||
|
@ -631,7 +631,7 @@
|
|||
<input name="ren" num_pins="1"/>
|
||||
<output name="d_out" num_pins="64"/>
|
||||
<clock name="clk" num_pins="1"/>
|
||||
<pb_type name="dpram" num_pb="1" blif_model=".subckt dpram" spice_model_name="dpram">
|
||||
<pb_type name="dpram" num_pb="1" blif_model=".subckt dpram" circuit_model_name="dpram">
|
||||
<input name="waddr" num_pins="11" port_class="address"/>
|
||||
<input name="raddr" num_pins="11" port_class="address"/>
|
||||
<input name="d_in" num_pins="64" port_class="data_in"/>
|
||||
|
@ -729,7 +729,7 @@
|
|||
<clock name="clk" num_pins="1"/>
|
||||
|
||||
<mode name="fle_phy" disabled_in_packing="true">
|
||||
<!--pb_type name="fle_phy" num_pb="1" spice_model_name="fle_phy">
|
||||
<!--pb_type name="fle_phy" num_pb="1" circuit_model_name="fle_phy">
|
||||
<input name="in" num_pins="6"/>
|
||||
<input name="cin" num_pins="1"/>
|
||||
<output name="cout" num_pins="2"/>
|
||||
|
@ -741,13 +741,13 @@
|
|||
<input name="regchain" num_pins="1"/>
|
||||
<output name="out" num_pins="2"/>
|
||||
<output name="cout" num_pins="1"/>
|
||||
<pb_type name="frac_lut6" blif_model=".frac_lut6" mode_bits="11" num_pb="1" spice_model_name="frac_lut6">
|
||||
<pb_type name="frac_lut6" blif_model=".frac_lut6" mode_bits="11" num_pb="1" circuit_model_name="frac_lut6">
|
||||
<input name="in" num_pins="6"/>
|
||||
<output name="lut4_out" num_pins="4"/>
|
||||
<output name="lut5_out" num_pins="2"/>
|
||||
<output name="lut6_out" num_pins="1"/>
|
||||
</pb_type>
|
||||
<pb_type name="adder_phy" blif_model=".subckt adder" num_pb="2" spice_model_name="adder">
|
||||
<pb_type name="adder_phy" blif_model=".subckt adder" num_pb="2" circuit_model_name="adder">
|
||||
<input name="a" num_pins="1"/>
|
||||
<input name="b" num_pins="1"/>
|
||||
<input name="cin" num_pins="1"/>
|
||||
|
@ -769,7 +769,7 @@
|
|||
</mux>
|
||||
</interconnect>
|
||||
</pb_type>
|
||||
<pb_type name="ff_phy" blif_model=".latch" num_pb="2" class="flipflop" spice_model_name="static_dff">
|
||||
<pb_type name="ff_phy" blif_model=".latch" num_pb="2" class="flipflop" circuit_model_name="static_dff">
|
||||
<input name="D" num_pins="1" port_class="D"/>
|
||||
<output name="Q" num_pins="1" port_class="Q"/>
|
||||
<clock name="clk" num_pins="1" port_class="clock"/>
|
||||
|
@ -1064,31 +1064,31 @@
|
|||
Since all our outputs LUT outputs go to a BLE output, and have a delay of
|
||||
25 ps to do so, we subtract 25 ps from the 100 ps delay of a feedback
|
||||
to get the part that should be marked on the crossbar. -->
|
||||
<complete name="crossbar0" input="clb.I2 clb.I3 fle[9:0].out" output="fle[9:0].in[0]" spice_model_name="mux_2level">
|
||||
<complete name="crossbar0" input="clb.I2 clb.I3 fle[9:0].out" output="fle[9:0].in[0]" circuit_model_name="mux_2level">
|
||||
<delay_constant max="90.2e-12" in_port="clb.I2 clb.I3" out_port="fle[9:0].in[0]" />
|
||||
<delay_constant max="70.2e-12" in_port="fle[9:0].out" out_port="fle[9:0].in[0]" />
|
||||
</complete>
|
||||
<complete name="crossbar1" input="clb.I1 clb.I2 fle[9:0].out" output="fle[9:0].in[1]" spice_model_name="mux_2level">
|
||||
<complete name="crossbar1" input="clb.I1 clb.I2 fle[9:0].out" output="fle[9:0].in[1]" circuit_model_name="mux_2level">
|
||||
<delay_constant max="90.2e-12" in_port="clb.I1 clb.I2" out_port="fle[9:0].in[1]" />
|
||||
<delay_constant max="70.2e-12" in_port="fle[9:0].out" out_port="fle[9:0].in[1]" />
|
||||
</complete>
|
||||
<complete name="crossbar2" input="clb.I0 clb.I1 fle[9:0].out" output="fle[9:0].in[2]" spice_model_name="mux_2level">
|
||||
<complete name="crossbar2" input="clb.I0 clb.I1 fle[9:0].out" output="fle[9:0].in[2]" circuit_model_name="mux_2level">
|
||||
<delay_constant max="90.2e-12" in_port="clb.I0 clb.I1" out_port="fle[9:0].in[2]" />
|
||||
<delay_constant max="70.2e-12" in_port="fle[9:0].out" out_port="fle[9:0].in[2]" />
|
||||
</complete>
|
||||
<complete name="crossbar3" input="clb.I1 clb.I3 fle[9:0].out" output="fle[9:0].in[3]" spice_model_name="mux_2level">
|
||||
<complete name="crossbar3" input="clb.I1 clb.I3 fle[9:0].out" output="fle[9:0].in[3]" circuit_model_name="mux_2level">
|
||||
<delay_constant max="90.2e-12" in_port="clb.I1 clb.I3" out_port="fle[9:0].in[3]" />
|
||||
<delay_constant max="70.2e-12" in_port="fle[9:0].out" out_port="fle[9:0].in[3]" />
|
||||
</complete>
|
||||
<complete name="crossbar4" input="clb.I0 clb.I2 fle[9:0].out" output="fle[9:0].in[4]" spice_model_name="mux_2level">
|
||||
<complete name="crossbar4" input="clb.I0 clb.I2 fle[9:0].out" output="fle[9:0].in[4]" circuit_model_name="mux_2level">
|
||||
<delay_constant max="90.2e-12" in_port="clb.I0 clb.I2" out_port="fle[9:0].in[4]" />
|
||||
<delay_constant max="70.2e-12" in_port="fle[9:0].out" out_port="fle[9:0].in[4]" />
|
||||
</complete>
|
||||
<complete name="crossbar5" input="clb.I0 clb.I3 fle[9:0].out" output="fle[9:0].in[5]" spice_model_name="mux_2level">
|
||||
<complete name="crossbar5" input="clb.I0 clb.I3 fle[9:0].out" output="fle[9:0].in[5]" circuit_model_name="mux_2level">
|
||||
</complete>
|
||||
<complete name="clks" input="clb.clk" output="fle[9:0].clk">
|
||||
</complete>
|
||||
<complete name="carry_in" input="clb.cin clb.cin_trick fle[9:0].out" output="fle[0:0].cin" spice_model_name="mux_2level">
|
||||
<complete name="carry_in" input="clb.cin clb.cin_trick fle[9:0].out" output="fle[0:0].cin" circuit_model_name="mux_2level">
|
||||
<!-- Put all inter-block carry chain delay on this one edge -->
|
||||
<delay_constant max="0.16e-9" in_port="clb.cin clb.cin_trick" out_port="fle[0:0].cin"/>
|
||||
<!--pack_pattern name="chain" in_port="clb.cin" out_port="fle[0:0].cin"/-->
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
.subckt adder a=reg_a_2 b=reg_b_2 cin=cint02 cout=cint03 sumout=n03
|
||||
.subckt adder a=reg_a_3 b=reg_b_3 cin=cint03 cout=cint04 sumout=n04
|
||||
.subckt adder a=ref0 b=ref0 cin=cint04 cout=unconn sumout=n05
|
||||
|
||||
.subckt shift D=d0 clk=clk Q=reg0
|
||||
.subckt shift D=reg0 clk=clk Q=reg1
|
||||
.subckt shift D=reg1 clk=clk Q=reg2
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
# Standard Configuration Example
|
||||
[dir_path]
|
||||
script_base = OPENFPGAPATHKEYWORD/fpga_flow/scripts/
|
||||
benchmark_dir = OPENFPGAPATHKEYWORD/fpga_flow/benchmarks/Verilog/MCNC
|
||||
yosys_path = OPENFPGAPATHKEYWORD/yosys/yosys
|
||||
odin2_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/odin2.exe
|
||||
cirkit_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/cirkit
|
||||
abc_path = OPENFPGAPATHKEYWORD/yosys/yosys-abc
|
||||
abc_mccl_path = OPENFPGAPATHKEYWORD/abc_with_bb_support/abc
|
||||
abc_with_bb_support_path = OPENFPGAPATHKEYWORD/abc_with_bb_support/abc
|
||||
mpack1_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/mpack1
|
||||
m2net_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/m2net
|
||||
mpack2_path = OPENFPGAPATHKEYWORD/fpga_flow/not_used_atm/mpack2
|
||||
vpr_path = OPENFPGAPATHKEYWORD/vpr7_x2p/vpr/vpr
|
||||
rpt_dir = OPENFPGAPATHKEYWORD/fpga_flow/results_tutorial
|
||||
ace_path = OPENFPGAPATHKEYWORD/ace2/ace
|
||||
script_base = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/scripts/
|
||||
benchmark_dir = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/benchmarks/Verilog/MCNC
|
||||
yosys_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/yosys/yosys
|
||||
odin2_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/not_used_atm/odin2.exe
|
||||
cirkit_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/not_used_atm/cirkit
|
||||
abc_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/yosys/yosys-abc
|
||||
abc_mccl_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/abc_with_bb_support/abc
|
||||
abc_with_bb_support_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/abc_with_bb_support/abc
|
||||
mpack1_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/not_used_atm/mpack1
|
||||
m2net_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/not_used_atm/m2net
|
||||
mpack2_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/not_used_atm/mpack2
|
||||
vpr_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/vpr7_x2p/vpr/vpr
|
||||
rpt_dir = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/results_tutorial
|
||||
ace_path = /research/ece/lnis/USERS/tang/github/OpenFPGA/ace2/ace
|
||||
|
||||
[flow_conf]
|
||||
flow_type = yosys_vpr #standard|mpack2|mpack1|vtr_standard|vtr|yosys_vpr
|
||||
vpr_arch = OPENFPGAPATHKEYWORD/fpga_flow/arch/generated/k6_N10_sram_chain_HC.xml
|
||||
vpr_arch = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/arch/generated/k6_N10_sram_chain_HC.xml
|
||||
mpack1_abc_stdlib = DRLC7T_SiNWFET.genlib # Use relative path under ABC folder is OK
|
||||
m2net_conf = OPENFPGAPATHKEYWORD/fpga_flow/m2net_conf/m2x2_SiNWFET.conf
|
||||
m2net_conf = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/m2net_conf/m2x2_SiNWFET.conf
|
||||
mpack2_arch = K6_pattern7_I24.arch
|
||||
power_tech_xml = OPENFPGAPATHKEYWORD/fpga_flow/tech/PTM_45nm/45nm.xml # Use relative path under VPR folder is OK
|
||||
power_tech_xml = /research/ece/lnis/USERS/tang/github/OpenFPGA/fpga_flow/tech/PTM_45nm/45nm.xml # Use relative path under VPR folder is OK
|
||||
|
||||
[csv_tags]
|
||||
mpack1_tags = Global mapping efficiency:|efficiency:|occupancy wo buf:|efficiency wo buf:
|
||||
|
|
|
@ -27,8 +27,7 @@ perl rewrite_path_in_file.pl -i $config_file # Replace OPENFPGAPATHKEYWORD in th
|
|||
perl rewrite_path_in_file.pl -i $architecture_template -o $architecture_generated # Replace OPENFPGAPATHKEYWORD in the architecture file
|
||||
perl rewrite_path_in_file.pl -i $architecture_generated -k $ff_keyword $ff_path # Set the ff path in the architecture file
|
||||
echo "perl rewrite_path_in_file.pl -i $ff_path -k $dir_keyword $verilog_path"
|
||||
perl rewrite_path_in_file.pl -i $ff_template_path -o $ff_path -k $dir_keyword $verilog_path # Set the define path in the ff.v file
|
||||
|
||||
perl rewrite_path_in_file.pl -i ${ff_template_path} -o ${ff_path} -k $dir_keyword $verilog_path # Set the define path in the ff.v file
|
||||
|
||||
# SRAM FPGA
|
||||
# TT case
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
#add_subdirectory(libarchfpga)
|
||||
add_subdirectory(libvtrutil)
|
||||
add_subdirectory(liblog)
|
||||
add_subdirectory(external)
|
||||
#add_subdirectory(external)
|
||||
#add_subdirectory(libpugiutil)
|
||||
#add_subdirectory(libeasygl)
|
||||
#add_subdirectory(librtlnumber)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
add_subdirectory(libini)
|
|
@ -0,0 +1,13 @@
|
|||
cmake_minimum_required(VERSION 2.8.12)
|
||||
|
||||
project(libini)
|
||||
|
||||
file(GLOB_RECURSE LIB_HEADERS src/*.h)
|
||||
files_to_dirs(LIB_HEADERS LIB_INCLUDE_DIRS)
|
||||
|
||||
#Create the library
|
||||
add_library(libini STATIC
|
||||
${LIB_HEADERS})
|
||||
|
||||
target_include_directories(libini PUBLIC ${LIB_INCLUDE_DIRS})
|
||||
set_target_properties(libini PROPERTIES PREFIX "" LINKER_LANGUAGE CXX)
|
|
@ -0,0 +1,755 @@
|
|||
/*
|
||||
* The MIT License (MIT)
|
||||
* Copyright (c) 2018 Danijel Durakovic
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
* of the Software, and to permit persons to whom the Software is furnished to do
|
||||
* so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// /mINI/ v0.9.7
|
||||
// An INI file reader and writer for the modern age.
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// A tiny utility library for manipulating INI files with a straightforward
|
||||
// API and a minimal footprint. It conforms to the (somewhat) standard INI
|
||||
// format - sections and keys are case insensitive and all leading and
|
||||
// trailing whitespace is ignored. Comments are lines that begin with a
|
||||
// semicolon. Trailing comments are allowed on section lines.
|
||||
//
|
||||
// Files are read on demand, upon which data is kept in memory and the file
|
||||
// is closed. This utility supports lazy writing, which only writes changes
|
||||
// and updates to a file and preserves custom formatting and comments. A lazy
|
||||
// write invoked by a write() call will read the output file, find what
|
||||
// changes have been made and update the file accordingly. If you only need to
|
||||
// generate files, use generate() instead. Section and key order is preserved
|
||||
// on read, write and insert.
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// /* BASIC USAGE EXAMPLE: */
|
||||
//
|
||||
// /* read from file */
|
||||
// mINI::INIFile file("myfile.ini");
|
||||
// mINI::INIStructure ini;
|
||||
// file.read(ini);
|
||||
//
|
||||
// /* read value; gets a reference to actual value in the structure.
|
||||
// if key or section don't exist, a new empty value will be created */
|
||||
// std::string& value = ini["section"]["key"];
|
||||
//
|
||||
// /* read value safely; gets a copy of value in the structure.
|
||||
// does not alter the structure */
|
||||
// std::string value = ini.get("section").get("key");
|
||||
//
|
||||
// /* set or update values */
|
||||
// ini["section"]["key"] = "value";
|
||||
//
|
||||
// /* set multiple values */
|
||||
// ini["section2"].set({
|
||||
// {"key1", "value1"},
|
||||
// {"key2", "value2"}
|
||||
// });
|
||||
//
|
||||
// /* write updates back to file, preserving comments and formatting */
|
||||
// file.write(ini);
|
||||
//
|
||||
// /* or generate a file (overwrites the original) */
|
||||
// file.generate(ini);
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Long live the INI file!!!
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef MINI_INI_H_
|
||||
#define MINI_INI_H_
|
||||
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <algorithm>
|
||||
#include <utility>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <fstream>
|
||||
#include <sys/stat.h>
|
||||
|
||||
namespace mINI
|
||||
{
|
||||
namespace INIStringUtil
|
||||
{
|
||||
const std::string whitespaceDelimiters = " \t\n\r\f\v";
|
||||
inline void trim(std::string &str)
|
||||
{
|
||||
str.erase(str.find_last_not_of(whitespaceDelimiters) + 1);
|
||||
str.erase(0, str.find_first_not_of(whitespaceDelimiters));
|
||||
}
|
||||
#ifndef MINI_CASE_SENSITIVE
|
||||
inline void toLower(std::string &str)
|
||||
{
|
||||
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
|
||||
}
|
||||
#endif
|
||||
inline void replace(std::string &str, std::string const &a, std::string const &b)
|
||||
{
|
||||
if (!a.empty())
|
||||
{
|
||||
std::size_t pos = 0;
|
||||
while ((pos = str.find(a, pos)) != std::string::npos)
|
||||
{
|
||||
str.replace(pos, a.size(), b);
|
||||
pos += b.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef _WIN32
|
||||
const std::string endl = "\r\n";
|
||||
#else
|
||||
const std::string endl = "\n";
|
||||
#endif
|
||||
} // namespace INIStringUtil
|
||||
|
||||
template <typename T>
|
||||
class INIMap
|
||||
{
|
||||
private:
|
||||
using T_DataIndexMap = std::unordered_map<std::string, std::size_t>;
|
||||
using T_DataItem = std::pair<std::string, T>;
|
||||
using T_DataContainer = std::vector<T_DataItem>;
|
||||
using T_MultiArgs = typename std::vector<std::pair<std::string, T>>;
|
||||
|
||||
T_DataIndexMap dataIndexMap;
|
||||
T_DataContainer data;
|
||||
|
||||
inline std::size_t setEmpty(std::string &key)
|
||||
{
|
||||
std::size_t index = data.size();
|
||||
dataIndexMap[key] = index;
|
||||
data.emplace_back(key, T());
|
||||
return index;
|
||||
}
|
||||
|
||||
public:
|
||||
using const_iterator = typename T_DataContainer::const_iterator;
|
||||
|
||||
INIMap() {}
|
||||
|
||||
INIMap(INIMap const &other)
|
||||
{
|
||||
std::size_t data_size = other.data.size();
|
||||
for (std::size_t i = 0; i < data_size; ++i)
|
||||
{
|
||||
auto const &key = other.data[i].first;
|
||||
auto const &obj = other.data[i].second;
|
||||
data.emplace_back(key, obj);
|
||||
}
|
||||
dataIndexMap = T_DataIndexMap(other.dataIndexMap);
|
||||
}
|
||||
|
||||
T &operator[](std::string key)
|
||||
{
|
||||
INIStringUtil::trim(key);
|
||||
#ifndef MINI_CASE_SENSITIVE
|
||||
INIStringUtil::toLower(key);
|
||||
#endif
|
||||
auto it = dataIndexMap.find(key);
|
||||
bool hasIt = (it != dataIndexMap.end());
|
||||
std::size_t index = (hasIt) ? it->second : setEmpty(key);
|
||||
return data[index].second;
|
||||
}
|
||||
T get(std::string key) const
|
||||
{
|
||||
INIStringUtil::trim(key);
|
||||
#ifndef MINI_CASE_SENSITIVE
|
||||
INIStringUtil::toLower(key);
|
||||
#endif
|
||||
auto it = dataIndexMap.find(key);
|
||||
if (it == dataIndexMap.end())
|
||||
{
|
||||
return T();
|
||||
}
|
||||
return T(data[it->second].second);
|
||||
}
|
||||
bool has(std::string key) const
|
||||
{
|
||||
INIStringUtil::trim(key);
|
||||
#ifndef MINI_CASE_SENSITIVE
|
||||
INIStringUtil::toLower(key);
|
||||
#endif
|
||||
return (dataIndexMap.count(key) == 1);
|
||||
}
|
||||
void set(std::string key, T obj)
|
||||
{
|
||||
INIStringUtil::trim(key);
|
||||
#ifndef MINI_CASE_SENSITIVE
|
||||
INIStringUtil::toLower(key);
|
||||
#endif
|
||||
auto it = dataIndexMap.find(key);
|
||||
if (it != dataIndexMap.end())
|
||||
{
|
||||
data[it->second].second = obj;
|
||||
}
|
||||
else
|
||||
{
|
||||
dataIndexMap[key] = data.size();
|
||||
data.emplace_back(key, obj);
|
||||
}
|
||||
}
|
||||
void set(T_MultiArgs const &multiArgs)
|
||||
{
|
||||
for (auto const &it : multiArgs)
|
||||
{
|
||||
auto const &key = it.first;
|
||||
auto const &obj = it.second;
|
||||
set(key, obj);
|
||||
}
|
||||
}
|
||||
bool remove(std::string key)
|
||||
{
|
||||
INIStringUtil::trim(key);
|
||||
#ifndef MINI_CASE_SENSITIVE
|
||||
INIStringUtil::toLower(key);
|
||||
#endif
|
||||
auto it = dataIndexMap.find(key);
|
||||
if (it != dataIndexMap.end())
|
||||
{
|
||||
std::size_t index = it->second;
|
||||
data.erase(data.begin() + index);
|
||||
dataIndexMap.erase(it);
|
||||
for (auto &it2 : dataIndexMap)
|
||||
{
|
||||
auto &vi = it2.second;
|
||||
if (vi > index)
|
||||
{
|
||||
vi--;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
void clear()
|
||||
{
|
||||
data.clear();
|
||||
dataIndexMap.clear();
|
||||
}
|
||||
std::size_t size() const
|
||||
{
|
||||
return data.size();
|
||||
}
|
||||
const_iterator begin() const { return data.begin(); }
|
||||
const_iterator end() const { return data.end(); }
|
||||
};
|
||||
|
||||
using INIStructure = INIMap<INIMap<std::string>>;
|
||||
|
||||
namespace INIParser
|
||||
{
|
||||
using T_ParseValues = std::pair<std::string, std::string>;
|
||||
|
||||
enum class PDataType : char
|
||||
{
|
||||
PDATA_NONE,
|
||||
PDATA_COMMENT,
|
||||
PDATA_SECTION,
|
||||
PDATA_KEYVALUE,
|
||||
PDATA_UNKNOWN
|
||||
};
|
||||
|
||||
inline PDataType parseLine(std::string line, T_ParseValues &parseData)
|
||||
{
|
||||
parseData.first.clear();
|
||||
parseData.second.clear();
|
||||
INIStringUtil::trim(line);
|
||||
if (line.empty())
|
||||
{
|
||||
return PDataType::PDATA_NONE;
|
||||
}
|
||||
char firstCharacter = line[0];
|
||||
if (firstCharacter == ';')
|
||||
{
|
||||
return PDataType::PDATA_COMMENT;
|
||||
}
|
||||
if (firstCharacter == '[')
|
||||
{
|
||||
auto commentAt = line.find_first_of(';');
|
||||
if (commentAt != std::string::npos)
|
||||
{
|
||||
line = line.substr(0, commentAt);
|
||||
}
|
||||
auto closingBracketAt = line.find_last_of(']');
|
||||
if (closingBracketAt != std::string::npos)
|
||||
{
|
||||
auto section = line.substr(1, closingBracketAt - 1);
|
||||
INIStringUtil::trim(section);
|
||||
parseData.first = section;
|
||||
return PDataType::PDATA_SECTION;
|
||||
}
|
||||
}
|
||||
auto lineNorm = line;
|
||||
INIStringUtil::replace(lineNorm, "\\=", " ");
|
||||
auto equalsAt = lineNorm.find_first_of('=');
|
||||
if (equalsAt != std::string::npos)
|
||||
{
|
||||
auto key = line.substr(0, equalsAt);
|
||||
INIStringUtil::trim(key);
|
||||
INIStringUtil::replace(key, "\\=", "=");
|
||||
auto value = line.substr(equalsAt + 1);
|
||||
INIStringUtil::trim(value);
|
||||
parseData.first = key;
|
||||
parseData.second = value;
|
||||
return PDataType::PDATA_KEYVALUE;
|
||||
}
|
||||
return PDataType::PDATA_UNKNOWN;
|
||||
}
|
||||
} // namespace INIParser
|
||||
|
||||
class INIReader
|
||||
{
|
||||
public:
|
||||
using T_LineData = std::vector<std::string>;
|
||||
using T_LineDataPtr = std::shared_ptr<T_LineData>;
|
||||
|
||||
private:
|
||||
std::ifstream fileReadStream;
|
||||
T_LineDataPtr lineData;
|
||||
|
||||
T_LineData readFile()
|
||||
{
|
||||
std::string fileContents;
|
||||
fileReadStream.seekg(0, std::ios::end);
|
||||
fileContents.resize(fileReadStream.tellg());
|
||||
fileReadStream.seekg(0, std::ios::beg);
|
||||
std::size_t fileSize = fileContents.size();
|
||||
fileReadStream.read(&fileContents[0], fileSize);
|
||||
fileReadStream.close();
|
||||
T_LineData output;
|
||||
if (fileSize == 0)
|
||||
{
|
||||
return output;
|
||||
}
|
||||
std::string buffer;
|
||||
buffer.reserve(50);
|
||||
for (std::size_t i = 0; i < fileSize; ++i)
|
||||
{
|
||||
char &c = fileContents[i];
|
||||
if (c == '\n')
|
||||
{
|
||||
output.emplace_back(buffer);
|
||||
buffer.clear();
|
||||
continue;
|
||||
}
|
||||
if (c != '\0' && c != '\r')
|
||||
{
|
||||
buffer += c;
|
||||
}
|
||||
}
|
||||
output.emplace_back(buffer);
|
||||
return output;
|
||||
}
|
||||
|
||||
public:
|
||||
INIReader(std::string const &filename, bool keepLineData = false)
|
||||
{
|
||||
fileReadStream.open(filename, std::ios::in | std::ios::binary);
|
||||
if (keepLineData)
|
||||
{
|
||||
lineData = std::make_shared<T_LineData>();
|
||||
}
|
||||
}
|
||||
~INIReader() {}
|
||||
|
||||
bool operator>>(INIStructure &data)
|
||||
{
|
||||
if (!fileReadStream.is_open())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
T_LineData fileLines = readFile();
|
||||
std::string section;
|
||||
bool inSection = false;
|
||||
INIParser::T_ParseValues parseData;
|
||||
for (auto const &line : fileLines)
|
||||
{
|
||||
auto parseResult = INIParser::parseLine(line, parseData);
|
||||
if (parseResult == INIParser::PDataType::PDATA_SECTION)
|
||||
{
|
||||
inSection = true;
|
||||
data[section = parseData.first];
|
||||
}
|
||||
else if (inSection && parseResult == INIParser::PDataType::PDATA_KEYVALUE)
|
||||
{
|
||||
auto const &key = parseData.first;
|
||||
auto const &value = parseData.second;
|
||||
data[section][key] = value;
|
||||
}
|
||||
if (lineData && parseResult != INIParser::PDataType::PDATA_UNKNOWN)
|
||||
{
|
||||
if (parseResult == INIParser::PDataType::PDATA_KEYVALUE && !inSection)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
lineData->emplace_back(line);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
T_LineDataPtr getLines()
|
||||
{
|
||||
return lineData;
|
||||
}
|
||||
};
|
||||
|
||||
class INIGenerator
|
||||
{
|
||||
private:
|
||||
std::ofstream fileWriteStream;
|
||||
|
||||
public:
|
||||
bool prettyPrint = false;
|
||||
|
||||
INIGenerator(std::string const &filename)
|
||||
{
|
||||
fileWriteStream.open(filename, std::ios::out | std::ios::binary);
|
||||
}
|
||||
~INIGenerator() {}
|
||||
|
||||
bool operator<<(INIStructure const &data)
|
||||
{
|
||||
if (!fileWriteStream.is_open())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!data.size())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
auto it = data.begin();
|
||||
for (;;)
|
||||
{
|
||||
auto const §ion = it->first;
|
||||
auto const &collection = it->second;
|
||||
fileWriteStream
|
||||
<< "["
|
||||
<< section
|
||||
<< "]";
|
||||
if (collection.size())
|
||||
{
|
||||
fileWriteStream << INIStringUtil::endl;
|
||||
auto it2 = collection.begin();
|
||||
for (;;)
|
||||
{
|
||||
auto key = it2->first;
|
||||
INIStringUtil::replace(key, "=", "\\=");
|
||||
auto value = it2->second;
|
||||
INIStringUtil::trim(value);
|
||||
fileWriteStream
|
||||
<< key
|
||||
<< ((prettyPrint) ? " = " : "=")
|
||||
<< value;
|
||||
if (++it2 == collection.end())
|
||||
{
|
||||
break;
|
||||
}
|
||||
fileWriteStream << INIStringUtil::endl;
|
||||
}
|
||||
}
|
||||
if (++it == data.end())
|
||||
{
|
||||
break;
|
||||
}
|
||||
fileWriteStream << INIStringUtil::endl;
|
||||
if (prettyPrint)
|
||||
{
|
||||
fileWriteStream << INIStringUtil::endl;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class INIWriter
|
||||
{
|
||||
private:
|
||||
using T_LineData = std::vector<std::string>;
|
||||
using T_LineDataPtr = std::shared_ptr<T_LineData>;
|
||||
|
||||
std::string filename;
|
||||
|
||||
T_LineData getLazyOutput(T_LineDataPtr const &lineData, INIStructure &data, INIStructure &original)
|
||||
{
|
||||
T_LineData output;
|
||||
INIParser::T_ParseValues parseData;
|
||||
std::string sectionCurrent;
|
||||
bool parsingSection = false;
|
||||
bool continueToNextSection = false;
|
||||
bool discardNextEmpty = false;
|
||||
bool writeNewKeys = false;
|
||||
std::size_t lastKeyLine = 0;
|
||||
for (auto line = lineData->begin(); line != lineData->end(); ++line)
|
||||
{
|
||||
if (!writeNewKeys)
|
||||
{
|
||||
auto parseResult = INIParser::parseLine(*line, parseData);
|
||||
if (parseResult == INIParser::PDataType::PDATA_SECTION)
|
||||
{
|
||||
if (parsingSection)
|
||||
{
|
||||
writeNewKeys = true;
|
||||
parsingSection = false;
|
||||
--line;
|
||||
continue;
|
||||
}
|
||||
sectionCurrent = parseData.first;
|
||||
if (data.has(sectionCurrent))
|
||||
{
|
||||
parsingSection = true;
|
||||
continueToNextSection = false;
|
||||
discardNextEmpty = false;
|
||||
output.emplace_back(*line);
|
||||
lastKeyLine = output.size();
|
||||
}
|
||||
else
|
||||
{
|
||||
continueToNextSection = true;
|
||||
discardNextEmpty = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (parseResult == INIParser::PDataType::PDATA_KEYVALUE)
|
||||
{
|
||||
if (continueToNextSection)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (data.has(sectionCurrent))
|
||||
{
|
||||
auto &collection = data[sectionCurrent];
|
||||
auto const &key = parseData.first;
|
||||
auto const &value = parseData.second;
|
||||
if (collection.has(key))
|
||||
{
|
||||
auto outputValue = collection[key];
|
||||
if (value == outputValue)
|
||||
{
|
||||
output.emplace_back(*line);
|
||||
}
|
||||
else
|
||||
{
|
||||
INIStringUtil::trim(outputValue);
|
||||
auto lineNorm = *line;
|
||||
INIStringUtil::replace(lineNorm, "\\=", " ");
|
||||
auto equalsAt = lineNorm.find_first_of('=');
|
||||
auto valueAt = lineNorm.find_first_not_of(
|
||||
INIStringUtil::whitespaceDelimiters,
|
||||
equalsAt + 1);
|
||||
std::string outputLine = line->substr(0, valueAt);
|
||||
if (prettyPrint && equalsAt + 1 == valueAt)
|
||||
{
|
||||
outputLine += " ";
|
||||
}
|
||||
outputLine += outputValue;
|
||||
output.emplace_back(outputLine);
|
||||
}
|
||||
lastKeyLine = output.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (discardNextEmpty && line->empty())
|
||||
{
|
||||
discardNextEmpty = false;
|
||||
}
|
||||
else if (parseResult != INIParser::PDataType::PDATA_UNKNOWN)
|
||||
{
|
||||
output.emplace_back(*line);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (writeNewKeys || std::next(line) == lineData->end())
|
||||
{
|
||||
T_LineData linesToAdd;
|
||||
if (data.has(sectionCurrent) && original.has(sectionCurrent))
|
||||
{
|
||||
auto const &collection = data[sectionCurrent];
|
||||
auto const &collectionOriginal = original[sectionCurrent];
|
||||
for (auto const &it : collection)
|
||||
{
|
||||
auto key = it.first;
|
||||
if (collectionOriginal.has(key))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
auto value = it.second;
|
||||
INIStringUtil::replace(key, "=", "\\=");
|
||||
INIStringUtil::trim(value);
|
||||
linesToAdd.emplace_back(
|
||||
key + ((prettyPrint) ? " = " : "=") + value);
|
||||
}
|
||||
}
|
||||
if (!linesToAdd.empty())
|
||||
{
|
||||
output.insert(
|
||||
output.begin() + lastKeyLine,
|
||||
linesToAdd.begin(),
|
||||
linesToAdd.end());
|
||||
}
|
||||
if (writeNewKeys)
|
||||
{
|
||||
writeNewKeys = false;
|
||||
--line;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (auto const &it : data)
|
||||
{
|
||||
auto const §ion = it.first;
|
||||
if (original.has(section))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (prettyPrint && output.size() > 0 && !output.back().empty())
|
||||
{
|
||||
output.emplace_back();
|
||||
}
|
||||
output.emplace_back("[" + section + "]");
|
||||
auto const &collection = it.second;
|
||||
for (auto const &it2 : collection)
|
||||
{
|
||||
auto key = it2.first;
|
||||
auto value = it2.second;
|
||||
INIStringUtil::replace(key, "=", "\\=");
|
||||
INIStringUtil::trim(value);
|
||||
output.emplace_back(
|
||||
key + ((prettyPrint) ? " = " : "=") + value);
|
||||
}
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
public:
|
||||
bool prettyPrint = false;
|
||||
|
||||
INIWriter(std::string const &file_name)
|
||||
: filename(file_name)
|
||||
{
|
||||
}
|
||||
~INIWriter() {}
|
||||
|
||||
bool operator<<(INIStructure &data)
|
||||
{
|
||||
struct stat buf;
|
||||
bool fileExists = (stat(filename.c_str(), &buf) == 0);
|
||||
if (!fileExists)
|
||||
{
|
||||
INIGenerator generator(filename);
|
||||
generator.prettyPrint = prettyPrint;
|
||||
return generator << data;
|
||||
}
|
||||
INIStructure originalData;
|
||||
T_LineDataPtr lineData;
|
||||
bool readSuccess = false;
|
||||
{
|
||||
INIReader reader(filename, true);
|
||||
if ((readSuccess = reader >> originalData))
|
||||
{
|
||||
lineData = reader.getLines();
|
||||
}
|
||||
}
|
||||
if (!readSuccess)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
T_LineData output = getLazyOutput(lineData, data, originalData);
|
||||
std::ofstream fileWriteStream(filename, std::ios::out | std::ios::binary);
|
||||
if (fileWriteStream.is_open())
|
||||
{
|
||||
if (output.size())
|
||||
{
|
||||
auto line = output.begin();
|
||||
for (;;)
|
||||
{
|
||||
fileWriteStream << *line;
|
||||
if (++line == output.end())
|
||||
{
|
||||
break;
|
||||
}
|
||||
fileWriteStream << INIStringUtil::endl;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class INIFile
|
||||
{
|
||||
private:
|
||||
std::string filename;
|
||||
|
||||
public:
|
||||
INIFile(std::string const &file_name)
|
||||
: filename(file_name)
|
||||
{
|
||||
}
|
||||
|
||||
~INIFile() {}
|
||||
|
||||
bool read(INIStructure &data) const
|
||||
{
|
||||
if (data.size())
|
||||
{
|
||||
data.clear();
|
||||
}
|
||||
if (filename.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
INIReader reader(filename);
|
||||
return reader >> data;
|
||||
}
|
||||
bool generate(INIStructure const &data, bool pretty = false) const
|
||||
{
|
||||
if (filename.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
INIGenerator generator(filename);
|
||||
generator.prettyPrint = pretty;
|
||||
return generator << data;
|
||||
}
|
||||
bool write(INIStructure &data, bool pretty = false) const
|
||||
{
|
||||
if (filename.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
INIWriter writer(filename);
|
||||
writer.prettyPrint = pretty;
|
||||
return writer << data;
|
||||
}
|
||||
};
|
||||
} // namespace mINI
|
||||
|
||||
#endif // MINI_INI_H_
|
|
@ -49,6 +49,7 @@ template<class T>
|
|||
class Point {
|
||||
public: //Constructors
|
||||
Point(T x_val, T y_val);
|
||||
Point();
|
||||
|
||||
public: //Accessors
|
||||
|
||||
|
@ -59,6 +60,10 @@ class Point {
|
|||
friend bool operator== <>(Point<T> lhs, Point<T> rhs);
|
||||
friend bool operator!= <>(Point<T> lhs, Point<T> rhs);
|
||||
friend bool operator< <>(Point<T> lhs, Point<T> rhs);
|
||||
public: //Mutators
|
||||
void set_x(T x_val);
|
||||
void set_y(T y_val);
|
||||
void swap();
|
||||
private:
|
||||
T x_;
|
||||
T y_;
|
||||
|
|
|
@ -10,6 +10,12 @@ namespace vtr {
|
|||
//pass
|
||||
}
|
||||
|
||||
template<class T>
|
||||
Point<T>::Point() {
|
||||
//pass
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
T Point<T>::x() const {
|
||||
return x_;
|
||||
|
@ -36,6 +42,22 @@ namespace vtr {
|
|||
return std::make_tuple(lhs.x(), lhs.y()) < std::make_tuple(rhs.x(), rhs.y());
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void Point<T>::set_x(T x_val) {
|
||||
x_ = x_val;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void Point<T>::set_y(T y_val) {
|
||||
y_ = y_val;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void Point<T>::swap() {
|
||||
std::swap(x_, y_);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Rect
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
#!/bin/bash
|
||||
#title : openfpga.sh
|
||||
#description : This script provides shortcut commands <bash functions>
|
||||
# for several simple operations in OpenFPGA project
|
||||
#author : Ganesh Gore <ganesh.gore@utah.edu>
|
||||
#==============================================================================
|
||||
|
||||
export OPENFPGA_PATH="$(pwd)"
|
||||
export OPENFPGA_SCRIPT_PATH="$(pwd)/openfpga_flow/scripts"
|
||||
export OPENFPGA_TASK_PATH="$(pwd)/openfpga_flow/tasks"
|
||||
if [ -z $PYTHON_EXEC ]; then export PYTHON_EXEC="python3"; fi
|
||||
|
||||
# This function checks the path and
|
||||
# raises warning if the command is not executing
|
||||
# inside current OpendFPGA folder
|
||||
check_execution_path (){
|
||||
if [[ $1 != *"${OPENFPGA_PATH}"* ]]; then
|
||||
echo -e "\e[33mCommand is not executed from configured OPNEFPGA directory\e[0m"
|
||||
fi
|
||||
}
|
||||
|
||||
run-task () {
|
||||
$PYTHON_EXEC $OPENFPGA_SCRIPT_PATH/run_fpga_task.py "$@"
|
||||
}
|
||||
|
||||
run-modelsim () {
|
||||
$PYTHON_EXEC $OPENFPGA_SCRIPT_PATH/run_modelsim.py "$@"
|
||||
}
|
||||
|
||||
run-flow () {
|
||||
$PYTHON_EXEC $OPENFPGA_SCRIPT_PATH/run_fpga_flow.py "$@"
|
||||
}
|
||||
|
||||
# lists all the configure task in task directory
|
||||
list-tasks () {
|
||||
check_execution_path "$(pwd)"
|
||||
ls -tdalh ${OPENFPGA_TASK_PATH}/* | awk '{printf("%-4s | %s %-3s | ", $5, $6, $7) ;system("basename " $9)}'
|
||||
}
|
||||
|
||||
# Switch directory to root of OpenFPGA
|
||||
goto-root () {
|
||||
cd $OPENFPGA_PATH
|
||||
}
|
||||
|
||||
# Changes directory to task directory [goto_task <task_name> <run_num[default 0]>]
|
||||
goto-task () {
|
||||
if [ -z $1 ]; then
|
||||
echo "requires task name goto_task <task_name> <run_num[default 0]>"
|
||||
return
|
||||
fi
|
||||
goto_path=$OPENFPGA_TASK_PATH/$1
|
||||
run_num=""
|
||||
if [ ! -d $goto_path ]; then echo "Task directory not found"; return; fi
|
||||
if [[ "$2" =~ '^[0-9]+$' ]] ; then
|
||||
if ! [[ $2 == '0' ]] ; then run_num="$(printf run%03d $2)"; else run_num="latest"; fi
|
||||
if [ ! -d "$goto_path/$run_num" ]; then run_num="latest"; fi
|
||||
fi
|
||||
if [ ! -d $goto_path/$run_num ]; then
|
||||
echo "\e[33mTask run directory not found -" $goto_path/$run_num "\e[0m"
|
||||
else
|
||||
echo "Switching current dirctory to" $goto_path/$run_num
|
||||
cd $goto_path/$run_num
|
||||
fi
|
||||
}
|
||||
|
||||
# Clears enviroment variables and fucntions
|
||||
unset-openfpga (){
|
||||
unset -v OPENFPGA_PATH
|
||||
unset -f list-tasks run-task run-flow goto-task goto-root >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Allow autocompletion of task
|
||||
if [[ $(ps -p $$ -oargs=) == *"zsh"* ]]; then
|
||||
autoload -U +X bashcompinit; bashcompinit;
|
||||
fi
|
||||
TaskList=$(ls -tdalh ${OPENFPGA_TASK_PATH}/* | awk '{system("basename " $9)}' | awk '{printf("%s ",$1)}')
|
||||
complete -W "${TaskList}" goto-task
|
||||
complete -W "${TaskList}" run-task
|
||||
complete -W "${TaskList}" run-modelsim
|
|
@ -0,0 +1 @@
|
|||
local_test_folder/
|
|
@ -0,0 +1,30 @@
|
|||
* Sub Circuit
|
||||
* 1-Bit Full-Adder circuit netlist
|
||||
.subckt adder inA inB Cin Cout Sumout svdd sgnd size=1
|
||||
X01 nd1 inA svdd svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X02 nd1 inB svdd svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X03 nd2 inB nd1 svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X04 nco inA nd2 svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X05 nco Cin nd1 svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X06 nco Cin nd3 sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X07 nd3 inA sgnd sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X08 nd3 inB sgnd sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X09 nco inA nd4 sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X10 nd4 inB sgnd sgnd vpr_nmos W='size*wn' L='nl'
|
||||
Xo1 nco Cout svdd sgnd inv size='size'
|
||||
X11 nd5 inA svdd svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X12 nd5 inB svdd svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X13 nd5 Cin svdd svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X14 nd6 inA nd5 svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X15 nd7 inB nd6 svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X16 ndS Cin nd7 svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X23 nds nco nd5 svdd vpr_pmos W='size*beta*wp' L='pl'
|
||||
X24 nds nco nd8 sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X17 nd8 inA sgnd sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X18 nd8 inB sgnd sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X19 nd8 Cin sgnd sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X20 ndS Cin nd9 sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X21 nd9 inA n10 sgnd vpr_nmos W='size*wn' L='nl'
|
||||
X22 n10 inB sgnd sgnd vpr_nmos W='size*wn' L='nl'
|
||||
Xo2 nds Sumout svdd sgnd inv size='size'
|
||||
.eom
|
|
@ -0,0 +1,25 @@
|
|||
* Sub Circuits
|
||||
*
|
||||
* Static D Flip-flop
|
||||
.subckt static_dff set rst clk D Q svdd sgnd size=1
|
||||
* Input inverter
|
||||
Xinv_clk clk clk_b svdd sgnd inv size=size
|
||||
Xinv_set set set_b svdd sgnd inv size=size
|
||||
Xinv_rst rst rst_b svdd sgnd inv size=size
|
||||
Xinv_d D s1_n1 svdd sgnd inv size=size
|
||||
Xcpt0 s1_n1 s1_n2 clk_b clk svdd sgnd cpt nmos_size='size' pmos_size='size*beta'
|
||||
Xset0 s1_n2 set_b svdd svdd vpr_pmos L=pl W='size*wp'
|
||||
Xrst0 s1_n2 rst sgnd sgnd vpr_nmos L=nl W='size*wn'
|
||||
Xinv1 s1_n2 s1_q svdd sgnd inv size=size
|
||||
Xinv2 s1_q s1_n3 svdd sgnd inv size=size
|
||||
Xcpt1 s1_n3 s1_n2 clk clk_b svdd sgnd cpt nmos_size='size' pmos_size='size*beta'
|
||||
* Stage 2
|
||||
R3 s1_q s2_n1 0
|
||||
Xcpt2 s2_n1 s2_n2 clk clk_b svdd sgnd cpt nmos_size='size' pmos_size='size*beta'
|
||||
Xrst1 s2_n2 rst_b svdd svdd vpr_pmos L=pl W='size*wp'
|
||||
Xset1 s2_n2 set sgnd sgnd vpr_nmos L=nl W='size*wn'
|
||||
Xinv4 s2_n2 Qb svdd sgnd inv size=size
|
||||
Xinv5 Qb s2_n3 svdd sgnd inv size=size
|
||||
Xcpt3 s2_n3 s2_n2 clk_b clk svdd sgnd cpt nmos_size='size' pmos_size='size*beta'
|
||||
Xinv_out Qb Q svdd sgnd inv size=size
|
||||
.eom static_dff
|
|
@ -0,0 +1,68 @@
|
|||
Testbench for D-type Flip-flop with set and reset
|
||||
*********************************
|
||||
* HSPICE Netlist *
|
||||
* Author: Xifan TANG *
|
||||
* Organization: EPFL,LSI *
|
||||
*********************************
|
||||
*
|
||||
* Use Standard CMOS Technology
|
||||
****** Include Technology Library ******
|
||||
.lib '/home/xitang/tangxifan-eda-tools/branches/subvt_fpga/process/tsmc40nm/toplevel_crn45gs_2d5_v1d1_shrink0d9_embedded_usage.l' TOP_TT
|
||||
****** Transistor Parameters ******
|
||||
.param beta=2
|
||||
.param nl=4e-08
|
||||
.param wn=1.4e-07
|
||||
.param pl=4e-08
|
||||
.param wp=1.4e-07
|
||||
|
||||
****** Include subckt netlists: NMOS and PMOS *****
|
||||
.include '/home/xitang/tangxifan-eda-tools/branches/vpr7_rram/vpr/spice_test/subckt/nmos_pmos.sp'
|
||||
****** Include subckt netlists: Inverters, Buffers *****
|
||||
.include '/home/xitang/tangxifan-eda-tools/branches/vpr7_rram/vpr/spice_test/subckt/inv_buf_trans_gate.sp'
|
||||
|
||||
.include '/home/xitang/tangxifan-eda-tools/branches/vpr7_rram/vpr/SpiceNetlists/ff.sp'
|
||||
|
||||
.param clk_freq = 1e9
|
||||
*Temperature
|
||||
.temp 25
|
||||
*Global nodes
|
||||
.global vdd gnd
|
||||
*Print node capacitance
|
||||
.option captab
|
||||
*Print waveforms
|
||||
.option POST
|
||||
* Parameters for measurements
|
||||
.param clk2d=3e-09
|
||||
.param clk_pwl=3e-09
|
||||
.param clk_pwh=1.5e-08
|
||||
.param slew=1e-11
|
||||
.param thold=3e-09
|
||||
.param vsp=0.9
|
||||
* Parameters for Measuring Slew
|
||||
.param slew_upper_threshold_pct_rise=0.9
|
||||
.param slew_lower_threshold_pct_rise=0.1
|
||||
.param slew_upper_threshold_pct_fall=0.1
|
||||
.param slew_lower_threshold_pct_fall=0.9
|
||||
* Parameters for Measuring Delay
|
||||
.param input_threshold_pct_rise=0.5
|
||||
.param input_threshold_pct_fall=0.5
|
||||
.param output_threshold_pct_rise=0.5
|
||||
.param output_threshold_pct_fall=0.5
|
||||
|
||||
Xdff[0] set rst clk d q vdd gnd static_dff
|
||||
|
||||
Vsupply vdd gnd 'vsp'
|
||||
*Stimulates
|
||||
vset set gnd 0
|
||||
vrst rst gnd 0
|
||||
vclk_in clk gnd pulse (0 vsp '0.5/clk_freq' '0.025/clk_freq' '0.025/clk_freq' '0.4875/clk_freq' '1/clk_freq')
|
||||
* Measuring Clk2Q, Setup Time and Hold Time
|
||||
vdata D gnd pulse (0 vsp '0.25/clk_freq' '0.025/clk_freq' '0.025/clk_freq' '2*0.4875/clk_freq' '2/clk_freq')
|
||||
|
||||
*Simulation
|
||||
.tran 1e-15 '10/clk_freq'
|
||||
.meas tran slew_q trig v(Q) val='slew_lower_threshold_pct_fall*vsp' fall=1 td='2*clk_pwl+clk_pwh+2*slew'
|
||||
+ targ v(Q) val='slew_upper_threshold_pct_fall*vsp' fall=1 td='2*clk_pwl+clk_pwh+2*slew'
|
||||
.meas tran clk2q trig v(CLK) val='input_threshold_pct_fall*vsp' rise=2
|
||||
+ targ v(Q) val='output_threshold_pct_fall*vsp' fall=1 td='2*clk_pwl+clk_pwh+2*slew'
|
||||
.end TSPC Flip-flop with set and reset
|
|
@ -0,0 +1,16 @@
|
|||
* Sub Circuit
|
||||
* OR2 gate
|
||||
.subckt or2 in0 in1 out svdd sgnd size=1
|
||||
Xp0 ntwk_n0 in0 svdd svdd vpr_pmos L=pl W='size*beta*wp'
|
||||
Xp1 ntwk_n0 in1 ntwk_n1 svdd vpr_pmos L=pl W='size*beta*wp'
|
||||
Xn0 ntwk_n1 in0 sgnd sgnd vpr_nmos L=nl W='wn*size'
|
||||
Xn1 ntwk_n1 in1 sgnd sgnd vpr_nmos L=nl W='wn*size'
|
||||
.eom
|
||||
|
||||
* AND2 gate
|
||||
.subckt and2 in0 in1 out svdd sgnd size=1
|
||||
Xp0 ntwk_n0 in0 svdd svdd vpr_pmos L=pl W='wp*size*beta'
|
||||
Xp1 ntwk_n0 in1 svdd svdd vpr_pmos L=pl W='wp*size*beta'
|
||||
Xn0 ntwk_n0 in0 ntwk_n1 sgnd vpr_nmos L=nl W='wn*size'
|
||||
Xn1 ntwk_n1 in1 sgnd sgnd vpr_nmos L=nl W='wn*size'
|
||||
.eom
|
|
@ -0,0 +1,11 @@
|
|||
* Sub Circuit
|
||||
* IO pads
|
||||
* When direction = 0, pad <= dout
|
||||
* When direction = 1, pad => din
|
||||
.subckt iopad zin dout din pad direction direction_inv svdd sgnd
|
||||
Xbuf0 pad din_inter svdd sgnd buf size=2
|
||||
Xbuf1 dout pad_inter svdd sgnd buf size=2
|
||||
*Xinv0 direction direction_inv svdd sgnd inv size=1
|
||||
Xcpt0 din_inter din direction direction_inv svdd sgnd cpt
|
||||
Xcpt1 pad_inter pad direction_inv direction svdd sgnd cpt
|
||||
.eom iopad
|
|
@ -0,0 +1,10 @@
|
|||
* Sub Circuit
|
||||
* SRAM
|
||||
* Input to force write the stored bit
|
||||
.subckt sram6T in out outb svdd sgnd size=1
|
||||
Xinv0 loop_out loop_outb svdd sgnd inv size=size
|
||||
Xinv1 loop_outb loop_out svdd sgnd inv size=size
|
||||
Xout_pt loop_out out svdd sgnd svdd sgnd cpt nmos_size='size' pmos_size='size*beta'
|
||||
Xoutb_pt loop_outb outb svdd sgnd svdd sgnd cpt
|
||||
Rin in loop_out 0
|
||||
.eom sram6T
|
|
@ -0,0 +1,19 @@
|
|||
//------ Module: sram6T_blwl -----//
|
||||
//------ Verilog file: sram.v -----//
|
||||
//------ Author: Xifan TANG -----//
|
||||
module adder(
|
||||
input [0:0] a, // Input a
|
||||
input [0:0] b, // Input b
|
||||
input [0:0] cin, // Input cin
|
||||
output [0:0] cout, // Output carry
|
||||
output [0:0] sumout // Output sum
|
||||
);
|
||||
//wire[1:0] int_calc;
|
||||
|
||||
//assign int_calc = a + b + cin;
|
||||
//assign cout = int_calc[1];
|
||||
//assign sumout = int_calc[0];
|
||||
assign sumout = a ^ b ^ cin;
|
||||
assign cout = (a & b) | (a & cin) | (b & cin);
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
//-----------------------------------------------------
|
||||
// Design Name : dual_port_ram_32x512
|
||||
// File Name : dpram.v
|
||||
// Function : Dual port RAM 32x512
|
||||
// Coder : Aurelien Alacchi
|
||||
//-----------------------------------------------------
|
||||
|
||||
module dual_port_ram_32x512 (
|
||||
input clk,
|
||||
input wen,
|
||||
input ren,
|
||||
input[0:8] waddr,
|
||||
input[0:8] raddr,
|
||||
input[0:31] d_in,
|
||||
output[0:31] d_out );
|
||||
|
||||
dual_port_sram_32x512 memory_0 (
|
||||
.wclk (clk),
|
||||
.wen (wen),
|
||||
.waddr (waddr),
|
||||
.data_in (d_in),
|
||||
.rclk (clk),
|
||||
.ren (ren),
|
||||
.raddr (raddr),
|
||||
.d_out (d_out) );
|
||||
|
||||
endmodule
|
||||
|
||||
module dual_port_sram_32x512 (
|
||||
input wclk,
|
||||
input wen,
|
||||
input[0:8] waddr,
|
||||
input[0:31] data_in,
|
||||
input rclk,
|
||||
input ren,
|
||||
input[0:8] raddr,
|
||||
output[0:31] d_out );
|
||||
|
||||
reg[0:31] ram[0:511];
|
||||
reg[0:31] internal;
|
||||
|
||||
assign d_out = internal;
|
||||
|
||||
always @(posedge wclk) begin
|
||||
if(wen) begin
|
||||
ram[waddr] <= data_in;
|
||||
end
|
||||
end
|
||||
|
||||
always @(posedge rclk) begin
|
||||
if(ren) begin
|
||||
internal <= ram[raddr];
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
|
@ -0,0 +1,114 @@
|
|||
//-----------------------------------------------------
|
||||
// Design Name : static_dff
|
||||
// File Name : ff.v
|
||||
// Function : D flip-flop with asyn reset and set
|
||||
// Coder : Xifan TANG
|
||||
//-----------------------------------------------------
|
||||
//------ Include defines: preproc flags -----
|
||||
// `include "./SRC/fpga_defines.v"
|
||||
module static_dff (
|
||||
/* Global ports go first */
|
||||
input set, // set input
|
||||
input reset, // Reset input
|
||||
input clk, // Clock Input
|
||||
/* Local ports follow */
|
||||
input D, // Data Input
|
||||
output Q // Q output
|
||||
);
|
||||
//------------Internal Variables--------
|
||||
reg q_reg;
|
||||
|
||||
//-------------Code Starts Here---------
|
||||
always @ ( posedge clk or posedge reset or posedge set)
|
||||
if (reset) begin
|
||||
q_reg <= 1'b0;
|
||||
end else if (set) begin
|
||||
q_reg <= 1'b1;
|
||||
end else begin
|
||||
q_reg <= D;
|
||||
end
|
||||
|
||||
// Wire q_reg to Q
|
||||
assign Q = q_reg;
|
||||
|
||||
endmodule //End Of Module static_dff
|
||||
|
||||
//-----------------------------------------------------
|
||||
// Design Name : scan_chain_dff
|
||||
// File Name : ff.v
|
||||
// Function : D flip-flop with asyn reset and set
|
||||
// Coder : Xifan TANG
|
||||
//-----------------------------------------------------
|
||||
module sc_dff (
|
||||
/* Global ports go first */
|
||||
input set, // set input
|
||||
input reset, // Reset input
|
||||
input clk, // Clock Input
|
||||
/* Local ports follow */
|
||||
input D, // Data Input
|
||||
output Q, // Q output
|
||||
output Qb // Q output
|
||||
);
|
||||
//------------Internal Variables--------
|
||||
reg q_reg;
|
||||
|
||||
//-------------Code Starts Here---------
|
||||
always @ ( posedge clk or posedge reset or posedge set)
|
||||
if (reset) begin
|
||||
q_reg <= 1'b0;
|
||||
end else if (set) begin
|
||||
q_reg <= 1'b1;
|
||||
end else begin
|
||||
q_reg <= D;
|
||||
end
|
||||
|
||||
// Wire q_reg to Q
|
||||
assign Q = q_reg;
|
||||
assign Qb = ~Q;
|
||||
|
||||
endmodule //End Of Module static_dff
|
||||
|
||||
//-----------------------------------------------------
|
||||
// Design Name : scan_chain_dff compact
|
||||
// File Name : ff.v
|
||||
// Function : Scan-chain D flip-flop without reset and set //Modified to fit Edouards architecture
|
||||
// Coder : Xifan TANG
|
||||
//-----------------------------------------------------
|
||||
module sc_dff_compact (
|
||||
/* Global ports go first */
|
||||
input reset, // Reset input
|
||||
//input set, // set input
|
||||
input clk, // Clock Input
|
||||
/* Local ports follow */
|
||||
input D, // Data Input
|
||||
output Q, // Q output
|
||||
output Qb // Q output
|
||||
);
|
||||
//------------Internal Variables--------
|
||||
reg q_reg;
|
||||
|
||||
//-------------Code Starts Here---------
|
||||
always @ ( posedge clk or posedge reset /*or posedge set*/)
|
||||
if (reset) begin
|
||||
q_reg <= 1'b0;
|
||||
//end else if (set) begin
|
||||
// q_reg <= 1'b1;
|
||||
end else begin
|
||||
q_reg <= D;
|
||||
end
|
||||
/*
|
||||
// Wire q_reg to Q
|
||||
assign Q = q_reg;
|
||||
assign Qb = ~Q;
|
||||
*/
|
||||
|
||||
`ifndef ENABLE_FORMAL_VERIFICATION
|
||||
// Wire q_reg to Q
|
||||
assign Q = q_reg;
|
||||
assign Qb = ~q_reg;
|
||||
`else
|
||||
assign Q = 1'bZ;
|
||||
assign Qb = !Q;
|
||||
`endif
|
||||
|
||||
endmodule //End Of Module static_dff
|
|
@ -0,0 +1,64 @@
|
|||
//-----------------------------------------------------
|
||||
// Design Name : testbench for static_dff
|
||||
// File Name : ff_tb.v
|
||||
// Function : D flip-flop with asyn reset and set
|
||||
// Coder : Xifan TANG
|
||||
//-----------------------------------------------------
|
||||
//----- Time scale: simulation time step and accuracy -----
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module static_dff_tb;
|
||||
// voltage sources
|
||||
wire set;
|
||||
reg reset;
|
||||
reg clk;
|
||||
reg D;
|
||||
wire Q;
|
||||
// Parameters
|
||||
parameter clk_period = 2; // [ns] a full clock period
|
||||
parameter half_clk_period = clk_period / 2; // [ns] a half clock period
|
||||
parameter d_period = 2 * clk_period; // [ns] two clock period
|
||||
parameter reset_period = 8 * clk_period; // [ns] a full clock period
|
||||
|
||||
// Unit Under Test
|
||||
static_dff U0 (set, reset, clk, D, Q);
|
||||
|
||||
// Voltage stimuli
|
||||
// Reset : enable in the first clock cycle and then disabled
|
||||
initial
|
||||
begin
|
||||
reset = 1'b1;
|
||||
#clk_period reset = ~reset;
|
||||
end
|
||||
always
|
||||
begin
|
||||
#reset_period reset = ~reset;
|
||||
end
|
||||
|
||||
// set : alway disabled
|
||||
assign set = 1'b0;
|
||||
|
||||
// clk: clock generator
|
||||
initial
|
||||
begin
|
||||
clk = 1'b0;
|
||||
end
|
||||
always
|
||||
begin
|
||||
#half_clk_period clk = ~clk;
|
||||
end
|
||||
|
||||
// D: input, flip every two clock cycles
|
||||
initial
|
||||
begin
|
||||
D = 1'b0;
|
||||
end
|
||||
always
|
||||
begin
|
||||
#d_period D = ~D;
|
||||
end
|
||||
|
||||
// Q is an output
|
||||
//
|
||||
|
||||
endmodule
|
|
@ -0,0 +1,16 @@
|
|||
//------ Module: iopad -----//
|
||||
//------ Verilog file: io.v -----//
|
||||
//------ Author: Xifan TANG -----//
|
||||
module iopad(
|
||||
//input zin, // Set output to be Z
|
||||
input outpad, // Data output
|
||||
output inpad, // Data input
|
||||
inout pad, // bi-directional pad
|
||||
input en // enable signal to control direction of iopad
|
||||
//input direction_inv // enable signal to control direction of iopad
|
||||
);
|
||||
//----- when direction enabled, the signal is propagated from pad to din
|
||||
assign inpad = en ? pad : 1'bz;
|
||||
//----- when direction is disabled, the signal is propagated from dout to pad
|
||||
assign pad = en ? 1'bz : outpad;
|
||||
endmodule
|
|
@ -0,0 +1,199 @@
|
|||
//-----------------------------------------------------
|
||||
// Design Name : testbench for logic blocks
|
||||
// File Name : lb_tb.v
|
||||
// Function : Configurable logic block
|
||||
// Coder : Xifan TANG
|
||||
//-----------------------------------------------------
|
||||
//----- Time scale: simulation time step and accuracy -----
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module lb_tb;
|
||||
// Parameters
|
||||
parameter SIZE_IN = 40; //---- MUX input size
|
||||
parameter SIZE_OUT = 10; //---- MUX input size
|
||||
parameter SIZE_RESERV_BLWL = 49 + 1; //---- MUX input size
|
||||
parameter SIZE_BLWL = 1019 - 310 + 1; //---- MUX input size
|
||||
parameter prog_clk_period = 1; // [ns] half clock period
|
||||
parameter op_clk_period = 1; // [ns] half clock period
|
||||
parameter config_period = 2 * prog_clk_period; // [ns] One full clock period
|
||||
parameter operating_period = SIZE_IN * 2 * op_clk_period; // [ns] One full clock period
|
||||
|
||||
// Ports
|
||||
wire [0:SIZE_IN-1] lb_in;
|
||||
wire [0:SIZE_IN-1] lb_out;
|
||||
wire lb_clk;
|
||||
wire [0:SIZE_RESERV_BLWL-1] reserv_bl;
|
||||
wire [0:SIZE_RESERV_BLWL-1] reserv_wl;
|
||||
wire [0:SIZE_BLWL-1] bl;
|
||||
wire [0:SIZE_BLWL-1] wl;
|
||||
wire prog_EN;
|
||||
wire prog_ENb;
|
||||
wire zin;
|
||||
wire nequalize;
|
||||
wire read;
|
||||
wire clk;
|
||||
wire Reset;
|
||||
wire Set;
|
||||
// Clocks
|
||||
wire prog_clock;
|
||||
wire op_clock;
|
||||
|
||||
// Registered port
|
||||
reg [0:SIZE_IN-1] lb_in_reg;
|
||||
reg [0:SIZE_RESERV_BLWL-1] reserv_bl_reg;
|
||||
reg [0:SIZE_RESERV_BLWL-1] reserv_wl_reg;
|
||||
reg [0:SIZE_BLWL-1] bl_reg;
|
||||
reg [0:SIZE_BLWL-1] wl_reg;
|
||||
reg prog_clock_reg;
|
||||
reg op_clock_reg;
|
||||
|
||||
// Config done signal;
|
||||
reg config_done;
|
||||
// Temp register for rotating shift
|
||||
reg temp;
|
||||
|
||||
// Unit under test
|
||||
grid_1__1_ U0 (
|
||||
zin,
|
||||
nequalize,
|
||||
read,
|
||||
clk,
|
||||
Reset,
|
||||
Set,
|
||||
prog_ENb,
|
||||
prog_EN,
|
||||
// Top inputs
|
||||
lb_in[0], lb_in[4], lb_in[8], lb_in[12], lb_in[16],
|
||||
lb_in[20], lb_in[24], lb_in[28], lb_in[32], lb_in[36],
|
||||
// Top outputs
|
||||
lb_out[0], lb_out[4], lb_out[8],
|
||||
// Right inputs
|
||||
lb_in[1], lb_in[5], lb_in[9], lb_in[13], lb_in[17],
|
||||
lb_in[21], lb_in[25], lb_in[29], lb_in[33], lb_in[37],
|
||||
// Right outputs
|
||||
lb_out[1], lb_out[5], lb_out[9],
|
||||
// Bottom inputs
|
||||
lb_in[2], lb_in[6], lb_in[10], lb_in[14], lb_in[18],
|
||||
lb_in[22], lb_in[26], lb_in[30], lb_in[34], lb_in[38],
|
||||
// Bottom outputs
|
||||
lb_out[2], lb_out[6],
|
||||
// Bottom inputs
|
||||
lb_clk,
|
||||
// left inputs
|
||||
lb_in[3], lb_in[7], lb_in[11], lb_in[15], lb_in[19],
|
||||
lb_in[23], lb_in[27], lb_in[31], lb_in[35], lb_in[39],
|
||||
// left outputs
|
||||
lb_out[3], lb_out[7],
|
||||
reserv_bl, reserv_wl,
|
||||
bl, wl
|
||||
);
|
||||
|
||||
// Task: assign BL and WL values
|
||||
task prog_lb_blwl;
|
||||
begin
|
||||
@(posedge prog_clock);
|
||||
// Rotate left shift
|
||||
temp = reserv_bl_reg[SIZE_RESERV_BLWL-1];
|
||||
//bl_reg = bl_reg >> 1;
|
||||
reserv_bl_reg[1:SIZE_RESERV_BLWL-1] = reserv_bl_reg[0:SIZE_RESERV_BLWL-2];
|
||||
reserv_bl_reg[0] = temp;
|
||||
end
|
||||
endtask
|
||||
|
||||
// Task: assign inputs
|
||||
task op_lb_in;
|
||||
begin
|
||||
@(posedge op_clock);
|
||||
temp = lb_in_reg[SIZE_IN-1];
|
||||
lb_in_reg[1:SIZE_IN-1] = lb_in_reg[0:SIZE_IN-2];
|
||||
lb_in_reg[0] = temp;
|
||||
end
|
||||
endtask
|
||||
|
||||
// Configuration done signal
|
||||
initial
|
||||
begin
|
||||
config_done = 1'b0;
|
||||
end
|
||||
// Enabled during config_period, Disabled during op_period
|
||||
always
|
||||
begin
|
||||
#config_period config_done = ~config_done;
|
||||
#operating_period config_done = ~config_done;
|
||||
end
|
||||
|
||||
// Programming clocks
|
||||
initial
|
||||
begin
|
||||
prog_clock_reg = 1'b0;
|
||||
end
|
||||
always
|
||||
begin
|
||||
#prog_clk_period prog_clock_reg = ~prog_clock_reg;
|
||||
end
|
||||
|
||||
// Operating clocks
|
||||
initial
|
||||
begin
|
||||
op_clock_reg = 1'b0;
|
||||
end
|
||||
always
|
||||
begin
|
||||
#op_clk_period op_clock_reg = ~op_clock_reg;
|
||||
end
|
||||
|
||||
// Programming and Operating clocks
|
||||
assign prog_clock = prog_clock_reg & (~config_done);
|
||||
assign op_clock = op_clock_reg & config_done;
|
||||
|
||||
// Programming Enable signals
|
||||
assign prog_EN = prog_clock & (~config_done);
|
||||
assign prog_ENb = ~prog_EN;
|
||||
|
||||
// Programming phase: BL/WL
|
||||
initial
|
||||
begin
|
||||
// Initialize BL/WL registers
|
||||
reserv_bl_reg = {SIZE_RESERV_BLWL {1'b0}};
|
||||
reserv_bl_reg[0] = 1'b1;
|
||||
reserv_wl_reg = {SIZE_RESERV_BLWL {1'b0}};
|
||||
// Reserved BL/WL
|
||||
bl_reg = {SIZE_BLWL {1'b0}};
|
||||
wl_reg = {SIZE_BLWL {1'b1}};
|
||||
//wl_reg[SIZE_BLWL-1] = 1'b1;
|
||||
end
|
||||
always wait (~config_done) // Only invoked when config_done is 0
|
||||
begin
|
||||
// Propagate input 1 to the output
|
||||
// BL[0] = 1, WL[4] = 1
|
||||
prog_lb_blwl;
|
||||
end
|
||||
|
||||
// Operating Phase
|
||||
initial
|
||||
begin
|
||||
lb_in_reg = {SIZE_IN {1'b0}};
|
||||
lb_in_reg[0] = 1'b1; // Last bit is 1 initially
|
||||
end
|
||||
always wait (config_done) // Only invoked when config_done is 1
|
||||
begin
|
||||
/* Update inputs */
|
||||
op_lb_in;
|
||||
end
|
||||
|
||||
// Wire ports
|
||||
assign lb_in = lb_in_reg;
|
||||
assign reserv_bl = reserv_bl_reg;
|
||||
assign reserv_wl = reserv_wl_reg;
|
||||
assign bl = bl_reg;
|
||||
assign wl = wl_reg;
|
||||
|
||||
// Constant ports
|
||||
assign zin = 1'b0;
|
||||
assign nequalize = 1'b1;
|
||||
assign read = 1'b0;
|
||||
assign clk = op_clock;
|
||||
assign Reset = ~config_done;
|
||||
assign Set = 1'b0;
|
||||
|
||||
endmodule
|
|
@ -0,0 +1,15 @@
|
|||
//-----------------------------------------------------
|
||||
// Design Name : lut6
|
||||
// File Name : lut6.v
|
||||
// Function : 6-input Look Up Table
|
||||
// Coder : Xifan TANG
|
||||
//-----------------------------------------------------
|
||||
module lut6 (
|
||||
input [5:0] in,
|
||||
output out,
|
||||
input [63:0] sram,
|
||||
input [63:0] sram_inv);
|
||||
|
||||
assign out = sram[in];
|
||||
|
||||
endmodule
|
|
@ -0,0 +1,53 @@
|
|||
//-----------------------------------------------------
|
||||
// Design Name : MUX2
|
||||
// File Name : mux2.v
|
||||
// Function : Standard cell (static gate) implementation
|
||||
// of 2-input multiplexers
|
||||
// Coder : Xifan Tang
|
||||
//-----------------------------------------------------
|
||||
|
||||
module MUX2(
|
||||
input A, // Data input 0
|
||||
input B, // Data input 1
|
||||
input S0, // Select port
|
||||
output Y // Data output
|
||||
);
|
||||
|
||||
assign Y = S0 ? B : A;
|
||||
|
||||
// Note:
|
||||
// MUX2 appears will appear in LUTs, routing multiplexers,
|
||||
// being a component in combinational loops
|
||||
// To help convergence in simulation
|
||||
// i.e., to avoid the X (undetermined) signals,
|
||||
// the following timing constraints and signal initialization
|
||||
// has to be added!
|
||||
|
||||
`ifdef ENABLE_TIMING
|
||||
// ------ BEGIN Pin-to-pin Timing constraints -----
|
||||
specify
|
||||
(A => Y) = (0.001, 0.001);
|
||||
(B => Y) = (0.001, 0.001);
|
||||
(S0 => Y) = (0.001, 0.001);
|
||||
endspecify
|
||||
// ------ END Pin-to-pin Timing constraints -----
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_SIGNAL_INITIALIZATION
|
||||
// ------ BEGIN driver initialization -----
|
||||
initial begin
|
||||
`ifdef ENABLE_FORMAL_VERIFICATION
|
||||
$deposit(A, 1'b0);
|
||||
$deposit(B, 1'b0);
|
||||
$deposit(S0, 1'b0);
|
||||
`else
|
||||
$deposit(A, $random);
|
||||
$deposit(B, $random);
|
||||
$deposit(S0, $random);
|
||||
`endif
|
||||
|
||||
end
|
||||
// ------ END driver initialization -----
|
||||
`endif
|
||||
|
||||
endmodule
|
|
@ -0,0 +1,85 @@
|
|||
//-----------------------------------------------------
|
||||
// Design Name : testbench for 2-level SRAM MUX
|
||||
// File Name : mux_tb.v
|
||||
// Function : SRAM-based 2-level MUXes
|
||||
// Coder : Xifan TANG
|
||||
//-----------------------------------------------------
|
||||
//----- Time scale: simulation time step and accuracy -----
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module cmos_mux2level_tb;
|
||||
// Parameters
|
||||
parameter SIZE_OF_MUX = 50; //---- MUX input size
|
||||
parameter SIZE_OF_SRAM = 16; //---- MUX input size
|
||||
parameter op_clk_period = 1; // [ns] half clock period
|
||||
parameter operating_period = SIZE_OF_MUX * 2 * op_clk_period; // [ns] One full clock period
|
||||
|
||||
// voltage sources
|
||||
wire [0:SIZE_OF_MUX-1] in;
|
||||
wire out;
|
||||
wire [0:SIZE_OF_SRAM-1] sram;
|
||||
wire [0:SIZE_OF_SRAM-1] sram_inv;
|
||||
// clocks
|
||||
wire op_clock;
|
||||
// registered ports
|
||||
reg op_clock_reg;
|
||||
reg [0:SIZE_OF_MUX-1] in_reg;
|
||||
reg [0:SIZE_OF_SRAM-1] sram_reg;
|
||||
reg [0:SIZE_OF_SRAM-1] sram_inv_reg;
|
||||
// Config done signal;
|
||||
reg config_done;
|
||||
// Temp register for rotating shift
|
||||
reg temp;
|
||||
|
||||
// Unit Under Test
|
||||
mux_2level_size50 U0 (in, out, sram, sram_inv);
|
||||
|
||||
// Task: assign inputs
|
||||
task op_mux_input;
|
||||
begin
|
||||
@(posedge op_clock);
|
||||
temp = in_reg[SIZE_OF_MUX-1];
|
||||
in_reg[1:SIZE_OF_MUX-1] = in_reg[0:SIZE_OF_MUX-2];
|
||||
in_reg[0] = temp;
|
||||
end
|
||||
endtask
|
||||
|
||||
// Configuration done signal
|
||||
initial
|
||||
begin
|
||||
config_done = 1'b1;
|
||||
end
|
||||
|
||||
// Operating clocks
|
||||
initial
|
||||
begin
|
||||
op_clock_reg = 1'b0;
|
||||
end
|
||||
always
|
||||
begin
|
||||
#op_clk_period op_clock_reg = ~op_clock_reg;
|
||||
end
|
||||
|
||||
// Programming and Operating clocks
|
||||
assign op_clock = op_clock_reg & config_done;
|
||||
|
||||
// Operating Phase
|
||||
initial
|
||||
begin
|
||||
in_reg = {SIZE_OF_MUX {1'b0}};
|
||||
in_reg[0] = 1'b1; // Last bit is 1 initially
|
||||
end
|
||||
always wait (config_done) // Only invoked when config_done is 1
|
||||
begin
|
||||
/* Update inputs */
|
||||
op_mux_input;
|
||||
end
|
||||
|
||||
// Wire ports
|
||||
assign in = in_reg;
|
||||
assign sram[0:7] = 8'b00010000;
|
||||
assign sram[8:15] = 8'b00010000;
|
||||
assign sram_inv = ~sram;
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
//------ Module: sram6T_blwl -----//
|
||||
//------ Verilog file: sram.v -----//
|
||||
//------ Author: Xifan TANG -----//
|
||||
module sram6T_blwl(
|
||||
//input read,
|
||||
//input nequalize,
|
||||
input din, // Data input
|
||||
output dout, // Data output
|
||||
output doutb, // Data output
|
||||
input bl, // Bit line control signal
|
||||
input wl, // Word line control signal
|
||||
input blb // Inverted Bit line control signal
|
||||
);
|
||||
//----- local variable need to be registered
|
||||
reg a;
|
||||
|
||||
//----- when wl is enabled, we can read in data from bl
|
||||
always @(bl, wl)
|
||||
begin
|
||||
//----- Cases to program internal memory bit
|
||||
//----- case 1: bl = 1, wl = 1, a -> 0
|
||||
if ((1'b1 == bl)&&(1'b1 == wl)) begin
|
||||
a <= 1'b1;
|
||||
end
|
||||
//----- case 2: bl = 0, wl = 1, a -> 0
|
||||
if ((1'b0 == bl)&&(1'b1 == wl)) begin
|
||||
a <= 1'b0;
|
||||
end
|
||||
end
|
||||
|
||||
// dout is short-wired to din
|
||||
assign dout = a;
|
||||
//---- doutb is always opposite to dout
|
||||
assign doutb = ~dout;
|
||||
`ifdef ENABLE_SIGNAL_INITIALIZATION
|
||||
initial begin
|
||||
$deposit(a, $random);
|
||||
end
|
||||
`endif
|
||||
endmodule
|
||||
|
||||
module sram6T_rram(
|
||||
input read,
|
||||
input nequalize,
|
||||
input din, // Data input
|
||||
output dout, // Data output
|
||||
output doutb, // Data output
|
||||
// !!! Port bit position should start from LSB to MSB
|
||||
// Follow this convention for BL/WLs in each module!
|
||||
input [0:2] bl, // Bit line control signal
|
||||
input [0:2] wl// Word line control signal
|
||||
);
|
||||
//----- local variable need to be registered
|
||||
//----- Modeling two RRAMs
|
||||
reg r0, r1;
|
||||
|
||||
always @(bl[0], wl[2])
|
||||
begin
|
||||
//----- Cases to program r0
|
||||
//----- case 1: bl[0] = 1, wl[2] = 1, r0 -> 0
|
||||
if ((1'b1 == bl[0])&&(1'b1 == wl[2])) begin
|
||||
r0 <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
always @(bl[2], wl[0])
|
||||
begin
|
||||
//----- case 2: bl[2] = 1, wl[0] = 1, r0 -> 1
|
||||
if ((1'b1 == bl[2])&&(1'b1 == wl[0])) begin
|
||||
r0 <= 1;
|
||||
end
|
||||
end
|
||||
|
||||
always @(bl[1], wl[2])
|
||||
begin
|
||||
//----- Cases to program r1
|
||||
//----- case 1: bl[1] = 1, wl[2] = 1, r0 -> 0
|
||||
if ((1'b1 == bl[1])&&(1'b1 == wl[2])) begin
|
||||
r1 <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
always @( bl[2], wl[1])
|
||||
begin
|
||||
//----- case 2: bl[2] = 1, wl[1] = 1, r0 -> 1
|
||||
if ((1'b1 == bl[2])&&(1'b1 == wl[1])) begin
|
||||
r1 <= 1;
|
||||
end
|
||||
end
|
||||
|
||||
// dout is r0 AND r1
|
||||
assign dout = r0 | (~r1);
|
||||
|
||||
//---- doutb is always opposite to dout
|
||||
assign doutb = ~dout;
|
||||
|
||||
endmodule
|
|
@ -0,0 +1,88 @@
|
|||
//-----------------------------------------------------
|
||||
// Design Name : testbench for static_dff
|
||||
// File Name : ff_tb.v
|
||||
// Function : D flip-flop with asyn reset and set
|
||||
// Coder : Xifan TANG
|
||||
//-----------------------------------------------------
|
||||
//----- Time scale: simulation time step and accuracy -----
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module sram6T_rram_tb;
|
||||
// voltage sources
|
||||
wire read;
|
||||
wire nequalize;
|
||||
wire din;
|
||||
wire dout;
|
||||
wire doutb;
|
||||
reg [0:2] bl;
|
||||
reg [0:2] wl;
|
||||
reg prog_clock;
|
||||
|
||||
// Parameters
|
||||
parameter prog_clk_period = 2; // [ns] a full clock period
|
||||
|
||||
// Unit Under Test
|
||||
sram6T_rram U0 (read, nequalize, din, dout, doutb, bl, wl);
|
||||
|
||||
// Voltage stimuli
|
||||
// read : alway disabled
|
||||
assign read = 1'b0;
|
||||
|
||||
// nequalize: always disabled
|
||||
assign nequalize = 1'b1;
|
||||
|
||||
// din: always disabled
|
||||
assign din = 1'b0;
|
||||
|
||||
// Programming clock
|
||||
initial
|
||||
begin
|
||||
prog_clock = 1'b0;
|
||||
end
|
||||
always
|
||||
begin
|
||||
#prog_clk_period prog_clock = ~prog_clock;
|
||||
end
|
||||
|
||||
// Task: assign BL and WL values
|
||||
task prog_blwl;
|
||||
input [0:2] bl_val;
|
||||
input [0:2] wl_val;
|
||||
begin
|
||||
@(posedge prog_clock);
|
||||
bl = bl_val;
|
||||
wl = wl_val;
|
||||
end
|
||||
endtask
|
||||
|
||||
// Test two cases:
|
||||
// 1. Program dout to 0
|
||||
// bl[0] = 1, wl[2] = 1
|
||||
// bl[2] = 1, wl[0] = 1
|
||||
// 2. Program dout to 1
|
||||
// bl[1] = 1, wl[2] = 1
|
||||
// bl[2] = 1, wl[1] = 1
|
||||
initial
|
||||
begin
|
||||
bl = 3'b000;
|
||||
wl = 3'b000;
|
||||
// 1. Program dout to 0
|
||||
// bl[0] = 1, wl[2] = 1
|
||||
prog_blwl(3'b100, 3'b001);
|
||||
// bl[2] = 1, wl[0] = 1
|
||||
prog_blwl(3'b001, 3'b100);
|
||||
// 2. Program dout to 1
|
||||
// bl[1] = 1, wl[2] = 1
|
||||
prog_blwl(3'b010, 3'b001);
|
||||
// bl[2] = 1, wl[1] = 1
|
||||
prog_blwl(3'b100, 3'b010);
|
||||
// 3. Program dout to 0
|
||||
// bl[0] = 1, wl[2] = 1
|
||||
prog_blwl(3'b100, 3'b001);
|
||||
// bl[2] = 1, wl[0] = 1
|
||||
prog_blwl(3'b001, 3'b100);
|
||||
end
|
||||
|
||||
// Outputs are wired to dout and doutb
|
||||
|
||||
endmodule
|
|
@ -0,0 +1,631 @@
|
|||
<!--
|
||||
Flagship Heterogeneous Architecture with Carry Chains for VTR 7.0.
|
||||
|
||||
- 40 nm technology
|
||||
- General purpose logic block:
|
||||
K = 6, N = 10, fracturable 6 LUTs (can operate as one 6-LUT or two 5-LUTs with all 5 inputs shared)
|
||||
with optionally registered outputs
|
||||
Each 5-LUT has an arithemtic mode that converts it to a single-bit adder with both inputs driven by 4-LUTs (both 4-LUTs share all 4 inputs)
|
||||
Carry chain links to vertically adjacent logic blocks
|
||||
- Memory size 32 Kbits, memory aspect ratios vary from a data width of 1 to data width of 64.
|
||||
Height = 6, found on every (8n+2)th column
|
||||
- Multiplier modes: one 36x36, two 18x18, each 18x18 can also operate as two 9x9.
|
||||
Height = 4, found on every (8n+6)th column
|
||||
- Routing architecture: L = 4, fc_in = 0.15, Fc_out = 0.1
|
||||
|
||||
Details on Modelling:
|
||||
|
||||
The electrical design of the architecture described here is NOT from an
|
||||
optimized, SPICED architecture. Instead, we attempt to create a reasonable
|
||||
architecture file by using an existing commercial FPGA to approximate the area,
|
||||
delay, and power of the underlying components. This is combined with a reasonable 40 nm
|
||||
model of wiring and circuit design for low-level routing components, where available.
|
||||
The resulting architecture has delays that roughly match a commercial 40 nm FPGA, but also
|
||||
has wiring electrical parameters that allow the wire lengths and switch patterns to be
|
||||
modified and you will still get reasonable delay results for the new architecture.
|
||||
The following describes, in detail, how we obtained the various electrical values for this
|
||||
architecture.
|
||||
|
||||
Rmin for nmos and pmos, routing buffer sizes, and I/O pad delays are from the ifar
|
||||
architecture created by Ian Kuon: K06 N10 45nm fc 0.15 area-delay optimized architecture.
|
||||
(n10k06l04.fc15.area1delay1.cmos45nm.bptm.cmos45nm.xml)
|
||||
This routing architecture was optimized for 45 nm, and we have scaled it linearly to 40 nm to
|
||||
match the overall target (a 40 nm FPGA).
|
||||
|
||||
We obtain delay numbers by measuring delays of routing, soft logic blocks,
|
||||
memories, and multipliers from test circuits on a Stratix IV GX device
|
||||
(EP4SGX230DF29C2X, i.e. fastest speed grade). For routing, we took the average delay of H4 and V4
|
||||
wires. Rmetal and Cmetal values for the routing wires were obtained from work done by Charles
|
||||
Chiasson. We use a 96 nm half-pitch (corresponding to mid-level metal stack 40 nm routing) and
|
||||
take the R and C data from the ITRS roadmap.
|
||||
|
||||
For the general purpose logic block, we assume that the area and delays of the Stratix IV
|
||||
crossbar is close enough to the crossbar modelled here. We use 40 inputs and 20 feedback lines in
|
||||
the cluster and a full crossbar, leading to 53:1 multiplexers in front of each BLE input.
|
||||
Stratix IV uses 52 inputs and 20 feedback lines, but only a half-populated crossbar, leading to
|
||||
36:1 multiplexers. We require 60 such multiplexers, while Stratix IV requires 88 for its more
|
||||
complex fracturable BLEs + the extra control signals. We justify this rough approximation as follows:
|
||||
The Stratix IV crossbar has more inputs (72 vs. 60) and
|
||||
outputs (88 vs. 60) than our full crossbar which should increase its area and delay, but the
|
||||
Stratix IV crossbar is also 50% sparse (each mux is 36:1 instead of 53:1) which should reduce its
|
||||
area and delay. The total number of crossbar switch points is roughly similar between the two
|
||||
architectures (3160 for SIV and 3600 for the academic architecture below), so we use the area
|
||||
& delay of the Stratix IV crossbar as a rough approximation of our crossbar.
|
||||
|
||||
For LUTs, we include LUT
|
||||
delays measured from Stratix IV which is dependant on the input used (ie. some
|
||||
LUT inputs are faster than others). The CAD tools at the time of VTR 7 does
|
||||
not consider differences in LUT input delays.
|
||||
|
||||
Adder delays obtained as approximate values from a Stratix IV EP4SE230F29C3 device.
|
||||
Delay obtained by compiling a 256 bit adder (registered inputs and outputs,
|
||||
all pins except clock virtual) then measuring the delays in chip-planner,
|
||||
sumout delay = 0.271ns to 0.348 ns, intra-block carry delay = 0.011 ns,
|
||||
inter-block carry delay = 0.327 ns. Given this data, I will approximate
|
||||
sumout 0.3 ns, intra-block carry-delay = 0.01 ns, and
|
||||
inter-block carry-delay = 0.16 ns (since Altera inter-block carry delay has
|
||||
overhead that we don't have, I'll approximate the delay of a simpler chain at
|
||||
one half what they have. This is very rough, anything from 0.01ns to 0.327ns
|
||||
can be justified).
|
||||
|
||||
Logic block area numbers obtained by scaling overall tile area of a 65nm
|
||||
Stratix III device, (as given in Wong, Betz and Rose, FPGA 2011) to 40 nm, then subtracting out
|
||||
routing area at a channel width of 300. We use a channel width of 300 because it can route
|
||||
all the VTR 6.0 benchmark circuits with an approximately 20% safety margin, and is also close to the
|
||||
total channel width of Stratix IV. Hence this channel width is close to the commercial practice of
|
||||
choosing a width that provides high routability. The architecture can be routed at different channel
|
||||
widths, but we estimate the tile size and hence the physical length of routing wires assuming
|
||||
a channel width of 300.
|
||||
|
||||
Sanity checks employed:
|
||||
1. We confirmed the routing buffer delay is ~1/3rd of total routing delay at L = 4. This matches
|
||||
common electrical design.
|
||||
|
||||
|
||||
Authors: Jason Luu, Jeff Goeders, Vaughn Betz
|
||||
-->
|
||||
|
||||
|
||||
<architecture>
|
||||
|
||||
<!--
|
||||
ODIN II specific config begins
|
||||
Describes the types of user-specified netlist blocks (in blif, this corresponds to
|
||||
".model [type_of_block]") that this architecture supports.
|
||||
|
||||
Note: Basic LUTs, I/Os, and flip-flops are not included here as there are
|
||||
already special structures in blif (.names, .input, .output, and .latch)
|
||||
that describe them.
|
||||
-->
|
||||
<models>
|
||||
<model name="io">
|
||||
<input_ports>
|
||||
<port name="outpad"/>
|
||||
</input_ports>
|
||||
<output_ports>
|
||||
<port name="inpad"/>
|
||||
</output_ports>
|
||||
</model>
|
||||
</models>
|
||||
<!-- ODIN II specific config ends -->
|
||||
|
||||
<!-- Physical descriptions begin -->
|
||||
<layout auto="1.0" tileable_routing="off"/>
|
||||
<spice_settings>
|
||||
<parameters>
|
||||
<options sim_temp="25" post="off" captab="off" fast="on"/>
|
||||
<monte_carlo mc_sim="off" num_mc_points="2" cmos_variation="off" rram_variation="off">
|
||||
<cmos abs_variation="0.1" num_sigma="3"/>
|
||||
<rram abs_variation="0.1" num_sigma="3"/>
|
||||
</monte_carlo>
|
||||
<measure sim_num_clock_cycle="auto" accuracy="1e-13" accuracy_type="abs">
|
||||
<slew>
|
||||
<rise upper_thres_pct="0.95" lower_thres_pct="0.05"/>
|
||||
<fall upper_thres_pct="0.05" lower_thres_pct="0.95"/>
|
||||
</slew>
|
||||
<delay>
|
||||
<rise input_thres_pct="0.5" output_thres_pct="0.5"/>
|
||||
<fall input_thres_pct="0.5" output_thres_pct="0.5"/>
|
||||
</delay>
|
||||
</measure>
|
||||
<stimulate>
|
||||
<!--clock op_freq="200e6" sim_slack="0.2" prog_freq="2.5e6"-->
|
||||
<clock op_freq="200e6" sim_slack="0.2" prog_freq="10e6"> <!--frequency modified to speedup the fpga programing-->
|
||||
<rise slew_time="20e-12" slew_type="abs"/>
|
||||
<fall slew_time="20e-12" slew_type="abs"/>
|
||||
</clock>
|
||||
<input>
|
||||
<rise slew_time="25e-12" slew_type="abs"/>
|
||||
<fall slew_time="25e-12" slew_type="abs"/>
|
||||
</input>
|
||||
</stimulate>
|
||||
</parameters>
|
||||
<tech_lib lib_type="academia" transistor_type="TOP_TT" lib_path="${OPENFPGA_PATH}/fpga_flow/tech/PTM_45nm/45nm.pm" nominal_vdd="1.0" io_vdd="2.5"/>
|
||||
<transistors pn_ratio="2" model_ref="M">
|
||||
<nmos model_name="nch" chan_length="40e-9" min_width="140e-9"/>
|
||||
<pmos model_name="pch" chan_length="40e-9" min_width="140e-9"/>
|
||||
<io_nmos model_name="nch_25" chan_length="270e-9" min_width="320e-9"/>
|
||||
<io_pmos model_name="pch_25" chan_length="270e-9" min_width="320e-9"/>
|
||||
</transistors>
|
||||
<module_circuit_models>
|
||||
<circuit_model type="inv_buf" name="INV1X" prefix="INV1X" is_default="1">
|
||||
<design_technology type="cmos" topology="inverter" size="1" tapered="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="buf4" prefix="buf4" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INV4X" prefix="INV4X" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="3" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INV2X" prefix="INV2X" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="3" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="buf2" prefix="buf2" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="2"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="buf1" prefix="buf1" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
<delay_matrix type="fall" in_port="in" out_port="out">
|
||||
10e-12
|
||||
</delay_matrix>
|
||||
</circuit_model>
|
||||
<circuit_model type="pass_gate" name="TGATEX1" prefix="TGATEX1" is_default="1">
|
||||
<design_technology type="cmos" topology="transmission_gate" nmos_size="1" pmos_size="2"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="sel" size="1"/>
|
||||
<port type="input" prefix="selb" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="in sel selb" out_port="out">
|
||||
10e-12 5e-12 5e-12
|
||||
</delay_matrix>
|
||||
<delay_matrix type="fall" in_port="in sel selb" out_port="out">
|
||||
10e-12 5e-12 5e-12
|
||||
</delay_matrix>
|
||||
</circuit_model>
|
||||
<circuit_model type="gate" name="OR2" prefix="OR2" is_default="1">
|
||||
<design_technology type="cmos" topology="OR"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="a" size="1"/>
|
||||
<port type="input" prefix="b" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<delay_matrix type="rise" in_port="a b" out_port="out">
|
||||
10e-12 10e-12
|
||||
</delay_matrix>
|
||||
<delay_matrix type="fall" in_port="a b" out_port="out">
|
||||
10e-12 10e-12
|
||||
</delay_matrix>
|
||||
</circuit_model>
|
||||
<circuit_model type="chan_wire" name="chan_segment" prefix="track_seg" is_default="1">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<wire_param model_type="pie" res_val="101" cap_val="22.5e-15" level="1"/>
|
||||
<!-- model_type could be T, res_val and cap_val DON'T CARE -->
|
||||
</circuit_model>
|
||||
<circuit_model type="wire" name="direct_interc" prefix="direct_interc" is_default="1">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<wire_param model_type="pie" res_val="0" cap_val="0" level="1"/>
|
||||
<!-- model_type could be T, res_val cap_val should be defined -->
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_2level" prefix="mux_2level" dump_structural_verilog="false">
|
||||
<design_technology type="cmos" structure="multi-level" num_level="2" add_const_input="true" const_input_val="1"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_2level_tapbuf" prefix="mux_2level_tapbuf" dump_structural_verilog="false">
|
||||
<design_technology type="cmos" structure="multi-level" num_level="2" add_const_input="true" const_input_val="1"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV4X"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_1level_tapbuf" prefix="mux_1level_tapbuf" is_default="1" dump_structural_verilog="false">
|
||||
<design_technology type="cmos" structure="one-level" add_const_input="true" const_input_val="1"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV4X"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</circuit_model>
|
||||
<!--DFF subckt ports should be defined as <D> <Q> <CLK> <RESET> <SET> -->
|
||||
<circuit_model type="ff" name="static_dff" prefix="dff" spice_netlist="${OPENFPGA_PATH}/openfpga_flow/SpiceNetlists/ff.sp" verilog_netlist="${OPENFPGA_PATH}/openfpga_flow/VerilogNetlists/ff.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="D" size="1"/>
|
||||
<port type="input" prefix="set" size="1" is_global="true" default_val="0" is_set="true"/>
|
||||
<port type="input" prefix="reset" size="1" is_global="true" default_val="0" is_reset="true"/>
|
||||
<port type="output" prefix="Q" size="1"/>
|
||||
<port type="clock" prefix="clk" size="1" is_global="true" default_val="0" />
|
||||
</circuit_model>
|
||||
<circuit_model type="lut" name="unfrac_lut4" prefix="unfrac_lut4" dump_structural_verilog="false">
|
||||
<design_technology type="cmos" fracturable_lut="false"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<lut_input_inverter exist="on" circuit_model_name="INV1X"/>
|
||||
<lut_intermediate_buffer exist="on" circuit_model_name="buf1" location_map="-1-"/>
|
||||
<lut_input_buffer exist="on" circuit_model_name="buf2"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="4"/>
|
||||
<port type="output" prefix="out" size="1" lut_output_mask="0"/>
|
||||
<port type="sram" prefix="sram" size="16"/>
|
||||
</circuit_model>
|
||||
<!--Scan-chain DFF subckt ports should be defined as <D> <Q> <Qb> <CLK> <RESET> <SET> -->
|
||||
<circuit_model type="sff" name="sc_dff_compact" prefix="scff" spice_netlist="${OPENFPGA_PATH}/openfpga_flow/SpiceNetlists/ff.sp" verilog_netlist="${OPENFPGA_PATH}/openfpga_flow/VerilogNetlists/ff.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="pReset" lib_name="reset" size="1" is_global="true" default_val="0" is_reset="true" is_prog="true"/>
|
||||
<!-- <port type="input" prefix="pSet" size="1" is_global="true" default_val="0" is_set="true" is_prog="true"/> -->
|
||||
<port type="input" prefix="D" lib_name="D" size="1"/>
|
||||
<port type="output" prefix="Q" lib_name="Q" size="1"/>
|
||||
<port type="output" prefix="Qb" lib_name="Qb" size="1"/>
|
||||
<port type="clock" prefix="prog_clk" lib_name="clk" size="1" is_global="true" default_val="0" is_prog="true"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="iopad" name="iopad" prefix="iopad" spice_netlist="${OPENFPGA_PATH}/openfpga_flow/SpiceNetlists/io.sp" verilog_netlist="${OPENFPGA_PATH}/openfpga_flow/VerilogNetlists/io.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="inout" prefix="pad" size="1"/>
|
||||
<port type="sram" prefix="en" size="1" mode_select="true" circuit_model_name="sc_dff_compact" default_val="1"/>
|
||||
<!--port type="sram" prefix="enb" size="1" mode_select="true" circuit_model_name="sc_dff_compact" default_val="0"/-->
|
||||
<port type="input" prefix="outpad" size="1"/>
|
||||
<!-- <port type="input" prefix="zin" size="1" is_global="true" default_val="0" /> -->
|
||||
<port type="output" prefix="inpad" size="1"/>
|
||||
</circuit_model>
|
||||
<!-- Hard logic definition for heterogenous blocks -->
|
||||
<circuit_model type="hard_logic" name="adder" prefix="adder" dump_explicit_port_map="false" spice_netlist="${OPENFPGA_PATH}/openfpga_flow/SpiceNetlists/adder.sp" verilog_netlist="${OPENFPGA_PATH}/openfpga_flow/VerilogNetlists/adder.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<port type="input" prefix="a" size="1"/>
|
||||
<port type="input" prefix="b" size="1"/>
|
||||
<port type="input" prefix="cin" size="1"/>
|
||||
<port type="output" prefix="sumout" size="1"/>
|
||||
<port type="output" prefix="cout" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="sram" name="sram6T" prefix="sram" spice_netlist="${OPENFPGA_PATH}/openfpga_flow/SpiceNetlists/sram.sp" verilog_netlist="${OPENFPGA_PATH}/openfpga_flow/VerilogNetlists/sram.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<output_buffer exist="on" circuit_model_name="INV1X"/>
|
||||
<pass_gate_logic circuit_model_name="TGATEX1"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="2"/>
|
||||
</circuit_model>
|
||||
|
||||
</module_circuit_models>
|
||||
</spice_settings>
|
||||
<device>
|
||||
<!-- VB & JL: Using Ian Kuon's transistor sizing and drive strength data for routing, at 40 nm. Ian used BPTM
|
||||
models. We are modifying the delay values however, to include metal C and R, which allows more architecture
|
||||
experimentation. We are also modifying the relative resistance of PMOS to be 1.8x that of NMOS
|
||||
(vs. Ian's 3x) as 1.8x lines up with Jeff G's data from a 45 nm process (and is more typical of
|
||||
45 nm in general). I'm upping the Rmin_nmos from Ian's just over 6k to nearly 9k, and dropping
|
||||
RminW_pmos from 18k to 16k to hit this 1.8x ratio, while keeping the delays of buffers approximately
|
||||
lined up with Stratix IV.
|
||||
We are using Jeff G.'s capacitance data for 45 nm (in tech/ptm_45nm).
|
||||
Jeff's tables list C in for transistors with widths in multiples of the minimum feature size (45 nm).
|
||||
The minimum contactable transistor is 2.5 * 45 nm, so I need to multiply drive strength sizes in this file
|
||||
by 2.5x when looking up in Jeff's tables.
|
||||
The delay values are lined up with Stratix IV, which has an architecture similar to this
|
||||
proposed FPGA, and which is also 40 nm
|
||||
C_ipin_cblock: input capacitance of a track buffer, which VPR assumes is a single-stage
|
||||
4x minimum drive strength buffer. -->
|
||||
|
||||
<sizing R_minW_nmos="8926" R_minW_pmos="16067" ipin_mux_trans_size="9"/>
|
||||
<timing C_ipin_cblock="596e-18" T_ipin_cblock="77.93e-12"/>
|
||||
|
||||
<!-- The grid_logic_tile_area below will be used for all blocks that do not explicitly set their own (non-routing)
|
||||
area; set to 0 since we explicitly set the area of all blocks currently in this architecture file.
|
||||
-->
|
||||
<area grid_logic_tile_area="0"/>
|
||||
<sram area="6">
|
||||
<verilog organization="scan-chain" circuit_model_name="sc_dff_compact"/>
|
||||
<!--verilog organization="memory-bank" circuit_model_name="sram6T_blwl"/-->
|
||||
<spice organization="standalone" circuit_model_name="sram6T" />
|
||||
</sram>
|
||||
<chan_width_distr>
|
||||
<io width="1.000000"/>
|
||||
<x distr="uniform" peak="1.000000"/>
|
||||
<y distr="uniform" peak="1.000000"/>
|
||||
</chan_width_distr>
|
||||
<switch_block type="wilton" fs="3"/>
|
||||
</device>
|
||||
|
||||
<cblocks>
|
||||
<switch type="mux" name="cb_mux" R="0" Cin="596e-18" Cout="0" Tdel="77.93e-12" mux_trans_size="3" buf_size="63" circuit_model_name="mux_2level_tapbuf" structure="multi-level" num_level="2">
|
||||
</switch>
|
||||
</cblocks>
|
||||
<switchlist>
|
||||
<!-- VB: the mux_trans_size and buf_size data below is in minimum width transistor *areas*, assuming the purple
|
||||
book area formula. This means the mux transistors are about 5x minimum drive strength.
|
||||
We assume the first stage of the buffer is 3x min drive strength to be reasonable given the large
|
||||
mux transistors, and this gives a reasonable stage ratio of a bit over 5x to the second stage. We assume
|
||||
the n and p transistors in the first stage are equal-sized to lower the buffer trip point, since it's fed
|
||||
by a pass transistor mux. We can then reverse engineer the buffer second stage to hit the specified
|
||||
buf_size (really buffer area) - 16.2x minimum drive nmos and 1.8*16.2 = 29.2x minimum drive.
|
||||
I then took the data from Jeff G.'s PTM modeling of 45 nm to get the Cin (gate of first stage) and Cout
|
||||
(diff of second stage) listed below. Jeff's models are in tech/ptm_45nm, and are in min feature multiples.
|
||||
The minimum contactable transistor is 2.5 * 45 nm, so I need to multiply the drive strength sizes above by
|
||||
2.5x when looking up in Jeff's tables.
|
||||
Finally, we choose a switch delay (58 ps) that leads to length 4 wires having a delay equal to that of SIV of 126 ps.
|
||||
This also leads to the switch being 46% of the total wire delay, which is reasonable. -->
|
||||
<switch type="mux" name="sb_mux_L16" R="0" Cin="0" Cout="" Tdel="1.3e-9" mux_trans_size="3" buf_size="63" circuit_model_name="mux_2level_tapbuf" structure="multi-level" num_level="2">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L4" R="0" Cin="0" Cout="" Tdel="0.72e-9" mux_trans_size="3" buf_size="63" circuit_model_name="mux_2level_tapbuf" structure="multi-level" num_level="2">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L2" R="115" Cin="596e-18" Cout="0e-15" Tdel="47.2e-12" mux_trans_size="3" buf_size="63" circuit_model_name="mux_1level_tapbuf" structure="multi-level" num_level="1">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L1" R="128" Cin="596e-18" Cout="0e-15" Tdel="47.2e-12" mux_trans_size="3" buf_size="63" circuit_model_name="mux_1level_tapbuf" structure="multi-level" num_level="1">
|
||||
</switch>
|
||||
</switchlist>
|
||||
<segmentlist>
|
||||
<!--- VB & JL: using ITRS metal stack data, 96 nm half pitch wires, which are intermediate metal width/space.
|
||||
With the 96 nm half pitch, such wires would take 60 um of height, vs. a 90 nm high (approximated as square) Stratix IV tile so this seems
|
||||
reasonable. Using a tile length of 90 nm, corresponding to the length of a Stratix IV tile if it were square. -->
|
||||
<segment freq="0.13" length="16" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L16"/>
|
||||
<sb type="pattern">1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1</sb>
|
||||
<cb type="pattern">1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1</cb>
|
||||
</segment>
|
||||
<segment freq="0.87" length="4" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L4"/>
|
||||
<sb type="pattern">1 1 1 1 1</sb>
|
||||
<cb type="pattern">1 1 1 1</cb>
|
||||
</segment>
|
||||
</segmentlist>
|
||||
<!--switch_segment_patterns>
|
||||
<pattern type="unbuf_sb" seg_length="1" seg_type="unidir" pattern_length="2">
|
||||
<unbuf_mux name="1"/>
|
||||
<sb type ="pattern">0 1</sb>
|
||||
</pattern>
|
||||
</switch_segment_patterns-->
|
||||
|
||||
<complexblocklist>
|
||||
|
||||
<!-- Define I/O pads begin -->
|
||||
<!-- Capacity is a unique property of I/Os, it is the maximum number of I/Os that can be placed at the same (X,Y) location on the FPGA -->
|
||||
<!-- Not sure of the area of an I/O (varies widely), and it's not relevant to the design of the FPGA core, so we're setting it to 0. -->
|
||||
<pb_type name="io" capacity="2" area="0" idle_mode_name="inpad" physical_mode_name="io_phy">
|
||||
<input name="outpad" num_pins="1"/>
|
||||
<output name="inpad" num_pins="1"/>
|
||||
|
||||
<!-- physical design description -->
|
||||
<mode name="io_phy" disabled_in_packing="true">
|
||||
<pb_type name="iopad" blif_model=".subckt io" num_pb="1" circuit_model_name="iopad" mode_bits="1">
|
||||
<input name="outpad" num_pins="1"/>
|
||||
<output name="inpad" num_pins="1"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="inpad" input="iopad.inpad" output="io.inpad">
|
||||
<delay_constant max="0e-11" in_port="iopad.inpad" out_port="io.inpad"/>
|
||||
</direct>
|
||||
<direct name="outpad" input="io.outpad" output="iopad.outpad">
|
||||
<delay_constant max="0e-11" in_port="io.outpad" out_port="iopad.outpad"/>
|
||||
</direct>
|
||||
</interconnect>
|
||||
</mode>
|
||||
|
||||
<!-- IOs can operate as either inputs or outputs.§
|
||||
Delays below come from Ian Kuon. They are small, so they should be interpreted as
|
||||
the delays to and from registers in the I/O (and generally I/Os are registered
|
||||
today and that is when you timing analyze them.
|
||||
-->
|
||||
<mode name="inpad">
|
||||
<pb_type name="inpad" blif_model=".input" num_pb="1" physical_pb_type_name="iopad" mode_bits="1">
|
||||
<output name="inpad" num_pins="1" physical_mode_pin="inpad"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="inpad" input="inpad.inpad" output="io.inpad">
|
||||
<delay_constant max="0e-11" in_port="inpad.inpad" out_port="io.inpad"/>
|
||||
</direct>
|
||||
</interconnect>
|
||||
</mode>
|
||||
<mode name="outpad">
|
||||
<pb_type name="outpad" blif_model=".output" num_pb="1" physical_pb_type_name="iopad" mode_bits="0">
|
||||
<input name="outpad" num_pins="1" physical_mode_pin="outpad"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="outpad" input="io.outpad" output="outpad.outpad">
|
||||
<delay_constant max="0e-11" in_port="io.outpad" out_port="outpad.outpad"/>
|
||||
</direct>
|
||||
</interconnect>
|
||||
</mode>
|
||||
|
||||
<!-- Every input pin is driven by 15% of the tracks in a channel, every output pin is driven by 10% of the tracks in a channel -->
|
||||
<fc default_in_type="frac" default_in_val="0.30" default_out_type="frac" default_out_val="0.10"/>
|
||||
|
||||
<!-- IOs go on the periphery of the FPGA, for consistency,
|
||||
make it physically equivalent on all sides so that only one definition of I/Os is needed.
|
||||
If I do not make a physically equivalent definition, then I need to define 4 different I/Os, one for each side of the FPGA
|
||||
-->
|
||||
<pinlocations pattern="custom">
|
||||
<loc side="left">io.outpad io.inpad</loc>
|
||||
<loc side="top">io.outpad io.inpad</loc>
|
||||
<loc side="right">io.outpad io.inpad</loc>
|
||||
<loc side="bottom">io.outpad io.inpad</loc>
|
||||
</pinlocations>
|
||||
|
||||
<!-- Place I/Os on the sides of the FPGA -->
|
||||
<gridlocations>
|
||||
<loc type="perimeter" priority="10"/>
|
||||
</gridlocations>
|
||||
|
||||
<power method="ignore"/>
|
||||
</pb_type>
|
||||
<!-- Define I/O pads ends -->
|
||||
|
||||
|
||||
<!-- Define general purpose logic block (CLB) begin -->
|
||||
<!--- Area calculation: Total Stratix IV tile area is about 8100 um^2, and a minimum width transistor
|
||||
area is 60 L^2 yields a tile area of 84375 MWTAs.
|
||||
Routing at W=300 is 30481 MWTAs, leaving us with a total of 53000 MWTAs for logic block area
|
||||
This means that only 37% of our area is in the general routing, and 63% is inside the logic
|
||||
block. Note that the crossbar / local interconnect is considered part of the logic block
|
||||
area in this analysis. That is a lower proportion of of routing area than most academics
|
||||
assume, but note that the total routing area really includes the crossbar, which would push
|
||||
routing area up significantly, we estimate into the ~70% range.
|
||||
-->
|
||||
<pb_type name="clb" area="11388">
|
||||
<input name="I" num_pins="12" equivalent="true"/>
|
||||
<output name="O" num_pins="4" equivalent="false"/>
|
||||
<clock name="clk" num_pins="1"/>
|
||||
|
||||
<!-- Describe fracturable logic element.
|
||||
Each fracturable logic element has a 6-LUT that can alternatively operate as two 5-LUTs with shared inputs.
|
||||
The outputs of the fracturable logic element can be optionally registered
|
||||
-->
|
||||
<pb_type name="fle" num_pb="4">
|
||||
<input name="in" num_pins="4"/>
|
||||
<output name="out" num_pins="1"/>
|
||||
<clock name="clk" num_pins="1"/>
|
||||
<pb_type name="logic" num_pb="1">
|
||||
<input name="in" num_pins="4"/>
|
||||
<output name="out" num_pins="1"/>
|
||||
<pb_type name="lut4" blif_model=".names" num_pb="1" circuit_model_name="unfrac_lut4" class="lut">
|
||||
<input name="in" num_pins="4" port_class="lut_in"/>
|
||||
<output name="out" num_pins="1" port_class="lut_out"/>
|
||||
<delay_matrix type="max" in_port="lut4.in" out_port="lut4.out">
|
||||
202e-12
|
||||
202e-12
|
||||
202e-12
|
||||
202e-12
|
||||
</delay_matrix>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="direct_lut_in" input="logic.in[3:0]" output="lut4.in[3:0]"/>
|
||||
<direct name="direct_lut_out" input="lut4.out" output="logic.out"/>
|
||||
</interconnect>
|
||||
</pb_type>
|
||||
<pb_type name="ff_phy" blif_model=".latch" num_pb="1" class="flipflop" circuit_model_name="static_dff">
|
||||
<input name="D" num_pins="1" port_class="D"/>
|
||||
<output name="Q" num_pins="1" port_class="Q"/>
|
||||
<clock name="clk" num_pins="1" port_class="clock"/>
|
||||
<T_setup value="66e-12" port="ff_phy.D" clock="clk"/>
|
||||
<T_clock_to_Q max="124e-12" port="ff_phy.Q" clock="clk"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<complete name="direct_clk" input="fle.clk" output="ff_phy.clk"/>
|
||||
<direct name="direct_in" input="fle.in[3:0]" output="logic.in[3:0]"/>
|
||||
<direct name="direct_frac_out1" input="logic.out" output="ff_phy.D"/>
|
||||
<mux name="mux_out" input="ff_phy.Q logic.out" output="fle.out">
|
||||
</mux>
|
||||
</interconnect>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<!-- We use a full crossbar to get logical equivalence at inputs of CLB
|
||||
The delays below come from Stratix IV. the delay through a connection block
|
||||
input mux + the crossbar in Stratix IV is 167 ps. We already have a 72 ps
|
||||
delay on the connection block input mux (modeled by Ian Kuon), so the remaining
|
||||
delay within the crossbar is 95 ps.
|
||||
The delays of cluster feedbacks in Stratix IV is 100 ps, when driven by a LUT.
|
||||
Since all our outputs LUT outputs go to a BLE output, and have a delay of
|
||||
25 ps to do so, we subtract 25 ps from the 100 ps delay of a feedback
|
||||
to get the part that should be marked on the crossbar. -->
|
||||
<complete name="crossbar" input="clb.I fle[3:0].out" output="fle[3:0].in" circuit_model_name="mux_2level">
|
||||
<delay_constant max="90.2e-12" in_port="clb.I" out_port="fle[3:0].in" />
|
||||
<delay_constant max="70.2e-12" in_port="fle[3:0].out" out_port="fle[3:0].in" />
|
||||
</complete>
|
||||
<complete name="clks" input="clb.clk" output="fle[3:0].clk">
|
||||
</complete>
|
||||
|
||||
<!-- This way of specifying direct connection to clb outputs is important because this architecture uses automatic spreading of opins.
|
||||
By grouping to output pins in this fashion, if a logic block is completely filled by 6-LUTs,
|
||||
then the outputs those 6-LUTs take get evenly distributed across all four sides of the CLB instead of clumped on two sides (which is what happens with a more
|
||||
naive specification).
|
||||
-->
|
||||
<direct name="clbouts1" input="fle[3:0].out" output="clb.O[3:0]"/>
|
||||
</interconnect>
|
||||
|
||||
<fc default_in_type="frac" default_in_val="0.1" default_out_type="frac" default_out_val="0.10">
|
||||
</fc>
|
||||
|
||||
<pinlocations pattern="custom">
|
||||
<loc side="top">clb.clk </loc>
|
||||
<loc side="right">clb.I[5:0] clb.O[1:0]</loc>
|
||||
<loc side="bottom">clb.I[11:6] clb.O[3:2]</loc>
|
||||
<loc side="left"></loc>
|
||||
</pinlocations>
|
||||
<gridlocations>
|
||||
<loc type="fill" priority="1"/>
|
||||
</gridlocations>
|
||||
</pb_type>
|
||||
<!-- Define general purpose logic block (CLB) ends -->
|
||||
</complexblocklist>
|
||||
<power>
|
||||
<local_interconnect C_wire="2.5e-10"/>
|
||||
<mux_transistor_size mux_transistor_size="3"/>
|
||||
<FF_size FF_size="4"/>
|
||||
<LUT_transistor_size LUT_transistor_size="4"/>
|
||||
</power>
|
||||
<clocks>
|
||||
<clock buffer_size="auto" C_wire="2.5e-10"/>
|
||||
</clocks>
|
||||
</architecture>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,524 @@
|
|||
<architecture>
|
||||
<models>
|
||||
<model name="io">
|
||||
<input_ports>
|
||||
<port name="outpad"/>
|
||||
</input_ports>
|
||||
<output_ports>
|
||||
<port name="inpad"/>
|
||||
</output_ports>
|
||||
</model>
|
||||
|
||||
|
||||
</models>
|
||||
<!-- ODIN II specific config ends -->
|
||||
|
||||
<!-- Physical descriptions begin -->
|
||||
<layout auto="1.0"/>
|
||||
<!-- <layout width="20" height="20"/> -->
|
||||
|
||||
<!--mrFPGA_settings-->
|
||||
<!-- below is the timing parameters for a single memristor device (or so called RRAM) -->
|
||||
<!--mrFPGA R="1e3" C="2.24e-17" Tdel="0"-->
|
||||
<!-- below is the timing parameters for the buffers to insert in channels -->
|
||||
<!--buffer R="193.5" Cin="3.66e-15" Cout="3.56e-15" Tdel="6.14e-12"/-->
|
||||
<!--cblock R_opin_cblock="193.5" T_opin_cblock="6.14e-12"/-->
|
||||
<!--/mrFPGA-->
|
||||
<!--/mrFPGA_settings-->
|
||||
|
||||
<spice_settings>
|
||||
<parameters>
|
||||
<options sim_temp="25" post="off" captab="off" fast="on"/>
|
||||
<monte_carlo mc_sim="off" num_mc_points="3" cmos_variation="off" rram_variation="on">
|
||||
<cmos abs_variation="0.1" num_sigma="1"/>
|
||||
<rram abs_variation="0.1" num_sigma="1"/>
|
||||
</monte_carlo>
|
||||
<measure sim_num_clock_cycle="auto" accuracy="1e-12" accuracy_type="abs">
|
||||
<slew>
|
||||
<rise upper_thres_pct="0.95" lower_thres_pct="0.05"/>
|
||||
<fall upper_thres_pct="0.05" lower_thres_pct="0.95"/>
|
||||
</slew>
|
||||
<delay>
|
||||
<rise input_thres_pct="0.5" output_thres_pct="0.5"/>
|
||||
<fall input_thres_pct="0.5" output_thres_pct="0.5"/>
|
||||
</delay>
|
||||
</measure>
|
||||
<stimulate>
|
||||
<clock op_freq="auto" sim_slack="0.2" prog_freq="2.5e6">
|
||||
<rise slew_time="20e-12" slew_type="abs"/>
|
||||
<fall slew_time="20e-12" slew_type="abs"/>
|
||||
</clock>
|
||||
<input>
|
||||
<rise slew_time="25e-12" slew_type="abs"/>
|
||||
<fall slew_time="25e-12" slew_type="abs"/>
|
||||
</input>
|
||||
</stimulate>
|
||||
</parameters>
|
||||
<tech_lib lib_type="industry" transistor_type="TT" lib_path="/research/ece/lnis/CAD_TOOLS/DKITS/wibond_R90_1P4M_v1.3/models/hspice/r90es_logic_v1d3.l" nominal_vdd="1.2" io_vdd="2.5"/>
|
||||
<transistors pn_ratio="2" model_ref="M">
|
||||
<nmos model_name="nch" chan_length="100e-9" min_width="120e-9"/>
|
||||
<pmos model_name="pch" chan_length="100e-9" min_width="120e-9"/>
|
||||
<io_nmos model_name="nch_25" chan_length="100e-9" min_width="120e-9"/>
|
||||
<io_pmos model_name="pch_25" chan_length="100e-9" min_width="120e-9"/>
|
||||
</transistors>
|
||||
<module_circuit_models>
|
||||
<circuit_model type="inv_buf" name="INVTX1" prefix="INVTX1" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="inverter" size="3" tapered="off" power_gated="true"/>
|
||||
<port type="input" prefix="in" size="1" lib_name="I"/>
|
||||
<port type="input" prefix="EN" size="1" lib_name="EN" is_global="true" default_val="0" is_config_enable="true"/>
|
||||
<port type="input" prefix="ENB" size="1" lib_name="ENB" is_global="true" default_val="1" is_config_enable="true"/>
|
||||
<port type="output" prefix="out" size="1" lib_name="Z"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INVD4BWP" prefix="INVD4BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="ZN" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INVD1BWP" prefix="INVD1BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="ZN" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INVD2BWP" prefix="INVD2BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="ZN" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INVD3BWP" prefix="INVD3BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="ZN" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="BUFFD2BWP" prefix="BUFFD2BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="Z" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="BUFFD3BWP" prefix="BUFFD3BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="Z" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="BUFFD1BWP" prefix="BUFFD1BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="Z" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="buf4" prefix="buf4" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="3" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="tap_buf4" prefix="tap_buf4" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="3" tapered="on" tap_drive_level="3" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="pass_gate" name="TGATE" prefix="TGATE" is_default="1">
|
||||
<design_technology type="cmos" topology="transmission_gate" nmos_size="1" pmos_size="2"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="sel" size="1"/>
|
||||
<port type="input" prefix="selb" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="chan_wire" name="chan_segment" prefix="track_seg" is_default="1">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<wire_param model_type="pie" res_val="0" cap_val="0" level="1"/>
|
||||
<!-- model_type could be T, res_val and cap_val DON'T CARE -->
|
||||
</circuit_model>
|
||||
<circuit_model type="wire" name="direct_interc" prefix="direct_interc" is_default="1">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<wire_param model_type="pie" res_val="0" cap_val="0" level="1"/>
|
||||
<!-- model_type could be T, res_val cap_val should be defined -->
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_1level" prefix="mux_1level" is_default="1" dump_structural_verilog="true">
|
||||
<!-- <design_technology type="cmos" structure="one-level"/?]> -->
|
||||
<design_technology type="rram" ron="2e3" roff="30e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2" structure="one-level" advanced_rram_design="true"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVTX1"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="EN" size="1" is_global="true" default_val="0" is_config_enable="true"/>
|
||||
<port type="input" prefix="ENB" size="1" is_global="true" default_val="1" is_config_enable="true"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1" circuit_model_name="sram6T_rram"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_1level_tapbuf4" prefix="mux_1level_tapbuf4" is_default="0" dump_structural_verilog="true">
|
||||
<!-- <design_technology type="cmos" structure="one-level"/?]> -->
|
||||
<design_technology type="rram" ron="2e3" roff="30e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2" structure="one-level" advanced_rram_design="true"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVTX1"/>
|
||||
<output_buffer exist="on" circuit_model_name="tap_buf4"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="EN" size="1" is_global="true" default_val="0" is_config_enable="true"/>
|
||||
<port type="input" prefix="ENB" size="1" is_global="true" default_val="1" is_config_enable="true"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1" circuit_model_name="sram6T_rram"/>
|
||||
</circuit_model>
|
||||
<!--DFF subckt ports should be defined as <D> <Q> <CLK> <RESET> <SET> -->
|
||||
<circuit_model type="ff" name="static_dff" prefix="dff" spice_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/ff.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="D" size="1"/>
|
||||
<port type="input" prefix="Set" size="1" is_global="true" default_val="0" is_set="true"/>
|
||||
<port type="input" prefix="Reset" size="1" is_global="true" default_val="0" is_reset="true"/>
|
||||
<port type="output" prefix="Q" size="1"/>
|
||||
<port type="clock" prefix="clk" size="1" is_global="true" default_val="0" />
|
||||
</circuit_model>
|
||||
<circuit_model type="lut" name="lut6" prefix="lut6" dump_structural_verilog="true">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<lut_input_buffer exist="on" circuit_model_name="BUFFD3BWP"/>
|
||||
<!-- <lut_intermediate_buffer exist="on" circuit_model_name="BUFFD1BWP" location_map="-1-1-"/> -->
|
||||
<lut_input_inverter exist="on" circuit_model_name="INVD3BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="6"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<port type="sram" prefix="sram" size="64" circuit_model_name="sram6T_rram" default_val="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="sram" name="sram6T" prefix="sram" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/sram.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="2"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="sram" name="sram6T_rram" prefix="nvsram" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/sram.v">
|
||||
<!--design_technology type="cmos"/-->
|
||||
<design_technology type="rram" ron="3e3" roff="1e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="read" size="1" is_global="true" default_val="0" />
|
||||
<port type="input" prefix="nequalize" size="1" is_global="true" default_val="1" />
|
||||
<port type="output" prefix="out" size="2"/>
|
||||
<port type="bl" prefix="bl" size="3" default_val="0" inv_circuit_model_name="INVD1BWP"/>
|
||||
<port type="wl" prefix="wl" size="3" default_val="0" inv_circuit_model_name="INVD1BWP"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="sram" name="sram6T_blwl" prefix="sram_blwl" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/sram.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="read" size="1" is_global="true" default_val="0" />
|
||||
<port type="input" prefix="nequalize" size="1" is_global="true" default_val="0" />
|
||||
<port type="output" prefix="out" size="2"/>
|
||||
<port type="bl" prefix="bl" size="1"/>
|
||||
<port type="wl" prefix="wl" size="1"/>
|
||||
</circuit_model>
|
||||
<!--Scan-chain DFF subckt ports should be defined as <D> <Q> <Qb> <CLK> <RESET> <SET> -->
|
||||
<circuit_model type="sff" name="sc_ff" prefix="scff" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/ff.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="D" size="1"/>
|
||||
<port type="input" prefix="Set" size="1"/>
|
||||
<port type="input" prefix="Reset" size="1"/>
|
||||
<port type="output" prefix="Q" size="1"/>
|
||||
<port type="output" prefix="Qb" size="1"/>
|
||||
<port type="clock" prefix="clk" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="iopad" name="iopad" prefix="iopad" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/io.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/io.v">
|
||||
<!--design_technology type="cmos"/-->
|
||||
<design_technology type="rram" ron="3e3" roff="1e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="inout" prefix="pad" size="1"/>
|
||||
<port type="sram" prefix="en" size="1" mode_select="true" circuit_model_name="sram6T_rram" default_val="1"/>
|
||||
<port type="input" prefix="outpad" size="1"/>
|
||||
<port type="input" prefix="zin" size="1" is_global="true" default_val="0" />
|
||||
<port type="output" prefix="inpad" size="1"/>
|
||||
</circuit_model>
|
||||
</module_circuit_models>
|
||||
</spice_settings>
|
||||
<device>
|
||||
<sizing R_minW_nmos="8926" R_minW_pmos="16067" ipin_mux_trans_size="3"/>
|
||||
<timing C_ipin_cblock="596e-18" T_ipin_cblock="45.54e-12"/>
|
||||
<area grid_logic_tile_area="0"/>
|
||||
<!--sram area="6" organization="standalone" circuit_model_name="sram6T"-->
|
||||
<!--sram area="6" organization="scan-chain" circuit_model_name="sc_dff"-->
|
||||
<sram area="6">
|
||||
<verilog organization="memory-bank" circuit_model_name="sram6T_rram" />
|
||||
<spice organization="standalone" circuit_model_name="sram6T" />
|
||||
</sram>
|
||||
<chan_width_distr>
|
||||
<io width="1.000000"/>
|
||||
<x distr="uniform" peak="1.000000"/>
|
||||
<y distr="uniform" peak="1.000000"/>
|
||||
</chan_width_distr>
|
||||
<switch_block type="wilton" fs="3"/>
|
||||
</device>
|
||||
|
||||
<cblocks>
|
||||
<switch type="mux" name="cb_mux" R="0" Cin="596e-18" Cout="0" Tdel="45.54e-12" mux_trans_size="1.5" buf_size="4" circuit_model_name="mux_1level_tapbuf4" structure="one-level" num_level="1">
|
||||
</switch>
|
||||
</cblocks>
|
||||
<switchlist>
|
||||
<!-- VB: the mux_trans_size and buf_size data below is in minimum width transistor *areas*, assuming the purple
|
||||
book area formula. This means the mux transistors are about 5x minimum drive strength.
|
||||
We assume the first stage of the buffer is 3x min drive strength to be reasonable given the large
|
||||
mux transistors, and this gives a reasonable stage ratio of a bit over 5x to the second stage. We assume
|
||||
the n and p transistors in the first stage are equal-sized to lower the buffer trip point, since it's fed
|
||||
by a pass transistor mux. We can then reverse engineer the buffer second stage to hit the specified
|
||||
buf_size (really buffer area) - 16.2x minimum drive nmos and 1.8*16.2 = 29.2x minimum drive.
|
||||
I then took the data from Jeff G.'s PTM modeling of 45 nm to get the Cin (gate of first stage) and Cout
|
||||
(diff of second stage) listed below. Jeff's models are in tech/ptm_45nm, and are in min feature multiples.
|
||||
The minimum contactable transistor is 2.5 * 45 nm, so I need to multiply the drive strength sizes above by
|
||||
2.5x when looking up in Jeff's tables.
|
||||
Finally, we choose a switch delay (58 ps) that leads to length 4 wires having a delay equal to that of SIV of 126 ps.
|
||||
This also leads to the switch being 46% of the total wire delay, which is reasonable. -->
|
||||
<switch type="mux" name="sb_mux_L4" R="106" Cin="596e-18" Cout="0e-15" Tdel="35.8e-12" mux_trans_size="1.5" buf_size="27.645901" circuit_model_name="mux_1level_tapbuf4" structure="one-level" num_level="1">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L2" R="121" Cin="596e-18" Cout="0e-15" Tdel="35.8e-12" mux_trans_size="1.5" buf_size="27.645901" circuit_model_name="mux_1level_tapbuf4" structure="one-level" num_level="1">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L1" R="147" Cin="596e-18" Cout="0e-15" Tdel="35.8e-12" mux_trans_size="1.5" buf_size="27.645901" circuit_model_name="mux_1level_tapbuf4" structure="one-level" num_level="1">
|
||||
</switch>
|
||||
</switchlist>
|
||||
<segmentlist>
|
||||
<!--- VB & JL: using ITRS metal stack data, 96 nm half pitch wires, which are intermediate metal width/space.
|
||||
With the 96 nm half pitch, such wires would take 60 um of height, vs. a 90 nm high (approximated as square) Stratix IV tile so this seems
|
||||
reasonable. Using a tile length of 90 nm, corresponding to the length of a Stratix IV tile if it were square. -->
|
||||
<segment freq="0.4" length="4" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L4"/>
|
||||
<sb type="pattern">1 1 1 1 1</sb>
|
||||
<cb type="pattern">1 1 1 1</cb>
|
||||
</segment>
|
||||
<segment freq="0.3" length="2" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L4"/>
|
||||
<sb type="pattern">1 1 1</sb>
|
||||
<cb type="pattern">1 1</cb>
|
||||
</segment>
|
||||
<segment freq="0.3" length="1" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L4"/>
|
||||
<sb type="pattern">1 1</sb>
|
||||
<cb type="pattern">1</cb>
|
||||
</segment>
|
||||
</segmentlist>
|
||||
|
||||
<complexblocklist>
|
||||
|
||||
<!-- Define I/O pads begin -->
|
||||
<!-- Capacity is a unique property of I/Os, it is the maximum number of I/Os that can be placed at the same (X,Y) location on the FPGA -->
|
||||
<!-- Not sure of the area of an I/O (varies widely), and it's not relevant to the design of the FPGA core, so we're setting it to 0. -->
|
||||
<pb_type name="io" capacity="8" area="0" idle_mode_name="inpad" physical_mode_name="io_phy">
|
||||
<input name="outpad" num_pins="1"/>
|
||||
<output name="inpad" num_pins="1"/>
|
||||
|
||||
<!-- physical design description -->
|
||||
<mode name="io_phy" disabled_in_packing="true">
|
||||
<pb_type name="iopad" blif_model=".subckt io" num_pb="1" circuit_model_name="iopad" mode_bits="1">
|
||||
<input name="outpad" num_pins="1"/>
|
||||
<output name="inpad" num_pins="1"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="inpad" input="iopad.inpad" output="io.inpad">
|
||||
<delay_constant max="0e-11" in_port="iopad.inpad" out_port="io.inpad"/>
|
||||
</direct>
|
||||
<direct name="outpad" input="io.outpad" output="iopad.outpad">
|
||||
<delay_constant max="0e-11" in_port="io.outpad" out_port="iopad.outpad"/>
|
||||
</direct>
|
||||
</interconnect>
|
||||
</mode>
|
||||
|
||||
<!-- IOs can operate as either inputs or outputs.§
|
||||
Delays below come from Ian Kuon. They are small, so they should be interpreted as
|
||||
the delays to and from registers in the I/O (and generally I/Os are registered
|
||||
today and that is when you timing analyze them.
|
||||
-->
|
||||
<mode name="inpad">
|
||||
<pb_type name="inpad" blif_model=".input" num_pb="1" physical_pb_type_name="iopad" mode_bits="1">
|
||||
<output name="inpad" num_pins="1" physical_mode_pin="inpad"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="inpad" input="inpad.inpad" output="io.inpad">
|
||||
<delay_constant max="0e-11" in_port="inpad.inpad" out_port="io.inpad"/>
|
||||
</direct>
|
||||
</interconnect>
|
||||
</mode>
|
||||
<mode name="outpad">
|
||||
<pb_type name="outpad" blif_model=".output" num_pb="1" physical_pb_type_name="iopad" mode_bits="0">
|
||||
<input name="outpad" num_pins="1" physical_mode_pin="outpad"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="outpad" input="io.outpad" output="outpad.outpad">
|
||||
<delay_constant max="0e-11" in_port="io.outpad" out_port="outpad.outpad"/>
|
||||
</direct>
|
||||
</interconnect>
|
||||
</mode>
|
||||
|
||||
<!-- Every input pin is driven by 15% of the tracks in a channel, every output pin is driven by 10% of the tracks in a channel -->
|
||||
<fc default_in_type="frac" default_in_val="0.15" default_out_type="frac" default_out_val="0.10"/>
|
||||
|
||||
<!-- IOs go on the periphery of the FPGA, for consistency,
|
||||
make it physically equivalent on all sides so that only one definition of I/Os is needed.
|
||||
If I do not make a physically equivalent definition, then I need to define 4 different I/Os, one for each side of the FPGA
|
||||
-->
|
||||
<pinlocations pattern="custom">
|
||||
<loc side="left">io.outpad io.inpad</loc>
|
||||
<loc side="top">io.outpad io.inpad</loc>
|
||||
<loc side="right">io.outpad io.inpad</loc>
|
||||
<loc side="bottom">io.outpad io.inpad</loc>
|
||||
</pinlocations>
|
||||
|
||||
<!-- Place I/Os on the sides of the FPGA -->
|
||||
<gridlocations>
|
||||
<loc type="perimeter" priority="10"/>
|
||||
</gridlocations>
|
||||
|
||||
<power method="ignore"/>
|
||||
</pb_type>
|
||||
<!-- Define I/O pads ends -->
|
||||
|
||||
<!-- Define general purpose logic block (CLB) begin -->
|
||||
<!--- Area calculation: Total Stratix IV tile area is about 8100 um^2, and a minimum width transistor
|
||||
area is 60 L^2 yields a tile area of 84375 MWTAs.
|
||||
Routing at W=300 is 30481 MWTAs, leaving us with a total of 53000 MWTAs for logic block area
|
||||
This means that only 37% of our area is in the general routing, and 63% is inside the logic
|
||||
block. Note that the crossbar / local interconnect is considered part of the logic block
|
||||
area in this analysis. That is a lower proportion of of routing area than most academics
|
||||
assume, but note that the total routing area really includes the crossbar, which would push
|
||||
routing area up significantly, we estimate into the ~70% range.
|
||||
-->
|
||||
<pb_type name="clb" area="53894" opin_to_cb="false">
|
||||
<pin_equivalence_auto_detect input_ports ="off" output_ports="off"/>
|
||||
<input name="I" num_pins="40" equivalent="true"/>
|
||||
<output name="O" num_pins="10" equivalent="false"/>
|
||||
<!--input name="I" num_pins="40" equivalent="true"/-->
|
||||
<!--output name="O" num_pins="20" equivalent="false"/-->
|
||||
<clock name="clk" num_pins="1"/>
|
||||
|
||||
<!-- Describe fracturable logic element.
|
||||
Each fracturable logic element has a 6-LUT that can alternatively operate as two 5-LUTs with shared inputs.
|
||||
The outputs of the fracturable logic element can be optionally registered
|
||||
For spice modeling: in each primitive pb_type, user should define a circuit_model_name that linkes to the
|
||||
defined spice models
|
||||
-->
|
||||
<pb_type name="fle" num_pb="10" idle_mode_name="n1_lut6" physical_mode_name="n1_lut6">
|
||||
<input name="in" num_pins="6"/>
|
||||
<output name="out" num_pins="1"/>
|
||||
<clock name="clk" num_pins="1"/>
|
||||
<!-- 6-LUT mode definition begin -->
|
||||
<mode name="n1_lut6">
|
||||
<!-- Define 6-LUT mode -->
|
||||
<pb_type name="ble6" num_pb="1">
|
||||
<input name="in" num_pins="6"/>
|
||||
<output name="out" num_pins="1"/>
|
||||
<clock name="clk" num_pins="1"/>
|
||||
<!-- Define LUT -->
|
||||
<pb_type name="lut6" blif_model=".names" num_pb="1" class="lut" circuit_model_name="lut6">
|
||||
<input name="in" num_pins="6" port_class="lut_in"/>
|
||||
<output name="out" num_pins="1" port_class="lut_out"/>
|
||||
<delay_matrix type="max" in_port="lut6.in" out_port="lut6.out">
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
</delay_matrix>
|
||||
</pb_type>
|
||||
|
||||
<!-- Define flip-flop -->
|
||||
<pb_type name="ff" blif_model=".latch" num_pb="1" class="flipflop" circuit_model_name="static_dff">
|
||||
<input name="D" num_pins="1" port_class="D"/>
|
||||
<output name="Q" num_pins="1" port_class="Q"/>
|
||||
<clock name="clk" num_pins="1" port_class="clock"/>
|
||||
<T_setup value="29e-12" port="ff.D" clock="clk"/>
|
||||
<T_clock_to_Q max="16e-12" port="ff.Q" clock="clk"/>
|
||||
</pb_type>
|
||||
|
||||
<interconnect>
|
||||
<direct name="direct1" input="ble6.in" output="lut6[0:0].in"/>
|
||||
<direct name="direct2" input="lut6.out" output="ff.D">
|
||||
<!-- Advanced user option that tells CAD tool to find LUT+FF pairs in netlist -->
|
||||
<pack_pattern name="ble6" in_port="lut6.out" out_port="ff.D"/>
|
||||
</direct>
|
||||
<direct name="direct3" input="ble6.clk" output="ff.clk"/>
|
||||
<mux name="mux1" input="ff.Q lut6.out" output="ble6.out" circuit_model_name="mux_1level">
|
||||
<delay_constant max="2.736e-10" in_port="lut6.out" out_port="ble6.out" />
|
||||
<delay_constant max="2.736e-10" in_port="ff.Q" out_port="ble6.out" />
|
||||
</mux>
|
||||
</interconnect>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="direct1" input="fle.in" output="ble6.in"/>
|
||||
<direct name="direct2" input="ble6.out" output="fle.out[0:0]"/>
|
||||
<direct name="direct3" input="fle.clk" output="ble6.clk"/>
|
||||
</interconnect>
|
||||
</mode>
|
||||
<!-- 6-LUT mode definition end -->
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<!-- We use a full crossbar to get logical equivalence at inputs of CLB
|
||||
The delays below come from Stratix IV. the delay through a connection block
|
||||
input mux + the crossbar in Stratix IV is 167 ps. We already have a 72 ps
|
||||
delay on the connection block input mux (modeled by Ian Kuon), so the remaining
|
||||
delay within the crossbar is 95 ps.
|
||||
The delays of cluster feedbacks in Stratix IV is 100 ps, when driven by a LUT.
|
||||
Since all our outputs LUT outputs go to a BLE output, and have a delay of
|
||||
25 ps to do so, we subtract 25 ps from the 100 ps delay of a feedback
|
||||
to get the part that should be marked on the crossbar. -->
|
||||
<complete name="crossbar" input="clb.I fle[9:0].out" output="fle[9:0].in" circuit_model_name="mux_1level">
|
||||
<delay_constant max="1.0877e-09" in_port="clb.I" out_port="fle[9:0].in" />
|
||||
<delay_constant max="1.0877e-09" in_port="fle[9:0].out" out_port="fle[9:0].in" />
|
||||
</complete>
|
||||
<complete name="clks" input="clb.clk" output="fle[9:0].clk">
|
||||
</complete>
|
||||
|
||||
<!-- This way of specifying direct connection to clb outputs is important because this architecture uses automatic spreading of opins.
|
||||
By grouping to output pins in this fashion, if a logic block is completely filled by 6-LUTs,
|
||||
then the outputs those 6-LUTs take get evenly distributed across all four sides of the CLB instead of clumped on two sides (which is what happens with a more
|
||||
naive specification).
|
||||
-->
|
||||
<direct name="clbouts1" input="fle[9:0].out[0:0]" output="clb.O[9:0]"/>
|
||||
<!--direct name="clbouts2" input="fle[9:0].out[1:1]" output="clb.O[19:10]"/-->
|
||||
<!--complete name="clbouts1" input="fle[9:0].out[0:0]" output="clb.O[9:0]"/-->
|
||||
</interconnect>
|
||||
|
||||
<!-- Every input pin is driven by 15% of the tracks in a channel, every output pin is driven by 10% of the tracks in a channel -->
|
||||
<fc default_in_type="frac" default_in_val="0.15" default_out_type="frac" default_out_val="0.10"/>
|
||||
|
||||
<!--pinlocations pattern="spread"/-->
|
||||
<pinlocations pattern="custom">
|
||||
<loc side="top">clb.clk </loc>
|
||||
<loc side="right">clb.I[19:0] clb.O[4:0] </loc>
|
||||
<loc side="bottom">clb.I[39:20] clb.O[9:5] </loc>
|
||||
</pinlocations>
|
||||
|
||||
<!-- Place this general purpose logic block in any unspecified column -->
|
||||
<gridlocations>
|
||||
<loc type="fill" priority="1"/>
|
||||
</gridlocations>
|
||||
</pb_type>
|
||||
|
||||
</complexblocklist>
|
||||
<power>
|
||||
<local_interconnect C_wire="0"/>
|
||||
<mux_transistor_size mux_transistor_size="3"/>
|
||||
<FF_size FF_size="4"/>
|
||||
<LUT_transistor_size LUT_transistor_size="4"/>
|
||||
</power>
|
||||
<clocks>
|
||||
<clock buffer_size="auto" C_wire="0"/>
|
||||
</clocks>
|
||||
</architecture>
|
|
@ -0,0 +1,524 @@
|
|||
<architecture>
|
||||
<models>
|
||||
<model name="io">
|
||||
<input_ports>
|
||||
<port name="outpad"/>
|
||||
</input_ports>
|
||||
<output_ports>
|
||||
<port name="inpad"/>
|
||||
</output_ports>
|
||||
</model>
|
||||
|
||||
|
||||
</models>
|
||||
<!-- ODIN II specific config ends -->
|
||||
|
||||
<!-- Physical descriptions begin -->
|
||||
<layout auto="1.0"/>
|
||||
<!-- <layout width="20" height="20"/> -->
|
||||
|
||||
<!--mrFPGA_settings-->
|
||||
<!-- below is the timing parameters for a single memristor device (or so called RRAM) -->
|
||||
<!--mrFPGA R="1e3" C="2.24e-17" Tdel="0"-->
|
||||
<!-- below is the timing parameters for the buffers to insert in channels -->
|
||||
<!--buffer R="193.5" Cin="3.66e-15" Cout="3.56e-15" Tdel="6.14e-12"/-->
|
||||
<!--cblock R_opin_cblock="193.5" T_opin_cblock="6.14e-12"/-->
|
||||
<!--/mrFPGA-->
|
||||
<!--/mrFPGA_settings-->
|
||||
|
||||
<spice_settings>
|
||||
<parameters>
|
||||
<options sim_temp="25" post="off" captab="off" fast="on"/>
|
||||
<monte_carlo mc_sim="off" num_mc_points="3" cmos_variation="off" rram_variation="on">
|
||||
<cmos abs_variation="0.1" num_sigma="1"/>
|
||||
<rram abs_variation="0.1" num_sigma="1"/>
|
||||
</monte_carlo>
|
||||
<measure sim_num_clock_cycle="auto" accuracy="1e-12" accuracy_type="abs">
|
||||
<slew>
|
||||
<rise upper_thres_pct="0.95" lower_thres_pct="0.05"/>
|
||||
<fall upper_thres_pct="0.05" lower_thres_pct="0.95"/>
|
||||
</slew>
|
||||
<delay>
|
||||
<rise input_thres_pct="0.5" output_thres_pct="0.5"/>
|
||||
<fall input_thres_pct="0.5" output_thres_pct="0.5"/>
|
||||
</delay>
|
||||
</measure>
|
||||
<stimulate>
|
||||
<clock op_freq="auto" sim_slack="0.2" prog_freq="2.5e6">
|
||||
<rise slew_time="20e-12" slew_type="abs"/>
|
||||
<fall slew_time="20e-12" slew_type="abs"/>
|
||||
</clock>
|
||||
<input>
|
||||
<rise slew_time="25e-12" slew_type="abs"/>
|
||||
<fall slew_time="25e-12" slew_type="abs"/>
|
||||
</input>
|
||||
</stimulate>
|
||||
</parameters>
|
||||
<tech_lib lib_type="industry" transistor_type="TT" lib_path="/research/ece/lnis/CAD_TOOLS/DKITS/wibond_R90_1P4M_v1.3/models/hspice/r90es_logic_v1d3.l" nominal_vdd="1.2" io_vdd="2.5"/>
|
||||
<transistors pn_ratio="2" model_ref="M">
|
||||
<nmos model_name="nch" chan_length="100e-9" min_width="120e-9"/>
|
||||
<pmos model_name="pch" chan_length="100e-9" min_width="120e-9"/>
|
||||
<io_nmos model_name="nch_25" chan_length="100e-9" min_width="120e-9"/>
|
||||
<io_pmos model_name="pch_25" chan_length="100e-9" min_width="120e-9"/>
|
||||
</transistors>
|
||||
<module_circuit_models>
|
||||
<circuit_model type="inv_buf" name="INVTX1" prefix="INVTX1" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="inverter" size="3" tapered="off" power_gated="true"/>
|
||||
<port type="input" prefix="in" size="1" lib_name="I"/>
|
||||
<port type="input" prefix="EN" size="1" lib_name="EN" is_global="true" default_val="0" is_config_enable="true"/>
|
||||
<port type="input" prefix="ENB" size="1" lib_name="ENB" is_global="true" default_val="1" is_config_enable="true"/>
|
||||
<port type="output" prefix="out" size="1" lib_name="Z"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INVD4BWP" prefix="INVD4BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="ZN" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INVD1BWP" prefix="INVD1BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="ZN" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INVD2BWP" prefix="INVD2BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="ZN" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="INVD3BWP" prefix="INVD3BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="ZN" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="BUFFD2BWP" prefix="BUFFD2BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="Z" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="BUFFD3BWP" prefix="BUFFD3BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="Z" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="BUFFD1BWP" prefix="BUFFD1BWP" dump_explicit_port_map="true" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="1" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" lib_name="I" size="1"/>
|
||||
<port type="output" prefix="out" lib_name="Z" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="buf4" prefix="buf4" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="3" tapered="on" tap_drive_level="2" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="inv_buf" name="tap_buf4" prefix="tap_buf4" is_default="0">
|
||||
<design_technology type="cmos" topology="buffer" size="3" tapered="on" tap_drive_level="3" f_per_stage="4"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="pass_gate" name="TGATE" prefix="TGATE" is_default="1">
|
||||
<design_technology type="cmos" topology="transmission_gate" nmos_size="1" pmos_size="2"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="sel" size="1"/>
|
||||
<port type="input" prefix="selb" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="chan_wire" name="chan_segment" prefix="track_seg" is_default="1">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<wire_param model_type="pie" res_val="0" cap_val="0" level="1"/>
|
||||
<!-- model_type could be T, res_val and cap_val DON'T CARE -->
|
||||
</circuit_model>
|
||||
<circuit_model type="wire" name="direct_interc" prefix="direct_interc" is_default="1">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="off"/>
|
||||
<output_buffer exist="off"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<wire_param model_type="pie" res_val="0" cap_val="0" level="1"/>
|
||||
<!-- model_type could be T, res_val cap_val should be defined -->
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_1level" prefix="mux_1level" is_default="1" dump_structural_verilog="false">
|
||||
<!-- <design_technology type="cmos" structure="one-level"/?]> -->
|
||||
<design_technology type="rram" ron="2e3" roff="30e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2" structure="one-level" advanced_rram_design="true"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVTX1"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="EN" size="1" is_global="true" default_val="0" is_config_enable="true"/>
|
||||
<port type="input" prefix="ENB" size="1" is_global="true" default_val="1" is_config_enable="true"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1" circuit_model_name="sram6T_rram"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="mux" name="mux_1level_tapbuf4" prefix="mux_1level_tapbuf4" is_default="0" dump_structural_verilog="false">
|
||||
<!-- <design_technology type="cmos" structure="one-level"/?]> -->
|
||||
<design_technology type="rram" ron="2e3" roff="30e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2" structure="one-level" advanced_rram_design="true"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVTX1"/>
|
||||
<output_buffer exist="on" circuit_model_name="tap_buf4"/>
|
||||
<!--mux2to1 subckt_name="mux2to1"/-->
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="EN" size="1" is_global="true" default_val="0" is_config_enable="true"/>
|
||||
<port type="input" prefix="ENB" size="1" is_global="true" default_val="1" is_config_enable="true"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<port type="sram" prefix="sram" size="1" circuit_model_name="sram6T_rram"/>
|
||||
</circuit_model>
|
||||
<!--DFF subckt ports should be defined as <D> <Q> <CLK> <RESET> <SET> -->
|
||||
<circuit_model type="ff" name="static_dff" prefix="dff" spice_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/ff.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="D" size="1"/>
|
||||
<port type="input" prefix="Set" size="1" is_global="true" default_val="0" is_set="true"/>
|
||||
<port type="input" prefix="Reset" size="1" is_global="true" default_val="0" is_reset="true"/>
|
||||
<port type="output" prefix="Q" size="1"/>
|
||||
<port type="clock" prefix="clk" size="1" is_global="true" default_val="0" />
|
||||
</circuit_model>
|
||||
<circuit_model type="lut" name="lut6" prefix="lut6" dump_structural_verilog="true">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<lut_input_buffer exist="on" circuit_model_name="BUFFD3BWP"/>
|
||||
<!-- <lut_intermediate_buffer exist="on" circuit_model_name="BUFFD1BWP" location_map="-1-1-"/> -->
|
||||
<lut_input_inverter exist="on" circuit_model_name="INVD3BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="6"/>
|
||||
<port type="output" prefix="out" size="1"/>
|
||||
<port type="sram" prefix="sram" size="64" circuit_model_name="sram6T_rram" default_val="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="sram" name="sram6T" prefix="sram" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/sram.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="output" prefix="out" size="2"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="sram" name="sram6T_rram" prefix="nvsram" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/sram.v">
|
||||
<!--design_technology type="cmos"/-->
|
||||
<design_technology type="rram" ron="3e3" roff="1e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="read" size="1" is_global="true" default_val="0" />
|
||||
<port type="input" prefix="nequalize" size="1" is_global="true" default_val="1" />
|
||||
<port type="output" prefix="out" size="2"/>
|
||||
<port type="bl" prefix="bl" size="3" default_val="0" inv_circuit_model_name="INVD1BWP"/>
|
||||
<port type="wl" prefix="wl" size="3" default_val="0" inv_circuit_model_name="INVD1BWP"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="sram" name="sram6T_blwl" prefix="sram_blwl" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/sram.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/sram.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="in" size="1"/>
|
||||
<port type="input" prefix="read" size="1" is_global="true" default_val="0" />
|
||||
<port type="input" prefix="nequalize" size="1" is_global="true" default_val="0" />
|
||||
<port type="output" prefix="out" size="2"/>
|
||||
<port type="bl" prefix="bl" size="1"/>
|
||||
<port type="wl" prefix="wl" size="1"/>
|
||||
</circuit_model>
|
||||
<!--Scan-chain DFF subckt ports should be defined as <D> <Q> <Qb> <CLK> <RESET> <SET> -->
|
||||
<circuit_model type="sff" name="sc_ff" prefix="scff" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/ff.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/ff.v">
|
||||
<design_technology type="cmos"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="input" prefix="D" size="1"/>
|
||||
<port type="input" prefix="Set" size="1"/>
|
||||
<port type="input" prefix="Reset" size="1"/>
|
||||
<port type="output" prefix="Q" size="1"/>
|
||||
<port type="output" prefix="Qb" size="1"/>
|
||||
<port type="clock" prefix="clk" size="1"/>
|
||||
</circuit_model>
|
||||
<circuit_model type="iopad" name="iopad" prefix="iopad" spice_netlist="/research/ece/lnis/USERS/alacchi/Ganesh/OpenFPGA/vpr7_x2p/vpr/SpiceNetlists/io.sp" verilog_netlist="${OPENFPGA_PATH}/vpr7_x2p/vpr/VerilogNetlists/io.v">
|
||||
<!--design_technology type="cmos"/-->
|
||||
<design_technology type="rram" ron="3e3" roff="1e6" wprog_set_nmos="1.5" wprog_reset_nmos="1.6" wprog_set_pmos="3" wprog_reset_pmos="3.2"/>
|
||||
<input_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<output_buffer exist="on" circuit_model_name="INVD1BWP"/>
|
||||
<pass_gate_logic circuit_model_name="TGATE"/>
|
||||
<port type="inout" prefix="pad" size="1"/>
|
||||
<port type="sram" prefix="en" size="1" mode_select="true" circuit_model_name="sram6T_rram" default_val="1"/>
|
||||
<port type="input" prefix="outpad" size="1"/>
|
||||
<port type="input" prefix="zin" size="1" is_global="true" default_val="0" />
|
||||
<port type="output" prefix="inpad" size="1"/>
|
||||
</circuit_model>
|
||||
</module_circuit_models>
|
||||
</spice_settings>
|
||||
<device>
|
||||
<sizing R_minW_nmos="8926" R_minW_pmos="16067" ipin_mux_trans_size="3"/>
|
||||
<timing C_ipin_cblock="596e-18" T_ipin_cblock="45.54e-12"/>
|
||||
<area grid_logic_tile_area="0"/>
|
||||
<!--sram area="6" organization="standalone" circuit_model_name="sram6T"-->
|
||||
<!--sram area="6" organization="scan-chain" circuit_model_name="sc_dff"-->
|
||||
<sram area="6">
|
||||
<verilog organization="memory-bank" circuit_model_name="sram6T_rram" />
|
||||
<spice organization="standalone" circuit_model_name="sram6T" />
|
||||
</sram>
|
||||
<chan_width_distr>
|
||||
<io width="1.000000"/>
|
||||
<x distr="uniform" peak="1.000000"/>
|
||||
<y distr="uniform" peak="1.000000"/>
|
||||
</chan_width_distr>
|
||||
<switch_block type="wilton" fs="3"/>
|
||||
</device>
|
||||
|
||||
<cblocks>
|
||||
<switch type="mux" name="cb_mux" R="0" Cin="596e-18" Cout="0" Tdel="45.54e-12" mux_trans_size="1.5" buf_size="4" circuit_model_name="mux_1level_tapbuf4" structure="one-level" num_level="1">
|
||||
</switch>
|
||||
</cblocks>
|
||||
<switchlist>
|
||||
<!-- VB: the mux_trans_size and buf_size data below is in minimum width transistor *areas*, assuming the purple
|
||||
book area formula. This means the mux transistors are about 5x minimum drive strength.
|
||||
We assume the first stage of the buffer is 3x min drive strength to be reasonable given the large
|
||||
mux transistors, and this gives a reasonable stage ratio of a bit over 5x to the second stage. We assume
|
||||
the n and p transistors in the first stage are equal-sized to lower the buffer trip point, since it's fed
|
||||
by a pass transistor mux. We can then reverse engineer the buffer second stage to hit the specified
|
||||
buf_size (really buffer area) - 16.2x minimum drive nmos and 1.8*16.2 = 29.2x minimum drive.
|
||||
I then took the data from Jeff G.'s PTM modeling of 45 nm to get the Cin (gate of first stage) and Cout
|
||||
(diff of second stage) listed below. Jeff's models are in tech/ptm_45nm, and are in min feature multiples.
|
||||
The minimum contactable transistor is 2.5 * 45 nm, so I need to multiply the drive strength sizes above by
|
||||
2.5x when looking up in Jeff's tables.
|
||||
Finally, we choose a switch delay (58 ps) that leads to length 4 wires having a delay equal to that of SIV of 126 ps.
|
||||
This also leads to the switch being 46% of the total wire delay, which is reasonable. -->
|
||||
<switch type="mux" name="sb_mux_L4" R="106" Cin="596e-18" Cout="0e-15" Tdel="35.8e-12" mux_trans_size="1.5" buf_size="27.645901" circuit_model_name="mux_1level_tapbuf4" structure="one-level" num_level="1">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L2" R="121" Cin="596e-18" Cout="0e-15" Tdel="35.8e-12" mux_trans_size="1.5" buf_size="27.645901" circuit_model_name="mux_1level_tapbuf4" structure="one-level" num_level="1">
|
||||
</switch>
|
||||
<switch type="mux" name="sb_mux_L1" R="147" Cin="596e-18" Cout="0e-15" Tdel="35.8e-12" mux_trans_size="1.5" buf_size="27.645901" circuit_model_name="mux_1level_tapbuf4" structure="one-level" num_level="1">
|
||||
</switch>
|
||||
</switchlist>
|
||||
<segmentlist>
|
||||
<!--- VB & JL: using ITRS metal stack data, 96 nm half pitch wires, which are intermediate metal width/space.
|
||||
With the 96 nm half pitch, such wires would take 60 um of height, vs. a 90 nm high (approximated as square) Stratix IV tile so this seems
|
||||
reasonable. Using a tile length of 90 nm, corresponding to the length of a Stratix IV tile if it were square. -->
|
||||
<segment freq="0.4" length="4" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L4"/>
|
||||
<sb type="pattern">1 1 1 1 1</sb>
|
||||
<cb type="pattern">1 1 1 1</cb>
|
||||
</segment>
|
||||
<segment freq="0.3" length="2" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L4"/>
|
||||
<sb type="pattern">1 1 1</sb>
|
||||
<cb type="pattern">1 1</cb>
|
||||
</segment>
|
||||
<segment freq="0.3" length="1" type="unidir" Rmetal="101" Cmetal="22.5e-15" circuit_model_name="chan_segment">
|
||||
<mux name="sb_mux_L4"/>
|
||||
<sb type="pattern">1 1</sb>
|
||||
<cb type="pattern">1</cb>
|
||||
</segment>
|
||||
</segmentlist>
|
||||
|
||||
<complexblocklist>
|
||||
|
||||
<!-- Define I/O pads begin -->
|
||||
<!-- Capacity is a unique property of I/Os, it is the maximum number of I/Os that can be placed at the same (X,Y) location on the FPGA -->
|
||||
<!-- Not sure of the area of an I/O (varies widely), and it's not relevant to the design of the FPGA core, so we're setting it to 0. -->
|
||||
<pb_type name="io" capacity="8" area="0" idle_mode_name="inpad" physical_mode_name="io_phy">
|
||||
<input name="outpad" num_pins="1"/>
|
||||
<output name="inpad" num_pins="1"/>
|
||||
|
||||
<!-- physical design description -->
|
||||
<mode name="io_phy" disabled_in_packing="true">
|
||||
<pb_type name="iopad" blif_model=".subckt io" num_pb="1" circuit_model_name="iopad" mode_bits="1">
|
||||
<input name="outpad" num_pins="1"/>
|
||||
<output name="inpad" num_pins="1"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="inpad" input="iopad.inpad" output="io.inpad">
|
||||
<delay_constant max="0e-11" in_port="iopad.inpad" out_port="io.inpad"/>
|
||||
</direct>
|
||||
<direct name="outpad" input="io.outpad" output="iopad.outpad">
|
||||
<delay_constant max="0e-11" in_port="io.outpad" out_port="iopad.outpad"/>
|
||||
</direct>
|
||||
</interconnect>
|
||||
</mode>
|
||||
|
||||
<!-- IOs can operate as either inputs or outputs.§
|
||||
Delays below come from Ian Kuon. They are small, so they should be interpreted as
|
||||
the delays to and from registers in the I/O (and generally I/Os are registered
|
||||
today and that is when you timing analyze them.
|
||||
-->
|
||||
<mode name="inpad">
|
||||
<pb_type name="inpad" blif_model=".input" num_pb="1" physical_pb_type_name="iopad" mode_bits="1">
|
||||
<output name="inpad" num_pins="1" physical_mode_pin="inpad"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="inpad" input="inpad.inpad" output="io.inpad">
|
||||
<delay_constant max="0e-11" in_port="inpad.inpad" out_port="io.inpad"/>
|
||||
</direct>
|
||||
</interconnect>
|
||||
</mode>
|
||||
<mode name="outpad">
|
||||
<pb_type name="outpad" blif_model=".output" num_pb="1" physical_pb_type_name="iopad" mode_bits="0">
|
||||
<input name="outpad" num_pins="1" physical_mode_pin="outpad"/>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="outpad" input="io.outpad" output="outpad.outpad">
|
||||
<delay_constant max="0e-11" in_port="io.outpad" out_port="outpad.outpad"/>
|
||||
</direct>
|
||||
</interconnect>
|
||||
</mode>
|
||||
|
||||
<!-- Every input pin is driven by 15% of the tracks in a channel, every output pin is driven by 10% of the tracks in a channel -->
|
||||
<fc default_in_type="frac" default_in_val="0.15" default_out_type="frac" default_out_val="0.10"/>
|
||||
|
||||
<!-- IOs go on the periphery of the FPGA, for consistency,
|
||||
make it physically equivalent on all sides so that only one definition of I/Os is needed.
|
||||
If I do not make a physically equivalent definition, then I need to define 4 different I/Os, one for each side of the FPGA
|
||||
-->
|
||||
<pinlocations pattern="custom">
|
||||
<loc side="left">io.outpad io.inpad</loc>
|
||||
<loc side="top">io.outpad io.inpad</loc>
|
||||
<loc side="right">io.outpad io.inpad</loc>
|
||||
<loc side="bottom">io.outpad io.inpad</loc>
|
||||
</pinlocations>
|
||||
|
||||
<!-- Place I/Os on the sides of the FPGA -->
|
||||
<gridlocations>
|
||||
<loc type="perimeter" priority="10"/>
|
||||
</gridlocations>
|
||||
|
||||
<power method="ignore"/>
|
||||
</pb_type>
|
||||
<!-- Define I/O pads ends -->
|
||||
|
||||
<!-- Define general purpose logic block (CLB) begin -->
|
||||
<!--- Area calculation: Total Stratix IV tile area is about 8100 um^2, and a minimum width transistor
|
||||
area is 60 L^2 yields a tile area of 84375 MWTAs.
|
||||
Routing at W=300 is 30481 MWTAs, leaving us with a total of 53000 MWTAs for logic block area
|
||||
This means that only 37% of our area is in the general routing, and 63% is inside the logic
|
||||
block. Note that the crossbar / local interconnect is considered part of the logic block
|
||||
area in this analysis. That is a lower proportion of of routing area than most academics
|
||||
assume, but note that the total routing area really includes the crossbar, which would push
|
||||
routing area up significantly, we estimate into the ~70% range.
|
||||
-->
|
||||
<pb_type name="clb" area="53894" opin_to_cb="false">
|
||||
<pin_equivalence_auto_detect input_ports ="off" output_ports="off"/>
|
||||
<input name="I" num_pins="40" equivalent="true"/>
|
||||
<output name="O" num_pins="10" equivalent="false"/>
|
||||
<!--input name="I" num_pins="40" equivalent="true"/-->
|
||||
<!--output name="O" num_pins="20" equivalent="false"/-->
|
||||
<clock name="clk" num_pins="1"/>
|
||||
|
||||
<!-- Describe fracturable logic element.
|
||||
Each fracturable logic element has a 6-LUT that can alternatively operate as two 5-LUTs with shared inputs.
|
||||
The outputs of the fracturable logic element can be optionally registered
|
||||
For spice modeling: in each primitive pb_type, user should define a circuit_model_name that linkes to the
|
||||
defined spice models
|
||||
-->
|
||||
<pb_type name="fle" num_pb="10" idle_mode_name="n1_lut6" physical_mode_name="n1_lut6">
|
||||
<input name="in" num_pins="6"/>
|
||||
<output name="out" num_pins="1"/>
|
||||
<clock name="clk" num_pins="1"/>
|
||||
<!-- 6-LUT mode definition begin -->
|
||||
<mode name="n1_lut6">
|
||||
<!-- Define 6-LUT mode -->
|
||||
<pb_type name="ble6" num_pb="1">
|
||||
<input name="in" num_pins="6"/>
|
||||
<output name="out" num_pins="1"/>
|
||||
<clock name="clk" num_pins="1"/>
|
||||
<!-- Define LUT -->
|
||||
<pb_type name="lut6" blif_model=".names" num_pb="1" class="lut" circuit_model_name="lut6">
|
||||
<input name="in" num_pins="6" port_class="lut_in"/>
|
||||
<output name="out" num_pins="1" port_class="lut_out"/>
|
||||
<delay_matrix type="max" in_port="lut6.in" out_port="lut6.out">
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
2.094e-09
|
||||
</delay_matrix>
|
||||
</pb_type>
|
||||
|
||||
<!-- Define flip-flop -->
|
||||
<pb_type name="ff" blif_model=".latch" num_pb="1" class="flipflop" circuit_model_name="static_dff">
|
||||
<input name="D" num_pins="1" port_class="D"/>
|
||||
<output name="Q" num_pins="1" port_class="Q"/>
|
||||
<clock name="clk" num_pins="1" port_class="clock"/>
|
||||
<T_setup value="29e-12" port="ff.D" clock="clk"/>
|
||||
<T_clock_to_Q max="16e-12" port="ff.Q" clock="clk"/>
|
||||
</pb_type>
|
||||
|
||||
<interconnect>
|
||||
<direct name="direct1" input="ble6.in" output="lut6[0:0].in"/>
|
||||
<direct name="direct2" input="lut6.out" output="ff.D">
|
||||
<!-- Advanced user option that tells CAD tool to find LUT+FF pairs in netlist -->
|
||||
<pack_pattern name="ble6" in_port="lut6.out" out_port="ff.D"/>
|
||||
</direct>
|
||||
<direct name="direct3" input="ble6.clk" output="ff.clk"/>
|
||||
<mux name="mux1" input="ff.Q lut6.out" output="ble6.out" circuit_model_name="mux_1level">
|
||||
<delay_constant max="2.736e-10" in_port="lut6.out" out_port="ble6.out" />
|
||||
<delay_constant max="2.736e-10" in_port="ff.Q" out_port="ble6.out" />
|
||||
</mux>
|
||||
</interconnect>
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<direct name="direct1" input="fle.in" output="ble6.in"/>
|
||||
<direct name="direct2" input="ble6.out" output="fle.out[0:0]"/>
|
||||
<direct name="direct3" input="fle.clk" output="ble6.clk"/>
|
||||
</interconnect>
|
||||
</mode>
|
||||
<!-- 6-LUT mode definition end -->
|
||||
</pb_type>
|
||||
<interconnect>
|
||||
<!-- We use a full crossbar to get logical equivalence at inputs of CLB
|
||||
The delays below come from Stratix IV. the delay through a connection block
|
||||
input mux + the crossbar in Stratix IV is 167 ps. We already have a 72 ps
|
||||
delay on the connection block input mux (modeled by Ian Kuon), so the remaining
|
||||
delay within the crossbar is 95 ps.
|
||||
The delays of cluster feedbacks in Stratix IV is 100 ps, when driven by a LUT.
|
||||
Since all our outputs LUT outputs go to a BLE output, and have a delay of
|
||||
25 ps to do so, we subtract 25 ps from the 100 ps delay of a feedback
|
||||
to get the part that should be marked on the crossbar. -->
|
||||
<complete name="crossbar" input="clb.I fle[9:0].out" output="fle[9:0].in" circuit_model_name="mux_1level">
|
||||
<delay_constant max="1.0877e-09" in_port="clb.I" out_port="fle[9:0].in" />
|
||||
<delay_constant max="1.0877e-09" in_port="fle[9:0].out" out_port="fle[9:0].in" />
|
||||
</complete>
|
||||
<complete name="clks" input="clb.clk" output="fle[9:0].clk">
|
||||
</complete>
|
||||
|
||||
<!-- This way of specifying direct connection to clb outputs is important because this architecture uses automatic spreading of opins.
|
||||
By grouping to output pins in this fashion, if a logic block is completely filled by 6-LUTs,
|
||||
then the outputs those 6-LUTs take get evenly distributed across all four sides of the CLB instead of clumped on two sides (which is what happens with a more
|
||||
naive specification).
|
||||
-->
|
||||
<direct name="clbouts1" input="fle[9:0].out[0:0]" output="clb.O[9:0]"/>
|
||||
<!--direct name="clbouts2" input="fle[9:0].out[1:1]" output="clb.O[19:10]"/-->
|
||||
<!--complete name="clbouts1" input="fle[9:0].out[0:0]" output="clb.O[9:0]"/-->
|
||||
</interconnect>
|
||||
|
||||
<!-- Every input pin is driven by 15% of the tracks in a channel, every output pin is driven by 10% of the tracks in a channel -->
|
||||
<fc default_in_type="frac" default_in_val="0.15" default_out_type="frac" default_out_val="0.10"/>
|
||||
|
||||
<!--pinlocations pattern="spread"/-->
|
||||
<pinlocations pattern="custom">
|
||||
<loc side="top">clb.clk </loc>
|
||||
<loc side="right">clb.I[19:0] clb.O[4:0] </loc>
|
||||
<loc side="bottom">clb.I[39:20] clb.O[9:5] </loc>
|
||||
</pinlocations>
|
||||
|
||||
<!-- Place this general purpose logic block in any unspecified column -->
|
||||
<gridlocations>
|
||||
<loc type="fill" priority="1"/>
|
||||
</gridlocations>
|
||||
</pb_type>
|
||||
|
||||
</complexblocklist>
|
||||
<power>
|
||||
<local_interconnect C_wire="0"/>
|
||||
<mux_transistor_size mux_transistor_size="3"/>
|
||||
<FF_size FF_size="4"/>
|
||||
<LUT_transistor_size LUT_transistor_size="4"/>
|
||||
</power>
|
||||
<clocks>
|
||||
<clock buffer_size="auto" C_wire="0"/>
|
||||
</clocks>
|
||||
</architecture>
|
|
@ -0,0 +1,802 @@
|
|||
// Benchmark "TOP" written by ABC on Mon Feb 4 10:08:03 2019
|
||||
|
||||
module alu4 (
|
||||
i_0_, i_1_, i_2_, i_3_, i_4_, i_5_, i_6_, i_7_, i_8_, i_9_, i_10_,
|
||||
i_11_, i_12_, i_13_,
|
||||
o_0_, o_1_, o_2_, o_3_, o_4_, o_5_, o_6_, o_7_ );
|
||||
input i_0_, i_1_, i_2_, i_3_, i_4_, i_5_, i_6_, i_7_, i_8_, i_9_,
|
||||
i_10_, i_11_, i_12_, i_13_;
|
||||
output o_0_, o_1_, o_2_, o_3_, o_4_, o_5_, o_6_, o_7_;
|
||||
wire n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n42, n43,
|
||||
n44, n45, n46, n47, n48, n49, n50, n51, n52, n53, n54, n55, n56, n57,
|
||||
n58, n59, n60, n61, n62, n63, n64, n65, n66, n67, n68, n69, n70, n71,
|
||||
n72, n73, n74, n75, n76, n77, n78, n79, n80, n81, n82, n83, n84, n85,
|
||||
n86, n87, n88, n89, n90, n91, n92, n93, n94, n95, n96, n97, n98, n99,
|
||||
n100, n101, n102, n103, n104, n105, n106, n107, n108, n109, n110, n111,
|
||||
n112, n113, n114, n115, n116, n117, n118, n119, n120, n121, n122, n123,
|
||||
n124, n125, n126, n127, n128, n129, n130, n131, n132, n133, n134, n135,
|
||||
n136, n137, n138, n139, n140, n141, n142, n143, n144, n145, n146, n147,
|
||||
n148, n149, n150, n151, n152, n153, n154, n155, n156, n157, n158, n159,
|
||||
n160, n161, n162, n163, n164, n165, n166, n167, n168, n169, n170, n171,
|
||||
n172, n173, n174, n175, n176, n177, n178, n179, n180, n181, n182, n183,
|
||||
n184, n185, n186, n187, n188, n189, n190, n191, n192, n193, n194, n195,
|
||||
n196, n197, n198, n199, n200, n201, n202, n203, n204, n205, n206, n207,
|
||||
n208, n209, n210, n211, n212, n213, n214, n215, n216, n217, n218, n219,
|
||||
n220, n221, n222, n223, n224, n225, n226, n227, n228, n229, n230, n231,
|
||||
n232, n233, n234, n235, n236, n237, n238, n239, n240, n241, n242, n243,
|
||||
n244, n245, n246, n247, n248, n249, n250, n251, n252, n253, n254, n255,
|
||||
n256, n257, n258, n259, n260, n261, n262, n263, n264, n265, n266, n267,
|
||||
n268, n269, n270, n271, n272, n273, n274, n275, n276, n277, n278, n279,
|
||||
n280, n281, n282, n283, n284, n285, n286, n287, n288, n289, n290, n291,
|
||||
n292, n293, n294, n295, n296, n297, n298, n299, n300, n301, n302, n303,
|
||||
n304, n305, n306, n307, n308, n309, n310, n311, n312, n313, n314, n315,
|
||||
n316, n317, n318, n319, n320, n321, n322, n323, n324, n325, n326, n327,
|
||||
n328, n329, n330, n331, n332, n333, n334, n335, n336, n337, n338, n339,
|
||||
n340, n341, n342, n343, n344, n345, n346, n347, n348, n349, n350, n351,
|
||||
n352, n353, n354, n355, n356, n357, n358, n359, n360, n361, n362, n363,
|
||||
n364, n365, n366, n367, n368, n369, n370, n371, n372, n373, n374, n375,
|
||||
n376, n377, n378, n379, n380, n381, n382, n383, n384, n385, n386, n387,
|
||||
n388, n389, n390, n391, n392, n393, n394, n395, n396, n397, n398, n399,
|
||||
n400, n401, n402, n403, n404, n405, n406, n407, n408, n409, n410, n411,
|
||||
n412, n413, n414, n415, n416, n417, n418, n419, n420, n421, n422, n423,
|
||||
n424, n425, n426, n427, n428, n429, n430, n431, n432, n433, n434, n435,
|
||||
n436, n437, n438, n439, n440, n441, n442, n443, n444, n445, n446, n447,
|
||||
n448, n449, n450, n451, n452, n453, n454, n455, n456, n457, n458, n459,
|
||||
n460, n461, n462, n463, n464, n465, n466, n467, n468, n469, n470, n471,
|
||||
n472, n473, n474, n475, n476, n477, n478, n479, n480, n481, n482, n483,
|
||||
n484, n485, n486, n487, n488, n489, n490, n491, n492, n493, n494, n495,
|
||||
n496, n497, n498, n499, n500, n501, n502, n503, n504, n505, n506, n507,
|
||||
n508, n509, n510, n511, n512, n513, n514, n515, n516, n517, n518, n519,
|
||||
n520, n521, n522, n523, n524, n525, n526, n527, n528, n529, n530, n531,
|
||||
n532, n533, n534, n535, n536, n537, n538, n539, n540, n541, n542, n543,
|
||||
n544, n545, n546, n547, n548, n549, n550, n551, n552, n553, n554, n555,
|
||||
n556, n557, n558, n559, n560, n561, n562, n563, n564, n565, n566, n567,
|
||||
n568, n569, n570, n571, n572, n573, n574, n575, n576, n577, n578, n579,
|
||||
n580, n581, n582, n583, n584, n585, n586, n587, n588, n589, n590, n591,
|
||||
n592, n593, n594, n595, n596, n597, n598, n599, n600, n601, n602, n603,
|
||||
n604, n605, n606, n607, n608, n609, n610, n611, n612, n613, n614, n615,
|
||||
n616, n617, n618, n619, n620, n621, n622, n623, n624, n625, n626, n627,
|
||||
n628, n629, n630, n631, n632, n633, n634, n635, n636, n637, n638, n639,
|
||||
n640, n641, n642, n643, n644, n645, n646, n647, n648, n649, n650, n651,
|
||||
n652, n653, n654, n655, n656, n657, n658, n659, n660, n661, n662, n663,
|
||||
n664, n665, n666, n667, n668, n669, n670, n671, n672, n673, n674, n675,
|
||||
n676, n677, n678, n679, n680, n681, n682, n683, n684, n685, n686, n687,
|
||||
n688, n689, n690, n691, n692, n693, n694, n695, n696, n697, n698, n699,
|
||||
n700, n701, n702, n703, n704, n705, n706, n707, n708, n709, n710, n711,
|
||||
n712, n713, n714, n715, n716, n717, n718, n719, n720, n721, n722, n723,
|
||||
n724, n725, n726, n727, n728, n729, n730, n731, n732, n733, n734, n735,
|
||||
n736, n737, n738, n739, n740, n741, n742, n743, n744, n745, n746, n747,
|
||||
n748, n749, n750, n751;
|
||||
assign o_0_ = ~n42;
|
||||
assign o_1_ = ~n509;
|
||||
assign o_2_ = ~n502;
|
||||
assign o_3_ = ~n488;
|
||||
assign o_4_ = ~n41;
|
||||
assign o_5_ = ~n659 | ~n662 | n40 | ~n658 | n38 | n39 | n36 | n37;
|
||||
assign o_6_ = ~n35;
|
||||
assign o_7_ = ~n636 | ~n637 | n34 | ~n576 | n32 | n33 | n30 | n31;
|
||||
assign n30 = ~i_9_ & (~n163 | n165 | n168);
|
||||
assign n31 = i_9_ & n65 & n419;
|
||||
assign n32 = ~i_5_ & (~n625 | (~n238 & n250));
|
||||
assign n33 = i_9_ & (n66 | ~n621 | ~n622);
|
||||
assign n34 = n244 | n246 | n240 | n242 | ~n630 | ~n632 | n248 | n249;
|
||||
assign n35 = n278 & n279 & (~i_2_ | n277);
|
||||
assign n36 = i_11_ & (~n650 | (~n266 & n360));
|
||||
assign n37 = i_2_ & n361 & n272;
|
||||
assign n38 = ~n71 & ~n532;
|
||||
assign n39 = ~n562 & (~n648 | (~i_13_ & ~n532));
|
||||
assign n40 = ~i_4_ & (~n647 | (~n59 & ~n281));
|
||||
assign n41 = n473 & n472 & n471 & n470 & n469 & ~n465 & ~n459 & ~n461;
|
||||
assign n42 = ~n46 & n510 & (~i_0_ | n511);
|
||||
assign n43 = ~i_1_ | ~i_3_;
|
||||
assign n44 = ~i_5_ | n43;
|
||||
assign n45 = ~i_8_ & i_10_;
|
||||
assign n46 = i_3_ & (n45 | ~n435);
|
||||
assign n47 = ~n67 & (~i_6_ | ~i_10_);
|
||||
assign n48 = (n521 | n52) & (n56 | n120);
|
||||
assign n49 = i_1_ | n445;
|
||||
assign n50 = i_11_ | n116;
|
||||
assign n51 = n48 & (n49 | n50);
|
||||
assign n52 = i_12_ | n116;
|
||||
assign n53 = i_0_ | n225;
|
||||
assign n54 = (i_11_ | n53) & (n49 | n52);
|
||||
assign n55 = ~i_6_ | i_7_;
|
||||
assign n56 = i_0_ | n212;
|
||||
assign n57 = ~i_2_ | i_0_ | i_1_;
|
||||
assign n58 = (i_6_ | n57) & (n55 | n56);
|
||||
assign n59 = ~i_3_ | n225;
|
||||
assign n60 = ~i_3_ | n445;
|
||||
assign n61 = (~i_6_ | n60) & (~i_5_ | n59);
|
||||
assign n62 = i_0_ | n63;
|
||||
assign n63 = i_3_ | i_2_;
|
||||
assign n64 = n62 & (~i_5_ | n63);
|
||||
assign n65 = ~i_12_ & i_13_;
|
||||
assign n66 = n65 & (~n613 | (i_8_ & ~n379));
|
||||
assign n67 = i_6_ & n519;
|
||||
assign n68 = ~n158 & (~n615 | (n67 & ~n400));
|
||||
assign n69 = (i_7_ | n200) & (i_6_ | n62);
|
||||
assign n70 = n69 & (i_8_ | n56);
|
||||
assign n71 = ~i_12_ | n116;
|
||||
assign n72 = (~i_1_ | n71) & (~i_6_ | ~n348);
|
||||
assign n73 = ~i_1_ & i_6_;
|
||||
assign n74 = (~i_0_ | n73) & (~i_1_ | i_5_);
|
||||
assign n75 = ~n304 & ~i_9_ & ~n77;
|
||||
assign n76 = i_3_ & (n75 | (~n71 & ~n98));
|
||||
assign n77 = ~i_11_ | n116;
|
||||
assign n78 = i_8_ | i_6_;
|
||||
assign n79 = n77 | n78 | ~i_2_ | i_9_;
|
||||
assign n80 = ~i_0_ | n63;
|
||||
assign n81 = ~i_0_ | n195;
|
||||
assign n82 = (i_7_ | n81) & (i_6_ | n80);
|
||||
assign n83 = i_0_ & (n76 | ~n79 | ~n627);
|
||||
assign n84 = i_3_ | ~i_11_ | n56 | ~n348;
|
||||
assign n85 = n116 | n400 | ~i_3_ | i_9_;
|
||||
assign n86 = n178 | ~i_5_ | n72;
|
||||
assign n87 = n516 | n177 | ~n338;
|
||||
assign n88 = i_9_ | n74 | n522 | n77;
|
||||
assign n89 = n88 & n87 & n86 & n85 & ~n83 & n84;
|
||||
assign n90 = (n99 | n157) & (n134 | n521);
|
||||
assign n91 = ~i_6_ | n522;
|
||||
assign n92 = n90 & (n91 | n49);
|
||||
assign n93 = (~n102 | n521) & (~n67 | n157);
|
||||
assign n94 = (n518 | n49) & (n520 | n400);
|
||||
assign n95 = n93 & n94;
|
||||
assign n96 = (~n103 | n134) & (n53 | n107);
|
||||
assign n97 = n96 & (n57 | n91);
|
||||
assign n98 = ~i_6_ | n272;
|
||||
assign n99 = i_8_ | ~i_6_ | ~i_7_;
|
||||
assign n100 = n98 & n97 & (n99 | n56);
|
||||
assign n101 = i_5_ & n365;
|
||||
assign n102 = ~i_6_ & n519;
|
||||
assign n103 = ~i_2_ & ~i_0_ & i_1_;
|
||||
assign n104 = n101 & (~n607 | (n102 & n103));
|
||||
assign n105 = i_11_ | ~n166;
|
||||
assign n106 = i_10_ | n304;
|
||||
assign n107 = i_6_ | n522;
|
||||
assign n108 = (n107 | n50) & (n105 | n106);
|
||||
assign n109 = i_12_ | n113;
|
||||
assign n110 = i_11_ | n113;
|
||||
assign n111 = (~n67 | n109) & (n99 | n110);
|
||||
assign n112 = i_11_ | i_12_;
|
||||
assign n113 = i_9_ | i_13_;
|
||||
assign n114 = i_3_ | i_10_ | n112 | n113;
|
||||
assign n115 = i_5_ | n312;
|
||||
assign n116 = i_10_ | i_13_;
|
||||
assign n117 = (~i_10_ | n115) & (n116 | ~n164);
|
||||
assign n118 = i_13_ & (~n600 | (~n547 & ~n548));
|
||||
assign n119 = i_5_ | n515;
|
||||
assign n120 = i_12_ | ~n338;
|
||||
assign n121 = (n119 | n120) & (~n164 | ~n239);
|
||||
assign n122 = n65 & (~n599 | (~i_3_ & ~i_11_));
|
||||
assign n123 = n555 | n518 | n554;
|
||||
assign n124 = n553 | n134 | n552;
|
||||
assign n125 = n522 | n198 | ~n247;
|
||||
assign n126 = ~n348 | ~n67 | ~n101;
|
||||
assign n127 = n449 | n107 | ~n338;
|
||||
assign n128 = n524 | n99 | ~n319;
|
||||
assign n129 = (n544 | n546) & (n121 | n520);
|
||||
assign n130 = n129 & n128 & n127 & n126 & n125 & n124 & ~n122 & n123;
|
||||
assign n131 = (n107 | ~n419) & (n91 | ~n402);
|
||||
assign n132 = (n171 | n151) & (n150 | n551);
|
||||
assign n133 = n597 & n598 & (n545 | n550);
|
||||
assign n134 = ~i_7_ | n78;
|
||||
assign n135 = ~n101 | ~n239;
|
||||
assign n136 = n132 & n133 & (n134 | n135);
|
||||
assign n137 = i_4_ | ~i_0_ | ~i_1_;
|
||||
assign n138 = i_4_ | n445;
|
||||
assign n139 = (~i_6_ | n138) & (~i_7_ | n137);
|
||||
assign n140 = ~n524 & ~n220 & i_2_ & ~i_8_;
|
||||
assign n141 = n546 | n549;
|
||||
assign n142 = n162 | n107 | n158;
|
||||
assign n143 = n555 | ~n102 | n554;
|
||||
assign n144 = n553 | n91 | n552;
|
||||
assign n145 = (n194 | n151) & (n198 | n551);
|
||||
assign n146 = (n134 | n543) & (n547 | n550);
|
||||
assign n147 = n146 & n145 & n144 & n143 & n141 & n142;
|
||||
assign n148 = (n171 | n551) & (n99 | n543);
|
||||
assign n149 = n595 & n596 & (n545 | n549);
|
||||
assign n150 = ~i_5_ | n201;
|
||||
assign n151 = ~n65 | ~n264;
|
||||
assign n152 = n148 & n149 & (n150 | n151);
|
||||
assign n153 = (n99 | ~n402) & (n91 | ~n419);
|
||||
assign n154 = (n544 | n547) & (n172 | n198);
|
||||
assign n155 = n593 & n594 & (n542 | n546);
|
||||
assign n156 = n154 & n155 & (n91 | n135);
|
||||
assign n157 = ~i_0_ | n212;
|
||||
assign n158 = ~i_5_ | n312;
|
||||
assign n159 = n158 | n157 | n134;
|
||||
assign n160 = n115 | n99 | ~n103;
|
||||
assign n161 = i_2_ | n312;
|
||||
assign n162 = ~i_10_ | ~n319;
|
||||
assign n163 = n161 | n162 | ~i_5_ | n91;
|
||||
assign n164 = ~i_5_ & i_3_ & i_4_;
|
||||
assign n165 = n164 & ~n77 & i_1_ & ~i_7_;
|
||||
assign n166 = ~i_12_ & ~i_13_;
|
||||
assign n167 = i_10_ & i_11_;
|
||||
assign n168 = n166 & n167 & (~n159 | ~n160);
|
||||
assign n169 = (n542 | n545) & (n541 | n150);
|
||||
assign n170 = (n107 | n135) & (~n446 | n544);
|
||||
assign n171 = i_3_ | n539;
|
||||
assign n172 = ~n65 | ~n437;
|
||||
assign n173 = n169 & n170 & (n171 | n172);
|
||||
assign n174 = (~n446 | n542) & (n171 | n541);
|
||||
assign n175 = (n544 | n545) & (n91 | n543);
|
||||
assign n176 = n174 & n175 & (n172 | n150);
|
||||
assign n177 = i_10_ | n522;
|
||||
assign n178 = ~i_8_ | n272;
|
||||
assign n179 = n177 & n178;
|
||||
assign n180 = (~n460 | n591) & (n179 | ~n463);
|
||||
assign n181 = n592 & (n533 | n56);
|
||||
assign n182 = n106 & n98;
|
||||
assign n183 = n180 & n181 & (n182 | ~n385);
|
||||
assign n184 = (~n340 | n535) & (n106 | n449);
|
||||
assign n185 = i_8_ | n534;
|
||||
assign n186 = ~i_4_ | n212;
|
||||
assign n187 = n184 & (n185 | n186);
|
||||
assign n188 = (~n536 | n537) & (n335 | n538);
|
||||
assign n189 = (n186 | n474) & (n98 | ~n101);
|
||||
assign n190 = ~i_5_ | n272;
|
||||
assign n191 = n188 & n189 & (n190 | ~n340);
|
||||
assign n192 = (n518 | n521) & (n520 | n157);
|
||||
assign n193 = n192 & (n49 | ~n102);
|
||||
assign n194 = i_3_ | n214;
|
||||
assign n195 = i_1_ | i_3_;
|
||||
assign n196 = n194 & (~i_5_ | n195);
|
||||
assign n197 = ~i_6_ | i_0_ | i_3_;
|
||||
assign n198 = i_3_ | n516;
|
||||
assign n199 = n198 & (i_5_ | n195);
|
||||
assign n200 = i_0_ | n195;
|
||||
assign n201 = i_3_ | i_6_;
|
||||
assign n202 = n200 & n199 & (i_0_ | n201);
|
||||
assign n203 = ~i_6_ | ~i_0_ | ~i_3_;
|
||||
assign n204 = i_1_ & ~i_6_;
|
||||
assign n205 = (i_2_ | ~i_6_) & (~i_7_ | n204);
|
||||
assign n206 = n517 | i_6_ | n749;
|
||||
assign n207 = n517 | i_1_ | i_7_;
|
||||
assign n208 = i_11_ | n435;
|
||||
assign n209 = n206 & n207 & (n205 | n208);
|
||||
assign n210 = i_5_ | n63;
|
||||
assign n211 = i_2_ | n516;
|
||||
assign n212 = i_1_ | i_2_;
|
||||
assign n213 = n211 & (i_5_ | n212);
|
||||
assign n214 = ~i_5_ | ~i_6_;
|
||||
assign n215 = (~i_5_ | n212) & (i_2_ | n214);
|
||||
assign n216 = (~i_5_ | n225) & (~i_2_ | n214);
|
||||
assign n217 = ~i_6_ | n445;
|
||||
assign n218 = n216 & n217;
|
||||
assign n219 = ~i_7_ | ~i_1_ | ~i_5_;
|
||||
assign n220 = ~i_1_ & ~i_6_;
|
||||
assign n221 = n219 & (~i_0_ | ~i_7_ | n220);
|
||||
assign n222 = i_10_ & ~n435 & (~n218 | ~n221);
|
||||
assign n223 = ~i_2_ | n516;
|
||||
assign n224 = i_6_ | n445;
|
||||
assign n225 = ~i_1_ | ~i_2_;
|
||||
assign n226 = n223 & n224 & (i_5_ | n225);
|
||||
assign n227 = n226 & (i_7_ | n74);
|
||||
assign n228 = (~i_0_ | i_6_) & (~i_1_ | i_5_);
|
||||
assign n229 = (i_6_ | n138) & (i_7_ | n137);
|
||||
assign n230 = n73 | n119 | ~i_2_ | ~i_8_;
|
||||
assign n231 = n230 & (n229 | ~n475);
|
||||
assign n232 = (n53 | ~n67) & (~n103 | n518);
|
||||
assign n233 = n232 & (n57 | ~n102);
|
||||
assign n234 = ~i_4_ | n225;
|
||||
assign n235 = ~i_4_ | n557;
|
||||
assign n236 = (i_6_ | n235) & (i_8_ | n234);
|
||||
assign n237 = i_4_ & (~n623 | (~i_1_ & ~n177));
|
||||
assign n238 = ~n237 & (i_6_ | i_10_ | ~n536);
|
||||
assign n239 = ~i_9_ & n338;
|
||||
assign n240 = n239 & n164 & ~n233;
|
||||
assign n241 = n406 & ~i_10_ & ~i_13_;
|
||||
assign n242 = ~n119 & (~n580 | (~n92 & n241));
|
||||
assign n243 = ~i_3_ & ~i_8_;
|
||||
assign n244 = ~n525 & (n140 | (~n139 & n243));
|
||||
assign n245 = n383 & ~i_9_ & ~i_13_;
|
||||
assign n246 = ~n524 & (~n582 | (~n193 & n245));
|
||||
assign n247 = ~i_11_ & i_13_;
|
||||
assign n248 = n247 & (~n584 | (~n223 & ~n528));
|
||||
assign n249 = n65 & (~n586 | ~n588 | ~n590);
|
||||
assign n250 = n338 & i_12_;
|
||||
assign n251 = n250 & (~n183 | ~n187 | ~n191);
|
||||
assign n252 = ~n71 & (~n609 | ~n610 | ~n611);
|
||||
assign n253 = ~n247 & (i_4_ | ~i_8_ | ~n406);
|
||||
assign n254 = (~i_3_ | n208) & (~n338 | n533);
|
||||
assign n255 = n253 & n254 & (n120 | ~n475);
|
||||
assign n256 = ~i_7_ | i_10_;
|
||||
assign n257 = i_4_ | ~n383;
|
||||
assign n258 = (~i_7_ | n257) & (n256 | ~n318);
|
||||
assign n259 = i_7_ & n45;
|
||||
assign n260 = (i_8_ | n258) & (~n259 | n559);
|
||||
assign n261 = n260 & ~n731 & (i_7_ | n255);
|
||||
assign n262 = ~i_7_ | ~i_9_;
|
||||
assign n263 = n262 & (i_7_ | ~i_10_);
|
||||
assign n264 = i_10_ & ~i_7_ & i_8_;
|
||||
assign n265 = i_12_ & (n264 | ~n548);
|
||||
assign n266 = ~i_10_ | n522;
|
||||
assign n267 = i_8_ | n262;
|
||||
assign n268 = ~n265 & (~i_11_ | (n266 & n267));
|
||||
assign n269 = (n110 | ~n243) & (n109 | ~n475);
|
||||
assign n270 = ~i_4_ | n116;
|
||||
assign n271 = n270 & (~i_8_ | n52);
|
||||
assign n272 = ~i_7_ | i_9_;
|
||||
assign n273 = ~i_4_ | n272;
|
||||
assign n274 = (i_7_ | n271) & (i_13_ | n273);
|
||||
assign n275 = n282 & (i_4_ | n268);
|
||||
assign n276 = n556 & n638 & (i_3_ | n274);
|
||||
assign n277 = n275 & n276 & (~i_13_ | n263);
|
||||
assign n278 = ~n750 & (n548 | n559);
|
||||
assign n279 = n644 & n645 & (i_2_ | n261);
|
||||
assign n280 = ~i_6_ | ~i_9_;
|
||||
assign n281 = n280 & (i_6_ | ~i_10_);
|
||||
assign n282 = n332 | n116;
|
||||
assign n283 = (n523 & (~i_7_ | n733)) | (i_7_ & n733);
|
||||
assign n284 = i_2_ | i_13_;
|
||||
assign n285 = n282 & (n283 | n284);
|
||||
assign n286 = i_10_ | i_7_;
|
||||
assign n287 = i_11_ | n286;
|
||||
assign n288 = i_11_ | i_13_;
|
||||
assign n289 = (~n166 | n287) & (n177 | n288);
|
||||
assign n290 = i_8_ | n272;
|
||||
assign n291 = (n288 | n290) & (~n166 | n178);
|
||||
assign n292 = (n289 & (~i_6_ | n291)) | (i_6_ & n291);
|
||||
assign n293 = (n523 & (~i_8_ | n733)) | (i_8_ & n733);
|
||||
assign n294 = n292 & (i_13_ | n293);
|
||||
assign n295 = (~i_7_ & n566) | (n565 & (i_7_ | n566));
|
||||
assign n296 = i_7_ | n435;
|
||||
assign n297 = n295 & (~i_6_ | ~i_11_ | n296);
|
||||
assign n298 = n287 & (i_12_ | n256);
|
||||
assign n299 = ~i_2_ & ~n751 & (i_6_ | ~n298);
|
||||
assign n300 = ~n299 & (~i_4_ | ~n578);
|
||||
assign n301 = n591 | i_2_ | ~i_4_;
|
||||
assign n302 = n300 & n301 & (n182 | ~n365);
|
||||
assign n303 = ~i_7_ | n280;
|
||||
assign n304 = i_6_ | i_7_;
|
||||
assign n305 = n303 & (~i_10_ | (~i_9_ & n304));
|
||||
assign n306 = (i_6_ & ~n540) | (~n266 & (~i_6_ | ~n540));
|
||||
assign n307 = ~i_4_ & (~n577 | (i_11_ & n306));
|
||||
assign n308 = (n294 & (~i_3_ | n297)) | (i_3_ & n297);
|
||||
assign n309 = (~i_13_ & n302) | (n281 & (i_13_ | n302));
|
||||
assign n310 = ~n307 & n656 & (~i_2_ | n305);
|
||||
assign n311 = n310 & n309 & n308 & n285;
|
||||
assign n312 = ~i_3_ | i_4_;
|
||||
assign n313 = (n312 | ~n406) & (n284 | ~n383);
|
||||
assign n314 = (~i_4_ | ~n338) & (i_3_ | n120);
|
||||
assign n315 = ~n247 & (~i_3_ | ~n406 | n548);
|
||||
assign n316 = (~i_2_ | n530) & (~i_7_ | n313);
|
||||
assign n317 = n315 & n316 & (n314 | n178);
|
||||
assign n318 = i_4_ & n348;
|
||||
assign n319 = ~i_11_ & n348;
|
||||
assign n320 = ~n177 & (n318 | (~i_3_ & n319));
|
||||
assign n321 = ~n402 | ~i_2_ | i_7_;
|
||||
assign n322 = ~n319 | n563;
|
||||
assign n323 = ~n383 | ~i_3_ | n266;
|
||||
assign n324 = n257 | ~i_2_ | i_8_;
|
||||
assign n325 = ~n65 & (i_7_ | n312 | ~n383);
|
||||
assign n326 = n325 & n324 & n323 & n322 & ~n320 & n321;
|
||||
assign n327 = i_11_ | ~n496 | n558 | ~n563;
|
||||
assign n328 = (n317 & (~i_6_ | n326)) | (i_6_ & n326);
|
||||
assign n329 = n327 & n328 & (n91 | n257);
|
||||
assign n330 = ~i_11_ | n514;
|
||||
assign n331 = ~n166 | ~n475;
|
||||
assign n332 = ~i_4_ | i_9_;
|
||||
assign n333 = (n332 | n77) & (n330 | n331);
|
||||
assign n334 = ~n517 & i_3_ & i_12_;
|
||||
assign n335 = i_1_ | n63;
|
||||
assign n336 = ~i_11_ | ~n166;
|
||||
assign n337 = (n335 | n336) & (n186 | ~n239);
|
||||
assign n338 = i_11_ & ~i_13_;
|
||||
assign n339 = i_4_ & (~n652 | (~n335 & n338));
|
||||
assign n340 = ~i_1_ & n365;
|
||||
assign n341 = i_7_ & (n334 | (n340 & n239));
|
||||
assign n342 = n734 & (~i_8_ | n337);
|
||||
assign n343 = (n208 | n561) & (n404 | n356);
|
||||
assign n344 = (n517 | n557) & (~n45 | n59);
|
||||
assign n345 = n344 & n343 & n342 & ~n341 & n333 & ~n339;
|
||||
assign n346 = ~i_2_ | i_12_;
|
||||
assign n347 = (~i_8_ | n59) & (n346 | ~n391);
|
||||
assign n348 = i_12_ & ~i_13_;
|
||||
assign n349 = n348 & (~n654 | (i_4_ & ~n335));
|
||||
assign n350 = n655 & (i_8_ | ~n402 | n561);
|
||||
assign n351 = ~n349 & n350 & (~i_9_ | n347);
|
||||
assign n352 = ~i_8_ | i_9_;
|
||||
assign n353 = (~n263 | ~n340) & (n186 | n352);
|
||||
assign n354 = i_10_ | n78;
|
||||
assign n355 = ~i_6_ | n352;
|
||||
assign n356 = ~i_1_ | n312;
|
||||
assign n357 = (n303 | n356) & (~n259 | ~n360);
|
||||
assign n358 = ~n573 & (~i_4_ | i_13_ | ~n496);
|
||||
assign n359 = ~n512 & (i_6_ | i_11_);
|
||||
assign n360 = i_3_ & n204;
|
||||
assign n361 = ~i_6_ & n419;
|
||||
assign n362 = ~i_9_ | ~i_11_;
|
||||
assign n363 = ~i_12_ | n362;
|
||||
assign n364 = ~i_4_ | n113;
|
||||
assign n365 = ~i_3_ & i_4_;
|
||||
assign n366 = ~i_9_ | ~i_12_;
|
||||
assign n367 = n364 & (n365 | n366);
|
||||
assign n368 = (~i_9_ & n572) | (~i_13_ & (i_9_ | n572));
|
||||
assign n369 = i_3_ | n111;
|
||||
assign n370 = ~n166 | i_2_ | n98;
|
||||
assign n371 = (~i_1_ | n280) & (n363 | ~n391);
|
||||
assign n372 = (~n67 | n367) & (i_4_ | n363);
|
||||
assign n373 = ~n737 & n372 & n371 & n370 & n368 & n369;
|
||||
assign n374 = ~i_4_ & (~n564 | (~n107 & n167));
|
||||
assign n375 = ~n736 & (~i_10_ | (~i_13_ & ~n204));
|
||||
assign n376 = ~n374 & n687 & (n107 | n270);
|
||||
assign n377 = n375 & n376 & (i_3_ | n108);
|
||||
assign n378 = i_7_ | n516;
|
||||
assign n379 = ~i_7_ | n214;
|
||||
assign n380 = (n113 | n379) & (n378 | n116);
|
||||
assign n381 = ~i_2_ & (~n686 | (~n270 & ~n440));
|
||||
assign n382 = ~n53 & i_3_ & ~i_8_;
|
||||
assign n383 = i_11_ & ~i_12_;
|
||||
assign n384 = n383 & i_10_ & ~i_0_ & i_2_;
|
||||
assign n385 = ~i_0_ & n365;
|
||||
assign n386 = ~i_6_ & (n384 | (~n71 & n385));
|
||||
assign n387 = (n56 | ~n319) & (n53 | ~n402);
|
||||
assign n388 = i_0_ | n43;
|
||||
assign n389 = ~n386 & n387 & (n257 | n388);
|
||||
assign n390 = (~i_7_ | n81) & (~i_6_ | n80);
|
||||
assign n391 = i_8_ & i_3_;
|
||||
assign n392 = ~n400 & (i_7_ | n391);
|
||||
assign n393 = (i_3_ & n553) | (~n241 & (~i_3_ | n553));
|
||||
assign n394 = n257 & n393 & (~i_4_ | n71);
|
||||
assign n395 = ~i_12_ | n572;
|
||||
assign n396 = ~n65 & (i_2_ | n106 | ~n319);
|
||||
assign n397 = n395 & n396 & (n394 | n107);
|
||||
assign n398 = ~i_7_ | n362;
|
||||
assign n399 = (i_2_ | n355) & (n204 | n178);
|
||||
assign n400 = ~i_1_ | n445;
|
||||
assign n401 = (~i_8_ | n400) & (~i_6_ | n60);
|
||||
assign n402 = i_10_ & ~i_12_;
|
||||
assign n403 = n402 & (n382 | (~i_0_ & n204));
|
||||
assign n404 = i_7_ | ~n167;
|
||||
assign n405 = n167 & (~n718 | (~i_8_ & ~n400));
|
||||
assign n406 = ~i_11_ & i_12_;
|
||||
assign n407 = n406 & (~n674 | (i_8_ & ~n53));
|
||||
assign n408 = ~i_0_ | n43;
|
||||
assign n409 = ~n405 & ~n407 & (n404 | n408);
|
||||
assign n410 = ~n247 & (~i_1_ | i_11_ | n280);
|
||||
assign n411 = n672 & (~n67 | (~n423 & n673));
|
||||
assign n412 = n410 & n411 & (~n73 | n336);
|
||||
assign n413 = ~n385 | ~i_6_ | ~n239;
|
||||
assign n414 = ~n166 | ~i_11_ | n56;
|
||||
assign n415 = n413 & n414 & (n200 | ~n423);
|
||||
assign n416 = n238 & (~i_4_ | i_6_ | n177);
|
||||
assign n417 = ~i_7_ & n419;
|
||||
assign n418 = n417 & i_2_ & i_12_;
|
||||
assign n419 = i_10_ & ~i_11_;
|
||||
assign n420 = n116 | ~i_4_ | i_8_;
|
||||
assign n421 = n420 & (n50 | ~n243);
|
||||
assign n422 = ~n53 & (~n530 | (i_3_ & ~n208));
|
||||
assign n423 = i_4_ & n239;
|
||||
assign n424 = i_6_ & (n418 | (~n62 & n423));
|
||||
assign n425 = (n517 | n59) & (i_4_ | n409);
|
||||
assign n426 = (~i_7_ | n415) & (i_0_ | n412);
|
||||
assign n427 = (n82 | n271) & (~n338 | n416);
|
||||
assign n428 = (~i_1_ | ~n361) & (~n423 | n671);
|
||||
assign n429 = (n157 | n421) & (n400 | ~n670);
|
||||
assign n430 = ~n422 & (n56 | n120 | ~n475);
|
||||
assign n431 = n430 & n429 & n428 & n427 & n426 & n425 & n333 & ~n424;
|
||||
assign n432 = n183 & (~i_4_ | i_10_ | n70);
|
||||
assign n433 = i_7_ | i_9_ | i_11_;
|
||||
assign n434 = n191 & (n215 | n433);
|
||||
assign n435 = ~i_8_ | ~i_9_;
|
||||
assign n436 = i_5_ & ~n558 & (~n540 | ~n568);
|
||||
assign n437 = i_10_ & n519;
|
||||
assign n438 = ~i_4_ & ~n539 & (n437 | ~n568);
|
||||
assign n439 = ~i_8_ | n214;
|
||||
assign n440 = i_8_ | n516;
|
||||
assign n441 = (n366 | n439) & (~n167 | n440);
|
||||
assign n442 = ~i_12_ & (~n158 | n417 | ~n530);
|
||||
assign n443 = n435 | ~i_3_ | n112;
|
||||
assign n444 = ~n442 & n443 & (i_11_ | n115);
|
||||
assign n445 = ~i_0_ | ~i_2_;
|
||||
assign n446 = ~i_6_ & i_3_ & i_5_;
|
||||
assign n447 = n383 & (~n684 | (~i_7_ & n446));
|
||||
assign n448 = n406 & (~n685 | (i_7_ & ~n545));
|
||||
assign n449 = i_5_ | ~n365;
|
||||
assign n450 = (~n338 | n449) & (~n101 | ~n348);
|
||||
assign n451 = i_5_ | n522;
|
||||
assign n452 = (n80 | n440) & (n81 | n451);
|
||||
assign n453 = ~i_5_ | ~n519;
|
||||
assign n454 = (n453 | n81) & (n439 | n80);
|
||||
assign n455 = n137 & n408;
|
||||
assign n456 = ~i_0_ | n312;
|
||||
assign n457 = (n379 | n456) & (n455 | n453);
|
||||
assign n458 = ~i_5_ & i_0_ & i_3_;
|
||||
assign n459 = n167 & (~n663 | (~n107 & n458));
|
||||
assign n460 = i_4_ & ~i_0_ & ~i_2_;
|
||||
assign n461 = ~n569 & (~n664 | (n239 & n460));
|
||||
assign n462 = ~i_5_ & n519;
|
||||
assign n463 = i_4_ & ~i_0_ & ~i_1_;
|
||||
assign n464 = n462 & (~n665 | (n239 & n463));
|
||||
assign n465 = ~n570 & (~n666 | (~n71 & n463));
|
||||
assign n466 = ~n571 & (~n667 | (~n71 & n460));
|
||||
assign n467 = n406 & (n438 | (n259 & ~n545));
|
||||
assign n468 = n383 & (n436 | (~n296 & n446));
|
||||
assign n469 = (n450 | n56) & (n441 | n60);
|
||||
assign n470 = ~n464 & (~i_9_ | n158 | n400);
|
||||
assign n471 = n702 & n701 & (n452 | n50);
|
||||
assign n472 = n699 & n698 & (n457 | n366);
|
||||
assign n473 = ~n740 & ~n739 & n709 & n707 & n706 & n705 & n703 & n704;
|
||||
assign n474 = ~i_5_ | n352;
|
||||
assign n475 = ~i_3_ & i_8_;
|
||||
assign n476 = ~n56 & (i_7_ | n475);
|
||||
assign n477 = (i_1_ | n537) & (n589 | n178);
|
||||
assign n478 = ~n476 & n715 & (n335 | n474);
|
||||
assign n479 = n477 & n478 & (i_0_ | ~i_5_);
|
||||
assign n480 = ~n56 & (~i_7_ | n243);
|
||||
assign n481 = n300 & (i_1_ | n359);
|
||||
assign n482 = n746 & (i_5_ | n416);
|
||||
assign n483 = n187 & (i_3_ | n293);
|
||||
assign n484 = (n56 | ~n365) & (i_12_ | n479);
|
||||
assign n485 = (n213 | n298) & (n215 | n574);
|
||||
assign n486 = n716 & (i_1_ | n359 | n534);
|
||||
assign n487 = n717 & (i_11_ | (n714 & n711));
|
||||
assign n488 = n487 & n486 & n485 & n484 & n483 & n482 & n432 & n434;
|
||||
assign n489 = ~i_7_ | n366;
|
||||
assign n490 = ~i_10_ | ~i_12_;
|
||||
assign n491 = n489 & ~n496 & (i_7_ | n490);
|
||||
assign n492 = (n747 & (~i_5_ | n748)) | (i_5_ & n748);
|
||||
assign n493 = n492 & (~i_0_ | n281);
|
||||
assign n494 = i_8_ | ~i_11_;
|
||||
assign n495 = ~n496 & n494 & ~i_3_ & n263;
|
||||
assign n496 = i_8_ & i_12_;
|
||||
assign n497 = n496 & (~n221 | ~n379);
|
||||
assign n498 = (n218 | n491) & (~i_1_ | n493);
|
||||
assign n499 = n726 & (~i_12_ | (n61 & n723));
|
||||
assign n500 = n725 & (~i_11_ | (n719 & n722));
|
||||
assign n501 = n724 & (n494 | (n227 & n378));
|
||||
assign n502 = n501 & n500 & n498 & n499;
|
||||
assign n503 = i_12_ | ~n475;
|
||||
assign n504 = ~n46 & n503 & (i_11_ | ~n243);
|
||||
assign n505 = (~n243 | ~n338) & (n113 | ~n391);
|
||||
assign n506 = (~n243 | ~n247) & (~n65 | ~n475);
|
||||
assign n507 = (n504 & (~i_4_ | n505)) | (i_4_ & n505);
|
||||
assign n508 = n727 & n728 & (~i_13_ | ~n46);
|
||||
assign n509 = n508 & n506 & n507;
|
||||
assign n510 = (~i_1_ | n281) & (~i_2_ | n263);
|
||||
assign n511 = (~i_5_ & ~i_10_) | (~i_9_ & (i_5_ | ~i_10_));
|
||||
assign n512 = i_6_ & ~i_12_;
|
||||
assign n513 = i_9_ & (n392 | (n512 & i_1_));
|
||||
assign n514 = i_9_ | i_10_;
|
||||
assign n515 = i_3_ | i_4_;
|
||||
assign n516 = i_5_ | i_6_;
|
||||
assign n517 = i_8_ | ~n419;
|
||||
assign n518 = ~i_8_ | n55;
|
||||
assign n519 = i_8_ & i_7_;
|
||||
assign n520 = ~i_8_ | n304;
|
||||
assign n521 = i_2_ | ~i_0_ | ~i_1_;
|
||||
assign n522 = i_8_ | i_7_;
|
||||
assign n523 = i_11_ | n514;
|
||||
assign n524 = ~i_5_ | n515;
|
||||
assign n525 = ~n348 | n523;
|
||||
assign n526 = ~i_9_ | ~i_10_;
|
||||
assign n527 = i_7_ | n526;
|
||||
assign n528 = ~i_3_ | n526;
|
||||
assign n529 = ~i_7_ | n526;
|
||||
assign n530 = i_11_ | n262;
|
||||
assign n531 = ~i_5_ | ~i_3_ | ~i_4_;
|
||||
assign n532 = ~i_6_ | n332;
|
||||
assign n533 = ~i_8_ | n332;
|
||||
assign n534 = i_5_ | i_10_;
|
||||
assign n535 = i_7_ | n534;
|
||||
assign n536 = ~i_2_ & n365;
|
||||
assign n537 = i_9_ | n214;
|
||||
assign n538 = ~i_5_ | n332;
|
||||
assign n539 = i_5_ | ~i_6_;
|
||||
assign n540 = ~i_9_ | n522;
|
||||
assign n541 = ~n247 | n540;
|
||||
assign n542 = ~n65 | ~n259;
|
||||
assign n543 = ~n239 | n449;
|
||||
assign n544 = ~n247 | n296;
|
||||
assign n545 = ~i_3_ | n539;
|
||||
assign n546 = ~i_3_ | n516;
|
||||
assign n547 = ~i_3_ | n214;
|
||||
assign n548 = ~i_7_ | n435;
|
||||
assign n549 = ~n247 | n548;
|
||||
assign n550 = ~n65 | n266;
|
||||
assign n551 = ~n247 | n267;
|
||||
assign n552 = i_13_ | n115;
|
||||
assign n553 = ~i_11_ | ~n402;
|
||||
assign n554 = i_13_ | n158;
|
||||
assign n555 = ~i_9_ | ~n406;
|
||||
assign n556 = n114 & n528;
|
||||
assign n557 = ~i_2_ | ~i_3_;
|
||||
assign n558 = i_4_ | i_6_;
|
||||
assign n559 = ~i_3_ | i_12_;
|
||||
assign n560 = i_4_ | n225;
|
||||
assign n561 = i_1_ | n557;
|
||||
assign n562 = ~i_1_ | n63;
|
||||
assign n563 = i_7_ | i_2_;
|
||||
assign n564 = ~i_11_ | n490;
|
||||
assign n565 = ~i_9_ | n490;
|
||||
assign n566 = ~i_9_ | ~n167;
|
||||
assign n567 = ~i_8_ | n286;
|
||||
assign n568 = i_0_ | n557;
|
||||
assign n569 = ~i_8_ | n539;
|
||||
assign n570 = ~i_5_ | n522;
|
||||
assign n571 = ~i_5_ | n78;
|
||||
assign n572 = ~n220 | n288;
|
||||
assign n573 = n243 & n319;
|
||||
assign n574 = i_12_ | n272;
|
||||
assign n575 = (~i_5_ & n419) | (n402 & (i_5_ | n419));
|
||||
assign n576 = (~i_4_ & n729) | (n89 & (i_4_ | n729));
|
||||
assign n577 = (~i_6_ & n564) | (n363 & (i_6_ | n564));
|
||||
assign n578 = (i_6_ & ~n178) | (~n177 & (~i_6_ | ~n178));
|
||||
assign n579 = i_10_ | i_13_ | ~n383 | n520;
|
||||
assign n580 = n579 & (n233 | ~n245);
|
||||
assign n581 = i_9_ | i_13_ | n99 | ~n406;
|
||||
assign n582 = n581 & (n97 | ~n241);
|
||||
assign n583 = n527 | ~i_3_ | n228;
|
||||
assign n584 = n583 & (i_8_ | n227 | n526);
|
||||
assign n585 = (n213 | n517) & (n210 | ~n361);
|
||||
assign n586 = ~n222 & n585 & (n208 | n215);
|
||||
assign n587 = n547 & n408 & n44 & n203;
|
||||
assign n588 = (n587 | n529) & (i_0_ | n209);
|
||||
assign n589 = n196 & n200 & n197;
|
||||
assign n590 = (n530 | n589) & (n202 | ~n417);
|
||||
assign n591 = n355 & n354;
|
||||
assign n592 = (n273 | n200) & (n62 | n532);
|
||||
assign n593 = n541 | n194;
|
||||
assign n594 = n113 | n153 | n158;
|
||||
assign n595 = ~n402 | n107 | n158;
|
||||
assign n596 = ~n446 | n550;
|
||||
assign n597 = ~n446 | n549;
|
||||
assign n598 = n113 | n131 | n158;
|
||||
assign n599 = (~n259 | n547) & (n194 | ~n519);
|
||||
assign n600 = n528 & (n546 | n266);
|
||||
assign n601 = n531 | ~n67 | n113;
|
||||
assign n602 = n601 & (n117 | n107);
|
||||
assign n603 = (n99 | n135) & (n198 | n151);
|
||||
assign n604 = n602 & n603 & (n194 | n551);
|
||||
assign n605 = (n108 | n119) & (n111 | n524);
|
||||
assign n606 = ~n118 & n605 & (i_4_ | n556);
|
||||
assign n607 = (n518 | n57) & (n53 | n520);
|
||||
assign n608 = (n95 | n449) & (n92 | ~n164);
|
||||
assign n609 = ~n104 & n608 & (n100 | n531);
|
||||
assign n610 = (n537 | n235) & (n474 | n234);
|
||||
assign n611 = (n273 | n408) & (n538 | n59);
|
||||
assign n612 = n64 | ~i_6_ | i_11_;
|
||||
assign n613 = n612 & (~i_10_ | n61);
|
||||
assign n614 = i_10_ | ~n103 | ~n319 | n520;
|
||||
assign n615 = n614 & (n58 | n162);
|
||||
assign n616 = i_10_ | n157 | ~n319 | n518;
|
||||
assign n617 = n616 & (n47 | n57 | n120);
|
||||
assign n618 = n617 & (n520 | n521 | n50);
|
||||
assign n619 = (n54 | ~n67) & (n51 | ~n102);
|
||||
assign n620 = n161 | n534 | ~n102 | n120;
|
||||
assign n621 = n620 & (i_4_ | n59 | ~n575);
|
||||
assign n622 = ~n68 & (n115 | (n618 & n619));
|
||||
assign n623 = (i_2_ | n354) & (i_10_ | n335);
|
||||
assign n624 = i_11_ | n266 | n59 | n558;
|
||||
assign n625 = n624 & (i_9_ | n236 | n77);
|
||||
assign n626 = n355 | ~i_2_ | n71;
|
||||
assign n627 = n626 & (n220 | n71 | n178);
|
||||
assign n628 = n332 | i_10_ | ~n250;
|
||||
assign n629 = n628 & (~n166 | n231 | n330);
|
||||
assign n630 = n629 & (~i_13_ | n378 | n517);
|
||||
assign n631 = n531 | n193 | ~n239;
|
||||
assign n632 = ~n251 & n631 & (~n103 | n176);
|
||||
assign n633 = (n156 | n521) & (n173 | n157);
|
||||
assign n634 = n633 & (n152 | n53);
|
||||
assign n635 = (n136 | n49) & (n147 | n57);
|
||||
assign n636 = n635 & n634 & (n130 | n56);
|
||||
assign n637 = ~n252 & (n400 | (n604 & n606));
|
||||
assign n638 = n730 & (~i_7_ | n269);
|
||||
assign n639 = ~n435 | ~i_4_ | n77;
|
||||
assign n640 = n639 & (i_8_ | i_13_ | n235);
|
||||
assign n641 = (i_11_ | n161) & (~n338 | ~n536);
|
||||
assign n642 = n235 | ~i_8_ | i_13_;
|
||||
assign n643 = n642 & (~n348 | (n533 & ~n536));
|
||||
assign n644 = n312 | ~i_2_ | n263;
|
||||
assign n645 = ~n732 & (i_7_ | (n640 & n641));
|
||||
assign n646 = ~n563 | ~n361 | ~n496;
|
||||
assign n647 = n646 & (n359 | n561);
|
||||
assign n648 = (n288 | n354) & (~n166 | n355);
|
||||
assign n649 = ~i_8_ | i_3_ | i_6_ | n749 | i_10_ | ~n166;
|
||||
assign n650 = n649 & (~n348 | n353);
|
||||
assign n651 = i_10_ | i_13_ | n749 | n494;
|
||||
assign n652 = n651 & (n116 | n562);
|
||||
assign n653 = i_10_ | i_8_;
|
||||
assign n654 = (n286 | ~n340) & (n186 | n653);
|
||||
assign n655 = n335 | i_8_ | ~n319;
|
||||
assign n656 = n365 | n548 | ~i_6_ | ~i_12_;
|
||||
assign n657 = ~i_3_ | ~i_9_ | ~n383 | n518;
|
||||
assign n658 = n657 & (n281 | ~n496 | n560);
|
||||
assign n659 = (n358 | n98) & (n346 | n303);
|
||||
assign n660 = (n345 & (~i_6_ | n351)) | (i_6_ & n351);
|
||||
assign n661 = (~i_1_ & n329) | (n311 & (i_1_ | n329));
|
||||
assign n662 = n660 & n661 & (~i_12_ | n357);
|
||||
assign n663 = (n378 | n456) & (n455 | n451);
|
||||
assign n664 = (n555 | n568) & (n62 | ~n245);
|
||||
assign n665 = (n388 | n555) & (n200 | ~n245);
|
||||
assign n666 = (n388 | n553) & (n200 | ~n241);
|
||||
assign n667 = (n553 | n568) & (n62 | ~n241);
|
||||
assign n668 = (n288 | n535) & (~n166 | n190);
|
||||
assign n669 = (n116 | n449) & (~n101 | n113);
|
||||
assign n670 = i_10_ & (~i_7_ | (i_3_ & ~i_8_));
|
||||
assign n671 = ~i_8_ | n56;
|
||||
assign n672 = n741 & (~i_2_ | n303 | ~n406);
|
||||
assign n673 = (i_3_ & n555) | (~n245 & (~i_3_ | n555));
|
||||
assign n674 = (~i_7_ | n388) & (i_0_ | ~n67);
|
||||
assign n675 = ~n383 | i_8_ | n53;
|
||||
assign n676 = n675 & (n401 | n366);
|
||||
assign n677 = n157 | ~i_8_ | n113;
|
||||
assign n678 = n677 & (~n348 | n399);
|
||||
assign n679 = n346 | i_6_ | n398;
|
||||
assign n680 = n679 & (n390 | n364);
|
||||
assign n681 = (~n243 | n525) & (n157 | n269);
|
||||
assign n682 = n680 & n681 & (n56 | ~n573);
|
||||
assign n683 = (i_7_ | n389) & (i_0_ | n397);
|
||||
assign n684 = (~i_2_ | n571) & (~i_1_ | n570);
|
||||
assign n685 = (~i_2_ | n569) & (~i_1_ | ~n462);
|
||||
assign n686 = (n364 | n439) & (n105 | n537);
|
||||
assign n687 = n288 | i_2_ | n106;
|
||||
assign n688 = (n451 | n270) & (n364 | n453);
|
||||
assign n689 = n211 | i_10_ | n105;
|
||||
assign n690 = n689 & (~i_9_ | n536 | n564);
|
||||
assign n691 = ~n381 & n690 & (~n365 | n380);
|
||||
assign n692 = i_3_ | i_13_ | n293;
|
||||
assign n693 = n735 & (~i_6_ | ~i_12_ | n529);
|
||||
assign n694 = n285 & n692 & (~i_3_ | n693);
|
||||
assign n695 = (~i_5_ & n377) | (n373 & (i_5_ | n377));
|
||||
assign n696 = n695 & ~n738 & (~i_1_ | n526);
|
||||
assign n697 = n564 | i_8_ | ~n458;
|
||||
assign n698 = n697 & (n213 | n256 | n336);
|
||||
assign n699 = n400 | ~i_10_ | n115;
|
||||
assign n700 = n567 | n199 | n120;
|
||||
assign n701 = n700 & (n454 | n109);
|
||||
assign n702 = ~n319 | n196 | n290;
|
||||
assign n703 = ~n466 & (n157 | (n668 & n669));
|
||||
assign n704 = (n444 | n53) & (n217 | n565);
|
||||
assign n705 = ~n467 & ~n468 & (n138 | n441);
|
||||
assign n706 = (~n348 | n434) & (~n250 | n432);
|
||||
assign n707 = (n538 | n71) & (n566 | n224);
|
||||
assign n708 = n445 | i_5_ | n512 | n404;
|
||||
assign n709 = n708 & ~n745 & (i_5_ | n431);
|
||||
assign n710 = (n589 | n290) & (n202 | n177);
|
||||
assign n711 = ~n480 & n710 & (n62 | n354);
|
||||
assign n712 = (n185 | n335) & (n210 | n354);
|
||||
assign n713 = ~n220 | ~i_5_ | i_9_;
|
||||
assign n714 = n713 & n712 & (i_0_ | i_5_);
|
||||
assign n715 = (n202 | n567) & (n64 | n355);
|
||||
assign n716 = i_10_ | n332;
|
||||
assign n717 = (i_2_ | n283) & (i_0_ | n481);
|
||||
assign n718 = i_6_ | n60;
|
||||
assign n719 = ~i_12_ & n718 & (i_5_ | n59);
|
||||
assign n720 = n228 | ~i_3_ | i_7_;
|
||||
assign n721 = n720 & (i_7_ | n408);
|
||||
assign n722 = n721 & (n546 | (~i_2_ & i_7_));
|
||||
assign n723 = (~i_7_ | n587) & (~i_2_ | n547);
|
||||
assign n724 = ~n497 & (n226 | (n398 & n404));
|
||||
assign n725 = ~i_0_ | n511;
|
||||
assign n726 = n495 | n400;
|
||||
assign n727 = ~n435 | ~i_3_ | n270;
|
||||
assign n728 = ~n365 | ~i_8_ | ~n348;
|
||||
assign n729 = ~i_5_ | n59 | ~n512 | n548;
|
||||
assign n730 = ~n243 | i_7_ | n50;
|
||||
assign n731 = i_7_ & (n573 | n65);
|
||||
assign n732 = i_7_ & (~n643 | (~i_12_ & ~n161));
|
||||
assign n733 = i_12_ | n514;
|
||||
assign n734 = n560 | i_8_ | ~n167;
|
||||
assign n735 = n527 | i_6_ | ~i_11_;
|
||||
assign n736 = ~i_10_ & (~n572 | (n73 & n166));
|
||||
assign n737 = i_2_ & i_12_ & (~n303 | ~n398);
|
||||
assign n738 = ~i_1_ & (~n688 | (n166 & ~n537));
|
||||
assign n739 = ~i_0_ & ~i_4_ & (n447 | n448);
|
||||
assign n740 = i_0_ & (~n691 | ~n694 | ~n696);
|
||||
assign n741 = i_2_ | n98 | n120;
|
||||
assign n742 = i_4_ & (~n678 | (~n70 & ~n71));
|
||||
assign n743 = ~i_4_ & (~n676 | (~n408 & ~n489));
|
||||
assign n744 = ~n682 | n403 | n513 | n743 | ~n683 | n742;
|
||||
assign n745 = i_5_ & n744;
|
||||
assign n746 = n399 | ~i_4_ | ~i_5_;
|
||||
assign n747 = (i_6_ & n362) | (~n167 & (~i_6_ | n362));
|
||||
assign n748 = (~i_6_ & n490) | (n366 & (i_6_ | n490));
|
||||
assign n749 = i_2_ & i_7_;
|
||||
assign n750 = n417 & n533 & i_3_;
|
||||
assign n751 = i_6_ & n574 & n433;
|
||||
endmodule
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,792 @@
|
|||
// Benchmark "TOP" written by ABC on Mon Feb 4 17:25:42 2019
|
||||
|
||||
module apex4 (
|
||||
i_0_, i_1_, i_2_, i_3_, i_4_, i_5_, i_6_, i_7_, i_8_,
|
||||
o_0_, o_1_, o_2_, o_3_, o_4_, o_5_, o_6_, o_7_, o_8_, o_9_, o_10_,
|
||||
o_11_, o_12_, o_13_, o_14_, o_15_, o_16_, o_17_, o_18_ );
|
||||
input i_0_, i_1_, i_2_, i_3_, i_4_, i_5_, i_6_, i_7_, i_8_;
|
||||
output o_0_, o_1_, o_2_, o_3_, o_4_, o_5_, o_6_, o_7_, o_8_, o_9_, o_10_,
|
||||
o_11_, o_12_, o_13_, o_14_, o_15_, o_16_, o_17_, o_18_;
|
||||
wire n47, n48, n49, n50, n51, n52, n53, n54, n55, n56, n57, n58, n59, n60,
|
||||
n61, n62, n63, n64, n65, n66, n67, n68, n69, n70, n71, n72, n73, n74,
|
||||
n75, n76, n77, n78, n79, n80, n81, n82, n83, n84, n85, n86, n87, n88,
|
||||
n89, n90, n91, n92, n93, n94, n95, n96, n97, n98, n99, n100, n101,
|
||||
n102, n103, n104, n105, n106, n107, n108, n109, n110, n111, n112, n113,
|
||||
n114, n115, n116, n117, n118, n119, n120, n121, n122, n123, n124, n125,
|
||||
n126, n127, n128, n129, n130, n131, n132, n133, n134, n135, n136, n137,
|
||||
n138, n139, n140, n141, n142, n143, n144, n145, n146, n147, n148, n149,
|
||||
n150, n151, n152, n153, n154, n155, n156, n157, n158, n159, n160, n161,
|
||||
n162, n163, n164, n165, n166, n167, n168, n169, n170, n171, n172, n173,
|
||||
n174, n175, n176, n177, n178, n179, n180, n181, n182, n183, n184, n185,
|
||||
n186, n187, n188, n189, n190, n191, n192, n193, n194, n195, n196, n197,
|
||||
n198, n199, n200, n201, n202, n203, n204, n205, n206, n207, n208, n209,
|
||||
n210, n211, n212, n213, n214, n215, n216, n217, n218, n219, n220, n221,
|
||||
n222, n223, n224, n225, n226, n227, n228, n229, n230, n231, n232, n233,
|
||||
n234, n235, n236, n237, n238, n239, n240, n241, n242, n243, n244, n245,
|
||||
n246, n247, n248, n249, n250, n251, n252, n253, n254, n255, n256, n257,
|
||||
n258, n259, n260, n261, n262, n263, n264, n265, n266, n267, n268, n269,
|
||||
n270, n271, n272, n273, n274, n275, n276, n277, n278, n279, n280, n281,
|
||||
n282, n283, n284, n285, n286, n287, n288, n289, n290, n291, n292, n293,
|
||||
n294, n295, n296, n297, n298, n299, n300, n301, n302, n303, n304, n305,
|
||||
n306, n307, n308, n309, n310, n311, n312, n313, n314, n315, n316, n317,
|
||||
n318, n319, n320, n321, n322, n323, n324, n325, n326, n327, n328, n329,
|
||||
n330, n331, n332, n333, n334, n335, n336, n337, n338, n339, n340, n341,
|
||||
n342, n343, n344, n345, n346, n347, n348, n349, n350, n351, n352, n353,
|
||||
n354, n355, n356, n357, n358, n359, n360, n361, n362, n363, n364, n365,
|
||||
n366, n367, n368, n369, n370, n371, n372, n373, n374, n375, n376, n377,
|
||||
n378, n379, n380, n381, n382, n383, n384, n385, n386, n387, n388, n389,
|
||||
n390, n391, n392, n393, n394, n395, n396, n397, n398, n399, n400, n401,
|
||||
n402, n403, n404, n405, n406, n407, n408, n409, n410, n411, n412, n413,
|
||||
n414, n415, n416, n417, n418, n419, n420, n421, n422, n423, n424, n425,
|
||||
n426, n427, n428, n429, n430, n431, n432, n433, n434, n435, n436, n437,
|
||||
n438, n439, n440, n441, n442, n443, n444, n445, n446, n447, n448, n449,
|
||||
n450, n451, n452, n453, n454, n455, n456, n457, n458, n459, n460, n461,
|
||||
n462, n463, n464, n465, n466, n467, n468, n469, n470, n471, n472, n473,
|
||||
n474, n475, n476, n477, n478, n479, n480, n481, n482, n483, n484, n485,
|
||||
n486, n487, n488, n489, n490, n491, n492, n493, n494, n495, n496, n497,
|
||||
n498, n499, n500, n501, n502, n503, n504, n505, n506, n507, n508, n509,
|
||||
n510, n511, n512, n513, n514, n515, n516, n517, n518, n519, n520, n521,
|
||||
n522, n523, n524, n525, n526, n527, n528, n529, n530, n531, n532, n533,
|
||||
n534, n535, n536, n537, n538, n539, n540, n541, n542, n543, n544, n545,
|
||||
n546, n547, n548, n549, n550, n551, n552, n553, n554, n555, n556, n557,
|
||||
n558, n559, n560, n561, n562, n563, n564, n565, n566, n567, n568, n569,
|
||||
n570, n571, n572, n573, n574, n575, n576, n577, n578, n579, n580, n581,
|
||||
n582, n583, n584, n585, n586, n587, n588, n589, n590, n591, n592, n593,
|
||||
n594, n595, n596, n597, n598, n599, n600, n601, n602, n603, n604, n605,
|
||||
n606, n607, n608, n609, n610, n611, n612, n613, n614, n615, n616, n617,
|
||||
n618, n619, n620, n621, n622, n623, n624, n625, n626, n627, n628, n629,
|
||||
n630, n631, n632, n633, n634, n635, n636, n637, n638, n639, n640, n641,
|
||||
n642, n643, n644, n645, n646, n647, n648, n649, n650, n651, n652, n653,
|
||||
n654, n655, n656, n657, n658, n659, n660, n661, n662, n663, n664, n665,
|
||||
n666, n667, n668, n669, n670, n671, n672, n673, n674, n675, n676, n677,
|
||||
n678, n679, n680, n681, n682, n683, n684, n685, n686, n687, n688, n689,
|
||||
n690, n691, n692, n693, n694, n695, n696, n697, n698, n699, n700, n701,
|
||||
n702, n703, n704, n705, n706, n707, n708, n709, n710, n711, n712, n713,
|
||||
n714, n715, n716, n717, n718, n719, n720, n721, n722, n723, n724, n725,
|
||||
n726, n727, n728, n729, n730, n731, n732, n733, n734, n735, n736, n737,
|
||||
n738, n739, n740, n741, n742, n743, n744, n745, n746, n747, n748, n749;
|
||||
assign o_0_ = 1'b0;
|
||||
assign o_1_ = ~n134;
|
||||
assign o_2_ = ~n492;
|
||||
assign o_3_ = ~n129;
|
||||
assign o_4_ = ~n128;
|
||||
assign o_5_ = ~n119;
|
||||
assign o_6_ = ~n110;
|
||||
assign o_7_ = ~n101;
|
||||
assign o_8_ = ~n313;
|
||||
assign o_9_ = ~n100;
|
||||
assign o_10_ = ~n526;
|
||||
assign o_11_ = ~n91;
|
||||
assign o_12_ = ~n87;
|
||||
assign o_13_ = ~n80;
|
||||
assign o_14_ = ~n72;
|
||||
assign o_15_ = ~n64;
|
||||
assign o_16_ = ~n63;
|
||||
assign o_17_ = ~n61;
|
||||
assign o_18_ = ~n53;
|
||||
assign n47 = n440 | n512;
|
||||
assign n48 = n539 | n454;
|
||||
assign n49 = n425 | n540;
|
||||
assign n50 = n305 | n557;
|
||||
assign n51 = n643 & n644 & n409 & n616 & n645 & n646 & n642 & n647;
|
||||
assign n52 = n65 & (n515 | n514);
|
||||
assign n53 = n47 & n48 & n49 & n50 & n51 & n52;
|
||||
assign n54 = n641 & n501 & n624 & n620 & n586;
|
||||
assign n55 = n314 | n591;
|
||||
assign n56 = n528 | n208;
|
||||
assign n57 = n425 | n558;
|
||||
assign n58 = n236 | n576;
|
||||
assign n59 = n545 | ~i_6_ | n531;
|
||||
assign n60 = n49 & n742;
|
||||
assign n61 = n48 & n54 & n55 & n56 & n57 & n58 & n59 & n60;
|
||||
assign n62 = n651 & n652 & n653 & n654 & n650 & n259 & n604 & n655;
|
||||
assign n63 = n54 & n62 & n50 & n47;
|
||||
assign n64 = n51 & n62 & n58 & n56;
|
||||
assign n65 = n190 | n543 | n514;
|
||||
assign n66 = n229 | n548;
|
||||
assign n67 = n443 | ~i_0_ | n419;
|
||||
assign n68 = n190 | n562;
|
||||
assign n69 = n656 & n247 & n657 & n621 & n658 & n599 & n659;
|
||||
assign n70 = n437 & n456 & n513 & n660 & n661 & n516 & n662 & n663;
|
||||
assign n71 = n504 & n505 & n506 & n507 & n508 & n509 & n510 & n511;
|
||||
assign n72 = n65 & n66 & n67 & n68 & n69 & n70 & n71;
|
||||
assign n73 = n664 & n597 & n556 & n264 & n358 & n391 & n434 & ~n522;
|
||||
assign n74 = n360 & n517 & n399 & n518 & n519 & n520 & n521;
|
||||
assign n75 = n515 | n245;
|
||||
assign n76 = n440 | n558;
|
||||
assign n77 = ~i_0_ | n190 | n250 | n252;
|
||||
assign n78 = n430 | n419;
|
||||
assign n79 = ~n332 | n345;
|
||||
assign n80 = n73 & n74 & n75 & n70 & n76 & n77 & n78 & n79;
|
||||
assign n81 = n634 & n596 & n350 & n468 & n130 & n665 & n666 & n667;
|
||||
assign n82 = n440 | n144;
|
||||
assign n83 = i_3_ | n373 | n419;
|
||||
assign n84 = n190 | n575;
|
||||
assign n85 = n342 | n559;
|
||||
assign n86 = n182 | n575;
|
||||
assign n87 = n74 & n81 & n82 & n69 & n83 & n84 & n85 & n86;
|
||||
assign n88 = n560 | n575;
|
||||
assign n89 = ~i_3_ | i_5_ | n440 | ~n461;
|
||||
assign n90 = n345 | ~i_0_ | n250;
|
||||
assign n91 = n88 & n89 & n59 & n90 & n71 & n73 & n81;
|
||||
assign n92 = n570 & n193 & n202 & n199 & n588 & n589;
|
||||
assign n93 = n178 & n184 & n183 & n185 & n186 & n187 & n188 & n189;
|
||||
assign n94 = n141 & n155 & n160 & n164 & n172 & n122 & n173 & n174;
|
||||
assign n95 = n221 & n222 & (n223 | n224);
|
||||
assign n96 = n213 & n214 & n215 & n216 & n217 & n218 & n219 & n220;
|
||||
assign n97 = n210 & n206 & n583 & n212 & n584 & n585 & n586 & n587;
|
||||
assign n98 = n582 & n580 & ~n255 & n123 & n238 & n249 & ~n254;
|
||||
assign n99 = n660 & n685 & n615 & n686 & n687 & n325 & n253 & n684;
|
||||
assign n100 = n92 & n93 & n94 & n95 & n96 & n97 & n98 & n99;
|
||||
assign n101 = n102 & n348 & n349 & n347 & n350 & n351 & n352 & n353;
|
||||
assign n102 = n325 & n326 & n152 & n327 & n328 & n329 & n330 & n331;
|
||||
assign n103 = n371 & (i_5_ | n372);
|
||||
assign n104 = n369 & (n190 | n223 | n370);
|
||||
assign n105 = n630 & n366 & n368 & n149 & n216 & n631;
|
||||
assign n106 = n151 & n358 & n359 & n360 & n361 & n362 & n363 & n364;
|
||||
assign n107 = n580 & n379 & n210 & n267 & n285 & ~n377;
|
||||
assign n108 = n90 & n417 & n712 & n148 & n568 & n713;
|
||||
assign n109 = n646 & n66 & n75 & n86 & n374 & ~n376;
|
||||
assign n110 = n102 & n103 & n104 & n105 & n106 & n107 & n108 & n109;
|
||||
assign n111 = n414 & (n415 | n416);
|
||||
assign n112 = n281 & n413 & (n224 | ~n332);
|
||||
assign n113 = n407 & n79 & n408 & n409 & n49 & n410 & n411 & n412;
|
||||
assign n114 = n399 & n400 & n401 & n402 & n403 & n404 & n405 & n406;
|
||||
assign n115 = n391 & n392 & n393 & n394 & n395 & n396 & n397 & n398;
|
||||
assign n116 = n349 & n424 & n420 & n431 & n94 & n307;
|
||||
assign n117 = n638 & n656 & n713 & n694 & n57 & n651;
|
||||
assign n118 = n427 & n428 & n429 & n614 & n86 & n696;
|
||||
assign n119 = n111 & n112 & n113 & n114 & n115 & n116 & n117 & n118;
|
||||
assign n120 = n262 & n266 & n267 & n268 & n269 & n270 & n271 & n272;
|
||||
assign n121 = n315 & n202 & n613 & n614;
|
||||
assign n122 = n168 & n169 & (n170 | n171);
|
||||
assign n123 = n88 & n231 & (n232 | n233);
|
||||
assign n124 = n240 | n415 | i_0_ | ~i_2_;
|
||||
assign n125 = n443 | n190 | n444;
|
||||
assign n126 = n500 & n719 & n720;
|
||||
assign n127 = n435 & n457 & n442 & n437 & n386 & n111 & n348 & n106;
|
||||
assign n128 = n120 & n121 & n122 & n123 & n124 & n125 & n126 & n127;
|
||||
assign n129 = n447 & n456 & n455 & n457 & n115 & n347 & n458 & n459;
|
||||
assign n130 = n382 & n496 & (n145 | n335);
|
||||
assign n131 = n640 & n494 & n495 & n505 & n504 & n619;
|
||||
assign n132 = n661 & n657 & n497;
|
||||
assign n133 = n603 & n48 & n68 & n720 & n279 & n187 & n602 & n741;
|
||||
assign n134 = ~n499 & n97 & n112 & n130 & n131 & n132 & n133 & ~n498;
|
||||
assign n135 = n339 | n542;
|
||||
assign n136 = n440 | n416;
|
||||
assign n137 = n166 | n541;
|
||||
assign n138 = n236 | n538;
|
||||
assign n139 = (n440 | n237) & (n305 | n224);
|
||||
assign n140 = n679 & (n301 | n226 | n515);
|
||||
assign n141 = n135 & n136 & n137 & n138 & n139 & n140;
|
||||
assign n142 = n301 | n354 | n474;
|
||||
assign n143 = n166 | n341;
|
||||
assign n144 = n430 | n158;
|
||||
assign n145 = i_6_ | i_7_;
|
||||
assign n146 = n142 & n143 & (n144 | n145);
|
||||
assign n147 = n422 | n467;
|
||||
assign n148 = n170 | n544;
|
||||
assign n149 = n342 | n367;
|
||||
assign n150 = n440 | n436;
|
||||
assign n151 = n166 | n365;
|
||||
assign n152 = ~i_6_ | ~i_8_ | n453;
|
||||
assign n153 = n422 | n546;
|
||||
assign n154 = n146 & (n440 | n232 | n430);
|
||||
assign n155 = n147 & n148 & n149 & n150 & n151 & n152 & n153 & n154;
|
||||
assign n156 = n425 | n448;
|
||||
assign n157 = n229 | n252 | n226;
|
||||
assign n158 = i_5_ | n533;
|
||||
assign n159 = n182 | ~n332;
|
||||
assign n160 = n156 & n157 & (n158 | n159);
|
||||
assign n161 = n529 | n548;
|
||||
assign n162 = n425 | n546;
|
||||
assign n163 = (n440 | n534) & (n423 | n454);
|
||||
assign n164 = n161 & n162 & n163;
|
||||
assign n165 = n182 | n430;
|
||||
assign n166 = i_5_ | n240;
|
||||
assign n167 = n165 | n166;
|
||||
assign n168 = n240 | n223 | n208;
|
||||
assign n169 = n342 | n337;
|
||||
assign n170 = ~i_5_ | n533;
|
||||
assign n171 = n425 | n430;
|
||||
assign n172 = n553 & n554 & n167 & n286 & n555 & n556;
|
||||
assign n173 = n683 & n477 & (n425 | n195);
|
||||
assign n174 = n633 & n482 & n637 & n609 & n681 & n682 & n621 & n680;
|
||||
assign n175 = n454 | n463;
|
||||
assign n176 = n236 | n209;
|
||||
assign n177 = (n166 | n559) & (n158 | n341);
|
||||
assign n178 = n175 & n176 & n177;
|
||||
assign n179 = n560 | n441;
|
||||
assign n180 = n531 | n224;
|
||||
assign n181 = n166 | n305;
|
||||
assign n182 = ~i_6_ | n529;
|
||||
assign n183 = n179 & n180 & (n181 | n182);
|
||||
assign n184 = n295 & n294 & n563;
|
||||
assign n185 = n166 | n367;
|
||||
assign n186 = n529 | n531 | n472;
|
||||
assign n187 = n225 | n301 | ~n332;
|
||||
assign n188 = n678 & (~i_8_ | n562);
|
||||
assign n189 = n675 & n676 & n269 & n76 & n362 & n624 & n677 & n50;
|
||||
assign n190 = i_7_ | i_8_;
|
||||
assign n191 = ~i_6_ | n543;
|
||||
assign n192 = ~i_0_ | ~n469;
|
||||
assign n193 = n85 & (n190 | n191 | n192);
|
||||
assign n194 = i_6_ | ~i_7_;
|
||||
assign n195 = n166 | n223;
|
||||
assign n196 = n194 | n195;
|
||||
assign n197 = n416 | n454;
|
||||
assign n198 = n232 | n223;
|
||||
assign n199 = n197 & (n198 | n145);
|
||||
assign n200 = n166 | n566;
|
||||
assign n201 = n339 | n274;
|
||||
assign n202 = n200 & n201 & (n182 | n144);
|
||||
assign n203 = n166 | n337;
|
||||
assign n204 = n425 | n209;
|
||||
assign n205 = (n158 | n233) & (n198 | n454);
|
||||
assign n206 = n203 & n204 & n205;
|
||||
assign n207 = n145 | n170 | ~n461;
|
||||
assign n208 = ~i_6_ | n229;
|
||||
assign n209 = n241 | n545;
|
||||
assign n210 = n207 & (n208 | n209);
|
||||
assign n211 = n223 | n339;
|
||||
assign n212 = n211 | n208;
|
||||
assign n213 = n440 | n209;
|
||||
assign n214 = n158 | n274;
|
||||
assign n215 = n236 | n572;
|
||||
assign n216 = n182 | n572;
|
||||
assign n217 = n415 | n211;
|
||||
assign n218 = n301 | n191 | n488;
|
||||
assign n219 = n182 | n211;
|
||||
assign n220 = (n166 | n573) & (n532 | n145);
|
||||
assign n221 = n531 | n229 | n545;
|
||||
assign n222 = n59 & (n232 | ~n332 | n574);
|
||||
assign n223 = ~i_2_ | n321;
|
||||
assign n224 = n425 | n339;
|
||||
assign n225 = i_6_ | n487;
|
||||
assign n226 = ~i_1_ | n443;
|
||||
assign n227 = n226 | ~i_7_ | n225;
|
||||
assign n228 = i_0_ | n191 | ~n469;
|
||||
assign n229 = ~i_7_ | ~i_8_;
|
||||
assign n230 = n228 | n229;
|
||||
assign n231 = n422 | n195;
|
||||
assign n232 = ~i_5_ | n240;
|
||||
assign n233 = n182 | ~n461;
|
||||
assign n234 = n190 | n515 | n488;
|
||||
assign n235 = n342 | n372;
|
||||
assign n236 = i_6_ | n529;
|
||||
assign n237 = n531 | n158;
|
||||
assign n238 = n234 & n235 & (n236 | n237);
|
||||
assign n239 = n321 | n577;
|
||||
assign n240 = ~i_3_ | i_4_;
|
||||
assign n241 = ~i_2_ | n373;
|
||||
assign n242 = ~i_6_ | i_8_;
|
||||
assign n243 = n239 & (n240 | n241 | n242);
|
||||
assign n244 = i_6_ | n323;
|
||||
assign n245 = n190 | ~n461;
|
||||
assign n246 = n244 | n245;
|
||||
assign n247 = n339 | n573;
|
||||
assign n248 = i_3_ | i_4_ | i_6_;
|
||||
assign n249 = n247 & (n229 | n248 | ~n332);
|
||||
assign n250 = i_2_ | ~i_3_;
|
||||
assign n251 = n250 | ~i_0_ | n225;
|
||||
assign n252 = i_6_ | ~i_4_ | i_5_;
|
||||
assign n253 = ~i_1_ | ~i_7_ | n250 | n252;
|
||||
assign n254 = i_8_ & (~n251 | (~n430 & ~n472));
|
||||
assign n255 = ~i_5_ & (~n591 | (~n422 & ~n561));
|
||||
assign n256 = n425 | n436;
|
||||
assign n257 = n378 | ~n461;
|
||||
assign n258 = n170 | n367;
|
||||
assign n259 = n208 | n558;
|
||||
assign n260 = n327 & (n166 | n229 | ~n461);
|
||||
assign n261 = n301 | n144;
|
||||
assign n262 = n256 & n257 & n258 & n259 & n260 & n261;
|
||||
assign n263 = n415 | n538;
|
||||
assign n264 = n181 | n208;
|
||||
assign n265 = n578 & (n301 | n241 | n444);
|
||||
assign n266 = n78 & n263 & n264 & n265;
|
||||
assign n267 = n592 & n593;
|
||||
assign n268 = n238 & n700 & (n537 | n191);
|
||||
assign n269 = n339 | n440 | ~n461;
|
||||
assign n270 = n342 | n365;
|
||||
assign n271 = n232 | n241 | n242;
|
||||
assign n272 = n669 & n699 & n656 & n410;
|
||||
assign n273 = ~n415 & (~n237 | (~n305 & ~n533));
|
||||
assign n274 = n208 | ~n332;
|
||||
assign n275 = n274 | n170;
|
||||
assign n276 = n444 | n565;
|
||||
assign n277 = n365 | ~i_4_ | i_5_;
|
||||
assign n278 = n276 & n277 & (n225 | n245);
|
||||
assign n279 = n232 | n372;
|
||||
assign n280 = n529 | n571;
|
||||
assign n281 = n342 | n159;
|
||||
assign n282 = n182 | n539;
|
||||
assign n283 = n691 & (n527 | n544);
|
||||
assign n284 = n689 & n466 & n690 & n658 & n452 & n648 & n138 & n402;
|
||||
assign n285 = n279 & n280 & n281 & n282 & n183 & n146 & n283 & n284;
|
||||
assign n286 = n545 | n274;
|
||||
assign n287 = n158 | n542;
|
||||
assign n288 = n532 | n425;
|
||||
assign n289 = n425 | n453;
|
||||
assign n290 = n170 | n302 | n430;
|
||||
assign n291 = n182 | n423;
|
||||
assign n292 = (n532 | n454) & (n528 | n145);
|
||||
assign n293 = n286 & n136 & n287 & n288 & n289 & n290 & n291 & n292;
|
||||
assign n294 = n208 | n546;
|
||||
assign n295 = n440 | n493;
|
||||
assign n296 = n236 | n564;
|
||||
assign n297 = n158 | n591;
|
||||
assign n298 = n688 & (n158 | n236 | ~n332);
|
||||
assign n299 = n305 | n229 | n354;
|
||||
assign n300 = n294 & n295 & n296 & n297 & n298 & n299;
|
||||
assign n301 = ~i_7_ | i_8_;
|
||||
assign n302 = i_6_ | ~i_8_;
|
||||
assign n303 = n531 | n339;
|
||||
assign n304 = (n301 | n228) & (n302 | n303);
|
||||
assign n305 = i_2_ | n321;
|
||||
assign n306 = i_3_ | i_5_;
|
||||
assign n307 = n239 & (n305 | n236 | n306);
|
||||
assign n308 = n602 & n603 & n604 & n519;
|
||||
assign n309 = n702 & (~i_1_ | n182 | n342);
|
||||
assign n310 = n351 & n285 & n120 & n300 & n304 & n293;
|
||||
assign n311 = n673 & n84 & n640 & n675 & n701 & n67;
|
||||
assign n312 = n76 & n404 & n219 & n636 & n649 & n79;
|
||||
assign n313 = n308 & n95 & n307 & n309 & n160 & n310 & n311 & n312;
|
||||
assign n314 = i_3_ | n487;
|
||||
assign n315 = n159 | n314;
|
||||
assign n316 = n165 | n232;
|
||||
assign n317 = n440 | n423;
|
||||
assign n318 = n190 | n248 | ~n332;
|
||||
assign n319 = (n236 | n536) & (n415 | n575);
|
||||
assign n320 = n317 & n318 & n319;
|
||||
assign n321 = i_0_ | ~i_1_;
|
||||
assign n322 = n191 | n301 | n321 | i_3_;
|
||||
assign n323 = i_3_ | ~i_5_;
|
||||
assign n324 = n208 | n223 | n323;
|
||||
assign n325 = n537 | n252;
|
||||
assign n326 = n415 | n467;
|
||||
assign n327 = n342 | n573;
|
||||
assign n328 = n706 & (i_0_ | n443 | n419);
|
||||
assign n329 = i_3_ | n566;
|
||||
assign n330 = n320 & n478 & n300 & n172 & n121 & n612 & n617;
|
||||
assign n331 = n705 & n218 & n403 & n257 & n150 & n187 & n583 & n704;
|
||||
assign n332 = ~i_2_ & ~n426;
|
||||
assign n333 = ~n170 & (~n233 | (~n301 & n332));
|
||||
assign n334 = ~n430 & (~n224 | (~n314 & ~n529));
|
||||
assign n335 = n342 | n241;
|
||||
assign n336 = n335 | n190;
|
||||
assign n337 = ~n332 | n422;
|
||||
assign n338 = n337 | n232;
|
||||
assign n339 = i_5_ | n527;
|
||||
assign n340 = n242 | n339 | ~n461;
|
||||
assign n341 = n415 | ~n461;
|
||||
assign n342 = ~i_5_ | n527;
|
||||
assign n343 = n341 | n342;
|
||||
assign n344 = n681 & n563 & n703;
|
||||
assign n345 = n229 | n444;
|
||||
assign n346 = i_1_ | ~n469;
|
||||
assign n347 = n243 & n344 & (n345 | n346);
|
||||
assign n348 = n621 & n622 & n623 & n624 & n496 & n625 & n626 & n627;
|
||||
assign n349 = n340 & n343 & n58 & n620;
|
||||
assign n350 = n618 & n405 & n619;
|
||||
assign n351 = n605 & n178 & n606 & n607 & n278 & n596 & n601 & n608;
|
||||
assign n352 = n582 & n193 & n266;
|
||||
assign n353 = n399 & n258 & n695 & n708 & n506 & n186 & n654 & n707;
|
||||
assign n354 = ~i_6_ | n487;
|
||||
assign n355 = n301 | n354 | ~n461;
|
||||
assign n356 = ~i_4_ | ~i_5_;
|
||||
assign n357 = n356 | n165;
|
||||
assign n358 = n182 | n448;
|
||||
assign n359 = n241 | n224;
|
||||
assign n360 = n232 | n182 | n241;
|
||||
assign n361 = n166 | n159;
|
||||
assign n362 = n170 | n341;
|
||||
assign n363 = n47 & n501 & n147;
|
||||
assign n364 = n408 & n396 & n676 & n197 & n710 & n388 & n711 & n709;
|
||||
assign n365 = n430 | n208;
|
||||
assign n366 = n365 | n232;
|
||||
assign n367 = ~n332 | n425;
|
||||
assign n368 = n367 | n158;
|
||||
assign n369 = n531 | n208 | n547;
|
||||
assign n370 = i_6_ | n547;
|
||||
assign n371 = n534 | n449;
|
||||
assign n372 = n425 | ~n461;
|
||||
assign n373 = ~i_0_ | ~i_1_;
|
||||
assign n374 = n373 | n301 | n339;
|
||||
assign n375 = (i_1_ & (~i_5_ | ~n426)) | (i_5_ & ~n426);
|
||||
assign n376 = ~n454 & ~i_4_ & n375;
|
||||
assign n377 = ~n195 & (~n425 | ~n449);
|
||||
assign n378 = n232 | n236;
|
||||
assign n379 = ~n332 | n378;
|
||||
assign n380 = n241 | n557;
|
||||
assign n381 = n423 | n208;
|
||||
assign n382 = n166 | n590;
|
||||
assign n383 = n232 | n542;
|
||||
assign n384 = (n170 | n541) & (n422 | n453);
|
||||
assign n385 = n716 & (~i_1_ | i_2_ | n577);
|
||||
assign n386 = n380 & n381 & n382 & n383 & n384 & n385;
|
||||
assign n387 = n422 | n549;
|
||||
assign n388 = n355 & n357 & n628 & n629;
|
||||
assign n389 = n529 | n515;
|
||||
assign n390 = n387 & n388 & (n389 | n346);
|
||||
assign n391 = n236 | n549;
|
||||
assign n392 = n170 | n590;
|
||||
assign n393 = n415 | n441;
|
||||
assign n394 = n182 | n564;
|
||||
assign n395 = n425 | n538;
|
||||
assign n396 = n208 | n441;
|
||||
assign n397 = n425 | n441;
|
||||
assign n398 = n390 & n320 & n386 & n308 & n278 & n718;
|
||||
assign n399 = n166 | n430 | n454;
|
||||
assign n400 = n170 | n159;
|
||||
assign n401 = n314 | n559;
|
||||
assign n402 = n425 | n564;
|
||||
assign n403 = n144 | n454;
|
||||
assign n404 = n314 | n274;
|
||||
assign n405 = n538 | n208;
|
||||
assign n406 = n326 & n607 & n282 & n697 & n714 & n715;
|
||||
assign n407 = n474 | n438;
|
||||
assign n408 = n314 | n449 | ~n461;
|
||||
assign n409 = n449 | n564;
|
||||
assign n410 = n182 | n467;
|
||||
assign n411 = n708 & n625 & (n537 | n248);
|
||||
assign n412 = n613 & n698 & n710;
|
||||
assign n413 = n594 & n693 & n90;
|
||||
assign n414 = n301 | n430 | n252;
|
||||
assign n415 = i_6_ | n301;
|
||||
assign n416 = n305 | n170;
|
||||
assign n417 = n415 | n453;
|
||||
assign n418 = n425 | n576;
|
||||
assign n419 = n225 | n229;
|
||||
assign n420 = n417 & n418 & (n192 | n419);
|
||||
assign n421 = n574 | ~n332 | n545;
|
||||
assign n422 = ~i_6_ | n301;
|
||||
assign n423 = n166 | n241;
|
||||
assign n424 = n421 & (n422 | n423);
|
||||
assign n425 = ~i_6_ | n190;
|
||||
assign n426 = ~i_0_ | i_1_;
|
||||
assign n427 = n425 | n240 | n426;
|
||||
assign n428 = n354 | i_7_ | n192;
|
||||
assign n429 = n229 | n241 | n244;
|
||||
assign n430 = i_2_ | n373;
|
||||
assign n431 = n224 | n430;
|
||||
assign n432 = ~n454 & ((~n223 & ~n306) | ~n534);
|
||||
assign n433 = n372 | n158;
|
||||
assign n434 = n415 | n546;
|
||||
assign n435 = n434 & (n229 | ~n332 | n370);
|
||||
assign n436 = n223 | n545;
|
||||
assign n437 = n401 & (n236 | n436);
|
||||
assign n438 = n229 | n515;
|
||||
assign n439 = ~i_0_ | ~i_2_;
|
||||
assign n440 = i_6_ | n190;
|
||||
assign n441 = n223 | n170;
|
||||
assign n442 = (n438 | n439) & (n440 | n441);
|
||||
assign n443 = ~i_2_ | i_3_;
|
||||
assign n444 = i_6_ | n356;
|
||||
assign n445 = n208 | n493;
|
||||
assign n446 = (n422 | n575) & (n529 | n441);
|
||||
assign n447 = n445 & n361 & n446;
|
||||
assign n448 = n430 | n545;
|
||||
assign n449 = ~i_6_ | ~i_7_;
|
||||
assign n450 = n448 | n449;
|
||||
assign n451 = n232 | n367;
|
||||
assign n452 = n305 | n422 | n533;
|
||||
assign n453 = n342 | n223;
|
||||
assign n454 = i_6_ | n229;
|
||||
assign n455 = n451 & n452 & (n453 | n454);
|
||||
assign n456 = n636 & n450 & n622 & n579;
|
||||
assign n457 = n635 & n634 & n633 & n632 & n553 & n552 & ~n432 & n433;
|
||||
assign n458 = n601 & n249 & n617;
|
||||
assign n459 = n294 & n297 & n701 & n721 & n206 & n199 & n722 & n155;
|
||||
assign n460 = ~n252 & ~n529;
|
||||
assign n461 = i_2_ & ~n426;
|
||||
assign n462 = n461 & ((~n194 & ~n314) | n460);
|
||||
assign n463 = n305 | n339;
|
||||
assign n464 = n463 | n415;
|
||||
assign n465 = n182 | n534;
|
||||
assign n466 = n314 | n365;
|
||||
assign n467 = n241 | n158;
|
||||
assign n468 = n465 & n466 & (n236 | n467);
|
||||
assign n469 = i_3_ & i_2_;
|
||||
assign n470 = n469 & ((~n229 & ~n252) | ~n389);
|
||||
assign n471 = ~n470 & (i_2_ | n306 | n440);
|
||||
assign n472 = ~i_6_ | n527;
|
||||
assign n473 = (n229 | n472) & (i_7_ | n370);
|
||||
assign n474 = i_3_ | n426;
|
||||
assign n475 = (n321 | n158) & (i_4_ | n474);
|
||||
assign n476 = n639 & n638 & n637 & n464 & n148 & ~n462;
|
||||
assign n477 = n550 & n551 & n552;
|
||||
assign n478 = n291 & n322 & n324;
|
||||
assign n479 = n732 & n734 & (~i_1_ | n471);
|
||||
assign n480 = n554 & n701 & n731 & n730 & n396 & n161 & n688 & n727;
|
||||
assign n481 = n468 & n420 & n476 & n96 & n477 & n478 & n479 & n480;
|
||||
assign n482 = n440 | n540;
|
||||
assign n483 = n482 & (n198 | n415);
|
||||
assign n484 = n302 | n158;
|
||||
assign n485 = n166 | n236;
|
||||
assign n486 = n484 & n485 & (~i_5_ | n440);
|
||||
assign n487 = i_4_ | ~i_5_;
|
||||
assign n488 = i_3_ | ~i_0_ | i_2_;
|
||||
assign n489 = (n487 | n488) & (n373 | n170);
|
||||
assign n490 = n262 & n92 & n612 & n738 & n739 & n737;
|
||||
assign n491 = n621 & n649 & n644 & n643 & n289 & n162 & n393 & n736;
|
||||
assign n492 = n483 & n447 & n481 & n114 & n103 & n442 & n490 & n491;
|
||||
assign n493 = n241 | n314;
|
||||
assign n494 = n493 | n422;
|
||||
assign n495 = n209 | n182;
|
||||
assign n496 = n425 | n493;
|
||||
assign n497 = n356 | n182 | n346;
|
||||
assign n498 = ~n170 & ~n449 & (~n430 | n461);
|
||||
assign n499 = n332 & (~n378 | ~n485 | ~n740);
|
||||
assign n500 = n545 | n145 | ~n332;
|
||||
assign n501 = n531 | n557;
|
||||
assign n502 = (n342 | n171) & (n449 | n335);
|
||||
assign n503 = n500 & n501 & n502;
|
||||
assign n504 = n166 | n274;
|
||||
assign n505 = n158 | n566;
|
||||
assign n506 = n422 | n576;
|
||||
assign n507 = n719 & (n190 | n354 | n561);
|
||||
assign n508 = n430 | n345;
|
||||
assign n509 = n476 & n455 & n503 & n293 & n570 & n424;
|
||||
assign n510 = n611 & n383 & n203 & n213 & n682 & n361;
|
||||
assign n511 = n317 & n176 & n175 & n643 & n641 & n318;
|
||||
assign n512 = n166 | n531;
|
||||
assign n513 = n270 & (n425 | n512);
|
||||
assign n514 = i_3_ | n530;
|
||||
assign n515 = i_6_ | n543;
|
||||
assign n516 = n514 | n515;
|
||||
assign n517 = n145 | n575;
|
||||
assign n518 = n166 | n233;
|
||||
assign n519 = n170 | n566;
|
||||
assign n520 = n669 & n387 & n217 & n693 & n200;
|
||||
assign n521 = n404 & n692 & n359 & n744 & n650 & n642 & n483 & n105;
|
||||
assign n522 = ~n232 & (~n544 | ~n591);
|
||||
assign n523 = n390 & n104 & n113 & n93 & n141 & n304;
|
||||
assign n524 = n745 & n746 & n747 & n77 & n381 & n605;
|
||||
assign n525 = n689 & n271 & n705 & n360 & n47 & n618;
|
||||
assign n526 = n481 & n435 & n131 & n513 & n503 & n523 & n524 & n525;
|
||||
assign n527 = i_3_ | ~i_4_;
|
||||
assign n528 = n305 | n342;
|
||||
assign n529 = i_7_ | ~i_8_;
|
||||
assign n530 = i_1_ | i_0_;
|
||||
assign n531 = ~i_2_ | n530;
|
||||
assign n532 = n342 | n531;
|
||||
assign n533 = ~i_3_ | ~i_4_;
|
||||
assign n534 = n170 | n241;
|
||||
assign n535 = i_0_ | n443 | n225;
|
||||
assign n536 = n339 | n430;
|
||||
assign n537 = n223 | n229;
|
||||
assign n538 = n531 | n170;
|
||||
assign n539 = n305 | n158;
|
||||
assign n540 = n305 | n314;
|
||||
assign n541 = n422 | n430;
|
||||
assign n542 = n208 | ~n461;
|
||||
assign n543 = i_4_ | i_5_;
|
||||
assign n544 = n415 | n430;
|
||||
assign n545 = i_4_ | n306;
|
||||
assign n546 = n305 | n545;
|
||||
assign n547 = ~i_3_ | ~i_5_;
|
||||
assign n548 = n430 | n370;
|
||||
assign n549 = n223 | n158;
|
||||
assign n550 = n232 | n341;
|
||||
assign n551 = n170 | n372;
|
||||
assign n552 = n208 | n540;
|
||||
assign n553 = n182 | n549;
|
||||
assign n554 = n208 | n463;
|
||||
assign n555 = n540 | n454;
|
||||
assign n556 = n425 | n467;
|
||||
assign n557 = n422 | n339;
|
||||
assign n558 = n531 | n314;
|
||||
assign n559 = ~n332 | n454;
|
||||
assign n560 = ~i_6_ | i_7_;
|
||||
assign n561 = i_1_ | n443;
|
||||
assign n562 = n426 | ~i_3_ | n252;
|
||||
assign n563 = n236 | n211;
|
||||
assign n564 = n305 | n232;
|
||||
assign n565 = n529 | n474;
|
||||
assign n566 = n422 | ~n461;
|
||||
assign n567 = n236 | n463;
|
||||
assign n568 = n536 | n560;
|
||||
assign n569 = n339 | n341;
|
||||
assign n570 = n567 & n196 & n568 & n569;
|
||||
assign n571 = n223 | n314;
|
||||
assign n572 = n241 | n339;
|
||||
assign n573 = ~n332 | n415;
|
||||
assign n574 = i_6_ | i_8_;
|
||||
assign n575 = ~n461 | n545;
|
||||
assign n576 = n232 | n531;
|
||||
assign n577 = i_3_ | n190 | n444;
|
||||
assign n578 = n49 & n394 & n421 & n387 & n445;
|
||||
assign n579 = n440 | n564;
|
||||
assign n580 = n246 & n578 & n243 & n410 & n579 & n418;
|
||||
assign n581 = ~n461 | n485;
|
||||
assign n582 = n227 & n230 & n451 & n581;
|
||||
assign n583 = n422 | n441;
|
||||
assign n584 = n422 | n571;
|
||||
assign n585 = n182 | n546;
|
||||
assign n586 = n425 | n416;
|
||||
assign n587 = n182 | n436;
|
||||
assign n588 = n672 & n673 & n606 & n674;
|
||||
assign n589 = n668 & n626 & n669 & n670 & n671 & n287 & n645 & n296;
|
||||
assign n590 = ~n332 | n440;
|
||||
assign n591 = n182 | n531;
|
||||
assign n592 = n407 & n135 & n692 & n392 & n137 & n693 & n694 & n55;
|
||||
assign n593 = n695 & n696 & n685 & n687 & n585 & n697 & n698 & n681;
|
||||
assign n594 = n339 | n559;
|
||||
assign n595 = n181 | n425;
|
||||
assign n596 = n418 & n393 & n594 & n595 & n550;
|
||||
assign n597 = ~n332 | n557;
|
||||
assign n598 = n425 | n144;
|
||||
assign n599 = n440 | n571;
|
||||
assign n600 = n314 | n541;
|
||||
assign n601 = n600 & n599 & n598 & n597 & n518 & ~n273 & n275;
|
||||
assign n602 = n182 | n493;
|
||||
assign n603 = n232 | n274;
|
||||
assign n604 = n422 | n558;
|
||||
assign n605 = n170 | n236 | ~n461;
|
||||
assign n606 = n430 | n485;
|
||||
assign n607 = n208 | n416;
|
||||
assign n608 = n551 & n686 & n639 & n637 & n671 & n569 & n57 & n653;
|
||||
assign n609 = n339 | n159;
|
||||
assign n610 = n422 | n237;
|
||||
assign n611 = n237 | n454;
|
||||
assign n612 = n609 & n395 & n316 & n610 & n611 & n391;
|
||||
assign n613 = n236 | n416;
|
||||
assign n614 = n539 | n242;
|
||||
assign n615 = n181 | n302;
|
||||
assign n616 = n454 | n564;
|
||||
assign n617 = n615 & n256 & n269 & n234 & n214 & n270 & n50 & n616;
|
||||
assign n618 = n529 | n535;
|
||||
assign n619 = n223 | n557;
|
||||
assign n620 = n532 | n208;
|
||||
assign n621 = n422 | n538;
|
||||
assign n622 = n182 | n571;
|
||||
assign n623 = n181 | n440;
|
||||
assign n624 = n182 | n463;
|
||||
assign n625 = n182 | n195;
|
||||
assign n626 = n565 | n191;
|
||||
assign n627 = n397 & n338 & n336 & ~n334 & n82 & ~n333;
|
||||
assign n628 = n425 | n571;
|
||||
assign n629 = n342 | n274;
|
||||
assign n630 = n236 | n342 | ~n461;
|
||||
assign n631 = n534 | n415;
|
||||
assign n632 = n232 | n171;
|
||||
assign n633 = n236 | n539;
|
||||
assign n634 = n342 | n233;
|
||||
assign n635 = n672 & (n252 | ~n332 | n529);
|
||||
assign n636 = n546 | n454;
|
||||
assign n637 = n232 | n159;
|
||||
assign n638 = n182 | n416;
|
||||
assign n639 = n430 | n557;
|
||||
assign n640 = n422 | n540;
|
||||
assign n641 = i_2_ | n530;
|
||||
assign n642 = n402 & n623 & n641 & n394;
|
||||
assign n643 = n425 | n237;
|
||||
assign n644 = n237 | n208;
|
||||
assign n645 = n415 | n564;
|
||||
assign n646 = n415 | n576;
|
||||
assign n647 = n138 & n263 & n694 & n610 & n501 & n677 & n297;
|
||||
assign n648 = n440 | n576;
|
||||
assign n649 = n440 | n303;
|
||||
assign n650 = n59 & n57 & n648 & n649 & n587;
|
||||
assign n651 = n339 | n591;
|
||||
assign n652 = i_5_ | n236 | n514;
|
||||
assign n653 = n528 | n422;
|
||||
assign n654 = n303 | n194;
|
||||
assign n655 = n742 & n55 & n180;
|
||||
assign n656 = n181 | n454;
|
||||
assign n657 = n236 | n448;
|
||||
assign n658 = n198 | n182;
|
||||
assign n659 = n214 & n235 & n671 & n58 & n652 & n137;
|
||||
assign n660 = n528 | n425;
|
||||
assign n661 = n440 | n572;
|
||||
assign n662 = n725 & n632 & n581 & n231 & n400 & n699 & n584;
|
||||
assign n663 = n147 & n143 & n644 & n410 & n296 & n201 & n362 & n743;
|
||||
assign n664 = n651 & n445 & n628;
|
||||
assign n665 = n670 & n713 & n668 & n633 & n598 & n600;
|
||||
assign n666 = n180 & n257 & n151 & n49 & n694 & n742;
|
||||
assign n667 = n403 & n219 & n555 & n392 & n371 & n629;
|
||||
assign n668 = n415 | n448;
|
||||
assign n669 = n208 | n549;
|
||||
assign n670 = n454 | n441;
|
||||
assign n671 = n440 | n467;
|
||||
assign n672 = n440 | n195;
|
||||
assign n673 = n422 | n209;
|
||||
assign n674 = n236 | n453;
|
||||
assign n675 = n198 | n425;
|
||||
assign n676 = n236 | n493;
|
||||
assign n677 = n440 | n538;
|
||||
assign n678 = n301 | n561 | n444;
|
||||
assign n679 = n208 | n303;
|
||||
assign n680 = n263 & n610 & n56;
|
||||
assign n681 = n208 | n467;
|
||||
assign n682 = n539 | n449;
|
||||
assign n683 = ~n461 | ~i_3_ | n454;
|
||||
assign n684 = n658 & n288 & n623 & n653 & n631 & n630 & n595;
|
||||
assign n685 = n301 | n423;
|
||||
assign n686 = n301 | n535;
|
||||
assign n687 = n536 | n229;
|
||||
assign n688 = n208 | n575;
|
||||
assign n689 = n422 | n531 | n356;
|
||||
assign n690 = n241 | n378;
|
||||
assign n691 = n301 | n241 | n472;
|
||||
assign n692 = n538 | n454;
|
||||
assign n693 = n314 | n544;
|
||||
assign n694 = n440 | n539;
|
||||
assign n695 = n190 | n548;
|
||||
assign n696 = n192 | n389;
|
||||
assign n697 = n208 | n448;
|
||||
assign n698 = n236 | n335;
|
||||
assign n699 = n342 | n590;
|
||||
assign n700 = n153 & (n440 | n223 | n306);
|
||||
assign n701 = n440 | n549;
|
||||
assign n702 = n305 | ~i_7_ | n244;
|
||||
assign n703 = n527 | n182 | n373;
|
||||
assign n704 = n638 & n235 & n136 & n677 & n669 & n567 & n217;
|
||||
assign n705 = n540 | n574;
|
||||
assign n706 = n425 | n241 | n547;
|
||||
assign n707 = n164 & (n321 | n415 | n543);
|
||||
assign n708 = n181 | n301;
|
||||
assign n709 = n674 & (~i_7_ | n223 | n248);
|
||||
assign n710 = n342 | n541;
|
||||
assign n711 = n158 | n337;
|
||||
assign n712 = ~i_3_ | i_5_ | n305 | n415;
|
||||
assign n713 = n422 | n198;
|
||||
assign n714 = n712 & (n354 | ~n461 | n529);
|
||||
assign n715 = n171 | n323;
|
||||
assign n716 = i_7_ | n244 | ~n461;
|
||||
assign n717 = n301 | n225 | n226;
|
||||
assign n718 = n717 & (n419 | n346);
|
||||
assign n719 = n182 | n453;
|
||||
assign n720 = n529 | n225 | n488;
|
||||
assign n721 = n679 & (n226 | n438);
|
||||
assign n722 = (n449 | n195) & (n223 | n224);
|
||||
assign n723 = (n527 | n194) & (n301 | n232);
|
||||
assign n724 = (n529 | n444) & (n190 | n166);
|
||||
assign n725 = n339 | n233;
|
||||
assign n726 = n549 | n194;
|
||||
assign n727 = n517 & n149 & n725 & n726;
|
||||
assign n728 = i_8_ | n252 | n488;
|
||||
assign n729 = n728 & (n240 | n373 | n415);
|
||||
assign n730 = n729 & (i_3_ | n454 | ~n461);
|
||||
assign n731 = n533 | n236 | ~n332;
|
||||
assign n732 = (n475 | n425) & (n473 | n241);
|
||||
assign n733 = (n194 | n512) & (n529 | n540);
|
||||
assign n734 = n733 & (n430 | (n724 & n723));
|
||||
assign n735 = ~i_0_ | ~i_2_ | ~i_7_ | n342;
|
||||
assign n736 = n280 & n89 & n735 & n380 & n169 & n83;
|
||||
assign n737 = (~n332 | n486) & (n232 | n591);
|
||||
assign n738 = n489 | n190;
|
||||
assign n739 = n373 | n208 | n547;
|
||||
assign n740 = (n533 | n415) & (n422 | n232);
|
||||
assign n741 = n383 & n295 & n675;
|
||||
assign n742 = i_4_ | i_6_ | n514;
|
||||
assign n743 = n215 & n204 & n690 & n162 & n726 & n258;
|
||||
assign n744 = n184 & (n534 | n236);
|
||||
assign n745 = ~i_2_ | ~i_5_ | n748 | n749;
|
||||
assign n746 = i_3_ | n430 | n574;
|
||||
assign n747 = n487 | n565;
|
||||
assign n748 = i_1_ & (i_4_ | n229);
|
||||
assign n749 = ~i_1_ & (~i_4_ | n208);
|
||||
endmodule
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,930 @@
|
|||
// Benchmark "TOP" written by ABC on Mon Feb 4 17:31:22 2019
|
||||
|
||||
module ex1010 (
|
||||
i_0_, i_1_, i_2_, i_3_, i_4_, i_5_, i_6_, i_7_, i_8_, i_9_,
|
||||
o_0_, o_1_, o_2_, o_3_, o_4_, o_5_, o_6_, o_7_, o_8_, o_9_ );
|
||||
input i_0_, i_1_, i_2_, i_3_, i_4_, i_5_, i_6_, i_7_, i_8_, i_9_;
|
||||
output o_0_, o_1_, o_2_, o_3_, o_4_, o_5_, o_6_, o_7_, o_8_, o_9_;
|
||||
wire n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n42, n43,
|
||||
n44, n45, n46, n47, n48, n49, n50, n51, n52, n53, n54, n55, n56, n57,
|
||||
n58, n59, n60, n61, n62, n63, n64, n65, n66, n67, n68, n69, n70, n71,
|
||||
n72, n73, n74, n75, n76, n77, n78, n79, n80, n81, n82, n83, n84, n85,
|
||||
n86, n87, n88, n89, n90, n91, n92, n93, n94, n95, n96, n97, n98, n99,
|
||||
n100, n101, n102, n103, n104, n105, n106, n107, n108, n109, n110, n111,
|
||||
n112, n113, n114, n115, n116, n117, n118, n119, n120, n121, n122, n123,
|
||||
n124, n125, n126, n127, n128, n129, n130, n131, n132, n133, n134, n135,
|
||||
n136, n137, n138, n139, n140, n141, n142, n143, n144, n145, n146, n147,
|
||||
n148, n149, n150, n151, n152, n153, n154, n155, n156, n157, n158, n159,
|
||||
n160, n161, n162, n163, n164, n165, n166, n167, n168, n169, n170, n171,
|
||||
n172, n173, n174, n175, n176, n177, n178, n179, n180, n181, n182, n183,
|
||||
n184, n185, n186, n187, n188, n189, n190, n191, n192, n193, n194, n195,
|
||||
n196, n197, n198, n199, n200, n201, n202, n203, n204, n205, n206, n207,
|
||||
n208, n209, n210, n211, n212, n213, n214, n215, n216, n217, n218, n219,
|
||||
n220, n221, n222, n223, n224, n225, n226, n227, n228, n229, n230, n231,
|
||||
n232, n233, n234, n235, n236, n237, n238, n239, n240, n241, n242, n243,
|
||||
n244, n245, n246, n247, n248, n249, n250, n251, n252, n253, n254, n255,
|
||||
n256, n257, n258, n259, n260, n261, n262, n263, n264, n265, n266, n267,
|
||||
n268, n269, n270, n271, n272, n273, n274, n275, n276, n277, n278, n279,
|
||||
n280, n281, n282, n283, n284, n285, n286, n287, n288, n289, n290, n291,
|
||||
n292, n293, n294, n295, n296, n297, n298, n299, n300, n301, n302, n303,
|
||||
n304, n305, n306, n307, n308, n309, n310, n311, n312, n313, n314, n315,
|
||||
n316, n317, n318, n319, n320, n321, n322, n323, n324, n325, n326, n327,
|
||||
n328, n329, n330, n331, n332, n333, n334, n335, n336, n337, n338, n339,
|
||||
n340, n341, n342, n343, n344, n345, n346, n347, n348, n349, n350, n351,
|
||||
n352, n353, n354, n355, n356, n357, n358, n359, n360, n361, n362, n363,
|
||||
n364, n365, n366, n367, n368, n369, n370, n371, n372, n373, n374, n375,
|
||||
n376, n377, n378, n379, n380, n381, n382, n383, n384, n385, n386, n387,
|
||||
n388, n389, n390, n391, n392, n393, n394, n395, n396, n397, n398, n399,
|
||||
n400, n401, n402, n403, n404, n405, n406, n407, n408, n409, n410, n411,
|
||||
n412, n413, n414, n415, n416, n417, n418, n419, n420, n421, n422, n423,
|
||||
n424, n425, n426, n427, n428, n429, n430, n431, n432, n433, n434, n435,
|
||||
n436, n437, n438, n439, n440, n441, n442, n443, n444, n445, n446, n447,
|
||||
n448, n449, n450, n451, n452, n453, n454, n455, n456, n457, n458, n459,
|
||||
n460, n461, n462, n463, n464, n465, n466, n467, n468, n469, n470, n471,
|
||||
n472, n473, n474, n475, n476, n477, n478, n479, n480, n481, n482, n483,
|
||||
n484, n485, n486, n487, n488, n489, n490, n491, n492, n493, n494, n495,
|
||||
n496, n497, n498, n499, n500, n501, n502, n503, n504, n505, n506, n507,
|
||||
n508, n509, n510, n511, n512, n513, n514, n515, n516, n517, n518, n519,
|
||||
n520, n521, n522, n523, n524, n525, n526, n527, n528, n529, n530, n531,
|
||||
n532, n533, n534, n535, n536, n537, n538, n539, n540, n541, n542, n543,
|
||||
n544, n545, n546, n547, n548, n549, n550, n551, n552, n553, n554, n555,
|
||||
n556, n557, n558, n559, n560, n561, n562, n563, n564, n565, n566, n567,
|
||||
n568, n569, n570, n571, n572, n573, n574, n575, n576, n577, n578, n579,
|
||||
n580, n581, n582, n583, n584, n585, n586, n587, n588, n589, n590, n591,
|
||||
n592, n593, n594, n595, n596, n597, n598, n599, n600, n601, n602, n603,
|
||||
n604, n605, n606, n607, n608, n609, n610, n611, n612, n613, n614, n615,
|
||||
n616, n617, n618, n619, n620, n621, n622, n623, n624, n625, n626, n627,
|
||||
n628, n629, n630, n631, n632, n633, n634, n635, n636, n637, n638, n639,
|
||||
n640, n641, n642, n643, n644, n645, n646, n647, n648, n649, n650, n651,
|
||||
n652, n653, n654, n655, n656, n657, n658, n659, n660, n661, n662, n663,
|
||||
n664, n665, n666, n667, n668, n669, n670, n671, n672, n673, n674, n675,
|
||||
n676, n677, n678, n679, n680, n681, n682, n683, n684, n685, n686, n687,
|
||||
n688, n689, n690, n691, n692, n693, n694, n695, n696, n697, n698, n699,
|
||||
n700, n701, n702, n703, n704, n705, n706, n707, n708, n709, n710, n711,
|
||||
n712, n713, n714, n715, n716, n717, n718, n719, n720, n721, n722, n723,
|
||||
n724, n725, n726, n727, n728, n729, n730, n731, n732, n733, n734, n735,
|
||||
n736, n737, n738, n739, n740, n741, n742, n743, n744, n745, n746, n747,
|
||||
n748, n749, n750, n751, n752, n753, n754, n755, n756, n757, n758, n759,
|
||||
n760, n761, n762, n763, n764, n765, n766, n767, n768, n769, n770, n771,
|
||||
n772, n773, n774, n775, n776, n777, n778, n779, n780, n781, n782, n783,
|
||||
n784, n785, n786, n787, n788, n789, n790, n791, n792, n793, n794, n795,
|
||||
n796, n797, n798, n799, n800, n801, n802, n803, n804, n805, n806, n807,
|
||||
n808, n809, n810, n811, n812, n813, n814, n815, n816, n817, n818, n819,
|
||||
n820, n821, n822, n823, n824, n825, n826, n827, n828, n829, n830, n831,
|
||||
n832, n833, n834, n835, n836, n837, n838, n839, n840, n841, n842, n843,
|
||||
n844, n845, n846, n847, n848, n849, n850, n851, n852, n853, n854, n855,
|
||||
n856, n857, n858, n859, n860, n861, n862, n863, n864, n865, n866, n867,
|
||||
n868, n869;
|
||||
assign o_0_ = ~n418;
|
||||
assign o_1_ = ~n31;
|
||||
assign o_2_ = ~n403;
|
||||
assign o_3_ = ~n378;
|
||||
assign o_4_ = ~n349;
|
||||
assign o_5_ = ~n30;
|
||||
assign o_6_ = ~n270;
|
||||
assign o_7_ = ~n216;
|
||||
assign o_8_ = ~n170;
|
||||
assign o_9_ = ~n109;
|
||||
assign n30 = n155 & n50 & n301 & n302 & n303 & n304 & n305 & n306;
|
||||
assign n31 = n97 & n404 & n151 & n405 & n406 & n407 & n408 & n409;
|
||||
assign n32 = (n436 | n458) & (n219 | n479);
|
||||
assign n33 = ~i_9_ | n429;
|
||||
assign n34 = n423 | n446;
|
||||
assign n35 = n32 & (n33 | n34);
|
||||
assign n36 = (n222 | n481) & (n43 | n480);
|
||||
assign n37 = ~i_9_ | n419;
|
||||
assign n38 = n423 | n457;
|
||||
assign n39 = n36 & (n37 | n38);
|
||||
assign n40 = i_9_ | n440;
|
||||
assign n41 = n420 | n441;
|
||||
assign n42 = n419 | n450;
|
||||
assign n43 = i_9_ | n421;
|
||||
assign n44 = (n42 | n43) & (n40 | n41);
|
||||
assign n45 = n219 | n103;
|
||||
assign n46 = n439 | n290;
|
||||
assign n47 = n565 & n320 & n566;
|
||||
assign n48 = n563 & n564 & (n272 | n476);
|
||||
assign n49 = n561 & n562 & n125 & n556 & n560 & n557;
|
||||
assign n50 = n45 & n46 & n44 & n35 & n39 & n47 & n48 & n49;
|
||||
assign n51 = n40 | n456;
|
||||
assign n52 = n436 | n203;
|
||||
assign n53 = ~i_9_ | n427;
|
||||
assign n54 = n426 | n446;
|
||||
assign n55 = n51 & n52 & (n53 | n54);
|
||||
assign n56 = n37 | n262;
|
||||
assign n57 = n272 | n487;
|
||||
assign n58 = n319 & (n219 | n488);
|
||||
assign n59 = n555 & n55 & (n91 | n489);
|
||||
assign n60 = n53 | n92;
|
||||
assign n61 = n219 | n485;
|
||||
assign n62 = n33 | n486;
|
||||
assign n63 = n388 & n554 & (n53 | n483);
|
||||
assign n64 = n56 & n57 & n58 & n59 & n60 & n61 & n62 & n63;
|
||||
assign n65 = n552 & (n37 | n490);
|
||||
assign n66 = n436 | n491;
|
||||
assign n67 = (n33 | n469) & (n96 | n43);
|
||||
assign n68 = n219 | n339;
|
||||
assign n69 = (n37 | n478) & (n439 | n494);
|
||||
assign n70 = n553 & n328 & (n309 | n481);
|
||||
assign n71 = n65 & n66 & n67 & n68 & n69 & n70;
|
||||
assign n72 = n91 | n496;
|
||||
assign n73 = n100 | n41;
|
||||
assign n74 = (n309 | n463) & (n222 | n495);
|
||||
assign n75 = (n222 | n463) & (n43 | n255);
|
||||
assign n76 = (n422 | n462) & (n43 | n223);
|
||||
assign n77 = n72 & n73 & n74 & n75 & n76;
|
||||
assign n78 = n219 | n498;
|
||||
assign n79 = n436 | n480;
|
||||
assign n80 = (n436 | n447) & (n222 | n497);
|
||||
assign n81 = (n86 | n475) & (n258 | n499);
|
||||
assign n82 = (n309 | n480) & (n40 | n493);
|
||||
assign n83 = n78 & n79 & n80 & n81 & n82;
|
||||
assign n84 = (n443 | n86) & (n462 | n502);
|
||||
assign n85 = n225 & n551 & (n258 | n500);
|
||||
assign n86 = i_9_ | n460;
|
||||
assign n87 = n433 | n466;
|
||||
assign n88 = n84 & n85 & (n86 | n87);
|
||||
assign n89 = (n222 | n203) & (n33 | n150);
|
||||
assign n90 = n549 & n550 & (n219 | n199);
|
||||
assign n91 = ~i_9_ | n466;
|
||||
assign n92 = n435 | n442;
|
||||
assign n93 = n89 & n90 & (n91 | n92);
|
||||
assign n94 = n462 | n507;
|
||||
assign n95 = n548 & n124 & (n100 | n506);
|
||||
assign n96 = n441 | n442;
|
||||
assign n97 = n94 & n95 & (n96 | n86);
|
||||
assign n98 = (n219 | n92) & (n53 | n469);
|
||||
assign n99 = n431 | n432;
|
||||
assign n100 = i_9_ | n457;
|
||||
assign n101 = n98 & (n99 | n100);
|
||||
assign n102 = (n100 | n508) & (n33 | n489);
|
||||
assign n103 = n423 | n460;
|
||||
assign n104 = n102 & (n37 | n103);
|
||||
assign n105 = (n86 | n465) & (n464 | n219);
|
||||
assign n106 = n64 & n71 & n50 & n83 & n88 & n77;
|
||||
assign n107 = n589 & n593 & n592 & n586 & n585 & n588;
|
||||
assign n108 = n580 & n584 & n583 & n579 & n577 & n575;
|
||||
assign n109 = n97 & n101 & n93 & n105 & n104 & n106 & n107 & n108;
|
||||
assign n110 = n623 & (n100 | n514);
|
||||
assign n111 = n37 | n507;
|
||||
assign n112 = n86 | (n468 & n492);
|
||||
assign n113 = n622 & (n462 | n498);
|
||||
assign n114 = n620 & n621 & (n43 | n310);
|
||||
assign n115 = n619 & n285 & n561 & n209 & n56 & n618 & n299 & n616;
|
||||
assign n116 = n110 & n111 & n112 & n113 & n114 & n115;
|
||||
assign n117 = (n37 | n471) & (n33 | n520);
|
||||
assign n118 = n53 | n34;
|
||||
assign n119 = (n91 | n523) & (n462 | n488);
|
||||
assign n120 = n609 & n608 & (n100 | n475);
|
||||
assign n121 = n312 & n613 & (n309 | n458);
|
||||
assign n122 = n611 & n610 & (n447 | n43);
|
||||
assign n123 = n117 & n118 & n119 & n120 & n121 & n122;
|
||||
assign n124 = n462 | n505;
|
||||
assign n125 = n43 | n468;
|
||||
assign n126 = n73 & (n222 | n518);
|
||||
assign n127 = (n86 | n525) & (n272 | n465);
|
||||
assign n128 = n606 & (n309 | n524);
|
||||
assign n129 = n603 & (n462 | n526);
|
||||
assign n130 = n601 & n602 & (n439 | n498);
|
||||
assign n131 = n605 & n604 & (n37 | n461);
|
||||
assign n132 = n124 & n125 & n126 & n127 & n128 & n129 & n130 & n131;
|
||||
assign n133 = (n272 | n495) & (n91 | n103);
|
||||
assign n134 = n454 | n100;
|
||||
assign n135 = n600 & (n309 | n484);
|
||||
assign n136 = n462 | n477;
|
||||
assign n137 = n598 & n599 & (n219 | n500);
|
||||
assign n138 = n596 & n597 & (n222 | n42);
|
||||
assign n139 = n133 & n134 & n135 & n136 & n137 & n138;
|
||||
assign n140 = (n91 | n511) & (n272 | n528);
|
||||
assign n141 = n594 & n595 & (n91 | n34);
|
||||
assign n142 = n420 | n432;
|
||||
assign n143 = n140 & n141 & (n86 | n142);
|
||||
assign n144 = (n272 | n529) & (n258 | n503);
|
||||
assign n145 = n86 | n530;
|
||||
assign n146 = (n53 | n103) & (n424 | n462);
|
||||
assign n147 = n144 & n145 & n146 & n61;
|
||||
assign n148 = (n309 | n531) & (n436 | n456);
|
||||
assign n149 = (n86 | n532) & (n100 | n472);
|
||||
assign n150 = n421 | n442;
|
||||
assign n151 = n148 & n149 & (n91 | n150);
|
||||
assign n152 = (n40 & n436) | n533;
|
||||
assign n153 = n380 & (n53 | n496);
|
||||
assign n154 = n423 | n435;
|
||||
assign n155 = n152 & n153 & (n91 | n154);
|
||||
assign n156 = (n100 | n531) & (n91 | n534);
|
||||
assign n157 = n426 | n466;
|
||||
assign n158 = n156 & (n86 | n157);
|
||||
assign n159 = (n33 | n505) & (n91 | n38);
|
||||
assign n160 = n433 | n460;
|
||||
assign n161 = n159 & (n33 | n160);
|
||||
assign n162 = (n436 | n513) & (n33 | n92);
|
||||
assign n163 = (n53 | n509) & (n222 | n512);
|
||||
assign n164 = (n222 | n513) & (n37 | n467);
|
||||
assign n165 = (n258 | n467) & (n43 | n501);
|
||||
assign n166 = n626 & n625 & (n309 | n42);
|
||||
assign n167 = n633 & n634 & n631 & n630 & n629 & n387 & n628 & n627;
|
||||
assign n168 = n139 & n143 & n147 & n151 & n123 & n132 & n116 & n644;
|
||||
assign n169 = n640 & n641 & n639 & n638 & n637 & n642 & n636 & n635;
|
||||
assign n170 = n162 & n163 & n164 & n165 & n166 & n167 & n168 & n169;
|
||||
assign n171 = (n37 | n92) & (n43 | n484);
|
||||
assign n172 = n648 & n649 & (n458 | n86);
|
||||
assign n173 = n647 & (n100 | n294);
|
||||
assign n174 = n645 & n646 & (n219 | n540);
|
||||
assign n175 = n171 & n172 & n173 & n174;
|
||||
assign n176 = n33 | n477;
|
||||
assign n177 = n272 | n255;
|
||||
assign n178 = (n91 | n538) & (n452 | n43);
|
||||
assign n179 = n91 | n504;
|
||||
assign n180 = (n100 | n492) & (n258 | n504);
|
||||
assign n181 = n559 & (n53 | n290);
|
||||
assign n182 = n176 & n177 & n178 & n179 & n180 & n181;
|
||||
assign n183 = n428 | n100;
|
||||
assign n184 = n219 | n34;
|
||||
assign n185 = (n436 | n472) & (n43 | n474);
|
||||
assign n186 = n40 | n542;
|
||||
assign n187 = (n91 | n339) & (n445 | n219);
|
||||
assign n188 = (n40 | n525) & (n219 | n505);
|
||||
assign n189 = n183 & n184 & n185 & n186 & n187 & n188;
|
||||
assign n190 = n436 | n525;
|
||||
assign n191 = n86 | n512;
|
||||
assign n192 = (n86 | n480) & (n436 | n544);
|
||||
assign n193 = n53 | n486;
|
||||
assign n194 = n309 | n543;
|
||||
assign n195 = (n258 | n251) & (n222 | n294);
|
||||
assign n196 = n190 & n191 & n192 & n193 & n194 & n195;
|
||||
assign n197 = (n96 | n100) & (n272 | n532);
|
||||
assign n198 = n350 & n351 & (n40 | n513);
|
||||
assign n199 = n450 | n457;
|
||||
assign n200 = n197 & n198 & (n53 | n199);
|
||||
assign n201 = (n462 | n496) & (n37 | n522);
|
||||
assign n202 = (n309 | n517) & (n439 | n539);
|
||||
assign n203 = n423 | n432;
|
||||
assign n204 = n201 & n202 & (n86 | n203);
|
||||
assign n205 = (n222 | n142) & (n272 | n521);
|
||||
assign n206 = (n439 | n496) & (n33 | n470);
|
||||
assign n207 = n205 & n206;
|
||||
assign n208 = (n86 | n519) & (n100 | n537);
|
||||
assign n209 = n53 | n150;
|
||||
assign n210 = n674 & n673 & (n272 | n514);
|
||||
assign n211 = n566 & n563 & n234 & n605 & n672 & n671;
|
||||
assign n212 = n64 & n139 & (n461 | n91);
|
||||
assign n213 = n676 & n675 & (n53 | n539);
|
||||
assign n214 = n196 & n200 & n204 & n207 & n182 & n189 & n175;
|
||||
assign n215 = n670 & n227 & n668 & n667 & n663 & n662 & n666 & n661;
|
||||
assign n216 = n208 & n209 & n210 & n211 & n212 & n213 & n214 & n215;
|
||||
assign n217 = n258 | n92;
|
||||
assign n218 = (n309 | n542) & (n40 | n518);
|
||||
assign n219 = ~i_9_ | n451;
|
||||
assign n220 = n217 & n218 & (n219 | n38);
|
||||
assign n221 = (n86 | n513) & (n462 | n545);
|
||||
assign n222 = i_9_ | n425;
|
||||
assign n223 = n442 | n466;
|
||||
assign n224 = n221 & (n222 | n223);
|
||||
assign n225 = n272 | n501;
|
||||
assign n226 = n438 | n439;
|
||||
assign n227 = n456 | n100;
|
||||
assign n228 = n45 & n72 & (n43 | n525);
|
||||
assign n229 = n686 & n685 & (n309 | n294);
|
||||
assign n230 = n276 & n652 & n684 & n277;
|
||||
assign n231 = n224 & n158 & n220 & n44 & n404 & n693 & n692 & n690;
|
||||
assign n232 = n225 & n226 & n227 & n176 & n228 & n229 & n230 & n231;
|
||||
assign n233 = n434 | n33;
|
||||
assign n234 = n462 | n478;
|
||||
assign n235 = n674 & (n40 | n536);
|
||||
assign n236 = (n258 | n527) & (n222 | n510);
|
||||
assign n237 = n33 | n523;
|
||||
assign n238 = (n40 | n519) & (n37 | n259);
|
||||
assign n239 = n439 | (n339 & n516);
|
||||
assign n240 = n682 & n683 & (n100 | n541);
|
||||
assign n241 = n233 & n234 & n235 & n236 & n237 & n238 & n239 & n240;
|
||||
assign n242 = (n53 | n534) & (n462 | n54);
|
||||
assign n243 = n96 | n272;
|
||||
assign n244 = n681 & (n86 | n501);
|
||||
assign n245 = n43 | n491;
|
||||
assign n246 = n46 & n615 & (n91 | n479);
|
||||
assign n247 = n679 & n680 & (n436 | n508);
|
||||
assign n248 = n242 & n243 & n244 & n245 & n246 & n247;
|
||||
assign n249 = n392 & (n40 | n492);
|
||||
assign n250 = n678 & n677 & (n33 | n546);
|
||||
assign n251 = n442 | n446;
|
||||
assign n252 = n249 & n250 & (n53 | n251);
|
||||
assign n253 = n272 | n536;
|
||||
assign n254 = (n258 | n540) & (n86 | n515);
|
||||
assign n255 = n431 | n441;
|
||||
assign n256 = n253 & n254 & (n40 | n255);
|
||||
assign n257 = (n91 | n520) & (n456 | n43);
|
||||
assign n258 = ~i_9_ | n441;
|
||||
assign n259 = n420 | n440;
|
||||
assign n260 = n257 & (n258 | n259);
|
||||
assign n261 = (n222 | n468) & (n258 | n339);
|
||||
assign n262 = n420 | n449;
|
||||
assign n263 = n261 & (n53 | n262);
|
||||
assign n264 = (n37 | n290) & (n454 | n86);
|
||||
assign n265 = (n219 | n511) & (n33 | n494);
|
||||
assign n266 = n710 & n709 & (n309 | n506);
|
||||
assign n267 = n713 & n712 & (n33 | n479);
|
||||
assign n268 = n252 & n256 & n260 & n263 & n241 & n248 & n232 & n717;
|
||||
assign n269 = n700 & n177 & n699 & n698 & n695 & n694 & n697 & n708;
|
||||
assign n270 = n264 & n265 & n266 & n267 & n268 & n269;
|
||||
assign n271 = (n100 | n535) & (n439 | n251);
|
||||
assign n272 = i_9_ | n449;
|
||||
assign n273 = n271 & (n272 | n42);
|
||||
assign n274 = n91 | n546;
|
||||
assign n275 = n439 | n546;
|
||||
assign n276 = n436 | n476;
|
||||
assign n277 = n219 | n150;
|
||||
assign n278 = n253 & n719 & (n309 | n528);
|
||||
assign n279 = n714 & (n91 | n526);
|
||||
assign n280 = n321 & (n37 | n438);
|
||||
assign n281 = n721 & n720 & (n86 | n41);
|
||||
assign n282 = n274 & n275 & n276 & n277 & n278 & n279 & n280 & n281;
|
||||
assign n283 = n219 | n478;
|
||||
assign n284 = n428 | n436;
|
||||
assign n285 = n100 | n521;
|
||||
assign n286 = n665 & (n455 | n219);
|
||||
assign n287 = n161 & n283 & n263 & n284 & n285 & n286;
|
||||
assign n288 = (n40 | n497) & (n37 | n539);
|
||||
assign n289 = n718 & (n219 | n486);
|
||||
assign n290 = n453 | n460;
|
||||
assign n291 = n288 & n289 & (n290 | n91);
|
||||
assign n292 = n43 | (n476 & n506);
|
||||
assign n293 = n686 & (n53 | n473);
|
||||
assign n294 = n423 | n466;
|
||||
assign n295 = n292 & n293 & (n272 | n294);
|
||||
assign n296 = n219 | n469;
|
||||
assign n297 = n100 | n533;
|
||||
assign n298 = (n272 | n543) & (n462 | n486);
|
||||
assign n299 = n455 | n53;
|
||||
assign n300 = n296 & n297 & n298 & n299;
|
||||
assign n301 = (n436 | n529) & (n219 | n547);
|
||||
assign n302 = n749 & n748 & (n91 | n516);
|
||||
assign n303 = n282 & n287 & n291 & n295 & n300 & n252 & n224 & n196;
|
||||
assign n304 = n747 & n746 & n745 & n744 & n743 & n742 & n741 & n740;
|
||||
assign n305 = n738 & n739 & n730 & n732 & n731 & n737 & n736 & n735;
|
||||
assign n306 = n729 & n728 & n727 & n726 & n725 & n724 & n723 & n722;
|
||||
assign n307 = n678 & (n219 | n490);
|
||||
assign n308 = (n219 | n507) & (n459 | n462);
|
||||
assign n309 = i_9_ | n446;
|
||||
assign n310 = n419 | n433;
|
||||
assign n311 = n307 & n308 & (n309 | n310);
|
||||
assign n312 = n53 | n503;
|
||||
assign n313 = n710 & n632 & (n309 | n501);
|
||||
assign n314 = n753 & n590 & n190 & n78 & n79 & n51;
|
||||
assign n315 = n469 | n91;
|
||||
assign n316 = n669 & n649 & (n37 | n477);
|
||||
assign n317 = n751 & n752 & (n439 | n92);
|
||||
assign n318 = n311 & n312 & n313 & n314 & n315 & n234 & n316 & n317;
|
||||
assign n319 = n447 | n100;
|
||||
assign n320 = n219 | n477;
|
||||
assign n321 = n219 | n154;
|
||||
assign n322 = (n439 | n461) & (n100 | n530);
|
||||
assign n323 = n222 | n472;
|
||||
assign n324 = n654 & (n91 | n259);
|
||||
assign n325 = (n222 | n537) & (n37 | n482);
|
||||
assign n326 = n750 & n738 & (n272 | n484);
|
||||
assign n327 = n319 & n320 & n321 & n322 & n323 & n324 & n325 & n326;
|
||||
assign n328 = n436 | n492;
|
||||
assign n329 = n53 | n489;
|
||||
assign n330 = n452 | n100;
|
||||
assign n331 = (n465 | n43) & (n272 | n512);
|
||||
assign n332 = (n439 | n538) & (n37 | n527);
|
||||
assign n333 = n462 | n538;
|
||||
assign n334 = (n462 | n520) & (n424 | n219);
|
||||
assign n335 = n258 | n490;
|
||||
assign n336 = n328 & n329 & n330 & n331 & n332 & n333 & n334 & n335;
|
||||
assign n337 = n53 | n520;
|
||||
assign n338 = n43 | n203;
|
||||
assign n339 = n420 | n425;
|
||||
assign n340 = n337 & n338 & (n53 | n339);
|
||||
assign n341 = n759 & n758 & (n462 | n527);
|
||||
assign n342 = n602 & n757 & (n258 | n479);
|
||||
assign n343 = n614 & n756 & (n43 | n497);
|
||||
assign n344 = n755 & n754 & (n43 | n294);
|
||||
assign n345 = n599 & n274 & n761 & n763 & n762 & n765 & n764 & n766;
|
||||
assign n346 = n773 & n621 & n772 & n771;
|
||||
assign n347 = n769 & n770 & n552 & n562 & n768 & n767;
|
||||
assign n348 = n340 & n300 & n248 & n220 & n327 & n336 & n318 & n777;
|
||||
assign n349 = n341 & n342 & n343 & n344 & n345 & n346 & n347 & n348;
|
||||
assign n350 = n99 | n272;
|
||||
assign n351 = n462 | n103;
|
||||
assign n352 = n340 & (n459 | n219);
|
||||
assign n353 = (n436 | n468) & (n33 | n467);
|
||||
assign n354 = n94 & n582 & (n43 | n541);
|
||||
assign n355 = n315 & n782 & (n258 | n511);
|
||||
assign n356 = n739 & n780 & (n222 | n491);
|
||||
assign n357 = n297 & n350 & n351 & n352 & n353 & n354 & n355 & n356;
|
||||
assign n358 = (n436 | n532) & (n91 | n470);
|
||||
assign n359 = n40 | n528;
|
||||
assign n360 = (n43 | n515) & (n424 | n53);
|
||||
assign n361 = n222 | n536;
|
||||
assign n362 = n779 & n676 & (n100 | n142);
|
||||
assign n363 = n778 & n760 & (n91 | n477);
|
||||
assign n364 = n358 & n359 & n360 & n361 & n362 & n363;
|
||||
assign n365 = (n222 | n524) & (n436 | n537);
|
||||
assign n366 = n100 | n532;
|
||||
assign n367 = (n91 | n498) & (n40 | n541);
|
||||
assign n368 = (n33 | n154) & (n222 | n541);
|
||||
assign n369 = n53 | n502;
|
||||
assign n370 = n569 & (n436 | n157);
|
||||
assign n371 = n365 & n366 & n367 & n368 & n369 & n370;
|
||||
assign n372 = n801 & n800 & (n455 | n462);
|
||||
assign n373 = n798 & n797 & (n272 | n530);
|
||||
assign n374 = n364 & n371 & n357 & n804 & n88 & n55 & n116 & n803;
|
||||
assign n375 = n795 & n794 & (n290 | n219);
|
||||
assign n376 = n792 & n791 & (n100 | n493);
|
||||
assign n377 = n788 & n789 & n787 & n786 & n785 & n217 & n784 & n783;
|
||||
assign n378 = n372 & n373 & n374 & n375 & n376 & n377;
|
||||
assign n379 = n462 | (n444 & n534);
|
||||
assign n380 = n258 | n507;
|
||||
assign n381 = n808 & (n53 | n471);
|
||||
assign n382 = n809 & n810 & (n100 | n501);
|
||||
assign n383 = n806 & n807 & (n53 | n461);
|
||||
assign n384 = n759 & n805 & (n40 | n484);
|
||||
assign n385 = n379 & n380 & n381 & n382 & n383 & n384;
|
||||
assign n386 = n86 | n514;
|
||||
assign n387 = n219 | n496;
|
||||
assign n388 = n91 | n482;
|
||||
assign n389 = n101 & (n272 | n519);
|
||||
assign n390 = n40 | n514;
|
||||
assign n391 = n37 | n154;
|
||||
assign n392 = n430 | n100;
|
||||
assign n393 = n596 & n597 & (n439 | n520);
|
||||
assign n394 = n386 & n387 & n388 & n389 & n390 & n391 & n392 & n393;
|
||||
assign n395 = (n222 | n447) & (n37 | n339);
|
||||
assign n396 = n43 | (n454 & n510);
|
||||
assign n397 = n811 & (n37 | n434);
|
||||
assign n398 = n813 & (n462 | n546);
|
||||
assign n399 = n812 & (n53 | n498);
|
||||
assign n400 = n817 & n818 & (n439 | n103);
|
||||
assign n401 = n816 & n815 & (n272 | n508);
|
||||
assign n402 = n182 & n143 & n260 & n827 & n93 & n828 & n826 & n822;
|
||||
assign n403 = n395 & n396 & n397 & n398 & n399 & n400 & n401 & n402;
|
||||
assign n404 = n33 | n534;
|
||||
assign n405 = (n37 | n502) & (n86 | n524);
|
||||
assign n406 = (n100 | n518) & (n222 | n454);
|
||||
assign n407 = n318 & n287 & n256 & n200 & n394 & n364 & n273;
|
||||
assign n408 = n111 & n606 & n808 & n849 & n848 & n847 & n846 & n845;
|
||||
assign n409 = n843 & n564 & n842 & n840 & n832 & n831 & n830 & n836;
|
||||
assign n410 = (n86 | n533) & (n439 | n199);
|
||||
assign n411 = n438 | n91;
|
||||
assign n412 = n858 & n555 & (n43 | n533);
|
||||
assign n413 = n721 & n857 & (n100 | n517);
|
||||
assign n414 = n781 & n856 & (n462 | n499);
|
||||
assign n415 = n855 & n854 & (n309 | n468);
|
||||
assign n416 = n852 & n851 & (n33 | n444);
|
||||
assign n417 = n132 & n83 & n175 & n868 & n867 & n869 & n866 & n862;
|
||||
assign n418 = n410 & n411 & n412 & n413 & n414 & n415 & n416 & n417;
|
||||
assign n419 = i_8_ | i_6_ | ~i_7_;
|
||||
assign n420 = ~i_5_ | ~i_3_ | i_4_;
|
||||
assign n421 = ~i_0_ | ~i_1_ | ~i_2_;
|
||||
assign n422 = n420 | n421;
|
||||
assign n423 = i_5_ | i_3_ | ~i_4_;
|
||||
assign n424 = n421 | n423;
|
||||
assign n425 = ~i_0_ | ~i_1_ | i_2_;
|
||||
assign n426 = ~i_3_ | ~i_4_ | i_5_;
|
||||
assign n427 = ~i_6_ | ~i_7_ | i_8_;
|
||||
assign n428 = n426 | n427;
|
||||
assign n429 = ~i_6_ | ~i_7_ | ~i_8_;
|
||||
assign n430 = n420 | n429;
|
||||
assign n431 = ~i_5_ | i_3_ | i_4_;
|
||||
assign n432 = i_8_ | i_6_ | i_7_;
|
||||
assign n433 = i_5_ | i_3_ | i_4_;
|
||||
assign n434 = n425 | n433;
|
||||
assign n435 = ~i_2_ | ~i_0_ | i_1_;
|
||||
assign n436 = i_9_ | n435;
|
||||
assign n437 = i_8_ | ~i_6_ | i_7_;
|
||||
assign n438 = n433 | n435;
|
||||
assign n439 = ~i_9_ | n437;
|
||||
assign n440 = i_2_ | ~i_0_ | i_1_;
|
||||
assign n441 = ~i_8_ | ~i_6_ | i_7_;
|
||||
assign n442 = ~i_3_ | ~i_4_ | ~i_5_;
|
||||
assign n443 = n419 | n442;
|
||||
assign n444 = n431 | n440;
|
||||
assign n445 = n433 | n440;
|
||||
assign n446 = ~i_2_ | i_0_ | ~i_1_;
|
||||
assign n447 = n419 | n420;
|
||||
assign n448 = n431 | n437;
|
||||
assign n449 = i_2_ | i_0_ | ~i_1_;
|
||||
assign n450 = i_5_ | ~i_3_ | i_4_;
|
||||
assign n451 = ~i_8_ | i_6_ | ~i_7_;
|
||||
assign n452 = n450 | n451;
|
||||
assign n453 = ~i_5_ | i_3_ | ~i_4_;
|
||||
assign n454 = n429 | n453;
|
||||
assign n455 = n423 | n449;
|
||||
assign n456 = n423 | n441;
|
||||
assign n457 = ~i_2_ | i_0_ | i_1_;
|
||||
assign n458 = n429 | n431;
|
||||
assign n459 = n433 | n457;
|
||||
assign n460 = i_2_ | i_0_ | i_1_;
|
||||
assign n461 = n450 | n460;
|
||||
assign n462 = ~i_9_ | n432;
|
||||
assign n463 = n423 | n429;
|
||||
assign n464 = n431 | n460;
|
||||
assign n465 = n427 | n433;
|
||||
assign n466 = ~i_8_ | i_6_ | i_7_;
|
||||
assign n467 = n421 | n450;
|
||||
assign n468 = n423 | n437;
|
||||
assign n469 = n421 | n431;
|
||||
assign n470 = n425 | n426;
|
||||
assign n471 = n425 | n453;
|
||||
assign n472 = n433 | n441;
|
||||
assign n473 = n426 | n440;
|
||||
assign n474 = n453 | n466;
|
||||
assign n475 = n423 | n451;
|
||||
assign n476 = n432 | n450;
|
||||
assign n477 = n426 | n457;
|
||||
assign n478 = n420 | n460;
|
||||
assign n479 = n420 | n435;
|
||||
assign n480 = n432 | n453;
|
||||
assign n481 = n426 | n429;
|
||||
assign n482 = n421 | n426;
|
||||
assign n483 = n421 | n453;
|
||||
assign n484 = n427 | n453;
|
||||
assign n485 = n425 | n431;
|
||||
assign n486 = n431 | n446;
|
||||
assign n487 = n420 | n427;
|
||||
assign n488 = n431 | n449;
|
||||
assign n489 = n453 | n457;
|
||||
assign n490 = n425 | n450;
|
||||
assign n491 = n420 | n466;
|
||||
assign n492 = n429 | n450;
|
||||
assign n493 = n441 | n453;
|
||||
assign n494 = n442 | n449;
|
||||
assign n495 = n429 | n433;
|
||||
assign n496 = n426 | n460;
|
||||
assign n497 = n431 | n466;
|
||||
assign n498 = n431 | n435;
|
||||
assign n499 = n449 | n453;
|
||||
assign n500 = n440 | n450;
|
||||
assign n501 = n442 | n451;
|
||||
assign n502 = n431 | n457;
|
||||
assign n503 = n423 | n440;
|
||||
assign n504 = n426 | n449;
|
||||
assign n505 = n435 | n453;
|
||||
assign n506 = n420 | n437;
|
||||
assign n507 = n442 | n460;
|
||||
assign n508 = n419 | n423;
|
||||
assign n509 = n423 | n425;
|
||||
assign n510 = n437 | n453;
|
||||
assign n511 = n420 | n457;
|
||||
assign n512 = n441 | n450;
|
||||
assign n513 = n419 | n426;
|
||||
assign n514 = n432 | n433;
|
||||
assign n515 = n433 | n451;
|
||||
assign n516 = n435 | n450;
|
||||
assign n517 = n426 | n451;
|
||||
assign n518 = n433 | n437;
|
||||
assign n519 = n451 | n453;
|
||||
assign n520 = n421 | n433;
|
||||
assign n521 = n437 | n442;
|
||||
assign n522 = n426 | n435;
|
||||
assign n523 = n442 | n457;
|
||||
assign n524 = n429 | n442;
|
||||
assign n525 = n427 | n442;
|
||||
assign n526 = n420 | n446;
|
||||
assign n527 = n440 | n442;
|
||||
assign n528 = n431 | n451;
|
||||
assign n529 = n426 | n441;
|
||||
assign n530 = n420 | n451;
|
||||
assign n531 = n437 | n450;
|
||||
assign n532 = n427 | n431;
|
||||
assign n533 = n427 | n450;
|
||||
assign n534 = n433 | n446;
|
||||
assign n535 = n419 | n453;
|
||||
assign n536 = n432 | n442;
|
||||
assign n537 = n423 | n427;
|
||||
assign n538 = n446 | n453;
|
||||
assign n539 = n449 | n450;
|
||||
assign n540 = n433 | n449;
|
||||
assign n541 = n426 | n432;
|
||||
assign n542 = n419 | n431;
|
||||
assign n543 = n426 | n437;
|
||||
assign n544 = n450 | n466;
|
||||
assign n545 = n446 | n450;
|
||||
assign n546 = n440 | n453;
|
||||
assign n547 = n425 | n442;
|
||||
assign n548 = n462 | n259;
|
||||
assign n549 = n439 | n504;
|
||||
assign n550 = n91 | n503;
|
||||
assign n551 = (n222 | n493) & (n424 | n33);
|
||||
assign n552 = n53 | n479;
|
||||
assign n553 = n436 | n493;
|
||||
assign n554 = (n222 | n484) & (n33 | n339);
|
||||
assign n555 = n456 | n86;
|
||||
assign n556 = n315 & n338 & (n462 | n470);
|
||||
assign n557 = n323 & n411 & (n33 | n471);
|
||||
assign n558 = n40 | n157;
|
||||
assign n559 = n91 | n473;
|
||||
assign n560 = n558 & n559 & (n309 | n474);
|
||||
assign n561 = n53 | n467;
|
||||
assign n562 = n157 | n43;
|
||||
assign n563 = n309 | n475;
|
||||
assign n564 = n272 | n203;
|
||||
assign n565 = n428 | n86;
|
||||
assign n566 = n33 | n478;
|
||||
assign n567 = (n219 | n467) & (n422 | n37);
|
||||
assign n568 = (n37 | n424) & (n91 | n483);
|
||||
assign n569 = n222 | n430;
|
||||
assign n570 = n569 & (n428 | n222);
|
||||
assign n571 = (n222 | n99) & (n258 | n485);
|
||||
assign n572 = (n436 | n510) & (n434 | n439);
|
||||
assign n573 = n99 | n436;
|
||||
assign n574 = n33 | n509;
|
||||
assign n575 = n572 & n573 & n571 & n233 & n570 & n574 & n568 & n567;
|
||||
assign n576 = n96 | n40;
|
||||
assign n577 = n576 & n226 & (n40 | n443);
|
||||
assign n578 = (n33 | n445) & (n37 | n444);
|
||||
assign n579 = n578 & (n439 | n54);
|
||||
assign n580 = n309 | (n447 & n448);
|
||||
assign n581 = n272 | n454;
|
||||
assign n582 = n272 | n452;
|
||||
assign n583 = n581 & n582 & (n272 | n493);
|
||||
assign n584 = n443 | n272;
|
||||
assign n585 = (n33 & n258) | n455;
|
||||
assign n586 = (n33 | n511) & (n272 | n456);
|
||||
assign n587 = n100 | n42;
|
||||
assign n588 = n587 & n330 & (n100 | n203);
|
||||
assign n589 = (n459 | n53) & (n100 | n458);
|
||||
assign n590 = n463 | n86;
|
||||
assign n591 = n290 | n462;
|
||||
assign n592 = n590 & n591 & (n448 | n86);
|
||||
assign n593 = n258 | n461;
|
||||
assign n594 = n40 | n476;
|
||||
assign n595 = n91 | n527;
|
||||
assign n596 = n458 | n43;
|
||||
assign n597 = n439 | n505;
|
||||
assign n598 = n40 | n524;
|
||||
assign n599 = n40 | n465;
|
||||
assign n600 = n91 | n262;
|
||||
assign n601 = n258 | n498;
|
||||
assign n602 = n436 | n223;
|
||||
assign n603 = n40 | n521;
|
||||
assign n604 = (n258 | n477) & (n309 | n510);
|
||||
assign n605 = n439 | n38;
|
||||
assign n606 = n430 | n436;
|
||||
assign n607 = n100 | n481;
|
||||
assign n608 = n607 & (n100 | n484);
|
||||
assign n609 = n100 | n463;
|
||||
assign n610 = n549 & n584 & (n43 | n521);
|
||||
assign n611 = n422 | n258;
|
||||
assign n612 = n222 | n456;
|
||||
assign n613 = n612 & (n439 | n485);
|
||||
assign n614 = n219 | n520;
|
||||
assign n615 = n436 | n518;
|
||||
assign n616 = n614 & n615 & (n219 | n470);
|
||||
assign n617 = n40 | n508;
|
||||
assign n618 = n617 & (n219 | n503);
|
||||
assign n619 = n86 | n472;
|
||||
assign n620 = n222 | n443;
|
||||
assign n621 = n462 | n339;
|
||||
assign n622 = (n436 | n42) & (n439 | n522);
|
||||
assign n623 = n219 | n259;
|
||||
assign n624 = n40 | (n491 & n529);
|
||||
assign n625 = n391 & n624 & (n436 | n514);
|
||||
assign n626 = (n40 | n458) & (n33 | n500);
|
||||
assign n627 = (n272 | n497) & (n258 | n262);
|
||||
assign n628 = (n33 | n38) & (n272 | n87);
|
||||
assign n629 = (n33 | n502) & (n100 | n468);
|
||||
assign n630 = (n33 | n461) & (n91 | n478);
|
||||
assign n631 = (n219 | n482) & (n86 | n294);
|
||||
assign n632 = n462 | n467;
|
||||
assign n633 = n632 & (n43 | n495);
|
||||
assign n634 = n222 | n501;
|
||||
assign n635 = (n436 | n443) & (n222 | n515);
|
||||
assign n636 = (n37 | n479) & (n462 | n92);
|
||||
assign n637 = (n40 | n517) & (n37 | n516);
|
||||
assign n638 = n309 | (n491 & n497);
|
||||
assign n639 = (n272 | n518) & (n37 | n499);
|
||||
assign n640 = (n100 | n519) & (n219 | n489);
|
||||
assign n641 = n100 | n87;
|
||||
assign n642 = n91 | n251;
|
||||
assign n643 = (n258 | n464) & (n86 | n535);
|
||||
assign n644 = n158 & n161 & n155 & n71 & n35 & n643;
|
||||
assign n645 = n436 | n454;
|
||||
assign n646 = n43 | n87;
|
||||
assign n647 = n272 | n310;
|
||||
assign n648 = n86 | n541;
|
||||
assign n649 = n439 | n502;
|
||||
assign n650 = n43 | (n493 & n513);
|
||||
assign n651 = (n258 | n520) & (n43 | n475);
|
||||
assign n652 = n53 | n470;
|
||||
assign n653 = n652 & (n439 | n470);
|
||||
assign n654 = n222 | n532;
|
||||
assign n655 = n654 & (n91 | n509);
|
||||
assign n656 = (n434 | n91) & (n222 | n528);
|
||||
assign n657 = (n436 | n536) & (n222 | n87);
|
||||
assign n658 = n436 | n484;
|
||||
assign n659 = n658 & (n462 | n516);
|
||||
assign n660 = n462 | n154;
|
||||
assign n661 = n659 & n660 & n657 & n656 & n655 & n653 & n651 & n650;
|
||||
assign n662 = (n40 | n42) & (n436 | n465);
|
||||
assign n663 = n40 | (n510 & n537);
|
||||
assign n664 = (n37 | n445) & (n40 | n448);
|
||||
assign n665 = n258 | n54;
|
||||
assign n666 = n665 & n664 & (n309 | n536);
|
||||
assign n667 = (n272 | n517) & (n37 | n34);
|
||||
assign n668 = (n100 | n529) & (n53 | n523);
|
||||
assign n669 = n462 | n199;
|
||||
assign n670 = n669 & (n100 | n513);
|
||||
assign n671 = (n37 | n503) & (n33 | n527);
|
||||
assign n672 = (n219 | n538) & (n444 | n91);
|
||||
assign n673 = (n272 | n524) & (n258 | n34);
|
||||
assign n674 = n272 | n463;
|
||||
assign n675 = (n219 | n526) & (n309 | n157);
|
||||
assign n676 = n439 | n507;
|
||||
assign n677 = (n439 | n479) & (n258 | n150);
|
||||
assign n678 = n309 | n537;
|
||||
assign n679 = n436 | n531;
|
||||
assign n680 = n430 | n43;
|
||||
assign n681 = n309 | n530;
|
||||
assign n682 = n272 | n492;
|
||||
assign n683 = n309 | n508;
|
||||
assign n684 = n219 | n483;
|
||||
assign n685 = (n33 | n545) & (n439 | n473);
|
||||
assign n686 = n33 | n488;
|
||||
assign n687 = n43 | n528;
|
||||
assign n688 = n687 & (n33 | n490);
|
||||
assign n689 = n53 | n494;
|
||||
assign n690 = n689 & n688 & (n53 | n527);
|
||||
assign n691 = n462 | n540;
|
||||
assign n692 = n691 & n623 & (n272 | n535);
|
||||
assign n693 = (n219 | n509) & (n37 | n523);
|
||||
assign n694 = (n462 | n509) & (n43 | n518);
|
||||
assign n695 = (n40 | n487) & (n53 | n505);
|
||||
assign n696 = (n444 | n53) & (n40 | n544);
|
||||
assign n697 = n390 & n696 & (n428 | n309);
|
||||
assign n698 = (n37 | n538) & (n258 | n545);
|
||||
assign n699 = n179 & (n91 | n494);
|
||||
assign n700 = (n439 | n262) & (n272 | n41);
|
||||
assign n701 = (n91 | n199) & (n258 | n523);
|
||||
assign n702 = (n258 | n38) & (n100 | n476);
|
||||
assign n703 = n619 & (n86 | n518);
|
||||
assign n704 = (n222 | n448) & (n43 | n142);
|
||||
assign n705 = (n436 | n530) & (n462 | n522);
|
||||
assign n706 = (n436 | n515) & (n219 | n516);
|
||||
assign n707 = n706 & (n436 | n310);
|
||||
assign n708 = n550 & n60 & n703 & n702 & n701 & n705 & n704 & n707;
|
||||
assign n709 = (n309 | n512) & (n53 | n545);
|
||||
assign n710 = n40 | n515;
|
||||
assign n711 = n351 & (n99 | n86);
|
||||
assign n712 = n620 & n711 & (n43 | n543);
|
||||
assign n713 = (n272 | n472) & (n91 | n54);
|
||||
assign n714 = n309 | n535;
|
||||
assign n715 = n714 & (n430 | n40);
|
||||
assign n716 = (n219 | n494) & (n33 | n540);
|
||||
assign n717 = n207 & n123 & n104 & n39 & n716 & n715;
|
||||
assign n718 = (n40 | n506) & (n258 | n470);
|
||||
assign n719 = (n272 | n542) & (n53 | n499);
|
||||
assign n720 = (n436 | n517) & (n43 | n544);
|
||||
assign n721 = n53 | n477;
|
||||
assign n722 = (n53 | n482) & (n439 | n150);
|
||||
assign n723 = (n439 | n483) & (n422 | n219);
|
||||
assign n724 = (n43 | n508) & (n424 | n258);
|
||||
assign n725 = (n33 & n258) | n547;
|
||||
assign n726 = n222 | (n487 & n543);
|
||||
assign n727 = (n33 | n516) & (n439 | n490);
|
||||
assign n728 = n598 & (n436 | n528);
|
||||
assign n729 = n595 & (n462 | n500);
|
||||
assign n730 = (n40 | n535) & (n37 | n546);
|
||||
assign n731 = n186 & (n309 | n142);
|
||||
assign n732 = n309 | (n255 & n519);
|
||||
assign n733 = (n430 | n272) & (n309 | n514);
|
||||
assign n734 = n100 | n524;
|
||||
assign n735 = n734 & n733 & (n272 | n475);
|
||||
assign n736 = (n258 | n489) & (n100 | n536);
|
||||
assign n737 = (n258 | n103) & (n462 | n38);
|
||||
assign n738 = n444 | n219;
|
||||
assign n739 = n462 | n503;
|
||||
assign n740 = n386 & (n258 | n160);
|
||||
assign n741 = (n422 | n33) & (n43 | n524);
|
||||
assign n742 = (n222 | n521) & (n448 | n43);
|
||||
assign n743 = n436 | (n495 & n512);
|
||||
assign n744 = n681 & (n37 | n494);
|
||||
assign n745 = (n219 | n523) & (n272 | n541);
|
||||
assign n746 = (n37 | n496) & (n258 | n199);
|
||||
assign n747 = n612 & (n434 | n258);
|
||||
assign n748 = (n219 | n502) & (n272 | n537);
|
||||
assign n749 = n219 | n522;
|
||||
assign n750 = n219 | n262;
|
||||
assign n751 = (n222 | n506) & (n43 | n472);
|
||||
assign n752 = n595 & n194 & (n436 | n448);
|
||||
assign n753 = n462 | n471;
|
||||
assign n754 = (n258 | n483) & (n43 | n531);
|
||||
assign n755 = n424 | n91;
|
||||
assign n756 = n222 | (n529 & n530);
|
||||
assign n757 = (n434 | n219) & (n222 | n542);
|
||||
assign n758 = (n37 | n498) & (n436 | n294);
|
||||
assign n759 = n258 | n546;
|
||||
assign n760 = n40 | n472;
|
||||
assign n761 = n760 & (n445 | n258);
|
||||
assign n762 = (n309 | n525) & (n439 | n445);
|
||||
assign n763 = (n309 | n493) & (n462 | n251);
|
||||
assign n764 = n118 & (n219 | n534);
|
||||
assign n765 = n272 | (n157 & n506);
|
||||
assign n766 = n600 & n607 & (n33 | n539);
|
||||
assign n767 = (n86 | n536) & (n37 | n511);
|
||||
assign n768 = (n219 | n160) & (n86 | n517);
|
||||
assign n769 = n222 | n519;
|
||||
assign n770 = n222 | n525;
|
||||
assign n771 = n40 | (n468 & n543);
|
||||
assign n772 = (n91 | n486) & (n33 | n526);
|
||||
assign n773 = n100 | (n495 & n544);
|
||||
assign n774 = (n436 | n542) & (n222 | n517);
|
||||
assign n775 = (n439 | n34) & (n40 | n463);
|
||||
assign n776 = n258 | n534;
|
||||
assign n777 = n189 & n147 & n77 & n776 & n775 & n774;
|
||||
assign n778 = n309 | n476;
|
||||
assign n779 = n436 | n519;
|
||||
assign n780 = n680 & n652 & (n33 | n483);
|
||||
assign n781 = n439 | n499;
|
||||
assign n782 = n781 & n734 & (n37 | n486);
|
||||
assign n783 = (n422 | n53) & (n43 | n517);
|
||||
assign n784 = (n222 | n452) & (n258 | n469);
|
||||
assign n785 = (n222 | n535) & (n462 | n490);
|
||||
assign n786 = (n436 | n475) & (n91 | n522);
|
||||
assign n787 = (n438 | n219) & (n33 | n498);
|
||||
assign n788 = (n219 | n546) & (n37 | n500);
|
||||
assign n789 = n445 | n91;
|
||||
assign n790 = (n447 | n272) & (n37 | n504);
|
||||
assign n791 = n184 & n790 & (n40 | n87);
|
||||
assign n792 = (n53 & n258) | n488;
|
||||
assign n793 = (n100 | n310) & (n91 | n502);
|
||||
assign n794 = n793 & (n86 | n223);
|
||||
assign n795 = n86 | (n491 & n529);
|
||||
assign n796 = n558 & (n86 | n537);
|
||||
assign n797 = n769 & n796 & (n43 | n542);
|
||||
assign n798 = n753 & (n258 | n516);
|
||||
assign n799 = (n258 | n526) & (n100 | n512);
|
||||
assign n800 = n691 & n799 & (n272 | n531);
|
||||
assign n801 = (n272 | n491) & (n33 | n504);
|
||||
assign n802 = (n86 | n310) & (n37 | n199);
|
||||
assign n803 = n44 & n802 & (n439 | n477);
|
||||
assign n804 = n241 & n204 & n282;
|
||||
assign n805 = n658 & n755 & (n91 | n500);
|
||||
assign n806 = (n459 | n91) & (n53 | n504);
|
||||
assign n807 = n57 & (n219 | n471);
|
||||
assign n808 = n422 | n439;
|
||||
assign n809 = n749 & (n222 | n465);
|
||||
assign n810 = (n428 | n43) & (n462 | n150);
|
||||
assign n811 = (n37 | n485) & (n222 | n533);
|
||||
assign n812 = n436 | (n463 & n524);
|
||||
assign n813 = n40 | (n142 & n530);
|
||||
assign n814 = (n445 | n462) & (n444 | n258);
|
||||
assign n815 = n814 & (n443 | n309);
|
||||
assign n816 = (n272 | n481) & (n309 | n529);
|
||||
assign n817 = (n258 | n478) & (n53 | n511);
|
||||
assign n818 = n68 & n62 & (n439 | n160);
|
||||
assign n819 = (n467 | n91) & (n462 | n482);
|
||||
assign n820 = n687 & n819 & (n439 | n509);
|
||||
assign n821 = (n33 | n473) & (n53 | n516);
|
||||
assign n822 = n821 & n820 & (n40 | n531);
|
||||
assign n823 = n91 | n499;
|
||||
assign n824 = n823 & n689 & (n53 | n540);
|
||||
assign n825 = (n436 | n543) & (n86 | n495);
|
||||
assign n826 = n825 & n824 & (n258 | n505);
|
||||
assign n827 = (n42 | n86) & (n428 | n272);
|
||||
assign n828 = n394 & n357 & n385 & n311 & n295 & n336;
|
||||
assign n829 = (n43 | n514) & (n462 | n483);
|
||||
assign n830 = n684 & n829 & (n443 | n43);
|
||||
assign n831 = (n91 | n490) & (n222 | n41);
|
||||
assign n832 = (n436 | n501) & (n462 | n485);
|
||||
assign n833 = (n436 | n41) & (n33 | n522);
|
||||
assign n834 = n645 & n833 & (n438 | n258);
|
||||
assign n835 = n603 & (n40 | n474);
|
||||
assign n836 = n835 & n834 & (n309 | n521);
|
||||
assign n837 = (n219 | n499) & (n272 | n142);
|
||||
assign n838 = n683 & n837 & (n462 | n262);
|
||||
assign n839 = (n272 | n458) & (n455 | n91);
|
||||
assign n840 = n839 & n838 & (n439 | n488);
|
||||
assign n841 = n647 & (n100 | n223);
|
||||
assign n842 = n609 & n841 & (n439 | n511);
|
||||
assign n843 = n33 | (n459 & n464);
|
||||
assign n844 = (n436 | n506) & (n53 | n490);
|
||||
assign n845 = n565 & n844 & (n43 | n41);
|
||||
assign n846 = (n219 | n251) & (n91 | n505);
|
||||
assign n847 = n37 | (n54 & n251);
|
||||
assign n848 = (n439 | n540) & (n430 | n309);
|
||||
assign n849 = n611 & (n462 | n464);
|
||||
assign n850 = (n436 | n535) & (n43 | n487);
|
||||
assign n851 = n275 & n850 & (n40 | n452);
|
||||
assign n852 = n617 & (n40 | n475);
|
||||
assign n853 = (n96 | n309) & (n40 | n310);
|
||||
assign n854 = n853 & (n309 | n492);
|
||||
assign n855 = (n258 | n538) & (n309 | n544);
|
||||
assign n856 = (n219 | n504) & (n462 | n494);
|
||||
assign n857 = n37 | n455;
|
||||
assign n858 = n43 | n536;
|
||||
assign n859 = (n37 & n53) | n547;
|
||||
assign n860 = n779 & n859 & (n222 | n508);
|
||||
assign n861 = n53 | (n154 & n259);
|
||||
assign n862 = n861 & n860 & (n40 | n512);
|
||||
assign n863 = (n53 | n538) & (n439 | n500);
|
||||
assign n864 = n863 & (n100 | n543);
|
||||
assign n865 = (n462 | n489) & (n100 | n510);
|
||||
assign n866 = n865 & n864 & (n448 | n100);
|
||||
assign n867 = (n436 | n481) & (n462 | n34);
|
||||
assign n868 = (n436 | n474) & (n258 | n494);
|
||||
assign n869 = n385 & n371 & n273 & n291 & n232 & n327;
|
||||
endmodule
|
||||
|
||||
|
|
@ -0,0 +1,588 @@
|
|||
// Benchmark "TOP" written by ABC on Mon Feb 4 17:31:57 2019
|
||||
|
||||
module ex5p (
|
||||
i_0_, i_1_, i_2_, i_3_, i_4_, i_5_, i_6_, i_7_,
|
||||
o_0_, o_1_, o_2_, o_3_, o_4_, o_5_, o_6_, o_7_, o_8_, o_9_, o_10_,
|
||||
o_11_, o_12_, o_13_, o_14_, o_15_, o_16_, o_17_, o_18_, o_19_, o_20_,
|
||||
o_21_, o_22_, o_23_, o_24_, o_25_, o_26_, o_27_, o_28_, o_29_, o_30_,
|
||||
o_31_, o_32_, o_33_, o_34_, o_35_, o_36_, o_37_, o_38_, o_39_, o_40_,
|
||||
o_41_, o_42_, o_43_, o_44_, o_45_, o_46_, o_47_, o_48_, o_49_, o_50_,
|
||||
o_51_, o_52_, o_53_, o_54_, o_55_, o_56_, o_57_, o_58_, o_59_, o_60_,
|
||||
o_61_, o_62_ );
|
||||
input i_0_, i_1_, i_2_, i_3_, i_4_, i_5_, i_6_, i_7_;
|
||||
output o_0_, o_1_, o_2_, o_3_, o_4_, o_5_, o_6_, o_7_, o_8_, o_9_, o_10_,
|
||||
o_11_, o_12_, o_13_, o_14_, o_15_, o_16_, o_17_, o_18_, o_19_, o_20_,
|
||||
o_21_, o_22_, o_23_, o_24_, o_25_, o_26_, o_27_, o_28_, o_29_, o_30_,
|
||||
o_31_, o_32_, o_33_, o_34_, o_35_, o_36_, o_37_, o_38_, o_39_, o_40_,
|
||||
o_41_, o_42_, o_43_, o_44_, o_45_, o_46_, o_47_, o_48_, o_49_, o_50_,
|
||||
o_51_, o_52_, o_53_, o_54_, o_55_, o_56_, o_57_, o_58_, o_59_, o_60_,
|
||||
o_61_, o_62_;
|
||||
wire n134, n135, n136, n137, n138, n139, n140, n141, n142, n143, n144,
|
||||
n145, n146, n147, n148, n149, n150, n151, n152, n153, n154, n155, n156,
|
||||
n157, n158, n159, n160, n161, n162, n163, n164, n165, n166, n167, n168,
|
||||
n169, n170, n171, n172, n173, n174, n175, n176, n177, n178, n179, n180,
|
||||
n181, n182, n183, n184, n185, n186, n187, n188, n189, n190, n191, n192,
|
||||
n193, n194, n195, n196, n197, n198, n199, n200, n201, n202, n203, n204,
|
||||
n205, n206, n207, n208, n209, n210, n211, n212, n213, n214, n215, n216,
|
||||
n217, n218, n219, n220, n221, n222, n223, n224, n225, n226, n227, n228,
|
||||
n229, n230, n231, n232, n233, n234, n235, n236, n237, n238, n239, n240,
|
||||
n241, n242, n243, n244, n245, n246, n247, n248, n249, n250, n251, n252,
|
||||
n253, n254, n255, n256, n257, n258, n259, n260, n261, n262, n263, n264,
|
||||
n265, n266, n267, n268, n269, n270, n271, n272, n273, n274, n275, n276,
|
||||
n277, n278, n279, n280, n281, n282, n283, n284, n285, n286, n287, n288,
|
||||
n289, n290, n291, n292, n293, n294, n295, n296, n297, n298, n299, n300,
|
||||
n301, n302, n303, n304, n305, n306, n307, n308, n309, n310, n311, n312,
|
||||
n313, n314, n315, n316, n317, n318, n319, n320, n321, n322, n323, n324,
|
||||
n325, n326, n327, n328, n329, n330, n331, n332, n333, n334, n335, n336,
|
||||
n337, n338, n339, n340, n341, n342, n343, n344, n345, n346, n347, n348,
|
||||
n349, n350, n351, n352, n353, n354, n355, n356, n357, n358, n359, n360,
|
||||
n361, n362, n363, n364, n365, n366, n367, n368, n369, n370, n371, n372,
|
||||
n373, n374, n375, n376, n377, n378, n379, n380, n381, n382, n383, n384,
|
||||
n385, n386, n387, n388, n389, n390, n391, n392, n393, n394, n395, n396,
|
||||
n397, n398, n399, n400, n401, n402, n403, n404, n405, n406, n407, n408,
|
||||
n409, n410, n411, n412, n413, n414, n415, n416, n417, n418, n419, n420,
|
||||
n421, n422, n423, n424, n425, n426, n427, n428, n429, n430, n431, n432,
|
||||
n433, n434, n435, n436, n437, n438, n439, n440, n441, n442, n443, n444,
|
||||
n445, n446, n447, n448, n449, n450, n451, n452, n453, n454, n455, n456,
|
||||
n457, n458, n459, n460, n461, n462, n463, n464, n465, n466, n467, n468,
|
||||
n469, n470, n471, n472, n473, n474, n475, n476, n477, n478, n479, n480,
|
||||
n481, n482, n483, n484, n485, n486, n487, n488, n489, n490, n491, n492,
|
||||
n493, n494, n495, n496, n497, n498, n499, n500, n501, n502, n503, n504,
|
||||
n505, n506, n507, n508, n509, n510, n511, n512, n513, n514, n515, n516,
|
||||
n517, n518, n519, n520, n521, n522, n523, n524, n525, n526, n527, n528,
|
||||
n529, n530, n531, n532, n533, n534, n535, n536, n537, n538, n539, n540,
|
||||
n541, n542, n543, n544, n545, n546, n547, n548, n549, n550, n551, n552,
|
||||
n553, n554, n555, n556, n557, n558, n559, n560, n561, n562, n563, n564,
|
||||
n565, n566, n567, n568, n569, n570, n571, n572, n573, n574, n575, n576,
|
||||
n577, n578, n579, n580, n581, n582, n583, n584, n585, n586, n587, n588,
|
||||
n589, n590, n591, n592, n593, n594, n595, n596, n597;
|
||||
assign o_0_ = ~n365;
|
||||
assign o_1_ = ~n361;
|
||||
assign o_2_ = ~n403;
|
||||
assign o_3_ = ~n370;
|
||||
assign o_4_ = ~n450;
|
||||
assign o_5_ = ~n357;
|
||||
assign o_6_ = ~n136;
|
||||
assign o_7_ = ~n180;
|
||||
assign o_8_ = ~n452;
|
||||
assign o_9_ = ~n491;
|
||||
assign o_10_ = ~n139;
|
||||
assign o_11_ = ~n179;
|
||||
assign o_12_ = ~n385;
|
||||
assign o_13_ = ~n471;
|
||||
assign o_14_ = ~n507;
|
||||
assign o_15_ = ~n138;
|
||||
assign o_16_ = ~n407;
|
||||
assign o_17_ = ~n354;
|
||||
assign o_18_ = ~n421;
|
||||
assign o_19_ = ~n420;
|
||||
assign o_20_ = ~n142;
|
||||
assign o_21_ = ~n145;
|
||||
assign o_22_ = ~n148;
|
||||
assign o_23_ = ~n352;
|
||||
assign o_24_ = ~n504;
|
||||
assign o_25_ = ~n200;
|
||||
assign o_26_ = ~n151;
|
||||
assign o_27_ = ~n260;
|
||||
assign o_28_ = ~n556;
|
||||
assign o_29_ = ~n506;
|
||||
assign o_30_ = ~n150;
|
||||
assign o_31_ = ~n347;
|
||||
assign o_32_ = ~n344;
|
||||
assign o_33_ = ~n340;
|
||||
assign o_34_ = ~n336;
|
||||
assign o_35_ = ~n332;
|
||||
assign o_36_ = ~n328;
|
||||
assign o_37_ = ~n321;
|
||||
assign o_38_ = ~n314;
|
||||
assign o_39_ = ~n308;
|
||||
assign o_40_ = ~n303;
|
||||
assign o_41_ = ~n296;
|
||||
assign o_42_ = ~n291;
|
||||
assign o_43_ = ~n284;
|
||||
assign o_44_ = ~n276;
|
||||
assign o_45_ = ~n274;
|
||||
assign o_46_ = ~n268;
|
||||
assign o_47_ = ~n264;
|
||||
assign o_48_ = ~n259;
|
||||
assign o_49_ = ~n257;
|
||||
assign o_50_ = ~n252;
|
||||
assign o_51_ = ~n245;
|
||||
assign o_52_ = ~n238;
|
||||
assign o_53_ = ~n232;
|
||||
assign o_54_ = ~n226;
|
||||
assign o_55_ = ~n220;
|
||||
assign o_56_ = ~n214;
|
||||
assign o_57_ = ~n205;
|
||||
assign o_58_ = ~n197;
|
||||
assign o_59_ = ~n189;
|
||||
assign o_60_ = ~n182;
|
||||
assign o_61_ = ~n173;
|
||||
assign o_62_ = ~n164;
|
||||
assign n134 = n155 | n439;
|
||||
assign n135 = n155 | n441;
|
||||
assign n136 = n134 & n135;
|
||||
assign n137 = n436 | n339;
|
||||
assign n138 = n445 | n339;
|
||||
assign n139 = n137 & n138;
|
||||
assign n140 = n462 | n152;
|
||||
assign n141 = n463 | n152;
|
||||
assign n142 = n140 & n141;
|
||||
assign n143 = n439 | n152;
|
||||
assign n144 = n441 | n152;
|
||||
assign n145 = n143 & n144;
|
||||
assign n146 = n434 | n152;
|
||||
assign n147 = n446 | n152;
|
||||
assign n148 = n146 & n147;
|
||||
assign n149 = n434 | n373;
|
||||
assign n150 = n434 | n369;
|
||||
assign n151 = n149 & n150;
|
||||
assign n152 = i_2_ | ~i_0_ | i_1_;
|
||||
assign n153 = n152 | ~n381;
|
||||
assign n154 = ~i_3_ | ~i_4_ | ~i_5_;
|
||||
assign n155 = i_0_ | i_1_ | ~i_2_;
|
||||
assign n156 = n154 | n155;
|
||||
assign n157 = i_0_ | i_1_ | i_2_;
|
||||
assign n158 = n157 | ~n366;
|
||||
assign n159 = n373 & n338;
|
||||
assign n160 = n514 & n505 & n363;
|
||||
assign n161 = n515 & n339 & n269 & n195 & n496;
|
||||
assign n162 = n179 & n458 & n408 & n461 & n374;
|
||||
assign n163 = n150 & n516 & n517 & n176 & n454;
|
||||
assign n164 = n159 & n160 & n161 & n162 & n163;
|
||||
assign n165 = n398 & n533 & n535;
|
||||
assign n166 = n523 & n524;
|
||||
assign n167 = n412 & n503;
|
||||
assign n168 = n504 & n363;
|
||||
assign n169 = n450 & n556;
|
||||
assign n170 = n372 & n555 & n180;
|
||||
assign n171 = n254 & n243 & n400;
|
||||
assign n172 = n518 & n192 & n554;
|
||||
assign n173 = n165 & n166 & n167 & n168 & n169 & n170 & n171 & n172;
|
||||
assign n174 = n208 & n309 & n563 & n421 & n254 & n518;
|
||||
assign n175 = n410 & n560 & n192 & n165 & n457 & n461 & n150 & n516;
|
||||
assign n176 = n452 & n451;
|
||||
assign n177 = n362 & n552 & n454;
|
||||
assign n178 = n369 | n462;
|
||||
assign n179 = n436 | n409;
|
||||
assign n180 = n436 | n270;
|
||||
assign n181 = n369 | n463;
|
||||
assign n182 = n174 & n175 & n176 & n177 & n178 & n179 & n180 & n181;
|
||||
assign n183 = n411 & (n157 | ~n382) & n412;
|
||||
assign n184 = n548 & n298;
|
||||
assign n185 = n418 & (n239 | n409);
|
||||
assign n186 = n569 & n570 & n310 & n345 & n169 & n334 & n255 & n163;
|
||||
assign n187 = n265 & n573 & n170 & n203;
|
||||
assign n188 = n594 & n493 & n487 & n483 & n408 & n397 & ~n383 & n387;
|
||||
assign n189 = n183 & n184 & n185 & n186 & n187 & n188;
|
||||
assign n190 = n576 & n575 & n532 & n451 & n414 & n140 & n297 & ~n367;
|
||||
assign n191 = n493 & ~n383 & n492;
|
||||
assign n192 = n405 & n550 & n404 & n145 & n551 & n549;
|
||||
assign n193 = n563 & n272;
|
||||
assign n194 = n421 & n485 & n487;
|
||||
assign n195 = n478 & n481 & n475 & n477;
|
||||
assign n196 = n351 & n158 & (n154 | n157);
|
||||
assign n197 = n190 & n191 & n192 & n193 & n194 & n195 & n138 & n196;
|
||||
assign n198 = n470 & n468;
|
||||
assign n199 = n150 & n536;
|
||||
assign n200 = n270 | n443;
|
||||
assign n201 = n261 & n471 & n394;
|
||||
assign n202 = n228 & n414 & (n339 | ~n382);
|
||||
assign n203 = n179 & n572;
|
||||
assign n204 = n221 & n215 & n422 & n185 & n423 & n300;
|
||||
assign n205 = n198 & n199 & n200 & n201 & n166 & n202 & n203 & n204;
|
||||
assign n206 = n578 & n579 & n554 & n169;
|
||||
assign n207 = n310 & n577;
|
||||
assign n208 = n496 & n562;
|
||||
assign n209 = n580 & ~n395 & n491;
|
||||
assign n210 = n149 & n378 & n370 & n419 & n306;
|
||||
assign n211 = n501 & n563;
|
||||
assign n212 = n180 & n518;
|
||||
assign n213 = n228 & n171 & n467 & n196 & n594 & n376 & n534 & n471;
|
||||
assign n214 = n206 & n207 & n208 & n209 & n210 & n211 & n212 & n213;
|
||||
assign n215 = n563 & n183;
|
||||
assign n216 = n537 & ~n367 & n451;
|
||||
assign n217 = n534 & n275 & n139 & n142;
|
||||
assign n218 = n570 & n571 & n184 & n581 & n337 & n582;
|
||||
assign n219 = n156 & n171 & n427 & n200;
|
||||
assign n220 = n215 & n216 & n180 & n166 & n217 & n218 & n219;
|
||||
assign n221 = n396 & n180 & n159;
|
||||
assign n222 = n474 & n247;
|
||||
assign n223 = n519 & n348 & n494;
|
||||
assign n224 = n472 & n470;
|
||||
assign n225 = n572 & n575 & n478 & n538 & n158 & n458 & n534 & n468;
|
||||
assign n226 = n209 & n219 & n193 & n221 & n222 & n223 & n224 & n225;
|
||||
assign n227 = n449 & n452;
|
||||
assign n228 = n525 & n526;
|
||||
assign n229 = n146 & n527 & n528 & n529 & n530;
|
||||
assign n230 = n391 & n392 & (n393 | n339);
|
||||
assign n231 = n476 & n583 & n537 & n137 & n141 & n534;
|
||||
assign n232 = n174 & n218 & n227 & n228 & n229 & n230 & n231;
|
||||
assign n233 = n351 & n215;
|
||||
assign n234 = n254 & n494 & n559 & n509 & n262 & n292 & n426;
|
||||
assign n235 = n387 & n491;
|
||||
assign n236 = n384 & n385 & (n373 | n386);
|
||||
assign n237 = n510 & n548;
|
||||
assign n238 = n233 & n234 & n224 & n235 & n236 & n186 & n162 & n237;
|
||||
assign n239 = ~n381 & ~n382;
|
||||
assign n240 = n155 | n239;
|
||||
assign n241 = n255 & n240 & n389 & n387 & n584 & n491;
|
||||
assign n242 = n488 & n489;
|
||||
assign n243 = n421 & n482;
|
||||
assign n244 = n254 & n494 & n453;
|
||||
assign n245 = n175 & n212 & n227 & n233 & n241 & n242 & n243 & n244;
|
||||
assign n246 = n560 & n203;
|
||||
assign n247 = n408 & ((~n381 & ~n382) | n409);
|
||||
assign n248 = n200 & n483 & n486;
|
||||
assign n249 = n540 & n539;
|
||||
assign n250 = n524 & n192 & n412 & n501 & n168 & n288 & n293;
|
||||
assign n251 = n535 & n543 & n546 & n477 & n380 & n533;
|
||||
assign n252 = n246 & n247 & n248 & n249 & n250 & n251;
|
||||
assign n253 = n288 & n248 & n342 & n586 & n266;
|
||||
assign n254 = n155 | n446;
|
||||
assign n255 = n155 | n443;
|
||||
assign n256 = n350 & n158 & n351 & n520;
|
||||
assign n257 = n193 & n235 & n253 & n254 & n255 & n256;
|
||||
assign n258 = n254 & n241 & n135 & n134;
|
||||
assign n259 = n258 & n253 & n242 & n160;
|
||||
assign n260 = n443 | n339;
|
||||
assign n261 = n434 | n339;
|
||||
assign n262 = n429 & n281 & n248;
|
||||
assign n263 = n417 & n224 & (n393 | n270);
|
||||
assign n264 = n260 & n190 & n139 & n261 & n262 & n250 & n263;
|
||||
assign n265 = n421 & n156 & n468 & n200;
|
||||
assign n266 = n210 & n585 & n345 & n207;
|
||||
assign n267 = n196 & n496 & n160 & n396 & n180 & n515;
|
||||
assign n268 = n265 & n191 & n206 & n263 & n266 & n267;
|
||||
assign n269 = n493 & n492 & n194 & n196 & ~n383;
|
||||
assign n270 = i_2_ | i_0_ | ~i_1_;
|
||||
assign n271 = n260 & n261;
|
||||
assign n272 = n500 & n330 & n420 & n411 & n497 & n498;
|
||||
assign n273 = n577 & n206 & n210;
|
||||
assign n274 = n269 & n168 & n270 & n271 & n272 & n217 & n273;
|
||||
assign n275 = n530 & n568 & n146 & n529;
|
||||
assign n276 = n211 & n273 & n161 & n275;
|
||||
assign n277 = n567 & n530 & n482 & ~n415 & n137 & n228 & ~n395;
|
||||
assign n278 = n196 & n330 & n451 & n431 & n254 & n491 & n588 & n589;
|
||||
assign n279 = n484 & n363 & n486 & n502;
|
||||
assign n280 = n180 & (n270 | n355);
|
||||
assign n281 = n476 & n583 & n468 & n396;
|
||||
assign n282 = n298 & n417 & n222;
|
||||
assign n283 = n511 & n405 & n499 & n508 & n374 & n377 & n179 & n595;
|
||||
assign n284 = n277 & n278 & n249 & n279 & n280 & n281 & n282 & n283;
|
||||
assign n285 = n477 & n394 & n471 & n378;
|
||||
assign n286 = n413 & n423 & n590 & n138 & n144 & n228;
|
||||
assign n287 = n179 & n553;
|
||||
assign n288 = n422 & n243;
|
||||
assign n289 = n419 & n420 & n579;
|
||||
assign n290 = n549 & n406 & n410 & n563 & n569 & n411 & n380 & n596;
|
||||
assign n291 = n285 & n286 & n248 & n278 & n287 & n288 & n289 & n290;
|
||||
assign n292 = n288 & n404 & (n152 | ~n366);
|
||||
assign n293 = n326 & n426 & n258;
|
||||
assign n294 = n585 & n586 & n345 & n248;
|
||||
assign n295 = n547 & n405 & n560 & n542 & n543 & n546;
|
||||
assign n296 = n292 & n293 & n294 & n193 & n207 & n223 & n295;
|
||||
assign n297 = n458 & n246 & n247;
|
||||
assign n298 = n402 & n547;
|
||||
assign n299 = n356 & n550 & n564;
|
||||
assign n300 = n254 & n400 & n543;
|
||||
assign n301 = n405 & n318 & n473 & n536 & n476 & n469 & n474 & n409;
|
||||
assign n302 = n482 & n411 & n153 & n339 & n380 & n330 & n523;
|
||||
assign n303 = n275 & n297 & n298 & n299 & n300 & n279 & n301 & n302;
|
||||
assign n304 = n573 & n185 & n581 & n587 & n315 & n167 & n203 & n591;
|
||||
assign n305 = n153 & n531;
|
||||
assign n306 = n356 & n564 & n184;
|
||||
assign n307 = n470 & n142 & n145 & n194 & n261 & ~n382;
|
||||
assign n308 = n277 & n285 & n304 & n305 & n306 & n258 & n307;
|
||||
assign n309 = n196 & n492 & n561;
|
||||
assign n310 = n142 & n275 & ~n415;
|
||||
assign n311 = n149 & n298 & n419;
|
||||
assign n312 = n147 & n370 & n508;
|
||||
assign n313 = n327 & n503 & n363;
|
||||
assign n314 = n309 & n310 & n206 & n294 & n311 & n312 & n208 & n313;
|
||||
assign n315 = n575 & n576 & n457 & n454;
|
||||
assign n316 = n448 & n513 & n459;
|
||||
assign n317 = n447 & n512 & n136 & n145 & n526 & n495 & n460;
|
||||
assign n318 = n525 & n478 & n481;
|
||||
assign n319 = n405 & n562 & n578 & n230 & n532 & n371;
|
||||
assign n320 = n541 & n556 & n147 & n449 & n510 & n551 & n565 & n597;
|
||||
assign n321 = n315 & n316 & n317 & n211 & n234 & n318 & n319 & n320;
|
||||
assign n322 = n477 & n550 & n342 & n318 & n311 & n471 & n470 & n592;
|
||||
assign n323 = n146 & n590;
|
||||
assign n324 = n561 & n548 & n531 & n491 & ~n382 & n387;
|
||||
assign n325 = n356 & n507;
|
||||
assign n326 = n242 & n256;
|
||||
assign n327 = n482 & n254;
|
||||
assign n328 = n322 & n323 & n193 & n324 & n325 & n326 & n327 & n194;
|
||||
assign n329 = n325 & n353 & (n152 | ~n381);
|
||||
assign n330 = n515 & n495;
|
||||
assign n331 = n531 & n486 & n485;
|
||||
assign n332 = n243 & n293 & n322 & n323 & n329 & n330 & n211 & n331;
|
||||
assign n333 = n143 & (n152 | ~n382);
|
||||
assign n334 = n416 & (n270 | ~n366) & n417;
|
||||
assign n335 = n518 & n398 & n243 & n180 & n254 & n508;
|
||||
assign n336 = n286 & n304 & n324 & n298 & n333 & n334 & n335;
|
||||
assign n337 = n572 & n578 & n287;
|
||||
assign n338 = n152 & n511 & n312 & n402 & n512 & n513;
|
||||
assign n339 = ~i_2_ | i_0_ | ~i_1_;
|
||||
assign n340 = n216 & n301 & n211 & n337 & n338 & n208 & n339 & n269;
|
||||
assign n341 = n550 & n311 & n329;
|
||||
assign n342 = n206 & n223;
|
||||
assign n343 = n180 & n482;
|
||||
assign n344 = n279 & n341 & n258 & n342 & n326 & n272 & n165 & n343;
|
||||
assign n345 = n202 & n413 & n567;
|
||||
assign n346 = n523 & n505 & n229 & n305 & n330 & n363 & ~n415;
|
||||
assign n347 = n345 & n206 & n171 & n334 & n224 & n262 & n341 & n346;
|
||||
assign n348 = n157 | n370;
|
||||
assign n349 = n519 & n520;
|
||||
assign n350 = n154 | n157;
|
||||
assign n351 = n445 | n157;
|
||||
assign n352 = n348 & n349 & n350 & n351;
|
||||
assign n353 = n152 | ~n366;
|
||||
assign n354 = n153 & n353;
|
||||
assign n355 = n435 | n442;
|
||||
assign n356 = n442 | n444;
|
||||
assign n357 = n355 & n356;
|
||||
assign n358 = n157 | n462;
|
||||
assign n359 = n488 & n515 & n178 & n552 & n316 & n396 & n486 & n593;
|
||||
assign n360 = (~n366 & ~n381) | n438;
|
||||
assign n361 = n143 & n358 & n134 & n140 & n359 & n360;
|
||||
assign n362 = n409 | n463;
|
||||
assign n363 = n358 & n506;
|
||||
assign n364 = n468 & n483 & n489 & n142 & n509 & n465;
|
||||
assign n365 = n181 & n362 & n363 & n317 & n359 & n364;
|
||||
assign n366 = i_3_ & i_4_ & ~i_5_;
|
||||
assign n367 = ~n369 & (~n154 | n366);
|
||||
assign n368 = n369 | (n356 & n378);
|
||||
assign n369 = ~i_0_ | ~i_1_ | ~i_2_;
|
||||
assign n370 = n438 | n444;
|
||||
assign n371 = n368 & (n369 | n370);
|
||||
assign n372 = n445 | n373;
|
||||
assign n373 = ~i_2_ | ~i_0_ | i_1_;
|
||||
assign n374 = n372 & ((n154 & ~n366) | n373);
|
||||
assign n375 = n339 | n239;
|
||||
assign n376 = n464 & n465;
|
||||
assign n377 = n376 & (n270 | n154);
|
||||
assign n378 = n440 | n444;
|
||||
assign n379 = n270 | (n356 & n378);
|
||||
assign n380 = n180 & (n270 | ~n381);
|
||||
assign n381 = ~i_5_ & ~i_3_ & i_4_;
|
||||
assign n382 = i_5_ & ~i_3_ & i_4_;
|
||||
assign n383 = ~n155 & (n381 | n382);
|
||||
assign n384 = n373 | n355;
|
||||
assign n385 = n436 | n373;
|
||||
assign n386 = n435 | n440;
|
||||
assign n387 = n155 | n436;
|
||||
assign n388 = n387 & (n155 | ~n381);
|
||||
assign n389 = n155 | (n355 & n386);
|
||||
assign n390 = ~n157 & (~n154 | n366);
|
||||
assign n391 = n378 | n339;
|
||||
assign n392 = n140 & n138 & n566;
|
||||
assign n393 = n154 & ~n366;
|
||||
assign n394 = n260 & n376 & (n393 | n270);
|
||||
assign n395 = ~n339 & (n381 | n382);
|
||||
assign n396 = n270 | n439;
|
||||
assign n397 = n396 & (n270 | ~n382);
|
||||
assign n398 = n198 & n397 & (n270 | ~n381);
|
||||
assign n399 = n155 | ~n382;
|
||||
assign n400 = n136 & (n239 | n155);
|
||||
assign n401 = n369 | (n355 & n386);
|
||||
assign n402 = n443 | n373;
|
||||
assign n403 = n435 | n438;
|
||||
assign n404 = n149 & n402 & (n373 | n403);
|
||||
assign n405 = n236 & (n239 | n373);
|
||||
assign n406 = n372 & (n393 | n373);
|
||||
assign n407 = n409 | n445;
|
||||
assign n408 = n459 & n460;
|
||||
assign n409 = ~i_0_ | ~i_1_ | i_2_;
|
||||
assign n410 = n407 & n408 & (n393 | n409);
|
||||
assign n411 = n436 | n157;
|
||||
assign n412 = n157 | ~n381;
|
||||
assign n413 = n137 & (n339 | ~n381);
|
||||
assign n414 = n391 & n565 & n534;
|
||||
assign n415 = ~n339 & (~n154 | n366);
|
||||
assign n416 = n271 & n377;
|
||||
assign n417 = n471 & n379;
|
||||
assign n418 = n407 & n455 & n456;
|
||||
assign n419 = n385 & (n373 | ~n381);
|
||||
assign n420 = n412 & (n157 | ~n382);
|
||||
assign n421 = n155 | ~n366;
|
||||
assign n422 = n421 & (n155 | n154);
|
||||
assign n423 = n339 | (n239 & n393);
|
||||
assign n424 = n373 | n393;
|
||||
assign n425 = n155 | (n356 & n378);
|
||||
assign n426 = n425 & (n155 | n370);
|
||||
assign n427 = n434 | n270;
|
||||
assign n428 = n270 | (n386 & n403);
|
||||
assign n429 = n280 & n427 & n428;
|
||||
assign n430 = n409 | (n434 & n443);
|
||||
assign n431 = n386 & n355 & n430;
|
||||
assign n432 = i_3_ | i_4_ | i_5_;
|
||||
assign n433 = ~i_6_ | ~i_7_;
|
||||
assign n434 = n432 | n433;
|
||||
assign n435 = i_3_ | i_4_ | ~i_5_;
|
||||
assign n436 = n433 | n435;
|
||||
assign n437 = i_5_ | ~i_3_ | i_4_;
|
||||
assign n438 = i_6_ | i_7_;
|
||||
assign n439 = n437 | n438;
|
||||
assign n440 = i_6_ | ~i_7_;
|
||||
assign n441 = n437 | n440;
|
||||
assign n442 = ~i_6_ | i_7_;
|
||||
assign n443 = n432 | n442;
|
||||
assign n444 = ~i_5_ | ~i_3_ | i_4_;
|
||||
assign n445 = n433 | n444;
|
||||
assign n446 = n433 | n437;
|
||||
assign n447 = n369 | n441;
|
||||
assign n448 = n369 | n439;
|
||||
assign n449 = n369 | n446;
|
||||
assign n450 = n437 | n442;
|
||||
assign n451 = n447 & n448 & n449 & n450;
|
||||
assign n452 = n436 | n369;
|
||||
assign n453 = n369 | n445;
|
||||
assign n454 = ~n367 & n453;
|
||||
assign n455 = n409 | n356;
|
||||
assign n456 = n409 | n378;
|
||||
assign n457 = n409 | n446;
|
||||
assign n458 = n457 & n418;
|
||||
assign n459 = n439 | n409;
|
||||
assign n460 = n441 | n409;
|
||||
assign n461 = n403 & n431;
|
||||
assign n462 = n432 | n438;
|
||||
assign n463 = n432 | n440;
|
||||
assign n464 = n339 | n462;
|
||||
assign n465 = n339 | n463;
|
||||
assign n466 = n403 | n339;
|
||||
assign n467 = n466 & n271;
|
||||
assign n468 = n270 | n441;
|
||||
assign n469 = n468 & n396;
|
||||
assign n470 = n270 | n446;
|
||||
assign n471 = n270 | n445;
|
||||
assign n472 = n270 | n370;
|
||||
assign n473 = n470 & n379 & n471 & n472;
|
||||
assign n474 = n270 | ~n366;
|
||||
assign n475 = n474 & n473;
|
||||
assign n476 = n270 | ~n382;
|
||||
assign n477 = n476 & n469;
|
||||
assign n478 = n377 & n467;
|
||||
assign n479 = n386 | n339;
|
||||
assign n480 = n355 | n339;
|
||||
assign n481 = n479 & n375 & n137 & n480;
|
||||
assign n482 = n155 | n445;
|
||||
assign n483 = n270 | n463;
|
||||
assign n484 = n427 & n200 & n483;
|
||||
assign n485 = n484 & n380;
|
||||
assign n486 = n270 | n462;
|
||||
assign n487 = n486 & n156;
|
||||
assign n488 = n155 | n462;
|
||||
assign n489 = n155 | n463;
|
||||
assign n490 = n255 & n242;
|
||||
assign n491 = n434 | n155;
|
||||
assign n492 = n387 & n491 & n490;
|
||||
assign n493 = n136 & n327;
|
||||
assign n494 = n446 | n157;
|
||||
assign n495 = n441 | n157;
|
||||
assign n496 = n494 & n495;
|
||||
assign n497 = n355 | n157;
|
||||
assign n498 = n386 | n157;
|
||||
assign n499 = n411 & n497 & n498;
|
||||
assign n500 = n403 | n157;
|
||||
assign n501 = n500 & n499;
|
||||
assign n502 = n434 | n157;
|
||||
assign n503 = n502 & n501;
|
||||
assign n504 = n443 | n157;
|
||||
assign n505 = n412 & n504 & n503;
|
||||
assign n506 = n157 | n463;
|
||||
assign n507 = n445 | n152;
|
||||
assign n508 = n378 & n325;
|
||||
assign n509 = n441 | n373;
|
||||
assign n510 = n439 | n373;
|
||||
assign n511 = n509 & n510;
|
||||
assign n512 = n373 | n463;
|
||||
assign n513 = n373 | n462;
|
||||
assign n514 = n157 | ~n382;
|
||||
assign n515 = n439 | n157;
|
||||
assign n516 = n369 | n443;
|
||||
assign n517 = n393 | n409;
|
||||
assign n518 = n486 & n156 & n484;
|
||||
assign n519 = n378 | n157;
|
||||
assign n520 = n356 | n157;
|
||||
assign n521 = n584 & n491 & n255;
|
||||
assign n522 = n521 & n489 & n488 & n349 & n351 & n388 & n389 & ~n390;
|
||||
assign n523 = n494 & n522;
|
||||
assign n524 = n514 & n330;
|
||||
assign n525 = n439 | n339;
|
||||
assign n526 = n441 | n339;
|
||||
assign n527 = n355 | n152;
|
||||
assign n528 = n386 | n152;
|
||||
assign n529 = n403 | n152;
|
||||
assign n530 = n443 | n152;
|
||||
assign n531 = n436 | n152;
|
||||
assign n532 = n141 & n229 & n305;
|
||||
assign n533 = n137 & n201 & ~n395;
|
||||
assign n534 = n446 | n339;
|
||||
assign n535 = n230 & n532 & n534 & n228;
|
||||
assign n536 = n516 & n181 & n178;
|
||||
assign n537 = n239 | n369;
|
||||
assign n538 = n537 & n451 & n454 & n401 & n371;
|
||||
assign n539 = n407 & n455;
|
||||
assign n540 = ~n366 | n409;
|
||||
assign n541 = n409 | n370;
|
||||
assign n542 = n540 & n408 & n539 & n456 & n541 & n457;
|
||||
assign n543 = n452 & n538;
|
||||
assign n544 = n369 | n403;
|
||||
assign n545 = n154 | n409;
|
||||
assign n546 = n544 & n545 & n199;
|
||||
assign n547 = n513 & n512;
|
||||
assign n548 = n154 | n152;
|
||||
assign n549 = n325 & n547 & n353 & n548;
|
||||
assign n550 = n147 & n378 & n370;
|
||||
assign n551 = n152 | ~n382;
|
||||
assign n552 = n409 | n462;
|
||||
assign n553 = n239 | n409;
|
||||
assign n554 = n543 & n546 & n461 & n542 & n552 & n553 & n179 & n362;
|
||||
assign n555 = n373 | ~n382;
|
||||
assign n556 = n446 | n373;
|
||||
assign n557 = n356 | n373;
|
||||
assign n558 = n378 | n373;
|
||||
assign n559 = n373 | n370;
|
||||
assign n560 = n511 & n169 & n406 & n557 & n558 & n559;
|
||||
assign n561 = n136 & ~n383;
|
||||
assign n562 = n515 & n514 & n412;
|
||||
assign n563 = n502 & n168;
|
||||
assign n564 = n507 & n353;
|
||||
assign n565 = n339 | n370;
|
||||
assign n566 = n356 | n339;
|
||||
assign n567 = n138 & n566;
|
||||
assign n568 = n531 & n527 & n528;
|
||||
assign n569 = n153 & n333;
|
||||
assign n570 = n144 & n299;
|
||||
assign n571 = n149 & n419;
|
||||
assign n572 = n362 & n552 & n461;
|
||||
assign n573 = n326 & n571 & n524 & n168;
|
||||
assign n574 = n452 & n537 & n401;
|
||||
assign n575 = n517 & n199;
|
||||
assign n576 = n544 & n574;
|
||||
assign n577 = n153 & n333 & n144 & n147;
|
||||
assign n578 = n558 & n424 & n372 & n557;
|
||||
assign n579 = n509 & n510 & n555;
|
||||
assign n580 = n350 & n490;
|
||||
assign n581 = n169 & n579;
|
||||
assign n582 = n473 & n536 & n569 & n150 & n458 & n271;
|
||||
assign n583 = n270 | ~n381;
|
||||
assign n584 = n155 | n403;
|
||||
assign n585 = n466 & n416 & n480 & n479;
|
||||
assign n586 = n429 & n281 & n263;
|
||||
assign n587 = n534 & n494;
|
||||
assign n588 = n457 & n261 & n470;
|
||||
assign n589 = n580 & n587 & n568 & n574 & n536 & n177 & n388 & n400;
|
||||
assign n590 = n142 & n530;
|
||||
assign n591 = n451 & n408 & n374;
|
||||
assign n592 = n145 & n339 & n474;
|
||||
assign n593 = n510 & n525 & n464;
|
||||
assign n594 = n239 | n270;
|
||||
assign n595 = n545 & n260;
|
||||
assign n596 = n151 & n402 & n427;
|
||||
assign n597 = n418 & n475 & n522 & n534 & n348 & n399;
|
||||
endmodule
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,805 @@
|
|||
// Benchmark "TOP" written by ABC on Mon Feb 4 17:32:57 2019
|
||||
|
||||
module misex3 (
|
||||
a, b, c, d, e, f, g, h, i, j, k, l, m, n,
|
||||
r2, s2, t2, u2, n2, o2, p2, q2, h2, i2, j2, k2, m2, l2 );
|
||||
input a, b, c, d, e, f, g, h, i, j, k, l, m, n;
|
||||
output r2, s2, t2, u2, n2, o2, p2, q2, h2, i2, j2, k2, m2, l2;
|
||||
wire n42, n43, n44, n45, n46, n47, n48, n49, n50, n51, n52, n53, n54, n55,
|
||||
n56, n57, n58, n59, n60, n61, n62, n63, n64, n65, n66, n67, n68, n69,
|
||||
n70, n71, n72, n73, n74, n75, n76, n77, n78, n79, n80, n81, n82, n83,
|
||||
n84, n85, n86, n87, n88, n89, n90, n91, n92, n93, n94, n95, n96, n97,
|
||||
n98, n99, n100, n101, n102, n103, n104, n105, n106, n107, n108, n109,
|
||||
n110, n111, n112, n113, n114, n115, n116, n117, n118, n119, n120, n121,
|
||||
n122, n123, n124, n125, n126, n127, n128, n129, n130, n131, n132, n133,
|
||||
n134, n135, n136, n137, n138, n139, n140, n141, n142, n143, n144, n145,
|
||||
n146, n147, n148, n149, n150, n151, n152, n153, n154, n155, n156, n157,
|
||||
n158, n159, n160, n161, n162, n163, n164, n165, n166, n167, n168, n169,
|
||||
n170, n171, n172, n173, n174, n175, n176, n177, n178, n179, n180, n181,
|
||||
n182, n183, n184, n185, n186, n187, n188, n189, n190, n191, n192, n193,
|
||||
n194, n195, n196, n197, n198, n199, n200, n201, n202, n203, n204, n205,
|
||||
n206, n207, n208, n209, n210, n211, n212, n213, n214, n215, n216, n217,
|
||||
n218, n219, n220, n221, n222, n223, n224, n225, n226, n227, n228, n229,
|
||||
n230, n231, n232, n233, n234, n235, n236, n237, n238, n239, n240, n241,
|
||||
n242, n243, n244, n245, n246, n247, n248, n249, n250, n251, n252, n253,
|
||||
n254, n255, n256, n257, n258, n259, n260, n261, n262, n263, n264, n265,
|
||||
n266, n267, n268, n269, n270, n271, n272, n273, n274, n275, n276, n277,
|
||||
n278, n279, n280, n281, n282, n283, n284, n285, n286, n287, n288, n289,
|
||||
n290, n291, n292, n293, n294, n295, n296, n297, n298, n299, n300, n301,
|
||||
n302, n303, n304, n305, n306, n307, n308, n309, n310, n311, n312, n313,
|
||||
n314, n315, n316, n317, n318, n319, n320, n321, n322, n323, n324, n325,
|
||||
n326, n327, n328, n329, n330, n331, n332, n333, n334, n335, n336, n337,
|
||||
n338, n339, n340, n341, n342, n343, n344, n345, n346, n347, n348, n349,
|
||||
n350, n351, n352, n353, n354, n355, n356, n357, n358, n359, n360, n361,
|
||||
n362, n363, n364, n365, n366, n367, n368, n369, n370, n371, n372, n373,
|
||||
n374, n375, n376, n377, n378, n379, n380, n381, n382, n383, n384, n385,
|
||||
n386, n387, n388, n389, n390, n391, n392, n393, n394, n395, n396, n397,
|
||||
n398, n399, n400, n401, n402, n403, n404, n405, n406, n407, n408, n409,
|
||||
n410, n411, n412, n413, n414, n415, n416, n417, n418, n419, n420, n421,
|
||||
n422, n423, n424, n425, n426, n427, n428, n429, n430, n431, n432, n433,
|
||||
n434, n435, n436, n437, n438, n439, n440, n441, n442, n443, n444, n445,
|
||||
n446, n447, n448, n449, n450, n451, n452, n453, n454, n455, n456, n457,
|
||||
n458, n459, n460, n461, n462, n463, n464, n465, n466, n467, n468, n469,
|
||||
n470, n471, n472, n473, n474, n475, n476, n477, n478, n479, n480, n481,
|
||||
n482, n483, n484, n485, n486, n487, n488, n489, n490, n491, n492, n493,
|
||||
n494, n495, n496, n497, n498, n499, n500, n501, n502, n503, n504, n505,
|
||||
n506, n507, n508, n509, n510, n511, n512, n513, n514, n515, n516, n517,
|
||||
n518, n519, n520, n521, n522, n523, n524, n525, n526, n527, n528, n529,
|
||||
n530, n531, n532, n533, n534, n535, n536, n537, n538, n539, n540, n541,
|
||||
n542, n543, n544, n545, n546, n547, n548, n549, n550, n551, n552, n553,
|
||||
n554, n555, n556, n557, n558, n559, n560, n561, n562, n563, n564, n565,
|
||||
n566, n567, n568, n569, n570, n571, n572, n573, n574, n575, n576, n577,
|
||||
n578, n579, n580, n581, n582, n583, n584, n585, n586, n587, n588, n589,
|
||||
n590, n591, n592, n593, n594, n595, n596, n597, n598, n599, n600, n601,
|
||||
n602, n603, n604, n605, n606, n607, n608, n609, n610, n611, n612, n613,
|
||||
n614, n615, n616, n617, n618, n619, n620, n621, n622, n623, n624, n625,
|
||||
n626, n627, n628, n629, n630, n631, n632, n633, n634, n635, n636, n637,
|
||||
n638, n639, n640, n641, n642, n643, n644, n645, n646, n647, n648, n649,
|
||||
n650, n651, n652, n653, n654, n655, n656, n657, n658, n659, n660, n661,
|
||||
n662, n663, n664, n665, n666, n667, n668, n669, n670, n671, n672, n673,
|
||||
n674, n675, n676, n677, n678, n679, n680, n681, n682, n683, n684, n685,
|
||||
n686, n687, n688, n689, n690, n691, n692, n693, n694, n695, n696, n697,
|
||||
n698, n699, n700, n701, n702, n703, n704, n705, n706, n707, n708, n709,
|
||||
n710, n711, n712, n713, n714, n715, n716, n717, n718, n719, n720, n721,
|
||||
n722, n723, n724, n725, n726, n727, n728, n729, n730, n731, n732, n733,
|
||||
n734, n735, n736, n737, n738, n739, n740, n741, n742, n743, n744, n745,
|
||||
n746, n747, n748, n749, n750, n751, n752, n753, n754, n755, n756, n757,
|
||||
n758, n759, n760, n761, n762;
|
||||
assign r2 = ~n293;
|
||||
assign s2 = ~n74;
|
||||
assign t2 = ~n217;
|
||||
assign u2 = ~n148;
|
||||
assign n2 = ~n68;
|
||||
assign o2 = ~n62;
|
||||
assign p2 = ~n388;
|
||||
assign q2 = ~n349;
|
||||
assign h2 = ~n56;
|
||||
assign i2 = ~n569;
|
||||
assign j2 = ~n55;
|
||||
assign k2 = ~n50;
|
||||
assign m2 = ~n456;
|
||||
assign l2 = ~n757 | ~n759 | n46 | ~n747 | n44 | n45 | n42 | n43;
|
||||
assign n42 = f & (~n680 | ~n739 | ~n740);
|
||||
assign n43 = ~f & (n475 | n476 | ~n735);
|
||||
assign n44 = ~n & (~n722 | ~n724 | ~n728);
|
||||
assign n45 = n & (~n518 | ~n730 | ~n731);
|
||||
assign n46 = n548 | ~n744 | n544 | n547 | n542 | ~n543 | ~n540 | n541;
|
||||
assign n47 = n675 | n676 | n372 | i | l;
|
||||
assign n48 = n438 | n549 | n189;
|
||||
assign n49 = n434 & n662 & n661 & n51 & n437 & n439;
|
||||
assign n50 = n49 & n47 & n48;
|
||||
assign n51 = n657 & n573 & n656 & n431 & n425 & n428;
|
||||
assign n52 = n443 & n442 & n440 & n441;
|
||||
assign n53 = n675 | n189 | n438;
|
||||
assign n54 = n179 | n480 | n550 | n551;
|
||||
assign n55 = n54 & n53 & n51 & n52;
|
||||
assign n56 = n579 & n578 & n577 & n576 & n575 & n574 & n572 & n573;
|
||||
assign n57 = (n95 | n408) & (n409 | n88);
|
||||
assign n58 = n96 | n121;
|
||||
assign n59 = n648 & ~n404 & n361 & n402;
|
||||
assign n60 = n83 | n317;
|
||||
assign n61 = (n362 | n300) & (n363 | n426);
|
||||
assign n62 = ~n416 & ~n415 & ~n414 & n61 & n60 & n59 & n57 & n58;
|
||||
assign n63 = j | n243 | n119 | n591;
|
||||
assign n64 = (n177 | n362) & (n684 | n409);
|
||||
assign n65 = ~n297 & (n95 | n253 | n298);
|
||||
assign n66 = n620 & n619 & n572 & n618 & n617 & n69 & n574 & n211;
|
||||
assign n67 = ~n422 & (n591 | (n710 & n711));
|
||||
assign n68 = ~n420 & ~n419 & n67 & n66 & n65 & n64 & n59 & n63;
|
||||
assign n69 = n92 | n407 | n91;
|
||||
assign n70 = n595 | n92;
|
||||
assign n71 = n264 | ~d | n248;
|
||||
assign n72 = n701 & (n236 | n79);
|
||||
assign n73 = n232 & (n152 | n632);
|
||||
assign n74 = ~n267 & ~n266 & ~n265 & n73 & n72 & n71 & n69 & n70;
|
||||
assign n75 = ~h | ~k;
|
||||
assign n76 = n75 | l;
|
||||
assign n77 = n623 | ~n658;
|
||||
assign n78 = ~n167 & (n77 | ~n586);
|
||||
assign n79 = ~c | n459;
|
||||
assign n80 = e | n521;
|
||||
assign n81 = n612 & n302;
|
||||
assign n82 = n81 & n79 & n80;
|
||||
assign n83 = ~k | n199;
|
||||
assign n84 = m | j | ~l;
|
||||
assign n85 = n83 & (~n | n84);
|
||||
assign n86 = n684 | n83;
|
||||
assign n87 = (n192 | n605) & (n206 | n604);
|
||||
assign n88 = ~g | n603;
|
||||
assign n89 = n86 & n87 & (n85 | n88);
|
||||
assign n90 = (n110 | n156) & (n113 | n275);
|
||||
assign n91 = ~i | n538;
|
||||
assign n92 = ~a | n521;
|
||||
assign n93 = n90 & (n91 | n92);
|
||||
assign n94 = ~g | n600;
|
||||
assign n95 = n285 & n397;
|
||||
assign n96 = ~k | n167;
|
||||
assign n97 = n96 | n94 | n95;
|
||||
assign n98 = n601 | n199;
|
||||
assign n99 = ~i | n368;
|
||||
assign n100 = n98 & (~n | n99);
|
||||
assign n101 = ~h | n538;
|
||||
assign n102 = ~n | n129;
|
||||
assign n103 = h | n538;
|
||||
assign n104 = (n100 | n103) & (n101 | n102);
|
||||
assign n105 = ~g | n249;
|
||||
assign n106 = h | n197;
|
||||
assign n107 = (n100 | n106) & (n102 | n105);
|
||||
assign n108 = ~k | n179;
|
||||
assign n109 = n108 & (n | n84);
|
||||
assign n110 = n608 & n287 & n607;
|
||||
assign n111 = (n101 | n92) & (n110 | n105);
|
||||
assign n112 = n135 | n119;
|
||||
assign n113 = n218 & n295;
|
||||
assign n114 = ~g | n393;
|
||||
assign n115 = n112 & n111 & (n113 | n114);
|
||||
assign n116 = (n110 | n164) & (n113 | n189);
|
||||
assign n117 = e | n609;
|
||||
assign n118 = n116 & (n92 | n117);
|
||||
assign n119 = ~a | n271;
|
||||
assign n120 = ~e | n609;
|
||||
assign n121 = n118 & (n119 | n120);
|
||||
assign n122 = (n110 | n106) & (n113 | n202);
|
||||
assign n123 = n122 & (n92 | n103);
|
||||
assign n124 = n153 | n399;
|
||||
assign n125 = ~n610 | ~g | n237;
|
||||
assign n126 = j | n154;
|
||||
assign n127 = ~i | n609;
|
||||
assign n128 = n124 & n125 & (n126 | n127);
|
||||
assign n129 = n401 & n512 & n527 & n760;
|
||||
assign n130 = (n106 | n99) & (n129 | n105);
|
||||
assign n131 = n519 | ~i | n121;
|
||||
assign n132 = (n123 | n588) & (n95 | n128);
|
||||
assign n133 = ~e | n271;
|
||||
assign n134 = n131 & n132 & (n130 | n133);
|
||||
assign n135 = ~h | n243;
|
||||
assign n136 = h | n243;
|
||||
assign n137 = (n100 | n136) & (n135 | n102);
|
||||
assign n138 = ~n137 & (~n625 | (b & ~n479));
|
||||
assign n139 = ~n89 & (~n325 | ~n606);
|
||||
assign n140 = ~n167 & (~n683 | (~n121 & ~n601));
|
||||
assign n141 = ~n95 & (~n687 | (~n96 & ~n127));
|
||||
assign n142 = n133 | n601 | n179 | n106;
|
||||
assign n143 = n590 | n591;
|
||||
assign n144 = n136 | n587 | n588;
|
||||
assign n145 = ~n139 & ~n140 & (n | n134);
|
||||
assign n146 = (n93 | n591) & (n104 | n616);
|
||||
assign n147 = n688 & (n107 | n269);
|
||||
assign n148 = n147 & n146 & n145 & n144 & n143 & n142 & n66 & ~n138;
|
||||
assign n149 = n689 | n108;
|
||||
assign n150 = (n372 | n193) & (n613 | n624);
|
||||
assign n151 = ~f | n603;
|
||||
assign n152 = n149 & n150 & (n109 | n151);
|
||||
assign n153 = ~m | n611;
|
||||
assign n154 = ~l | ~m;
|
||||
assign n155 = n153 & (i | n154);
|
||||
assign n156 = ~i | n197;
|
||||
assign n157 = j | n197;
|
||||
assign n158 = n156 & n157;
|
||||
assign n159 = (n155 | n105) & (n158 | n589);
|
||||
assign n160 = n690 & (n164 | n126);
|
||||
assign n161 = n644 & n647;
|
||||
assign n162 = i | n197;
|
||||
assign n163 = n159 & n160 & (n161 | n162);
|
||||
assign n164 = g | n249;
|
||||
assign n165 = (n164 | n96) & (n | n163);
|
||||
assign n166 = n75 | ~m | n;
|
||||
assign n167 = ~m | n;
|
||||
assign n168 = ~l | ~h | j;
|
||||
assign n169 = n166 & (n167 | n168);
|
||||
assign n170 = ~f | n243;
|
||||
assign n171 = ~e | n196;
|
||||
assign n172 = (n169 | n171) & (~n78 | n170);
|
||||
assign n173 = n196 | d | n169;
|
||||
assign n174 = d | n197;
|
||||
assign n175 = n173 & (~n78 | n174);
|
||||
assign n176 = j | n75;
|
||||
assign n177 = n176 & (i | n75);
|
||||
assign n178 = n299 & n300 & n76 & n177;
|
||||
assign n179 = m | n;
|
||||
assign n180 = j | n603;
|
||||
assign n181 = ~l | n179;
|
||||
assign n182 = (n180 | n181) & (n178 | n179);
|
||||
assign n183 = ~e | n615;
|
||||
assign n184 = ~n | n183;
|
||||
assign n185 = (n99 | n184) & (n98 | n183);
|
||||
assign n186 = ~n184 & ~n761 & (~n114 | ~n189);
|
||||
assign n187 = ~n186 & (n185 | (n202 & n676));
|
||||
assign n188 = n183 | n391;
|
||||
assign n189 = g | n393;
|
||||
assign n190 = n187 & (n188 | (n114 & n189));
|
||||
assign n191 = (n206 | n624) & (n689 | n83);
|
||||
assign n192 = k | n199;
|
||||
assign n193 = ~j | n249;
|
||||
assign n194 = n191 & (n192 | n193);
|
||||
assign n195 = n194 & (n85 | n151);
|
||||
assign n196 = ~f | g;
|
||||
assign n197 = ~f | ~g;
|
||||
assign n198 = (n169 | n196) & (~n78 | n197);
|
||||
assign n199 = m | ~n;
|
||||
assign n200 = ~l | n199;
|
||||
assign n201 = (n180 | n200) & (n178 | n199);
|
||||
assign n202 = h | n570;
|
||||
assign n203 = (n100 | n202) & (n102 | n114);
|
||||
assign n204 = n203 & (n201 | (n170 & n171));
|
||||
assign n205 = n691 & n692 & (n85 | n314);
|
||||
assign n206 = l | n199;
|
||||
assign n207 = ~k | n393;
|
||||
assign n208 = n89 & n205 & (n206 | n207);
|
||||
assign n209 = ~n152 & (~n133 | ~n430);
|
||||
assign n210 = n595 | n599;
|
||||
assign n211 = n595 | n353;
|
||||
assign n212 = n693 & (~e | n195 | n324);
|
||||
assign n213 = ~n209 & (n285 | (n165 & n595));
|
||||
assign n214 = n208 | n315;
|
||||
assign n215 = (n172 | n119) & (n175 | n287);
|
||||
assign n216 = n694 & (n182 | n302);
|
||||
assign n217 = n216 & n190 & n215 & n214 & n213 & n212 & n210 & n211;
|
||||
assign n218 = ~a | n560;
|
||||
assign n219 = n167 | n218;
|
||||
assign n220 = (n168 | n219) & (n218 | n166);
|
||||
assign n221 = ~n658 | ~n586 | n623;
|
||||
assign n222 = ~f & ~n538;
|
||||
assign n223 = ~n219 & n221 & (n222 | ~n261);
|
||||
assign n224 = e | n488;
|
||||
assign n225 = e | n196;
|
||||
assign n226 = ~n223 & (n220 | (n224 & n225));
|
||||
assign n227 = n393 | ~j | n372;
|
||||
assign n228 = (n613 | n207) & (n109 | n314);
|
||||
assign n229 = n640 & n643;
|
||||
assign n230 = n227 & n228 & (n229 | n108);
|
||||
assign n231 = ~e | n626;
|
||||
assign n232 = n190 & n226 & (n230 | n231);
|
||||
assign n233 = ~n83 & (~n252 | ~n639);
|
||||
assign n234 = (n192 | n322) & (n256 | n206);
|
||||
assign n235 = g | n603;
|
||||
assign n236 = ~n233 & n234 & (n85 | n235);
|
||||
assign n237 = k | n154;
|
||||
assign n238 = (i | n161) & (~j | n237);
|
||||
assign n239 = ~n591 & (~n91 | (~j & ~n538));
|
||||
assign n240 = ~n239 & (n | (n699 & n700));
|
||||
assign n241 = n165 & n240 & (n96 | n117);
|
||||
assign n242 = ~i | n243;
|
||||
assign n243 = ~e | ~g;
|
||||
assign n244 = n242 & (j | n243);
|
||||
assign n245 = n96 | n120;
|
||||
assign n246 = n697 & (n120 | n126);
|
||||
assign n247 = n696 & n695 & (n244 | n589);
|
||||
assign n248 = n245 & (n | (n246 & n247));
|
||||
assign n249 = ~f | ~h;
|
||||
assign n250 = n249 | n102 | e;
|
||||
assign n251 = n629 & n88;
|
||||
assign n252 = j | n609;
|
||||
assign n253 = i | n602;
|
||||
assign n254 = ~g | n360;
|
||||
assign n255 = n254 & n253 & n251 & n252;
|
||||
assign n256 = g | n75;
|
||||
assign n257 = n698 & (n376 | (n628 & n649));
|
||||
assign n258 = (n94 | n96) & (n629 | n630);
|
||||
assign n259 = ~l | n167;
|
||||
assign n260 = n257 & n258 & (n255 | n259);
|
||||
assign n261 = ~f | n538;
|
||||
assign n262 = (n169 | n225) & (~n78 | n261);
|
||||
assign n263 = ~n260 & (~n655 | (d & ~n524));
|
||||
assign n264 = a | ~b;
|
||||
assign n265 = ~n201 & (~n325 | (~n261 & ~n616));
|
||||
assign n266 = ~n352 & (~n262 | n263);
|
||||
assign n267 = ~n526 & (~n250 | (~n100 & ~n631));
|
||||
assign n268 = n344 & (n83 | n633);
|
||||
assign n269 = ~b | n598;
|
||||
assign n270 = n268 & (n194 | n269);
|
||||
assign n271 = ~c | d;
|
||||
assign n272 = n79 & (~f | n271);
|
||||
assign n273 = (n100 | n634) & (n164 | n102);
|
||||
assign n274 = n273 & n107;
|
||||
assign n275 = ~i | n570;
|
||||
assign n276 = j | n570;
|
||||
assign n277 = n275 & n276;
|
||||
assign n278 = (n155 | n114) & (n277 | n589);
|
||||
assign n279 = n749 & (n189 | n126);
|
||||
assign n280 = i | n570;
|
||||
assign n281 = n278 & n279 & (n161 | n280);
|
||||
assign n282 = (n96 | n189) & (n | n281);
|
||||
assign n283 = n286 | g | n169;
|
||||
assign n284 = n283 & (d | ~n78 | n243);
|
||||
assign n285 = ~e | n264;
|
||||
assign n286 = d | ~e;
|
||||
assign n287 = c | ~a | ~b;
|
||||
assign n288 = n285 & (n286 | n287);
|
||||
assign n289 = (n236 | n635) & (n104 | n616);
|
||||
assign n290 = (n260 | n288) & (n284 | ~n545);
|
||||
assign n291 = n107 | n315;
|
||||
assign n292 = (n182 | n272) & (n274 | n625);
|
||||
assign n293 = n292 & n291 & n290 & n289 & n270 & n232;
|
||||
assign n294 = n123 & (n119 | n136);
|
||||
assign n295 = n596 & n594;
|
||||
assign n296 = n112 & n111 & (n295 | n114);
|
||||
assign n297 = ~n636 & (~n355 | (~n167 & ~n296));
|
||||
assign n298 = n | n126;
|
||||
assign n299 = ~h | n360;
|
||||
assign n300 = ~k | n603;
|
||||
assign n301 = n180 & n300 & n299 & n176;
|
||||
assign n302 = ~c | n524;
|
||||
assign n303 = n302 & (~c | n196);
|
||||
assign n304 = (n113 | n646) & (~j | n645);
|
||||
assign n305 = ~j | n197;
|
||||
assign n306 = n304 & (n110 | n305);
|
||||
assign n307 = n121 & (n95 | n94);
|
||||
assign n308 = ~n95 & ~n644 & (~n88 | ~n660);
|
||||
assign n309 = ~n308 & (n329 | n339 | n435);
|
||||
assign n310 = (n118 | n126) & (n306 | n237);
|
||||
assign n311 = ~l | n519;
|
||||
assign n312 = n309 & n310 & (n307 | n311);
|
||||
assign n313 = n183 & n390;
|
||||
assign n314 = f | n603;
|
||||
assign n315 = ~b | n286;
|
||||
assign n316 = (n314 | n315) & (n313 | n235);
|
||||
assign n317 = n633 & n316;
|
||||
assign n318 = (n80 & (~n | n371)) | (n & n371);
|
||||
assign n319 = (n88 | n318) & (~n | n317);
|
||||
assign n320 = n393 | ~j | n315;
|
||||
assign n321 = n269 | n193;
|
||||
assign n322 = ~j | n609;
|
||||
assign n323 = n320 & n321 & (n313 | n322);
|
||||
assign n324 = b | ~c;
|
||||
assign n325 = ~f | n324;
|
||||
assign n326 = (n315 | n643) & (n313 | n252);
|
||||
assign n327 = j | n249;
|
||||
assign n328 = n326 & (n269 | n327);
|
||||
assign n329 = ~h | n621;
|
||||
assign n330 = n328 & (n325 | n329);
|
||||
assign n331 = (n316 | n84) & (n330 | n435);
|
||||
assign n332 = m | k | ~l;
|
||||
assign n333 = n331 & (n323 | n332);
|
||||
assign n334 = (n315 | n640) & (n313 | n639);
|
||||
assign n335 = i | n249;
|
||||
assign n336 = n334 & (n269 | n335);
|
||||
assign n337 = ~n199 & (~n336 | (~n253 & ~n371));
|
||||
assign n338 = ~n337 & (n80 | n179 | n253);
|
||||
assign n339 = n303 & n637;
|
||||
assign n340 = (n339 | n181) & (n325 | n200);
|
||||
assign n341 = ~n318 & (~n704 | (~n332 & ~n605));
|
||||
assign n342 = n243 | n490 | ~j | n119;
|
||||
assign n343 = n298 | n119 | n120;
|
||||
assign n344 = n633 | ~n | n84;
|
||||
assign n345 = n705 & (n301 | n340);
|
||||
assign n346 = n65 & (n319 | n435);
|
||||
assign n347 = (n312 & (~n | n333)) | (n & n333);
|
||||
assign n348 = (n682 | n641) & (n338 | n433);
|
||||
assign n349 = n348 & n347 & n346 & n345 & n344 & n343 & ~n341 & n342;
|
||||
assign n350 = (n113 | n280) & (i | n645);
|
||||
assign n351 = n350 & (n110 | n162);
|
||||
assign n352 = ~a | n324;
|
||||
assign n353 = ~b | n597;
|
||||
assign n354 = n353 & n287 & n352;
|
||||
assign n355 = n114 | n219;
|
||||
assign n356 = (n599 | n105) & (n295 | n114);
|
||||
assign n357 = n112 & (n92 | (n105 & n101));
|
||||
assign n358 = n355 & (n167 | (n356 & n357));
|
||||
assign n359 = n707 & (n285 | n630 | n605);
|
||||
assign n360 = ~j | k;
|
||||
assign n361 = n359 & (n358 | n360);
|
||||
assign n362 = (n339 | n179) & (n325 | n199);
|
||||
assign n363 = (n339 | n108) & (n325 | n83);
|
||||
assign n364 = ~n88 & (~n706 | (~n167 & ~n433));
|
||||
assign n365 = ~n364 & (n629 | (n259 & n630));
|
||||
assign n366 = n365 & (n96 | n322);
|
||||
assign n367 = n519 | n | n121;
|
||||
assign n368 = ~k | m;
|
||||
assign n369 = (n253 | n318) & (~n | n336);
|
||||
assign n370 = n367 & (n368 | (n369 & n319));
|
||||
assign n371 = n395 & n315 & n606;
|
||||
assign n372 = k | n179;
|
||||
assign n373 = (n372 | n80) & (n371 | n192);
|
||||
assign n374 = ~i | k | ~l | n167;
|
||||
assign n375 = ~k | ~n610;
|
||||
assign n376 = l | n167;
|
||||
assign n377 = n374 & (n375 | (n376 & n259));
|
||||
assign n378 = ~j | n603;
|
||||
assign n379 = n378 & n329;
|
||||
assign n380 = n644 | n587 | n627;
|
||||
assign n381 = n647 | n587 | n627;
|
||||
assign n382 = n351 | n | n161;
|
||||
assign n383 = (n294 | n377) & (n363 | n379);
|
||||
assign n384 = n373 | n605;
|
||||
assign n385 = (n95 | n366) & (~j | n370);
|
||||
assign n386 = n362 | n299;
|
||||
assign n387 = n361 & (n323 | n192);
|
||||
assign n388 = n387 & n386 & n385 & n384 & n383 & n382 & n380 & n381;
|
||||
assign n389 = ~n372 & (~n303 | ~n637);
|
||||
assign n390 = n635 & n638;
|
||||
assign n391 = ~n | n401;
|
||||
assign n392 = n188 & (n390 | n391);
|
||||
assign n393 = f | ~h;
|
||||
assign n394 = (n393 | n315) & (n249 | n269);
|
||||
assign n395 = n616 & n625;
|
||||
assign n396 = e | n324;
|
||||
assign n397 = ~b | n524;
|
||||
assign n398 = n397 & n396 & n395 & n315;
|
||||
assign n399 = ~i | n602;
|
||||
assign n400 = (n398 | n399) & (~i | n394);
|
||||
assign n401 = m | n360;
|
||||
assign n402 = n399 | n | n80 | n401;
|
||||
assign n403 = h & n610;
|
||||
assign n404 = n403 & (n389 | (~n192 & ~n325));
|
||||
assign n405 = n253 | n641;
|
||||
assign n406 = (n256 | n167) & (n376 | n176);
|
||||
assign n407 = n | n592;
|
||||
assign n408 = n405 & n406 & (n407 | n399);
|
||||
assign n409 = (n108 | n80) & (n371 | n83);
|
||||
assign n410 = i & ~n394;
|
||||
assign n411 = n & (n410 | (~n127 & ~n313));
|
||||
assign n412 = j | i;
|
||||
assign n413 = n412 | ~k | n259;
|
||||
assign n414 = ~n115 & (~n413 | (n77 & ~n167));
|
||||
assign n415 = ~n527 & (n411 | (~n318 & ~n399));
|
||||
assign n416 = ~n591 & (~n709 | (~n110 & ~n327));
|
||||
assign n417 = ~n433 & (~n351 | (~n119 & ~n627));
|
||||
assign n418 = ~n311 & ~n & ~n251;
|
||||
assign n419 = ~n95 & (n418 | (~n376 & ~n649));
|
||||
assign n420 = ~n83 & (~n328 | ~n336);
|
||||
assign n421 = i & k;
|
||||
assign n422 = ~n167 & (n417 | (~n294 & n421));
|
||||
assign n423 = n654 | ~f | n598;
|
||||
assign n424 = j | k;
|
||||
assign n425 = n259 | n399 | n423 | n424;
|
||||
assign n426 = ~h | n600;
|
||||
assign n427 = n651 | ~n | n557;
|
||||
assign n428 = n427 | n426 | n332;
|
||||
assign n429 = n650 | n114 | n181;
|
||||
assign n430 = ~e | n521;
|
||||
assign n431 = n429 | n430;
|
||||
assign n432 = ~n545 | n655;
|
||||
assign n433 = ~l | ~j | ~k;
|
||||
assign n434 = n399 | n167 | n432 | n433;
|
||||
assign n435 = ~l | n368;
|
||||
assign n436 = n170 | n526;
|
||||
assign n437 = n436 | ~n403 | n435;
|
||||
assign n438 = n181 | n375;
|
||||
assign n439 = n438 | n231 | n105;
|
||||
assign n440 = n652 | n202 | n632;
|
||||
assign n441 = ~n653 | n435 | n445;
|
||||
assign n442 = n181 | n202 | n430 | ~n473;
|
||||
assign n443 = n712 & (n332 | n427 | n378);
|
||||
assign n444 = n106 | n613 | n231 | n658;
|
||||
assign n445 = h | n621;
|
||||
assign n446 = m | k | l;
|
||||
assign n447 = n444 & (n436 | n445 | n446);
|
||||
assign n448 = n551 | n | n446;
|
||||
assign n449 = n448 & (n179 | n127 | n433);
|
||||
assign n450 = k | n189 | n181 | n632;
|
||||
assign n451 = n332 | n651 | ~h | n224;
|
||||
assign n452 = n450 & n451;
|
||||
assign n453 = n641 | n654 | n660 | n477;
|
||||
assign n454 = n105 | n181 | n549 | n650;
|
||||
assign n455 = (n449 | n480) & (n452 | n412);
|
||||
assign n456 = n455 & n454 & n453 & n49 & n52 & n447;
|
||||
assign n457 = i | n179;
|
||||
assign n458 = (~k | n457) & (n179 | ~n412);
|
||||
assign n459 = e | ~f;
|
||||
assign n460 = a | n526;
|
||||
assign n461 = j & ~n630 & (n459 | n460);
|
||||
assign n462 = ~n758 & (~h | n438 | ~n479);
|
||||
assign n463 = f | ~c | e;
|
||||
assign n464 = ~n461 & n462 & (n458 | n463);
|
||||
assign n465 = b | n199;
|
||||
assign n466 = n200 & n83 & n465 & n298;
|
||||
assign n467 = (b | n200) & (c | n181);
|
||||
assign n468 = ~n167 & (~n737 | (~b & ~n479));
|
||||
assign n469 = h | j | n199;
|
||||
assign n470 = (j | n83) & (~i | n663);
|
||||
assign n471 = ~j | n199;
|
||||
assign n472 = n469 & n470 & (~h | n471);
|
||||
assign n473 = ~k & n610;
|
||||
assign n474 = n473 & b & ~n199;
|
||||
assign n475 = ~h & (n474 | (~i & ~n206));
|
||||
assign n476 = ~n673 & (~n521 | (~e & n324));
|
||||
assign n477 = f | n659;
|
||||
assign n478 = n477 & (f | a | e);
|
||||
assign n479 = c | d;
|
||||
assign n480 = f | n479;
|
||||
assign n481 = n669 | c | e;
|
||||
assign n482 = b | e | ~n | n669;
|
||||
assign n483 = n375 | ~n615 | ~h | n259;
|
||||
assign n484 = (d | n734) & (n457 | n480);
|
||||
assign n485 = n199 | n675;
|
||||
assign n486 = ~n762 & n485 & n484 & n483 & n481 & n482;
|
||||
assign n487 = c & ~n655;
|
||||
assign n488 = f | g;
|
||||
assign n489 = b | n488;
|
||||
assign n490 = n | n237;
|
||||
assign n491 = (j | n490) & (n199 | ~n626);
|
||||
assign n492 = ~n199 & (~n741 | (~j & ~n525));
|
||||
assign n493 = n742 & (n670 | n671);
|
||||
assign n494 = ~n492 & ~n756 & (i | n491);
|
||||
assign n495 = n493 & n494 & (n457 | n271);
|
||||
assign n496 = c | n488;
|
||||
assign n497 = n664 & n463;
|
||||
assign n498 = (n106 | n231) & (~j | n497);
|
||||
assign n499 = (n716 | n167) & (n498 | n179);
|
||||
assign n500 = n496 | n372;
|
||||
assign n501 = (n527 | n671) & (n719 | n613);
|
||||
assign n502 = n718 & (n436 | (n206 & n192));
|
||||
assign n503 = n502 & n501 & n499 & n500;
|
||||
assign n504 = ~j & ~n372 & (~n271 | ~n302);
|
||||
assign n505 = (b | n199) & (c | n179);
|
||||
assign n506 = ~b | ~e | ~n | n666;
|
||||
assign n507 = e | n505 | n650;
|
||||
assign n508 = (n525 | n471) & (n457 | n479);
|
||||
assign n509 = n478 | n167;
|
||||
assign n510 = ~n626 | j | n192;
|
||||
assign n511 = n510 & n509 & n508 & n507 & ~n504 & n506;
|
||||
assign n512 = i | n368;
|
||||
assign n513 = m | n603;
|
||||
assign n514 = i | m;
|
||||
assign n515 = n512 & n513 & (~l | n514);
|
||||
assign n516 = n253 & n127;
|
||||
assign n517 = (n426 | n446) & (n516 | n666);
|
||||
assign n518 = n517 & (n401 | n151);
|
||||
assign n519 = ~k | ~m;
|
||||
assign n520 = n519 & (j | ~m);
|
||||
assign n521 = c | ~d;
|
||||
assign n522 = n81 & (g | n521);
|
||||
assign n523 = ~n311 & n403 & (~n174 | ~n261);
|
||||
assign n524 = ~e | f;
|
||||
assign n525 = b | n524;
|
||||
assign n526 = ~d | n615;
|
||||
assign n527 = j | n368;
|
||||
assign n528 = n99 & n527;
|
||||
assign n529 = n717 & (h | n524 | n636);
|
||||
assign n530 = (n521 | n525) & (~j | n716);
|
||||
assign n531 = (i | n432) & (n254 | n665);
|
||||
assign n532 = n634 & n550 & (n135 | n650);
|
||||
assign n533 = n532 & n531 & n529 & n530;
|
||||
assign n534 = ~c & ~n524;
|
||||
assign n535 = (~n180 | ~n628) & (~n463 | n534);
|
||||
assign n536 = ~j & (~n660 | (~n156 & ~n231));
|
||||
assign n537 = n396 & (a | c | e);
|
||||
assign n538 = e | ~g;
|
||||
assign n539 = ~n162 & (~n108 | ~n181);
|
||||
assign n540 = n375 | n259 | n114;
|
||||
assign n541 = ~n489 & (~n206 | ~n663);
|
||||
assign n542 = ~n613 & (~n497 | (~c & ~n660));
|
||||
assign n543 = n438 | n101;
|
||||
assign n544 = ~n231 & (n539 | (~n156 & ~n613));
|
||||
assign n545 = a & ~n615;
|
||||
assign n546 = n545 & ~n655 & (~n630 | ~n672);
|
||||
assign n547 = ~n457 & (~n631 | (~n105 & ~n231));
|
||||
assign n548 = ~n179 & (n535 | n536 | ~n715);
|
||||
assign n549 = ~e | n479;
|
||||
assign n550 = l | n424;
|
||||
assign n551 = i | g | h;
|
||||
assign n552 = n112 | n155 | n;
|
||||
assign n553 = n119 | n245;
|
||||
assign n554 = f | n167;
|
||||
assign n555 = (n168 | n554) & (f | n166);
|
||||
assign n556 = n555 | ~e | g;
|
||||
assign n557 = f | n243;
|
||||
assign n558 = n556 & (~n78 | n557);
|
||||
assign n559 = ~n99 & ~g & n;
|
||||
assign n560 = ~b | ~d;
|
||||
assign n561 = (n203 | n560) & (n526 | ~n748);
|
||||
assign n562 = (n175 | n287) & (n282 | n594);
|
||||
assign n563 = n236 | n638;
|
||||
assign n564 = (n352 | n558) & (~e | n561);
|
||||
assign n565 = n608 | n172;
|
||||
assign n566 = n677 & n553 & n552 & n342 & n143 & n63;
|
||||
assign n567 = n226 & n270 & (n89 | n625);
|
||||
assign n568 = n750 & n752 & n656 & n661 & n441 & n657 & n440 & n662;
|
||||
assign n569 = n568 & n567 & n447 & n566 & n565 & n564 & n562 & n563;
|
||||
assign n570 = f | ~g;
|
||||
assign n571 = (g | n555) & (~n78 | n570);
|
||||
assign n572 = n595 | n352;
|
||||
assign n573 = n652 | n106 | n549;
|
||||
assign n574 = n593 | n596;
|
||||
assign n575 = n626 | ~a | n262;
|
||||
assign n576 = n571 | ~d | ~n545;
|
||||
assign n577 = n753 & (n654 | (n175 & n248));
|
||||
assign n578 = n282 | n596;
|
||||
assign n579 = n566 & (n165 | n352);
|
||||
assign n580 = l | ~n421;
|
||||
assign n581 = ~l | ~h | i;
|
||||
assign n582 = (~l & n622) | (n603 & (l | n622));
|
||||
assign n583 = ~h | n611;
|
||||
assign n584 = ~l | n360;
|
||||
assign n585 = ~l | n621;
|
||||
assign n586 = n585 & n584 & n583 & n582 & n580 & n581;
|
||||
assign n587 = n | n119;
|
||||
assign n588 = ~i | n154;
|
||||
assign n589 = l | n519;
|
||||
assign n590 = n119 | n242;
|
||||
assign n591 = n | n589;
|
||||
assign n592 = j | n519;
|
||||
assign n593 = n407 | n275;
|
||||
assign n594 = ~a | n286;
|
||||
assign n595 = n156 | n407;
|
||||
assign n596 = ~e | ~a | ~c;
|
||||
assign n597 = d | a;
|
||||
assign n598 = ~d | e;
|
||||
assign n599 = ~a | n598;
|
||||
assign n600 = ~i | j;
|
||||
assign n601 = ~l | n600;
|
||||
assign n602 = ~g | ~h;
|
||||
assign n603 = h | ~i;
|
||||
assign n604 = ~g | n75;
|
||||
assign n605 = ~j | n602;
|
||||
assign n606 = n396 & n397;
|
||||
assign n607 = n599 & n353;
|
||||
assign n608 = n92 & n352;
|
||||
assign n609 = g | ~h;
|
||||
assign n610 = i & j;
|
||||
assign n611 = ~j | l;
|
||||
assign n612 = ~f | n521;
|
||||
assign n613 = l | n179;
|
||||
assign n614 = ~g | ~n421;
|
||||
assign n615 = ~b | ~c;
|
||||
assign n616 = d | n615;
|
||||
assign n617 = n590 | n407;
|
||||
assign n618 = n593 | n594;
|
||||
assign n619 = n97 & n70 & n210;
|
||||
assign n620 = (n595 | n287) & (n593 | n218);
|
||||
assign n621 = i | ~j;
|
||||
assign n622 = j | ~k;
|
||||
assign n623 = k & ~n600;
|
||||
assign n624 = ~k | n249;
|
||||
assign n625 = ~b | n521;
|
||||
assign n626 = ~c | ~d;
|
||||
assign n627 = i | n243;
|
||||
assign n628 = n614 & n605;
|
||||
assign n629 = ~g | n621;
|
||||
assign n630 = k | n167;
|
||||
assign n631 = h | n459;
|
||||
assign n632 = e | n626;
|
||||
assign n633 = n269 | n151;
|
||||
assign n634 = h | n196;
|
||||
assign n635 = ~b | n459;
|
||||
assign n636 = ~l | n412;
|
||||
assign n637 = n612 & n272;
|
||||
assign n638 = ~f | n560;
|
||||
assign n639 = i | n609;
|
||||
assign n640 = i | n393;
|
||||
assign n641 = n622 | ~l | n167;
|
||||
assign n642 = j | n602;
|
||||
assign n643 = j | n393;
|
||||
assign n644 = ~j | n154;
|
||||
assign n645 = n538 | n92;
|
||||
assign n646 = ~j | n570;
|
||||
assign n647 = ~m | n360;
|
||||
assign n648 = (n392 | n127) & (n400 | n391);
|
||||
assign n649 = ~g | n622;
|
||||
assign n650 = k | n600;
|
||||
assign n651 = b | n626;
|
||||
assign n652 = n621 | ~k | n181;
|
||||
assign n653 = n222 & ~n526;
|
||||
assign n654 = a | n615;
|
||||
assign n655 = ~f | ~d | ~e;
|
||||
assign n656 = ~n653 | n332 | n426;
|
||||
assign n657 = n632 | n429;
|
||||
assign n658 = k | n621;
|
||||
assign n659 = d | e;
|
||||
assign n660 = i | ~g | h;
|
||||
assign n661 = n445 | n435 | n427;
|
||||
assign n662 = n430 | n202 | n652;
|
||||
assign n663 = n83 & n471;
|
||||
assign n664 = ~g | n479;
|
||||
assign n665 = a | n598;
|
||||
assign n666 = m | n424;
|
||||
assign n667 = ~h | n514;
|
||||
assign n668 = k | n514;
|
||||
assign n669 = h | n514;
|
||||
assign n670 = m | n600;
|
||||
assign n671 = n | n479;
|
||||
assign n672 = h | n167;
|
||||
assign n673 = g | n199;
|
||||
assign n674 = h & ~n650;
|
||||
assign n675 = e | n479;
|
||||
assign n676 = h | n488;
|
||||
assign n677 = n343 & n144 & n454 & n617 & n381 & n380;
|
||||
assign n678 = (e & ~n119) | (~n92 & (~e | ~n119));
|
||||
assign n679 = (n479 & n674) | (~g & (~n479 | n674));
|
||||
assign n680 = n755 & (i | n466 | h);
|
||||
assign n681 = ~n610 | l | n115;
|
||||
assign n682 = n590 & n93;
|
||||
assign n683 = n681 & (n682 | n584);
|
||||
assign n684 = n642 & n253;
|
||||
assign n685 = (n684 | n108) & (n109 | n88);
|
||||
assign n686 = (n605 | n372) & (n604 | n613);
|
||||
assign n687 = (n614 | n376) & (n88 | n259);
|
||||
assign n688 = ~n141 & (n82 | (n685 & n686));
|
||||
assign n689 = n335 & n327;
|
||||
assign n690 = (n588 | n106) & (n237 | n305);
|
||||
assign n691 = n229 | n83;
|
||||
assign n692 = n393 | ~j | n192;
|
||||
assign n693 = ~a | b | ~d | n198;
|
||||
assign n694 = (n607 | n165) & (n204 | n625);
|
||||
assign n695 = (n161 | n627) & (n155 | n135);
|
||||
assign n696 = n243 | ~j | n237;
|
||||
assign n697 = (n588 | n136) & (n242 | n592);
|
||||
assign n698 = n256 | n167;
|
||||
assign n699 = (n155 | n101) & (n238 | n538);
|
||||
assign n700 = (n588 | n103) & (n117 | n126);
|
||||
assign n701 = (n182 | n612) & (n241 | n92);
|
||||
assign n702 = ~n294 & (~n585 | (l & n610));
|
||||
assign n703 = ~n95 & (~n252 | ~n254 | ~n256);
|
||||
assign n704 = (n84 | n88) & (n642 | n435);
|
||||
assign n705 = (n167 | ~n702) & (n259 | ~n703);
|
||||
assign n706 = n490 & (n96 | n611);
|
||||
assign n707 = n354 | n360 | n167 | n105;
|
||||
assign n708 = ~h | j;
|
||||
assign n709 = (n113 | n643) & (~n678 | n708);
|
||||
assign n710 = (n95 | n88) & (j | n645);
|
||||
assign n711 = (n110 | n157) & (n113 | n276);
|
||||
assign n712 = n167 | n127 | n584 | n423;
|
||||
assign n713 = (d | n525) & (j | n436);
|
||||
assign n714 = (b | c) & (n127 | n433);
|
||||
assign n715 = (n253 | n463) & (n103 | ~n473);
|
||||
assign n716 = n676 & n478;
|
||||
assign n717 = a | b;
|
||||
assign n718 = n433 | n487 | ~h | n199;
|
||||
assign n719 = n496 & ~n534;
|
||||
assign n720 = n478 & n665 & n432;
|
||||
assign n721 = ~n523 & (g | n520 | n720);
|
||||
assign n722 = n721 & (n670 | (n496 & n480));
|
||||
assign n723 = (n522 | n669) & (n164 | n666);
|
||||
assign n724 = n723 & (n668 | (n202 & n664));
|
||||
assign n725 = n231 | n156 | n401;
|
||||
assign n726 = n592 | n432;
|
||||
assign n727 = n725 & n726 & (n719 | n667);
|
||||
assign n728 = n518 & n727 & (n496 | n515);
|
||||
assign n729 = (n436 | n667) & (n525 | n528);
|
||||
assign n730 = n729 & (n515 | n436);
|
||||
assign n731 = (n669 | n397) & (n525 | n668);
|
||||
assign n732 = n526 | e | n472;
|
||||
assign n733 = n672 | ~n597 | n636;
|
||||
assign n734 = n754 & (~h | n438);
|
||||
assign n735 = n732 & n733 & (~c | n734);
|
||||
assign n736 = n | a | ~g;
|
||||
assign n737 = (i | n665) & (~n545 | n659);
|
||||
assign n738 = ~n468 & (n311 | ~n403 | n736);
|
||||
assign n739 = n738 & (n665 | (n672 & n96));
|
||||
assign n740 = (n549 | n673) & (n179 | ~n679);
|
||||
assign n741 = n489 & (e | n254);
|
||||
assign n742 = ~n629 | k | n206;
|
||||
assign n743 = ~n546 & (n537 | n554);
|
||||
assign n744 = n743 & (n199 | (n714 & n713));
|
||||
assign n745 = (n720 | n376) & (n533 | n167);
|
||||
assign n746 = (n192 | n327) & (~i | n503);
|
||||
assign n747 = n745 & n746 & (n591 | n445);
|
||||
assign n748 = ~h & (n559 | (~n601 & ~n673));
|
||||
assign n749 = (n588 | n202) & (n237 | n646);
|
||||
assign n750 = n53 & n47 & n618;
|
||||
assign n751 = n526 | n102 | n120;
|
||||
assign n752 = n751 & (n651 | (n104 & n195));
|
||||
assign n753 = n449 | n480;
|
||||
assign n754 = ~n473 | h | n179;
|
||||
assign n755 = n467 | ~h | n375;
|
||||
assign n756 = i & ~k & (~n376 | ~n613);
|
||||
assign n757 = (n495 & (~h | n511)) | (h & n511);
|
||||
assign n758 = ~h & (~n96 | (c & ~n457));
|
||||
assign n759 = (n464 & (~g | n486)) | (g & n486);
|
||||
assign n760 = l | n368;
|
||||
assign n761 = n760 & n512 & n527;
|
||||
assign n762 = n674 & ~n167 & n460;
|
||||
endmodule
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,69 @@
|
|||
// Benchmark "s298.bench" written by ABC on Tue Mar 5 10:03:54 2019
|
||||
|
||||
module s298 ( clock,
|
||||
G0, G1, G2,
|
||||
G117, G132, G66, G118, G133, G67 );
|
||||
input G0, G1, G2, clock;
|
||||
output G117, G132, G66, G118, G133, G67;
|
||||
reg G10, G11, G12, G13, G14, G15, G16, G17, G18, G19, G20, G21, G22, G23;
|
||||
wire n57, n59, n64, n66, n21_1, n26_1, n31_1, n36_1, n41_1, n46_1, n51_1,
|
||||
n56_1, n61_1, n66_2, n71_1, n76_1, n81_1, n86_1;
|
||||
assign n21_1 = ~G0 & ~G10;
|
||||
assign n26_1 = ~G0 & (G10 ? (~G11 & (G12 | ~G13)) : G11);
|
||||
assign n31_1 = ~G0 & ((G12 & (~G10 | ~G11)) | (G10 & G11 & ~G12));
|
||||
assign n36_1 = ~G0 & ((G11 & ((~G12 & G13) | (G10 & G12 & ~G13))) | (G13 & (~G10 | (~G11 & G12))));
|
||||
assign n41_1 = ~G0 & (G14 ^ (G23 | (G10 & G13 & n57)));
|
||||
assign n57 = ~G11 & ~G12;
|
||||
assign n46_1 = ~G0 & ~n59;
|
||||
assign n59 = (G11 & (~G15 | (~G12 & G13 & ~G14 & ~G22))) | (~G15 & (G12 | ~G13 | G14 | ~G22));
|
||||
assign n51_1 = n59 & ((G13 & (~G14 | G16)) | (G12 & G14 & G16));
|
||||
assign n56_1 = n59 & ((~G13 & (G11 ? ~G12 : ~G14)) | (G14 & G17 & (G12 | G13)));
|
||||
assign n61_1 = n59 & ((G14 & G18 & (G12 | G13)) | (~G13 & (~G14 | (G11 & ~G12))));
|
||||
assign n66_2 = n59 ? n64 : ~G10;
|
||||
assign n64 = (G13 & (~G14 | G19)) | (G14 & ((~G11 & ~G12 & ~G13) | (G12 & G19)));
|
||||
assign n71_1 = n59 ? (n66 & (G20 | (~G12 & ~G13))) : ~G10;
|
||||
assign n66 = G14 & (~G11 | G12 | G13);
|
||||
assign n76_1 = n59 & ((G12 & ((G11 & ~G13 & ~G14) | (G14 & G21))) | (G13 & G14 & G21));
|
||||
assign n81_1 = ~G0 & (G2 ^ G22);
|
||||
assign n86_1 = ~G0 & (G1 ^ G23);
|
||||
assign G117 = G18;
|
||||
assign G132 = G20;
|
||||
assign G66 = G16;
|
||||
assign G118 = G19;
|
||||
assign G133 = G21;
|
||||
assign G67 = G17;
|
||||
always @ (posedge clock) begin
|
||||
G10 <= n21_1;
|
||||
G11 <= n26_1;
|
||||
G12 <= n31_1;
|
||||
G13 <= n36_1;
|
||||
G14 <= n41_1;
|
||||
G15 <= n46_1;
|
||||
G16 <= n51_1;
|
||||
G17 <= n56_1;
|
||||
G18 <= n61_1;
|
||||
G19 <= n66_2;
|
||||
G20 <= n71_1;
|
||||
G21 <= n76_1;
|
||||
G22 <= n81_1;
|
||||
G23 <= n86_1;
|
||||
end
|
||||
initial begin
|
||||
G10 <= 1'b0;
|
||||
G11 <= 1'b0;
|
||||
G12 <= 1'b0;
|
||||
G13 <= 1'b0;
|
||||
G14 <= 1'b0;
|
||||
G15 <= 1'b0;
|
||||
G16 <= 1'b0;
|
||||
G17 <= 1'b0;
|
||||
G18 <= 1'b0;
|
||||
G19 <= 1'b0;
|
||||
G20 <= 1'b0;
|
||||
G21 <= 1'b0;
|
||||
G22 <= 1'b0;
|
||||
G23 <= 1'b0;
|
||||
end
|
||||
endmodule
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,453 @@
|
|||
i_0_ 0.507200 0.496600
|
||||
i_1_ 0.506400 0.501400
|
||||
i_2_ 0.497600 0.493200
|
||||
i_3_ 0.503800 0.496600
|
||||
i_4_ 0.499400 0.493000
|
||||
i_5_ 0.498600 0.493600
|
||||
i_6_ 0.492000 0.500800
|
||||
i_7_ 0.487800 0.500000
|
||||
i_8_ 0.501800 0.499000
|
||||
i_9_ 0.497000 0.485000
|
||||
i_10_ 0.504400 0.496800
|
||||
i_11_ 0.500000 0.509800
|
||||
i_12_ 0.493800 0.498400
|
||||
i_13_ 0.510600 0.493800
|
||||
o_0_ 0.577000 0.077506
|
||||
n26 0.244400 0.093513
|
||||
n27 0.500400 0.124004
|
||||
n28 0.254600 0.047930
|
||||
n29 0.250000 0.047867
|
||||
n30 0.255400 0.091568
|
||||
n31 0.250000 0.092368
|
||||
o_1_ 0.500400 0.069873
|
||||
n33 0.238400 0.089851
|
||||
n34 0.249800 0.092215
|
||||
n35 0.255000 0.093733
|
||||
n36 0.249800 0.095452
|
||||
n37 0.556200 0.095165
|
||||
n38 0.403200 0.012210
|
||||
n39 0.584600 0.062239
|
||||
n40 0.262200 0.012861
|
||||
n41 0.115800 0.171124
|
||||
n42 0.130400 0.028422
|
||||
n43 0.752200 0.034713
|
||||
n44 0.724000 0.037365
|
||||
n45 0.601000 0.024813
|
||||
n46 0.143000 0.010267
|
||||
n47 0.877200 0.010296
|
||||
n48 0.248000 0.091201
|
||||
n49 0.120800 0.027593
|
||||
n50 0.247600 0.091740
|
||||
n51 0.271600 0.150050
|
||||
n52 0.269800 0.009377
|
||||
n53 0.243800 0.092109
|
||||
n54 0.124200 0.027951
|
||||
n55 0.365400 0.170839
|
||||
n56 0.262000 0.094371
|
||||
n57 0.131200 0.028875
|
||||
n58 0.922200 0.000356
|
||||
n59 0.030400 0.001891
|
||||
n60 0.123000 0.027067
|
||||
n61 0.498000 0.093083
|
||||
n62 0.032000 0.002001
|
||||
n63 0.865800 0.000135
|
||||
n64 0.061600 0.008662
|
||||
n65 0.758400 0.046641
|
||||
n66 0.065400 0.003573
|
||||
n67 0.189200 0.032110
|
||||
n68 0.074400 0.007264
|
||||
n69 0.853000 0.021911
|
||||
n70 0.123200 0.027710
|
||||
n71 0.485800 0.048827
|
||||
n72 0.036200 0.098032
|
||||
n73 0.254400 0.088467
|
||||
n74 0.029400 0.001820
|
||||
n75 0.919200 0.004880
|
||||
n76 0.053200 0.001600
|
||||
n77 0.060200 0.003685
|
||||
n78 0.939800 0.003588
|
||||
n79 0.016800 0.000456
|
||||
n80 0.181400 0.102631
|
||||
n81 0.831000 0.000179
|
||||
n82 0.239000 0.087621
|
||||
n83 0.752600 0.023589
|
||||
n84 0.035600 0.000252
|
||||
n85 0.104000 0.009532
|
||||
n86 0.974000 0.006689
|
||||
n87 0.059600 0.007073
|
||||
n88 0.125600 0.028479
|
||||
n89 0.026800 0.005350
|
||||
n90 0.843800 0.008255
|
||||
n91 0.121400 0.026749
|
||||
n92 0.133600 0.028186
|
||||
n93 0.118400 0.027428
|
||||
n94 0.249000 0.095561
|
||||
n95 0.011400 0.274997
|
||||
n96 0.245600 0.096233
|
||||
n97 0.015600 0.000441
|
||||
n98 0.764400 0.030492
|
||||
n99 0.124000 0.026156
|
||||
n100 0.013800 0.000142
|
||||
n101 0.259200 0.092453
|
||||
n102 0.761600 0.031276
|
||||
n103 0.256600 0.095668
|
||||
n104 0.127800 0.027847
|
||||
n105 0.248200 0.092109
|
||||
n106 0.926600 0.000447
|
||||
n107 0.061400 0.006883
|
||||
n108 0.125600 0.026902
|
||||
n109 0.049600 0.002378
|
||||
n110 0.125800 0.025851
|
||||
n111 0.132000 0.025796
|
||||
n112 0.117400 0.025304
|
||||
n113 0.243000 0.090668
|
||||
n114 0.954000 0.000523
|
||||
n115 0.029600 0.001893
|
||||
n116 0.046200 0.000537
|
||||
n117 0.870200 0.013837
|
||||
n118 0.972800 0.002734
|
||||
n119 0.021600 0.168817
|
||||
n120 0.693600 0.019730
|
||||
n121 0.059000 0.007010
|
||||
n122 0.894800 0.009692
|
||||
n123 0.249800 0.090699
|
||||
n124 0.230000 0.091866
|
||||
n125 0.008200 0.000048
|
||||
n126 0.028400 0.001814
|
||||
n127 0.030000 0.001791
|
||||
n128 0.249200 0.090461
|
||||
n129 0.246400 0.089906
|
||||
n130 0.005800 0.000000
|
||||
n131 0.123800 0.026488
|
||||
n132 0.844800 0.001778
|
||||
n133 0.013600 0.000463
|
||||
n134 0.975400 0.022212
|
||||
n135 0.012000 0.000465
|
||||
n136 0.032400 0.001740
|
||||
n137 0.013400 0.000483
|
||||
n138 0.010400 0.000524
|
||||
n139 0.250600 0.096640
|
||||
n140 0.253200 0.093930
|
||||
n141 0.156000 0.027293
|
||||
n142 0.013400 0.000451
|
||||
n143 0.017600 0.000499
|
||||
n144 0.009200 0.000005
|
||||
n145 0.009200 0.222476
|
||||
n146 0.012600 0.000443
|
||||
n147 0.115600 0.026365
|
||||
n148 0.682200 0.142413
|
||||
n149 0.169400 0.000048
|
||||
n150 0.660800 0.002077
|
||||
n151 0.248800 0.094647
|
||||
n152 0.278000 0.117457
|
||||
n153 0.013200 0.000495
|
||||
n154 0.130000 0.026721
|
||||
n155 0.258000 0.093998
|
||||
n156 0.775600 0.032205
|
||||
n157 0.035400 0.056403
|
||||
n158 0.121600 0.025516
|
||||
n159 0.251800 0.096842
|
||||
n160 0.057200 0.007075
|
||||
n161 0.016000 0.000451
|
||||
n162 0.021600 0.165889
|
||||
n163 0.037000 0.000004
|
||||
n164 0.849200 0.000008
|
||||
n165 0.042000 0.076864
|
||||
n166 0.075600 0.175072
|
||||
n167 0.249400 0.093538
|
||||
n168 0.255400 0.092782
|
||||
n169 0.123600 0.026761
|
||||
n170 0.017800 0.128969
|
||||
n171 0.130800 0.025177
|
||||
n172 0.886000 0.009532
|
||||
n173 0.976600 0.017711
|
||||
n174 0.895000 0.008650
|
||||
n175 0.012400 0.001407
|
||||
n176 0.246400 0.090668
|
||||
n177 0.285600 0.012522
|
||||
n178 0.395200 0.030715
|
||||
n179 0.016200 0.000487
|
||||
n180 0.859200 0.148776
|
||||
n181 0.014200 0.000470
|
||||
n182 0.259400 0.088136
|
||||
n183 0.071000 0.007397
|
||||
n184 0.696600 0.093048
|
||||
n185 0.046200 0.002075
|
||||
n186 0.920200 0.000007
|
||||
n187 0.063000 0.057916
|
||||
n188 0.028800 0.013875
|
||||
n189 0.970600 0.000859
|
||||
n190 0.937000 0.003505
|
||||
n191 0.872000 0.091162
|
||||
n192 0.066400 0.009362
|
||||
n193 0.934400 0.010902
|
||||
n194 0.641000 0.091467
|
||||
n195 0.904800 0.028943
|
||||
n196 0.783800 0.029159
|
||||
n197 0.790000 0.055221
|
||||
n198 0.840000 0.024270
|
||||
n199 0.229800 0.033381
|
||||
n200 0.906400 0.016808
|
||||
n201 0.312000 0.002321
|
||||
n202 0.852200 0.093593
|
||||
n203 0.820400 0.145265
|
||||
n204 0.903000 0.000927
|
||||
n205 0.900600 0.009143
|
||||
n206 0.921400 0.031099
|
||||
n207 0.125000 0.025885
|
||||
n208 0.105600 0.010699
|
||||
n209 0.022600 0.005495
|
||||
n210 0.969600 0.027547
|
||||
n211 0.254800 0.093022
|
||||
n212 0.345600 0.023938
|
||||
n213 0.661000 0.004096
|
||||
n214 0.016000 0.000289
|
||||
n215 0.061600 0.008226
|
||||
n216 0.251800 0.096233
|
||||
n217 0.753800 0.016062
|
||||
n218 0.727400 0.095865
|
||||
n219 0.112600 0.184403
|
||||
n220 0.022200 0.029346
|
||||
n221 0.105400 0.000041
|
||||
n222 0.190200 0.064251
|
||||
n223 0.037800 0.002414
|
||||
n224 0.851000 0.004439
|
||||
n225 0.677600 0.003756
|
||||
n226 0.023600 0.001085
|
||||
n227 0.129600 0.029253
|
||||
n228 0.012800 0.000019
|
||||
n229 0.034000 0.036995
|
||||
n230 0.129200 0.026492
|
||||
n231 0.037000 0.000119
|
||||
n232 0.009000 0.000226
|
||||
n233 0.012600 0.009536
|
||||
n234 0.922400 0.000458
|
||||
n235 0.943400 0.086745
|
||||
n236 0.049400 0.000454
|
||||
n237 0.013600 0.000453
|
||||
n238 0.030200 0.001828
|
||||
n239 0.014200 0.004049
|
||||
n240 0.498600 0.003736
|
||||
n241 0.018800 0.010133
|
||||
n242 0.020600 0.000541
|
||||
n243 0.117400 0.027569
|
||||
n244 0.125800 0.027392
|
||||
n245 0.950000 0.001390
|
||||
n246 0.017400 0.000497
|
||||
n247 0.951600 0.001381
|
||||
n248 0.002000 0.000016
|
||||
n249 0.992400 0.026955
|
||||
n250 0.126600 0.027428
|
||||
n251 0.127600 0.029646
|
||||
n252 0.015000 0.000487
|
||||
n253 0.018000 0.000425
|
||||
n254 0.006800 0.000118
|
||||
n255 0.126200 0.025692
|
||||
n256 0.005200 0.000029
|
||||
n257 0.122600 0.026156
|
||||
n258 0.001600 0.000002
|
||||
n259 0.123400 0.027569
|
||||
n260 0.053000 0.006742
|
||||
n261 0.131000 0.026156
|
||||
n262 0.129200 0.029253
|
||||
n263 0.035000 0.000872
|
||||
n264 0.051200 0.002442
|
||||
n265 0.045400 0.003988
|
||||
n266 0.246800 0.091866
|
||||
n267 0.983200 0.000000
|
||||
n268 0.016600 0.000233
|
||||
n269 0.123400 0.028069
|
||||
n270 0.064600 0.007073
|
||||
n271 0.912000 0.006231
|
||||
n272 0.012200 0.000162
|
||||
n273 0.003200 0.000029
|
||||
n274 0.925600 0.028384
|
||||
n275 0.030800 0.002138
|
||||
n276 0.121400 0.027550
|
||||
n277 0.014400 0.000455
|
||||
n278 0.251400 0.092392
|
||||
n279 0.030800 0.001886
|
||||
n280 0.992600 0.000044
|
||||
n281 0.012400 0.000000
|
||||
n282 0.017000 0.000517
|
||||
n283 0.877400 0.059738
|
||||
n284 0.121200 0.029253
|
||||
n285 0.952800 0.001476
|
||||
n286 0.003400 0.000721
|
||||
n287 0.986200 0.027652
|
||||
n288 0.065600 0.007314
|
||||
n289 0.013400 0.000446
|
||||
n290 0.934000 0.062027
|
||||
n291 0.738200 0.147156
|
||||
n292 0.992600 0.044684
|
||||
n293 0.036200 0.002105
|
||||
n294 0.031600 0.001876
|
||||
n295 0.128200 0.026813
|
||||
n296 0.013000 0.000487
|
||||
n297 0.922800 0.002099
|
||||
n298 0.610200 0.023513
|
||||
n299 0.949200 0.028723
|
||||
n300 0.984800 0.003947
|
||||
n301 0.063000 0.007268
|
||||
n302 0.957400 0.001338
|
||||
n303 0.988000 0.004227
|
||||
n304 0.063600 0.006975
|
||||
n305 0.875600 0.010050
|
||||
n306 0.008600 0.001044
|
||||
n307 0.001800 0.004268
|
||||
n308 0.985000 0.024177
|
||||
n309 0.122000 0.026706
|
||||
n310 0.061600 0.007346
|
||||
n311 0.016200 0.000460
|
||||
n312 0.127800 0.014131
|
||||
n313 0.035800 0.002065
|
||||
n314 0.001000 0.000017
|
||||
n315 0.001200 0.000002
|
||||
n316 0.001000 0.000001
|
||||
n317 0.014000 0.000507
|
||||
n318 0.003800 0.000029
|
||||
n319 0.890400 0.009678
|
||||
n320 0.962600 0.000001
|
||||
n321 0.253600 0.090668
|
||||
n322 0.030800 0.002077
|
||||
n323 0.123400 0.027838
|
||||
n324 0.133000 0.027838
|
||||
n325 0.005400 0.000034
|
||||
n326 0.002600 0.000009
|
||||
n327 0.034400 0.001873
|
||||
n328 0.992800 0.000057
|
||||
n329 0.007200 0.000000
|
||||
n330 0.006200 0.000050
|
||||
n331 0.001800 0.000072
|
||||
n332 0.001600 0.028311
|
||||
n333 0.991600 0.049013
|
||||
n334 0.994000 0.023346
|
||||
n335 0.993200 0.000023
|
||||
n336 0.990400 0.024989
|
||||
n337 0.001400 0.000004
|
||||
n338 0.014200 0.061698
|
||||
n339 0.729000 0.037530
|
||||
n340 0.910600 0.084521
|
||||
n341 0.641200 0.013178
|
||||
o_3_ 0.505400 0.099316
|
||||
n343 0.328200 0.024360
|
||||
n344 0.959800 0.003228
|
||||
n345 0.373000 0.023259
|
||||
n346 0.945800 0.000003
|
||||
n347 0.051000 0.006230
|
||||
n348 0.765800 0.137143
|
||||
n349 0.033200 0.000847
|
||||
n350 0.402000 0.011652
|
||||
n351 0.436400 0.024182
|
||||
n352 0.013400 0.007911
|
||||
n353 0.222000 0.015781
|
||||
n354 0.992200 0.000052
|
||||
n355 0.936000 0.000087
|
||||
n356 0.132600 0.085254
|
||||
n357 0.145400 0.033973
|
||||
n358 0.011000 0.000156
|
||||
n359 0.063000 0.007116
|
||||
n360 0.253000 0.015271
|
||||
n361 0.294800 0.023465
|
||||
n362 0.027200 0.006307
|
||||
n363 0.312200 0.023937
|
||||
n364 0.345800 0.017249
|
||||
n365 0.833400 0.051311
|
||||
n366 0.825400 0.034122
|
||||
n367 0.223000 0.042498
|
||||
n368 0.965200 0.001881
|
||||
n369 0.014800 0.000445
|
||||
n370 0.989000 0.239725
|
||||
n371 0.120400 0.009204
|
||||
n372 0.978800 0.000544
|
||||
n373 0.652400 0.031285
|
||||
n374 0.636400 0.152149
|
||||
n375 0.931200 0.002467
|
||||
n376 0.785200 0.137981
|
||||
n377 0.415200 0.097289
|
||||
n378 0.807600 0.030338
|
||||
o_6_ 0.496800 0.138220
|
||||
n380 0.516600 0.079201
|
||||
n381 0.779000 0.000037
|
||||
o_5_ 0.493000 0.128897
|
||||
n383 0.155000 0.001954
|
||||
n384 0.518600 0.039542
|
||||
n385 0.624800 0.070955
|
||||
n386 0.269400 0.164373
|
||||
n387 0.143600 0.014543
|
||||
n388 0.120200 0.098574
|
||||
n389 0.941000 0.068389
|
||||
n390 0.977600 0.088518
|
||||
n391 0.861400 0.005270
|
||||
n392 0.143600 0.026406
|
||||
n393 0.811400 0.000941
|
||||
n394 0.287400 0.057846
|
||||
n395 0.985400 0.016065
|
||||
o_7_ 0.133200 0.268048
|
||||
n397 0.818400 0.000280
|
||||
n398 0.973400 0.158761
|
||||
n399 0.382000 0.045447
|
||||
n400 0.949800 0.047076
|
||||
n401 0.031400 0.002013
|
||||
n402 0.018800 0.000245
|
||||
n403 0.023800 0.000712
|
||||
n404 0.930600 0.204221
|
||||
n405 0.363400 0.040311
|
||||
n406 0.009200 0.006631
|
||||
n407 0.002800 0.000249
|
||||
n408 0.073800 0.008696
|
||||
n409 0.996400 0.000020
|
||||
n410 0.010800 0.017350
|
||||
n411 0.009600 0.007951
|
||||
n412 0.008000 0.000017
|
||||
n413 0.651200 0.036093
|
||||
n414 0.984400 0.030970
|
||||
n415 0.011800 0.000155
|
||||
n416 0.581200 0.026865
|
||||
n417 0.623000 0.027332
|
||||
n418 0.016800 0.021673
|
||||
n419 0.982600 0.000425
|
||||
n420 0.957600 0.045049
|
||||
n421 0.996600 0.002363
|
||||
n422 0.991400 0.006621
|
||||
n423 0.503000 0.090886
|
||||
n424 0.002200 0.075540
|
||||
n425 0.992000 0.166252
|
||||
n426 0.982200 0.000305
|
||||
n427 0.664600 0.000799
|
||||
n428 0.700000 0.021303
|
||||
o_2_ 0.583600 0.023724
|
||||
n430 0.107200 0.003705
|
||||
n431 0.946400 0.019926
|
||||
n432 0.877600 0.000360
|
||||
n433 0.987200 0.003971
|
||||
n434 0.836800 0.005233
|
||||
o_4_ 0.507000 0.223870
|
||||
n436 0.046800 0.002377
|
||||
n437 0.029000 0.112624
|
||||
n438 0.963600 0.016971
|
||||
n439 0.221000 0.068298
|
||||
n440 0.097000 0.036002
|
||||
n441 0.938400 0.000715
|
||||
n442 0.909200 0.040030
|
||||
n443 0.946000 0.001650
|
||||
n444 0.833200 0.004141
|
||||
n445 0.915400 0.000387
|
||||
n446 0.577400 0.219264
|
||||
n447 0.268200 0.172298
|
||||
n448 0.280400 0.027999
|
||||
n449 0.316800 0.052897
|
||||
n450 0.926000 0.023917
|
||||
n451 0.111200 0.011004
|
||||
n452 0.071000 0.005452
|
||||
n453 0.125400 0.077442
|
||||
n454 0.182800 0.156557
|
||||
n455 0.938000 0.000153
|
||||
n456 0.078800 0.000481
|
||||
n457 0.998000 0.000135
|
||||
n458 0.938800 0.000000
|
||||
n459 0.992000 0.000072
|
||||
n460 0.998000 0.003630
|
||||
n461 0.983800 0.120489
|
||||
n462 0.998000 0.191415
|
||||
n463 0.968000 0.000008
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,896 @@
|
|||
/* Generated by Yosys 0.8+133 (git sha1 2a2e0a4, gcc 7.3.0 -fPIC -Os) */
|
||||
|
||||
module alu4(i_0_, i_1_, i_2_, i_3_, i_4_, i_5_, i_6_, i_7_, i_8_, i_9_, i_10_, i_11_, i_12_, i_13_, o_0_, o_1_, o_2_, o_3_, o_4_, o_5_, o_6_, o_7_);
|
||||
input i_0_;
|
||||
input i_10_;
|
||||
input i_11_;
|
||||
input i_12_;
|
||||
input i_13_;
|
||||
input i_1_;
|
||||
input i_2_;
|
||||
input i_3_;
|
||||
input i_4_;
|
||||
input i_5_;
|
||||
input i_6_;
|
||||
input i_7_;
|
||||
input i_8_;
|
||||
input i_9_;
|
||||
wire n100;
|
||||
wire n101;
|
||||
wire n102;
|
||||
wire n103;
|
||||
wire n104;
|
||||
wire n105;
|
||||
wire n106;
|
||||
wire n107;
|
||||
wire n108;
|
||||
wire n109;
|
||||
wire n110;
|
||||
wire n111;
|
||||
wire n112;
|
||||
wire n113;
|
||||
wire n114;
|
||||
wire n115;
|
||||
wire n116;
|
||||
wire n117;
|
||||
wire n118;
|
||||
wire n119;
|
||||
wire n120;
|
||||
wire n121;
|
||||
wire n122;
|
||||
wire n123;
|
||||
wire n124;
|
||||
wire n125;
|
||||
wire n126;
|
||||
wire n127;
|
||||
wire n128;
|
||||
wire n129;
|
||||
wire n130;
|
||||
wire n131;
|
||||
wire n132;
|
||||
wire n133;
|
||||
wire n134;
|
||||
wire n135;
|
||||
wire n136;
|
||||
wire n137;
|
||||
wire n138;
|
||||
wire n139;
|
||||
wire n140;
|
||||
wire n141;
|
||||
wire n142;
|
||||
wire n143;
|
||||
wire n144;
|
||||
wire n145;
|
||||
wire n146;
|
||||
wire n147;
|
||||
wire n148;
|
||||
wire n149;
|
||||
wire n150;
|
||||
wire n151;
|
||||
wire n152;
|
||||
wire n153;
|
||||
wire n154;
|
||||
wire n155;
|
||||
wire n156;
|
||||
wire n157;
|
||||
wire n158;
|
||||
wire n159;
|
||||
wire n160;
|
||||
wire n161;
|
||||
wire n162;
|
||||
wire n163;
|
||||
wire n164;
|
||||
wire n165;
|
||||
wire n166;
|
||||
wire n167;
|
||||
wire n168;
|
||||
wire n169;
|
||||
wire n170;
|
||||
wire n171;
|
||||
wire n172;
|
||||
wire n173;
|
||||
wire n174;
|
||||
wire n175;
|
||||
wire n176;
|
||||
wire n177;
|
||||
wire n178;
|
||||
wire n179;
|
||||
wire n180;
|
||||
wire n181;
|
||||
wire n182;
|
||||
wire n183;
|
||||
wire n184;
|
||||
wire n185;
|
||||
wire n186;
|
||||
wire n187;
|
||||
wire n188;
|
||||
wire n189;
|
||||
wire n190;
|
||||
wire n191;
|
||||
wire n192;
|
||||
wire n193;
|
||||
wire n194;
|
||||
wire n195;
|
||||
wire n196;
|
||||
wire n197;
|
||||
wire n198;
|
||||
wire n199;
|
||||
wire n200;
|
||||
wire n201;
|
||||
wire n202;
|
||||
wire n203;
|
||||
wire n204;
|
||||
wire n205;
|
||||
wire n206;
|
||||
wire n207;
|
||||
wire n208;
|
||||
wire n209;
|
||||
wire n210;
|
||||
wire n211;
|
||||
wire n212;
|
||||
wire n213;
|
||||
wire n214;
|
||||
wire n215;
|
||||
wire n216;
|
||||
wire n217;
|
||||
wire n218;
|
||||
wire n219;
|
||||
wire n220;
|
||||
wire n221;
|
||||
wire n222;
|
||||
wire n223;
|
||||
wire n224;
|
||||
wire n225;
|
||||
wire n226;
|
||||
wire n227;
|
||||
wire n228;
|
||||
wire n229;
|
||||
wire n230;
|
||||
wire n231;
|
||||
wire n232;
|
||||
wire n233;
|
||||
wire n234;
|
||||
wire n235;
|
||||
wire n236;
|
||||
wire n237;
|
||||
wire n238;
|
||||
wire n239;
|
||||
wire n240;
|
||||
wire n241;
|
||||
wire n242;
|
||||
wire n243;
|
||||
wire n244;
|
||||
wire n245;
|
||||
wire n246;
|
||||
wire n247;
|
||||
wire n248;
|
||||
wire n249;
|
||||
wire n250;
|
||||
wire n251;
|
||||
wire n252;
|
||||
wire n253;
|
||||
wire n254;
|
||||
wire n255;
|
||||
wire n256;
|
||||
wire n257;
|
||||
wire n258;
|
||||
wire n259;
|
||||
wire n26;
|
||||
wire n260;
|
||||
wire n261;
|
||||
wire n262;
|
||||
wire n263;
|
||||
wire n264;
|
||||
wire n265;
|
||||
wire n266;
|
||||
wire n267;
|
||||
wire n268;
|
||||
wire n269;
|
||||
wire n27;
|
||||
wire n270;
|
||||
wire n271;
|
||||
wire n272;
|
||||
wire n273;
|
||||
wire n274;
|
||||
wire n275;
|
||||
wire n276;
|
||||
wire n277;
|
||||
wire n278;
|
||||
wire n279;
|
||||
wire n28;
|
||||
wire n280;
|
||||
wire n281;
|
||||
wire n282;
|
||||
wire n283;
|
||||
wire n284;
|
||||
wire n285;
|
||||
wire n286;
|
||||
wire n287;
|
||||
wire n288;
|
||||
wire n289;
|
||||
wire n29;
|
||||
wire n290;
|
||||
wire n291;
|
||||
wire n292;
|
||||
wire n293;
|
||||
wire n294;
|
||||
wire n295;
|
||||
wire n296;
|
||||
wire n297;
|
||||
wire n298;
|
||||
wire n299;
|
||||
wire n30;
|
||||
wire n300;
|
||||
wire n301;
|
||||
wire n302;
|
||||
wire n303;
|
||||
wire n304;
|
||||
wire n305;
|
||||
wire n306;
|
||||
wire n307;
|
||||
wire n308;
|
||||
wire n309;
|
||||
wire n31;
|
||||
wire n310;
|
||||
wire n311;
|
||||
wire n312;
|
||||
wire n313;
|
||||
wire n314;
|
||||
wire n315;
|
||||
wire n316;
|
||||
wire n317;
|
||||
wire n318;
|
||||
wire n319;
|
||||
wire n320;
|
||||
wire n321;
|
||||
wire n322;
|
||||
wire n323;
|
||||
wire n324;
|
||||
wire n325;
|
||||
wire n326;
|
||||
wire n327;
|
||||
wire n328;
|
||||
wire n329;
|
||||
wire n33;
|
||||
wire n330;
|
||||
wire n331;
|
||||
wire n332;
|
||||
wire n333;
|
||||
wire n334;
|
||||
wire n335;
|
||||
wire n336;
|
||||
wire n337;
|
||||
wire n338;
|
||||
wire n339;
|
||||
wire n34;
|
||||
wire n340;
|
||||
wire n341;
|
||||
wire n343;
|
||||
wire n344;
|
||||
wire n345;
|
||||
wire n346;
|
||||
wire n347;
|
||||
wire n348;
|
||||
wire n349;
|
||||
wire n35;
|
||||
wire n350;
|
||||
wire n351;
|
||||
wire n352;
|
||||
wire n353;
|
||||
wire n354;
|
||||
wire n355;
|
||||
wire n356;
|
||||
wire n357;
|
||||
wire n358;
|
||||
wire n359;
|
||||
wire n36;
|
||||
wire n360;
|
||||
wire n361;
|
||||
wire n362;
|
||||
wire n363;
|
||||
wire n364;
|
||||
wire n365;
|
||||
wire n366;
|
||||
wire n367;
|
||||
wire n368;
|
||||
wire n369;
|
||||
wire n37;
|
||||
wire n370;
|
||||
wire n371;
|
||||
wire n372;
|
||||
wire n373;
|
||||
wire n374;
|
||||
wire n375;
|
||||
wire n376;
|
||||
wire n377;
|
||||
wire n378;
|
||||
wire n38;
|
||||
wire n380;
|
||||
wire n381;
|
||||
wire n383;
|
||||
wire n384;
|
||||
wire n385;
|
||||
wire n386;
|
||||
wire n387;
|
||||
wire n388;
|
||||
wire n389;
|
||||
wire n39;
|
||||
wire n390;
|
||||
wire n391;
|
||||
wire n392;
|
||||
wire n393;
|
||||
wire n394;
|
||||
wire n395;
|
||||
wire n397;
|
||||
wire n398;
|
||||
wire n399;
|
||||
wire n40;
|
||||
wire n400;
|
||||
wire n401;
|
||||
wire n402;
|
||||
wire n403;
|
||||
wire n404;
|
||||
wire n405;
|
||||
wire n406;
|
||||
wire n407;
|
||||
wire n408;
|
||||
wire n409;
|
||||
wire n41;
|
||||
wire n410;
|
||||
wire n411;
|
||||
wire n412;
|
||||
wire n413;
|
||||
wire n414;
|
||||
wire n415;
|
||||
wire n416;
|
||||
wire n417;
|
||||
wire n418;
|
||||
wire n419;
|
||||
wire n42;
|
||||
wire n420;
|
||||
wire n421;
|
||||
wire n422;
|
||||
wire n423;
|
||||
wire n424;
|
||||
wire n425;
|
||||
wire n426;
|
||||
wire n427;
|
||||
wire n428;
|
||||
wire n43;
|
||||
wire n430;
|
||||
wire n431;
|
||||
wire n432;
|
||||
wire n433;
|
||||
wire n434;
|
||||
wire n436;
|
||||
wire n437;
|
||||
wire n438;
|
||||
wire n439;
|
||||
wire n44;
|
||||
wire n440;
|
||||
wire n441;
|
||||
wire n442;
|
||||
wire n443;
|
||||
wire n444;
|
||||
wire n445;
|
||||
wire n446;
|
||||
wire n447;
|
||||
wire n448;
|
||||
wire n449;
|
||||
wire n45;
|
||||
wire n450;
|
||||
wire n451;
|
||||
wire n452;
|
||||
wire n453;
|
||||
wire n454;
|
||||
wire n455;
|
||||
wire n456;
|
||||
wire n457;
|
||||
wire n458;
|
||||
wire n459;
|
||||
wire n46;
|
||||
wire n460;
|
||||
wire n461;
|
||||
wire n462;
|
||||
wire n463;
|
||||
wire n47;
|
||||
wire n48;
|
||||
wire n49;
|
||||
wire n50;
|
||||
wire n51;
|
||||
wire n52;
|
||||
wire n53;
|
||||
wire n54;
|
||||
wire n55;
|
||||
wire n56;
|
||||
wire n57;
|
||||
wire n58;
|
||||
wire n59;
|
||||
wire n60;
|
||||
wire n61;
|
||||
wire n62;
|
||||
wire n63;
|
||||
wire n64;
|
||||
wire n65;
|
||||
wire n66;
|
||||
wire n67;
|
||||
wire n68;
|
||||
wire n69;
|
||||
wire n70;
|
||||
wire n71;
|
||||
wire n72;
|
||||
wire n73;
|
||||
wire n74;
|
||||
wire n75;
|
||||
wire n76;
|
||||
wire n77;
|
||||
wire n78;
|
||||
wire n79;
|
||||
wire n80;
|
||||
wire n81;
|
||||
wire n82;
|
||||
wire n83;
|
||||
wire n84;
|
||||
wire n85;
|
||||
wire n86;
|
||||
wire n87;
|
||||
wire n88;
|
||||
wire n89;
|
||||
wire n90;
|
||||
wire n91;
|
||||
wire n92;
|
||||
wire n93;
|
||||
wire n94;
|
||||
wire n95;
|
||||
wire n96;
|
||||
wire n97;
|
||||
wire n98;
|
||||
wire n99;
|
||||
output o_0_;
|
||||
output o_1_;
|
||||
output o_2_;
|
||||
output o_3_;
|
||||
output o_4_;
|
||||
output o_5_;
|
||||
output o_6_;
|
||||
output o_7_;
|
||||
assign o_0_ = 64'hfffefffefffefefe >> { n30, n31, i_3_, n28, n29, n26 };
|
||||
assign n34 = 4'h8 >> { i_8_, i_12_ };
|
||||
assign n124 = 4'h2 >> { i_13_, i_12_ };
|
||||
assign n125 = 8'ha8 >> { n127, n126, n49 };
|
||||
assign n126 = 32'd128 >> { i_3_, i_13_, i_5_, i_4_, i_12_ };
|
||||
assign n127 = 32'd8 >> { i_3_, i_5_, i_13_, i_4_, i_11_ };
|
||||
assign n128 = 4'h8 >> { i_8_, i_7_ };
|
||||
assign n129 = 4'h8 >> { i_9_, i_12_ };
|
||||
assign n130 = 64'h0800080008080800 >> { n132, n131, n133, i_5_, i_6_, i_8_ };
|
||||
assign n131 = 8'h02 >> { i_9_, i_13_, i_11_ };
|
||||
assign n132 = 32'd4025479150 >> { i_3_, i_12_, i_4_, i_2_, i_0_ };
|
||||
assign n133 = 64'h0000000000008000 >> { i_0_, i_11_, i_2_, i_3_, i_12_, i_9_ };
|
||||
assign n35 = 4'h2 >> { i_8_, i_11_ };
|
||||
assign n134 = 64'h0015151515151515 >> { i_9_, n42, n91, n67, n136, n135 };
|
||||
assign n135 = 64'h0000000000000080 >> { i_10_, i_9_, i_13_, i_5_, i_4_, i_12_ };
|
||||
assign n136 = 32'd8 >> { i_10_, i_13_, i_12_, i_7_, i_11_ };
|
||||
assign n137 = 64'h0000000000000080 >> { i_8_, i_0_, i_12_, i_2_, i_1_, i_11_ };
|
||||
assign n138 = 64'h0000008000080088 >> { i_11_, i_12_, i_3_, i_8_, n99, n139 };
|
||||
assign n139 = 4'h1 >> { i_9_, i_13_ };
|
||||
assign n140 = 4'h8 >> { i_9_, i_1_ };
|
||||
assign n141 = 32'd2290122880 >> { i_8_, i_3_, i_7_, i_2_, i_0_ };
|
||||
assign n142 = 64'h0000000000000002 >> { i_2_, i_1_, i_0_, i_13_, i_11_, i_12_ };
|
||||
assign n143 = 64'h0000000000000080 >> { i_0_, i_4_, i_12_, i_1_, i_3_, i_11_ };
|
||||
assign n36 = 4'h1 >> { i_6_, i_5_ };
|
||||
assign n144 = 32'd269488400 >> { i_9_, n87, n142, i_8_, i_3_ };
|
||||
assign n145 = 32'd2290657416 >> { i_0_, i_2_, n88, n146, n101 };
|
||||
assign n146 = 64'h0000000000000008 >> { i_3_, i_10_, i_0_, i_13_, i_4_, i_12_ };
|
||||
assign n147 = 8'h02 >> { i_10_, i_13_, i_12_ };
|
||||
assign n148 = 8'h15 >> { i_12_, n71, n99 };
|
||||
assign n149 = 64'h4544454455554544 >> { n156, n154, n155, n150, n152, i_0_ };
|
||||
assign n150 = 32'd1162151237 >> { i_8_, i_3_, n151, i_7_, n56 };
|
||||
assign n151 = 4'h8 >> { i_2_, i_1_ };
|
||||
assign n152 = 64'he4e4e4e4e4e4e4e6 >> { i_11_, i_6_, i_1_, n153, i_13_, i_12_ };
|
||||
assign n153 = 64'h0000000000000001 >> { i_10_, i_6_, i_7_, i_2_, i_13_, i_11_ };
|
||||
assign n37 = 16'hdd0d >> { i_5_, i_1_, i_6_, i_0_ };
|
||||
assign n154 = 8'h01 >> { i_8_, i_6_, i_7_ };
|
||||
assign n155 = 4'h2 >> { i_12_, i_10_ };
|
||||
assign n156 = 64'hbfff9dddafafafad >> { i_4_, i_13_, i_3_, i_11_, i_10_, i_12_ };
|
||||
assign n157 = 32'd134785544 >> { i_1_, i_6_, i_2_, n54, n108 };
|
||||
assign n158 = 8'h80 >> { i_8_, i_6_, i_7_ };
|
||||
assign n159 = 4'h8 >> { i_3_, i_1_ };
|
||||
assign n160 = 16'h0008 >> { i_9_, i_13_, i_4_, i_11_ };
|
||||
assign n161 = 64'h0000000000000002 >> { i_2_, i_1_, i_0_, i_13_, i_12_, i_11_ };
|
||||
assign n162 = 32'd2829626024 >> { n61, n60, n59, n62, n113 };
|
||||
assign n163 = 32'd1145328708 >> { i_9_, n108, n50, n160, i_10_ };
|
||||
assign n38 = 64'h4555055544550455 >> { i_7_, n37, i_3_, i_2_, n39, i_12_ };
|
||||
assign n164 = 64'h0002000000020002 >> { n93, n90, n170, n165, n166, n173 };
|
||||
assign n165 = 32'd134776840 >> { i_8_, i_3_, i_7_, i_10_, n42 };
|
||||
assign n166 = 32'd2155915904 >> { i_6_, n168, n167, n169, i_1_ };
|
||||
assign n167 = 4'h8 >> { i_3_, i_2_ };
|
||||
assign n168 = 4'h2 >> { i_11_, i_10_ };
|
||||
assign n169 = 8'h02 >> { i_8_, i_11_, i_10_ };
|
||||
assign n170 = 32'd1426326532 >> { n171, i_8_, i_10_, n33, n172 };
|
||||
assign n171 = 8'h01 >> { i_10_, i_13_, i_12_ };
|
||||
assign n172 = 64'hfffdfffdfffddddd >> { i_7_, i_1_, i_6_, i_2_, i_3_, i_0_ };
|
||||
assign n173 = 64'h0ddddddddddddddd >> { n92, i_6_, i_2_, i_12_, n174, n160 };
|
||||
assign n39 = 4'h1 >> { n36, n40 };
|
||||
assign n174 = 64'hffefffefeeeeffef >> { i_1_, i_8_, i_3_, i_6_, i_2_, i_0_ };
|
||||
assign n175 = 64'h0000000800080008 >> { i_12_, i_8_, i_3_, i_6_, n73, n176 };
|
||||
assign n176 = 4'h1 >> { i_13_, i_11_ };
|
||||
assign n177 = 64'h0001000100010000 >> { i_4_, n180, n179, n153, i_5_, n178 };
|
||||
assign n178 = 64'haa20aa24aa21aa25 >> { i_11_, i_12_, i_13_, i_1_, i_6_, i_10_ };
|
||||
assign n179 = 64'h0000000000000002 >> { i_10_, i_8_, i_6_, i_7_, i_13_, i_4_ };
|
||||
assign n180 = 64'h7f7f7f7f7f7f7f77 >> { i_7_, i_8_, i_6_, i_12_, i_10_, i_11_ };
|
||||
assign n181 = 64'h0000000000000008 >> { i_8_, i_9_, i_13_, i_11_, i_6_, i_7_ };
|
||||
assign n182 = 4'h1 >> { i_13_, i_12_ };
|
||||
assign n183 = 64'h8080008000800080 >> { i_8_, i_3_, i_4_, i_9_, i_12_, i_11_ };
|
||||
assign n40 = 32'd1079002196 >> { i_5_, i_6_, i_0_, i_1_, i_7_ };
|
||||
assign n184 = 32'd2012686247 >> { i_13_, i_3_, i_4_, i_12_, i_9_ };
|
||||
assign n185 = 64'h8000800080000000 >> { i_11_, i_6_, i_7_, i_2_, i_12_, i_9_ };
|
||||
assign n186 = 32'd1431655764 >> { i_2_, i_13_, n65, i_9_, n187 };
|
||||
assign n187 = 8'h02 >> { i_10_, i_9_, n33 };
|
||||
assign n188 = 32'd1360072977 >> { i_5_, n111, i_6_, n189, i_1_ };
|
||||
assign n189 = 64'hfffffffd7fff7ffd >> { i_9_, i_10_, i_8_, i_7_, i_5_, n33 };
|
||||
assign n190 = 64'hfffffffeff7fff7e >> { i_9_, i_10_, i_13_, i_7_, i_5_, i_6_ };
|
||||
assign n191 = 32'd2004309879 >> { i_11_, n67, n182, i_10_, n140 };
|
||||
assign n192 = 32'd1 >> { n34, n35, i_10_, i_9_, i_13_ };
|
||||
assign n193 = 64'h7ff7fff77fffffff >> { i_11_, i_12_, i_6_, i_7_, i_10_, i_9_ };
|
||||
assign n41 = 32'd2863311522 >> { i_3_, n34, n35, n27, n42 };
|
||||
assign n194 = 64'h8088828a828a828a >> { i_3_, n31, n70, i_13_, i_11_, n195 };
|
||||
assign n195 = 32'd2004317959 >> { i_4_, i_11_, n34, n108, n50 };
|
||||
assign n196 = 64'heeffeef5e6f7e6f5 >> { i_10_, i_3_, i_11_, i_13_, i_4_, i_12_ };
|
||||
assign n197 = 64'hffef0000ffe70000 >> { i_13_, n198, i_2_, i_3_, i_4_, i_11_ };
|
||||
assign n198 = 64'hffbfffbfdd9dffbf >> { n70, i_3_, n31, n33, i_11_, i_10_ };
|
||||
assign n199 = 64'hfd00fd00fd00ff00 >> { i_7_, n200, i_2_, n201, n187, n202 };
|
||||
assign n200 = 64'heeeeeeefeefeeeff >> { n182, n176, n33, i_8_, i_10_, i_3_ };
|
||||
assign n201 = 32'd286331152 >> { i_13_, n35, n34, n33, n27 };
|
||||
assign n202 = 64'h7f7f7f7f7f7f7f7e >> { i_13_, i_12_, i_11_, i_3_, i_10_, i_9_ };
|
||||
assign n203 = 64'h0080a2a200a2a2a2 >> { n53, n124, n70, n204, i_2_, n205 };
|
||||
assign n42 = 8'h80 >> { i_2_, i_1_, i_0_ };
|
||||
assign n204 = 64'hddffdddfddfddddd >> { i_11_, i_12_, i_4_, i_8_, i_3_, n139 };
|
||||
assign n205 = 64'hfffdfffd7f7dfffd >> { i_13_, i_8_, i_12_, i_2_, i_4_, i_3_ };
|
||||
assign n206 = 32'd2004289399 >> { i_12_, i_3_, n207, n105, n26 };
|
||||
assign n207 = 8'h80 >> { i_8_, i_9_, i_7_ };
|
||||
assign n208 = 16'h5515 >> { n77, n78, n81, i_13_ };
|
||||
assign n209 = 32'd526344 >> { i_12_, i_8_, i_6_, n73, n176 };
|
||||
assign n210 = 8'h15 >> { n111, n158, n181 };
|
||||
assign n211 = 4'h8 >> { i_10_, i_9_ };
|
||||
assign n212 = 64'hfa50fa50c800c040 >> { i_13_, i_7_, i_9_, i_10_, i_2_, i_6_ };
|
||||
assign n213 = 32'd33685506 >> { n217, n216, n214, n215, n218 };
|
||||
assign n43 = 32'd1467441023 >> { i_1_, i_0_, i_6_, i_5_, i_2_ };
|
||||
assign n214 = 64'h0800080008000808 >> { i_3_, i_11_, i_4_, i_8_, n73, n124 };
|
||||
assign n215 = 8'h08 >> { i_7_, n155, i_2_ };
|
||||
assign n216 = 4'h2 >> { i_12_, i_11_ };
|
||||
assign n217 = 64'hfdd0fdddffd0ffdd >> { i_10_, i_2_, i_4_, i_8_, i_7_, i_3_ };
|
||||
assign n218 = 32'd3149642681 >> { i_7_, i_2_, i_11_, i_13_, i_12_ };
|
||||
assign n219 = 4'h2 >> { i_11_, n124 };
|
||||
assign n220 = 64'haa08aa00aa08aa08 >> { i_2_, n73, n74, i_1_, n53, n124 };
|
||||
assign n221 = 64'h5454545455545454 >> { i_4_, n227, n216, n226, n222, i_1_ };
|
||||
assign n222 = 32'd1157973317 >> { n224, n223, n225, i_7_, i_6_ };
|
||||
assign n223 = 32'd2155905160 >> { i_3_, i_12_, i_4_, n131, i_8_ };
|
||||
assign n26 = 4'h2 >> { n27, i_2_ };
|
||||
assign n44 = 32'd1465341951 >> { i_5_, i_0_, i_6_, i_1_, i_7_ };
|
||||
assign n224 = 64'h7077f0ff70777077 >> { i_4_, n31, n108, i_2_, n96, i_3_ };
|
||||
assign n225 = 32'd3104422667 >> { n53, n90, i_2_, i_13_, i_11_ };
|
||||
assign n226 = 32'd134744064 >> { i_2_, i_7_, i_11_, n103, n34 };
|
||||
assign n227 = 8'h02 >> { i_8_, i_7_, i_6_ };
|
||||
assign n228 = 64'h0200020002020200 >> { i_3_, n108, n160, i_2_, i_1_, i_8_ };
|
||||
assign n229 = 64'h2200222022202220 >> { i_2_, i_7_, n230, n35, i_10_, n33 };
|
||||
assign n230 = 8'h02 >> { i_3_, i_2_, i_1_ };
|
||||
assign n231 = 64'h0800080008080800 >> { i_4_, i_11_, i_3_, i_8_, n151, i_10_ };
|
||||
assign n232 = 64'h8000800080008808 >> { i_3_, i_11_, i_4_, i_8_, n54, n124 };
|
||||
assign n233 = 32'd572662434 >> { i_8_, i_6_, n110, n234, n230 };
|
||||
assign n45 = 64'hff3f5f0f77335501 >> { i_6_, i_7_, i_5_, i_1_, i_2_, i_0_ };
|
||||
assign n234 = 64'hfdfffdfffdfdfdff >> { i_12_, i_8_, i_4_, i_13_, i_9_, i_6_ };
|
||||
assign n235 = 64'h1555555555555555 >> { i_3_, i_7_, i_12_, n56, n30, n236 };
|
||||
assign n236 = 64'h0008000000080008 >> { i_7_, i_9_, i_6_, i_11_, i_2_, i_10_ };
|
||||
assign n237 = 64'h0000000000000080 >> { i_10_, i_9_, i_13_, i_6_, i_4_, i_12_ };
|
||||
assign n238 = 64'h8880080008000800 >> { n105, i_1_, i_2_, i_12_, i_9_, n82 };
|
||||
assign n239 = 16'h0080 >> { i_6_, i_7_, n34, n168 };
|
||||
assign n240 = 32'd1431393360 >> { i_11_, i_12_, i_1_, i_6_, n28 };
|
||||
assign n241 = 64'h2000200022222000 >> { i_2_, n70, n27, n53, i_1_, n124 };
|
||||
assign n242 = 32'd2861206154 >> { n243, n49, n245, n54, n244 };
|
||||
assign n243 = 8'h08 >> { i_8_, i_6_, i_7_ };
|
||||
assign n46 = 64'h8888880080808000 >> { i_6_, i_0_, i_5_, i_1_, i_3_, i_7_ };
|
||||
assign n244 = 8'h80 >> { i_3_, i_5_, i_4_ };
|
||||
assign n245 = 64'hfffffffffffffbd7 >> { i_8_, i_0_, i_6_, i_7_, i_2_, i_1_ };
|
||||
assign n246 = 64'h0000000080000000 >> { i_9_, i_3_, i_7_, i_1_, i_0_, i_4_ };
|
||||
assign n247 = 64'hfffffffffdfff77f >> { i_8_, i_2_, i_6_, i_1_, i_7_, i_0_ };
|
||||
assign n248 = 64'h2222222222222202 >> { n258, n254, n256, n249, i_5_, n105 };
|
||||
assign n249 = 64'h00110fff01110fff >> { n171, n251, n250, n252, n161, n253 };
|
||||
assign n250 = 8'h08 >> { i_2_, i_1_, i_0_ };
|
||||
assign n251 = 8'h08 >> { i_6_, i_8_, i_7_ };
|
||||
assign n252 = 64'h0000000000000002 >> { i_10_, i_6_, i_7_, i_13_, i_11_, i_8_ };
|
||||
assign n253 = 64'h0000000000000008 >> { i_10_, i_1_, i_13_, i_11_, i_2_, i_0_ };
|
||||
assign n47 = 64'h777f7f7f77ff7fff >> { i_1_, i_0_, i_6_, i_5_, i_3_, i_2_ };
|
||||
assign n254 = 16'ha888 >> { n171, n255, n107, n158 };
|
||||
assign n255 = 8'h08 >> { i_1_, i_2_, i_0_ };
|
||||
assign n256 = 32'd2290122880 >> { i_10_, i_6_, n158, n108, n257 };
|
||||
assign n257 = 8'h02 >> { i_1_, i_0_, i_2_ };
|
||||
assign n258 = 8'h80 >> { n99, n87, n259 };
|
||||
assign n259 = 8'h08 >> { i_7_, i_6_, i_8_ };
|
||||
assign n260 = 16'h0008 >> { i_13_, i_11_, i_12_, i_10_ };
|
||||
assign n261 = 8'h02 >> { i_2_, i_0_, i_1_ };
|
||||
assign n262 = 8'h02 >> { i_6_, i_7_, i_8_ };
|
||||
assign n263 = 64'haaa8a8a8a8a8a8a8 >> { i_8_, i_5_, n82, n265, n264, n266 };
|
||||
assign n48 = 4'h1 >> { i_3_, i_2_ };
|
||||
assign n264 = 64'h8888800080008000 >> { i_1_, i_5_, i_6_, i_0_, i_10_, n167 };
|
||||
assign n265 = 32'd134742024 >> { i_5_, i_0_, i_11_, i_6_, n48 };
|
||||
assign n266 = 4'h2 >> { i_12_, i_13_ };
|
||||
assign n267 = 64'h5555555515555555 >> { i_2_, n270, n36, n128, n105, n268 };
|
||||
assign n268 = 64'h0000008000080088 >> { i_11_, i_12_, i_4_, i_5_, n269, i_10_ };
|
||||
assign n269 = 8'h80 >> { i_3_, i_2_, i_1_ };
|
||||
assign n270 = 16'h0002 >> { i_10_, i_13_, i_12_, i_11_ };
|
||||
assign n271 = 64'h0002020202020202 >> { i_6_, n279, n278, n272, n273, n274 };
|
||||
assign n272 = 64'h0000080000000880 >> { i_13_, i_5_, i_10_, i_4_, n154, i_3_ };
|
||||
assign n273 = 8'h80 >> { n158, n139, n244 };
|
||||
assign n49 = 8'h01 >> { i_2_, i_1_, i_0_ };
|
||||
assign n274 = 64'h0000777077707770 >> { n275, n276, n202, i_4_, n243, n277 };
|
||||
assign n275 = 32'd128 >> { i_7_, i_12_, i_10_, i_13_, i_8_ };
|
||||
assign n276 = 8'h01 >> { i_3_, i_6_, i_5_ };
|
||||
assign n277 = 64'h0000000000000080 >> { i_3_, i_9_, i_13_, i_5_, i_4_, i_11_ };
|
||||
assign n278 = 4'h2 >> { i_3_, i_5_ };
|
||||
assign n279 = 32'd128 >> { i_8_, i_11_, i_7_, i_13_, i_9_ };
|
||||
assign n280 = 32'd4278189309 >> { n210, n209, i_3_, i_4_, i_5_ };
|
||||
assign n281 = 64'h2020202020202022 >> { i_13_, n283, i_10_, n282, i_9_, i_4_ };
|
||||
assign n282 = 64'h8000800080808000 >> { i_10_, i_1_, i_6_, n128, n124, i_5_ };
|
||||
assign n283 = 32'd125269879 >> { i_2_, i_0_, n159, n40, n35 };
|
||||
assign n50 = 4'h2 >> { i_3_, i_8_ };
|
||||
assign n284 = 8'h02 >> { i_8_, i_6_, i_7_ };
|
||||
assign n285 = 64'hfff7ffffffff7ff7 >> { i_6_, i_1_, i_7_, i_2_, i_8_, i_0_ };
|
||||
assign n286 = 64'h0082000200800000 >> { n108, n131, i_5_, i_3_, i_4_, n262 };
|
||||
assign n287 = 64'h0000077707770777 >> { n288, n276, n243, n289, n154, n127 };
|
||||
assign n288 = 16'h0002 >> { i_8_, i_7_, i_11_, i_13_ };
|
||||
assign n289 = 64'h0000000000000008 >> { i_3_, i_13_, i_4_, i_11_, i_12_, i_5_ };
|
||||
assign n290 = 64'h0ddddddddddddddd >> { n129, n91, n259, n176, n291, n266 };
|
||||
assign n291 = 64'haeeeeeeeeeeeeeee >> { i_7_, i_5_, i_8_, i_6_, i_11_, i_3_ };
|
||||
assign n292 = 32'd2105540095 >> { n294, n293, i_6_, i_5_, i_3_ };
|
||||
assign n293 = 32'd128 >> { i_7_, i_11_, i_8_, i_13_, i_9_ };
|
||||
assign n51 = 32'd1381653 >> { i_5_, i_0_, i_6_, i_1_, i_3_ };
|
||||
assign n294 = 32'd128 >> { i_8_, i_12_, i_7_, i_13_, i_10_ };
|
||||
assign n295 = 8'h08 >> { i_11_, i_9_, i_8_ };
|
||||
assign n296 = 64'h0000000000000002 >> { i_3_, i_6_, i_2_, i_5_, i_11_, i_10_ };
|
||||
assign n297 = 32'd2004289399 >> { n298, n31, i_10_, n92, n51 };
|
||||
assign n298 = 64'h015533770f5f3fff >> { i_6_, i_7_, i_5_, i_1_, i_2_, i_0_ };
|
||||
assign n299 = 64'hddcdefcdffefefef >> { n295, i_6_, i_1_, n169, i_2_, i_5_ };
|
||||
assign n300 = 64'h0000dd0ddd0ddd0d >> { n262, n270, n302, n301, n247, n87 };
|
||||
assign n301 = 16'h0002 >> { i_9_, i_13_, i_12_, i_11_ };
|
||||
assign n302 = 64'hffffffff7dffff7f >> { i_0_, i_6_, i_1_, i_2_, i_7_, i_8_ };
|
||||
assign n303 = 64'h0000dd0ddd0ddd0d >> { n181, i_12_, n285, n301, n245, n87 };
|
||||
assign n52 = 32'd1162149957 >> { i_5_, i_0_, i_1_, i_6_, i_3_ };
|
||||
assign n304 = 16'h0002 >> { i_10_, i_9_, i_13_, i_11_ };
|
||||
assign n305 = 64'hdddfdfdfddffdfff >> { i_1_, i_3_, i_6_, i_8_, i_9_, i_7_ };
|
||||
assign n306 = 32'd8 >> { i_10_, i_7_, i_13_, n36, n35 };
|
||||
assign n307 = 64'haaaaaaaaaaaaaaa2 >> { n316, n318, n314, n315, n308, n257 };
|
||||
assign n308 = 64'h0000077707770777 >> { n312, n310, n311, n284, n309, n313 };
|
||||
assign n309 = 8'h80 >> { i_3_, i_6_, i_5_ };
|
||||
assign n310 = 16'h0080 >> { i_11_, i_7_, i_13_, i_9_ };
|
||||
assign n311 = 64'h0000000000000008 >> { i_3_, i_9_, i_5_, i_13_, i_4_, i_11_ };
|
||||
assign n312 = 16'h0009 >> { i_6_, i_5_, i_3_, i_8_ };
|
||||
assign n313 = 32'd8 >> { i_8_, i_7_, i_12_, i_13_, i_10_ };
|
||||
assign n53 = 4'h2 >> { i_3_, i_4_ };
|
||||
assign n314 = 32'd32768 >> { i_5_, n105, n113, n227, n155 };
|
||||
assign n315 = 16'h8000 >> { n176, n91, n129, n251 };
|
||||
assign n316 = 4'h8 >> { n260, n317 };
|
||||
assign n317 = 64'h0000000000000008 >> { i_8_, i_6_, i_7_, i_4_, i_5_, i_3_ };
|
||||
assign n318 = 8'h80 >> { n278, n275, i_6_ };
|
||||
assign n319 = 64'hffdfffdfddddffdf >> { i_7_, i_1_, i_6_, i_2_, i_4_, i_0_ };
|
||||
assign n320 = 32'd1431639381 >> { i_7_, n36, n321, n30, n322 };
|
||||
assign n321 = 4'h2 >> { i_11_, i_13_ };
|
||||
assign n322 = 32'd128 >> { i_12_, i_11_, i_13_, i_10_, i_9_ };
|
||||
assign n323 = 8'h02 >> { i_3_, i_5_, i_6_ };
|
||||
assign n27 = 8'h1b >> { i_9_, i_10_, i_7_ };
|
||||
assign n54 = 8'h08 >> { i_9_, i_6_, i_7_ };
|
||||
assign n324 = 8'h02 >> { i_3_, i_6_, i_5_ };
|
||||
assign n325 = 16'h8000 >> { n128, n266, n324, i_10_ };
|
||||
assign n326 = 4'h8 >> { n227, n311 };
|
||||
assign n327 = 32'd8 >> { i_9_, i_13_, i_4_, i_3_, i_5_ };
|
||||
assign n328 = 64'hffff7fff7fffffff >> { i_3_, i_8_, n36, i_10_, n266, i_7_ };
|
||||
assign n329 = 32'd1414813012 >> { n58, n112, n331, n330, i_5_ };
|
||||
assign n330 = 64'h0080008088880080 >> { i_8_, n151, i_6_, n167, n304, i_4_ };
|
||||
assign n331 = 32'd128 >> { i_7_, i_11_, n269, n30, n103 };
|
||||
assign n332 = 16'h2aaa >> { n333, n334, n335, n93 };
|
||||
assign n333 = 64'he7f7efffefffefff >> { n207, n321, n275, i_5_, i_6_, i_3_ };
|
||||
assign n55 = 4'h2 >> { n56, i_5_ };
|
||||
assign n334 = 16'h0777 >> { n279, n323, n243, n311 };
|
||||
assign n335 = 64'h7777777707777777 >> { i_6_, i_3_, n313, i_5_, n155, n317 };
|
||||
assign n336 = 64'h0000077707770777 >> { n323, n275, n279, n324, n284, n277 };
|
||||
assign n337 = 32'd2860548224 >> { n155, n227, n101, n169, n327 };
|
||||
assign n338 = 64'h8000800080008888 >> { n45, i_8_, n36, n167, n321, n211 };
|
||||
assign n339 = 64'h5f4c0f0c5d4c0d0c >> { i_7_, n37, n45, n26, i_8_, n36 };
|
||||
assign n340 = 64'h0222022213330222 >> { n62, n58, n71, n70, n84, i_5_ };
|
||||
assign n341 = 64'h0000000000000080 >> { n68, n72, n80, n63, n75, n69 };
|
||||
assign o_3_ = 16'h7fff >> { n340, n344, n341, o_2_ };
|
||||
assign n343 = 64'h5707130355051101 >> { i_8_, i_6_, i_7_, i_2_, i_1_, i_3_ };
|
||||
assign n56 = 4'h2 >> { i_6_, i_1_ };
|
||||
assign n344 = 16'hff7f >> { i_9_, n343, i_5_, i_4_ };
|
||||
assign n345 = 64'h2030253522322737 >> { i_2_, i_10_, i_3_, i_7_, i_9_, i_8_ };
|
||||
assign n346 = 32'd1431655701 >> { i_1_, i_0_, i_4_, n345, n79 };
|
||||
assign n347 = 64'ha2a2eea2a0a0eca0 >> { n49, n148, n139, n85, i_8_, n147 };
|
||||
assign n348 = 64'h55005d085d085d08 >> { i_4_, n347, n164, n149, n444, i_5_ };
|
||||
assign n349 = 64'hfaaaf888f888f888 >> { i_10_, n42, n109, n108, n107, n105 };
|
||||
assign n350 = 64'h5555454d5555004c >> { i_1_, i_5_, i_6_, i_4_, i_3_, i_8_ };
|
||||
assign n351 = 64'h0f008f881f119f99 >> { i_11_, i_12_, i_4_, i_3_, i_5_, i_7_ };
|
||||
assign n352 = 64'h0000000800800088 >> { i_9_, i_10_, i_13_, i_5_, n351, n99 };
|
||||
assign n353 = 64'h0081008188891191 >> { i_2_, i_6_, i_1_, i_7_, i_8_, i_5_ };
|
||||
assign n57 = 8'h01 >> { i_9_, i_7_, i_11_ };
|
||||
assign n354 = 64'hff77fff7ff7fffff >> { n110, n111, i_3_, i_8_, i_0_, n353 };
|
||||
assign n355 = 64'h0808080808088808 >> { n76, n84, n346, n112, n114, n354 };
|
||||
assign n356 = 64'h4602020244000002 >> { i_4_, i_3_, i_11_, i_13_, i_10_, i_12_ };
|
||||
assign n357 = 64'h80aa008080800080 >> { i_6_, i_3_, i_4_, i_1_, i_8_, i_5_ };
|
||||
assign n358 = 16'h8000 >> { n357, i_7_, i_0_, n129 };
|
||||
assign n359 = 16'h0008 >> { i_3_, i_13_, i_0_, i_4_ };
|
||||
assign n360 = 64'h058045c405004544 >> { i_11_, i_1_, i_6_, i_2_, i_7_, i_9_ };
|
||||
assign n361 = 64'he8a8c888e0a0c000 >> { i_8_, i_7_, i_6_, i_3_, i_2_, i_1_ };
|
||||
assign n362 = 64'h5444444444444444 >> { i_9_, i_0_, i_12_, n361, n137, i_4_ };
|
||||
assign n363 = 64'hd8d85058c8884008 >> { i_2_, i_4_, i_3_, i_12_, i_8_, i_11_ };
|
||||
assign n58 = 8'h51 >> { n61, n60, n59 };
|
||||
assign n364 = 64'h9999b9999888a888 >> { n140, i_9_, i_7_, n363, i_13_, i_11_ };
|
||||
assign n365 = 32'd2867571439 >> { i_6_, n157, i_13_, n364, i_0_ };
|
||||
assign n366 = 64'hdf7fdf7f5777df7f >> { i_6_, i_3_, i_8_, i_1_, i_0_, i_2_ };
|
||||
assign n367 = 64'h55d5f5f54480f5f5 >> { n158, n366, i_7_, i_10_, n159, i_0_ };
|
||||
assign n368 = 32'd4286447487 >> { i_12_, i_4_, i_0_, i_11_, n367 };
|
||||
assign n369 = 64'h0000000000000008 >> { i_3_, i_9_, i_0_, i_13_, i_4_, i_11_ };
|
||||
assign n370 = 32'd926381879 >> { i_6_, i_1_, n369, i_7_, n161 };
|
||||
assign n371 = 64'h2050205022722050 >> { i_11_, n182, i_8_, n33, i_9_, i_6_ };
|
||||
assign n372 = 32'd4286578557 >> { i_10_, i_2_, i_6_, i_5_, n371 };
|
||||
assign n373 = 32'd1434408318 >> { i_11_, i_13_, i_1_, i_6_, i_9_ };
|
||||
assign n59 = 32'd2 >> { i_10_, i_8_, i_7_, i_1_, i_4_ };
|
||||
assign n374 = 32'd2863311522 >> { i_2_, i_13_, i_12_, n54, n373 };
|
||||
assign n375 = 32'd1997010695 >> { i_2_, n190, n53, n129, n94 };
|
||||
assign n376 = 32'd2147518472 >> { n192, n193, i_3_, n375, n191 };
|
||||
assign n377 = 64'hfa52aa02fa72aa22 >> { n30, n33, i_12_, i_3_, i_13_, i_7_ };
|
||||
assign n378 = 64'hfbddeaccf9dde8cc >> { n196, n194, n377, i_8_, i_2_, i_7_ };
|
||||
assign o_6_ = 64'hff77fff7ff7fffff >> { n197, n203, n199, i_7_, n378, n206 };
|
||||
assign n380 = 64'h92b293b312321333 >> { i_9_, n219, n155, i_3_, i_8_, i_2_ };
|
||||
assign n381 = 64'h1150554011105540 >> { i_12_, n380, i_1_, n213, i_8_, n220 };
|
||||
assign o_5_ = 64'hfff5fffdfff7ffff >> { n391, n381, n386, n221, i_6_, n393 };
|
||||
assign n383 = 32'd538976290 >> { i_7_, i_8_, i_12_, i_4_, i_11_ };
|
||||
assign n60 = 8'h02 >> { i_10_, i_2_, i_4_ };
|
||||
assign n384 = 64'h6e6e6e6e446e6e6e >> { n53, i_12_, n207, i_9_, n383, i_6_ };
|
||||
assign n385 = 16'h2131 >> { i_10_, n384, n212, i_6_ };
|
||||
assign n386 = 32'd2863311402 >> { n208, n388, n385, n186, i_1_ };
|
||||
assign n387 = 64'he444e040e040e040 >> { i_6_, n31, i_12_, n211, i_11_, i_7_ };
|
||||
assign n388 = 32'd3722304909 >> { n192, n209, n210, n387, i_3_ };
|
||||
assign n389 = 64'h1113131313131313 >> { i_12_, i_7_, i_3_, n167, n231, n169 };
|
||||
assign n390 = 64'h9dddbfffbfffbfff >> { n94, n105, n53, n131, i_7_, i_1_ };
|
||||
assign n391 = 32'd8 >> { n163, n228, n229, n390, n389 };
|
||||
assign n392 = 64'hffaeaeaeaeaeaeae >> { n34, i_2_, n28, n240, n167, n239 };
|
||||
assign n393 = 64'h0008000800000008 >> { i_4_, n392, n232, n233, n450, n235 };
|
||||
assign n61 = 16'heac8 >> { i_1_, i_8_, i_3_, i_6_ };
|
||||
assign n394 = 64'hff81ff01ff80ff00 >> { n30, n31, n211, i_5_, i_7_, i_6_ };
|
||||
assign n395 = 64'h55d5d5d5d5d5d5d5 >> { i_13_, i_3_, n394, n280, n271, n42 };
|
||||
assign o_7_ = 64'hffffffff7fffffff >> { n403, n398, n395, n455, n458, n463 };
|
||||
assign n397 = 64'h2222222202222222 >> { i_9_, i_4_, i_5_, n343, n72, n69 };
|
||||
assign n398 = 32'd232588629 >> { n75, n452, n147, n397, n112 };
|
||||
assign n399 = 64'ha8cca0cc88cc80cc >> { i_8_, i_6_, i_5_, i_1_, i_3_, i_2_ };
|
||||
assign n400 = 64'h00ff007f00f70077 >> { n247, i_9_, n246, i_5_, n399, i_4_ };
|
||||
assign n401 = 32'd2726330496 >> { n87, n261, n42, i_6_, i_8_ };
|
||||
assign n402 = 64'hf970b920d9509900 >> { n49, n257, n401, n260, i_7_, i_6_ };
|
||||
assign n403 = 64'hff00fd00fd00fd00 >> { n91, n402, i_9_, n248, n263, n267 };
|
||||
assign n62 = 32'd2 >> { i_10_, i_8_, i_6_, i_7_, i_4_ };
|
||||
assign n404 = 64'h7f7f7f7f557f7f7f >> { i_11_, i_7_, n52, n46, i_10_, i_9_ };
|
||||
assign n405 = 64'h64ec74fc44cc54dc >> { n73, i_2_, n285, i_1_, i_5_, i_4_ };
|
||||
assign n406 = 64'h88a8002000200020 >> { n99, n284, i_0_, n243, i_5_, n155 };
|
||||
assign n407 = 32'd2155905024 >> { i_4_, n406, i_3_, n405, n131 };
|
||||
assign n408 = 64'h0042004000400040 >> { i_10_, i_11_, i_13_, i_4_, i_12_, i_3_ };
|
||||
assign n409 = 64'hfffffff77fffffff >> { i_3_, i_8_, i_6_, i_5_, i_7_, n408 };
|
||||
assign n410 = 64'haaaaaaaa2aaaaaaa >> { n286, n409, n287, n290, n292, n49 };
|
||||
assign n411 = 64'h2202020202020202 >> { i_7_, i_1_, i_0_, n43, i_9_, n87 };
|
||||
assign n412 = 64'h0500454415115555 >> { n300, n303, n411, i_8_, i_5_, i_4_ };
|
||||
assign n413 = 64'hae2eae2eff7fae2e >> { i_7_, i_3_, i_9_, i_8_, i_2_, i_6_ };
|
||||
assign n63 = 16'h1011 >> { n67, n65, n66, n64 };
|
||||
assign n414 = 64'hdd7f5d5fff7f5f5f >> { n304, n305, n413, n147, i_6_, i_0_ };
|
||||
assign n415 = 8'ha2 >> { n306, n414, i_4_ };
|
||||
assign n416 = 64'h7745774577557745 >> { i_1_, i_6_, i_4_, i_2_, i_5_, i_3_ };
|
||||
assign n417 = 64'h5d5d5d5d595d5d5d >> { i_9_, n227, n260, i_4_, i_5_, i_2_ };
|
||||
assign n418 = 16'h0080 >> { i_12_, i_1_, i_6_, n207 };
|
||||
assign n419 = 16'hfff7 >> { i_7_, n37, n211, n321 };
|
||||
assign n420 = 64'h0880aaaa8880aaaa >> { n418, i_3_, n417, i_2_, n419, n320 };
|
||||
assign n421 = 64'h15373737153f3f3f >> { n168, n243, n155, n277, n227, n327 };
|
||||
assign n422 = 64'hf5fdf7fff7fff7ff >> { i_9_, n288, n293, i_6_, i_3_, i_5_ };
|
||||
assign n423 = 64'h929ab2ba828aa2aa >> { n288, n293, n294, i_6_, i_5_, i_3_ };
|
||||
assign n28 = 16'ha820 >> { i_9_, i_10_, i_6_, i_1_ };
|
||||
assign n64 = 32'd1 >> { n34, n35, i_3_, i_10_, i_9_ };
|
||||
assign n424 = 64'haaaaaa28aaaaaa20 >> { i_9_, n326, n325, i_3_, n423, n261 };
|
||||
assign n425 = 64'hd7f7dfffdfffdfff >> { i_8_, n310, n313, i_6_, i_5_, i_3_ };
|
||||
assign n426 = 32'd286347537 >> { n337, n336, n425, n255, n338 };
|
||||
assign n427 = 64'h2022202000220020 >> { n44, n27, i_8_, n43, n46, n47 };
|
||||
assign n428 = 64'h555d050d557f050f >> { i_11_, n427, i_0_, i_12_, i_5_, n28 };
|
||||
assign o_2_ = 64'hfdfdfffdfffdfffd >> { n38, n339, i_11_, n41, n29, n428 };
|
||||
assign n430 = 64'h3120312075753120 >> { i_10_, n33, n110, n108, i_3_, i_8_ };
|
||||
assign n431 = 64'h0022202202222222 >> { n99, n49, n430, i_8_, n163, n370 };
|
||||
assign n432 = 32'd2863327914 >> { n162, n431, n365, n368, i_5_ };
|
||||
assign n433 = 64'hfdf5fff7fff7fff7 >> { i_0_, n94, n86, i_7_, i_5_, n350 };
|
||||
assign n65 = 16'hfdec >> { i_11_, i_12_, i_10_, i_7_ };
|
||||
assign n434 = 64'h0000000000008000 >> { n95, n352, n438, n118, n355, n441 };
|
||||
assign o_4_ = 64'hffffffffffff7fff >> { n89, n447, n434, n348, n433, n432 };
|
||||
assign n436 = 64'h0000200000002008 >> { i_13_, i_11_, i_3_, i_9_, i_5_, i_12_ };
|
||||
assign n437 = 64'ha0e02060a0f12071 >> { n106, i_6_, i_0_, n436, i_1_, i_5_ };
|
||||
assign n438 = 64'h0000aa2a0000bf7f >> { n349, n100, i_8_, n437, i_7_, i_5_ };
|
||||
assign n439 = 64'ha8982010a898a898 >> { i_4_, i_3_, i_10_, n356, i_0_, i_2_ };
|
||||
assign n440 = 64'h8006000680040004 >> { n94, n129, i_6_, i_8_, i_5_, i_0_ };
|
||||
assign n441 = 64'h0000000200020002 >> { n440, n439, n125, n130, n358, n134 };
|
||||
assign n442 = 64'ha2aab3bfb3bfb3bf >> { i_6_, n140, n359, i_9_, n360, i_12_ };
|
||||
assign n443 = 32'd11250603 >> { n141, n140, n143, n142, i_7_ };
|
||||
assign n66 = 64'h0000000200010003 >> { i_11_, i_12_, i_1_, i_5_, i_10_, i_6_ };
|
||||
assign n444 = 64'h0000000000000008 >> { n138, n144, n145, n362, n442, n443 };
|
||||
assign n445 = 64'h4455000544550405 >> { n111, i_3_, n158, n181, n184, n185 };
|
||||
assign n446 = 64'h22222222f2222222 >> { n183, i_5_, n445, n374, n175, n177 };
|
||||
assign n447 = 64'haaaaaaaa2aaaaaaa >> { n188, n186, n446, n372, n376, i_0_ };
|
||||
assign n448 = 64'h0000ff080008ff08 >> { i_2_, i_7_, i_3_, i_10_, i_8_, n182 };
|
||||
assign n449 = 64'h51115111d9995111 >> { i_12_, n31, i_1_, n30, i_3_, i_6_ };
|
||||
assign n450 = 64'h0011011101110111 >> { n449, n448, i_11_, n241, n238, n237 };
|
||||
assign n451 = 64'h0100044002200880 >> { i_6_, i_7_, i_0_, i_5_, i_2_, i_1_ };
|
||||
assign n452 = 32'd4223384507 >> { n53, i_8_, n451, n400, n242 };
|
||||
assign n453 = 64'h9810fa50fc30fe70 >> { i_2_, i_1_, n295, n169, i_6_, i_7_ };
|
||||
assign n67 = 16'h0111 >> { i_1_, i_6_, i_2_, i_5_ };
|
||||
assign n454 = 64'hff7fff7fffffff7f >> { i_0_, n453, n296, n297, n299, n404 };
|
||||
assign n455 = 32'd65793 >> { n266, n454, n281, n407, n410 };
|
||||
assign n456 = 64'h0200020002020200 >> { i_12_, i_8_, i_3_, i_13_, i_9_, i_11_ };
|
||||
assign n457 = 64'hfffd77fdfdfd75fd >> { n319, n302, n416, i_10_, i_3_, n456 };
|
||||
assign n458 = 64'h0008000000080008 >> { n412, i_3_, n307, n415, n457, n420 };
|
||||
assign n459 = 64'h77f77fff7fff7fff >> { i_9_, n288, n293, i_3_, i_6_, i_5_ };
|
||||
assign n460 = 16'hd555 >> { n459, n328, n421, n250 };
|
||||
assign n461 = 64'h7fff7fff6eee7fff >> { i_6_, n277, i_10_, n323, i_7_, i_8_ };
|
||||
assign n462 = 64'h22ffa2ff20ffa0ff >> { i_8_, n97, n99, n461, n266, n422 };
|
||||
assign n463 = 64'h0000000000000080 >> { n329, n332, n424, n462, n426, n460 };
|
||||
assign n68 = 64'h0101010111010101 >> { i_12_, i_7_, n55, n65, i_2_, i_9_ };
|
||||
assign n69 = 32'd4160223061 >> { i_10_, i_9_, i_3_, n49, i_4_ };
|
||||
assign n70 = 8'h08 >> { i_9_, i_8_, i_4_ };
|
||||
assign n71 = 16'h8cae >> { i_1_, i_2_, i_6_, i_7_ };
|
||||
assign n72 = 64'h5500554055405540 >> { i_1_, i_6_, n74, n53, n73, i_5_ };
|
||||
assign n73 = 4'h1 >> { i_10_, i_7_ };
|
||||
assign n29 = 16'ha820 >> { i_9_, i_10_, i_5_, i_0_ };
|
||||
assign n74 = 32'd2 >> { i_10_, i_8_, i_2_, i_1_, i_4_ };
|
||||
assign n75 = 4'h2 >> { n76, n346 };
|
||||
assign n76 = 8'h45 >> { n78, n77, i_0_ };
|
||||
assign n77 = 64'h0000000200800082 >> { i_9_, i_10_, i_2_, i_6_, i_8_, i_4_ };
|
||||
assign n78 = 64'hfffffffdff7fff7d >> { i_9_, i_10_, i_3_, i_6_, i_7_, i_4_ };
|
||||
assign n79 = 64'h0000000000000008 >> { i_3_, i_9_, i_2_, i_0_, i_6_, i_4_ };
|
||||
assign n80 = 64'h0055045501550555 >> { i_11_, i_12_, n81, i_1_, i_6_, i_0_ };
|
||||
assign n81 = 32'd353703168 >> { i_2_, n83, n70, n82, n62 };
|
||||
assign n82 = 4'h8 >> { i_6_, i_7_ };
|
||||
assign n83 = 64'hfffffd75febafc30 >> { i_11_, i_12_, i_9_, i_10_, i_6_, i_7_ };
|
||||
assign n30 = 4'h2 >> { i_8_, i_10_ };
|
||||
assign n84 = 32'd538976800 >> { i_8_, n49, n85, i_10_, i_4_ };
|
||||
assign n85 = 64'h0001000100011111 >> { i_7_, i_1_, i_6_, i_2_, i_3_, i_0_ };
|
||||
assign n86 = 64'hf5f7fcfff7f7feff >> { i_4_, n88, n87, i_0_, i_1_, i_3_ };
|
||||
assign n87 = 16'h0002 >> { i_10_, i_13_, i_11_, i_12_ };
|
||||
assign n88 = 8'h08 >> { i_12_, i_10_, i_11_ };
|
||||
assign n89 = 32'd572662274 >> { n92, n91, n90, i_12_, n93 };
|
||||
assign n90 = 32'd3722436575 >> { i_8_, i_3_, i_7_, i_11_, i_9_ };
|
||||
assign n91 = 8'h08 >> { i_4_, i_5_, i_3_ };
|
||||
assign n92 = 8'h02 >> { i_7_, i_11_, i_10_ };
|
||||
assign n93 = 8'h08 >> { i_0_, i_1_, i_2_ };
|
||||
assign n31 = 4'h8 >> { i_8_, i_9_ };
|
||||
assign n94 = 4'h8 >> { i_10_, i_11_ };
|
||||
assign n95 = 64'h88888888888888a8 >> { i_4_, n98, i_5_, i_6_, n97, n96 };
|
||||
assign n96 = 4'h2 >> { i_11_, i_12_ };
|
||||
assign n97 = 64'h0000000000008000 >> { i_8_, i_5_, i_3_, i_6_, i_7_, i_10_ };
|
||||
assign n98 = 64'h00f7f7f7f7f7f7f7 >> { i_7_, i_10_, i_8_, i_0_, i_2_, i_3_ };
|
||||
assign n99 = 8'h02 >> { i_2_, i_1_, i_0_ };
|
||||
assign n100 = 64'haa20202020202020 >> { n31, n101, i_3_, n103, n102, n104 };
|
||||
assign n101 = 4'h1 >> { i_6_, i_7_ };
|
||||
assign n102 = 64'hf7f7f7f7f7f700f7 >> { i_7_, i_8_, i_9_, i_0_, i_2_, i_3_ };
|
||||
assign n103 = 4'h1 >> { i_6_, i_4_ };
|
||||
assign o_1_ = 64'h666566656665aaa9 >> { n30, n31, n34, n35, i_3_, n33 };
|
||||
assign n104 = 8'h08 >> { i_12_, i_5_, i_11_ };
|
||||
assign n105 = 4'h2 >> { i_4_, i_3_ };
|
||||
assign n106 = 64'hfdfffdfffdfffdfd >> { i_3_, i_12_, i_4_, i_9_, i_13_, i_11_ };
|
||||
assign n107 = 16'h0008 >> { i_0_, i_11_, i_2_, i_1_ };
|
||||
assign n108 = 8'h02 >> { i_13_, i_12_, i_11_ };
|
||||
assign n109 = 64'h0000000200020002 >> { i_1_, i_6_, i_3_, i_7_, i_10_, i_8_ };
|
||||
assign n110 = 8'h01 >> { i_10_, i_13_, i_11_ };
|
||||
assign n111 = 8'h01 >> { i_9_, i_13_, i_12_ };
|
||||
assign n112 = 4'h8 >> { n113, i_12_ };
|
||||
assign n113 = 4'h2 >> { i_13_, i_11_ };
|
||||
assign n33 = 4'h2 >> { i_13_, i_4_ };
|
||||
assign n114 = 64'hdddfdddf5555dddf >> { n117, i_2_, n116, n115, i_5_, i_0_ };
|
||||
assign n115 = 32'd32768 >> { i_8_, i_10_, i_3_, i_12_, i_11_ };
|
||||
assign n116 = 64'h0080008000000080 >> { i_12_, i_6_, i_7_, i_2_, i_10_, i_11_ };
|
||||
assign n117 = 32'd2012708863 >> { i_11_, i_12_, i_6_, i_10_, i_9_ };
|
||||
assign n118 = 32'd221196079 >> { n55, n124, n119, i_2_, n57 };
|
||||
assign n119 = 64'h80888088aaaa8088 >> { n120, n104, n122, n121, n96, n123 };
|
||||
assign n120 = 64'he8eaeceef8fafcff >> { i_1_, i_2_, i_3_, i_6_, i_7_, i_8_ };
|
||||
assign n121 = 16'h0080 >> { i_5_, i_6_, i_2_, i_8_ };
|
||||
assign n122 = 64'hdddddfffdfffdfff >> { i_8_, i_1_, i_3_, i_6_, i_5_, i_7_ };
|
||||
assign n123 = 4'h1 >> { i_0_, i_4_ };
|
||||
endmodule
|
|
@ -0,0 +1,654 @@
|
|||
i_0_ 0.517800 0.509800
|
||||
i_1_ 0.507400 0.499600
|
||||
i_2_ 0.508800 0.498400
|
||||
i_3_ 0.478800 0.507400
|
||||
i_4_ 0.491600 0.501200
|
||||
i_5_ 0.499600 0.504400
|
||||
i_6_ 0.494200 0.516000
|
||||
i_7_ 0.502600 0.504000
|
||||
i_8_ 0.510400 0.482400
|
||||
i_9_ 0.516800 0.499800
|
||||
i_10_ 0.493000 0.507200
|
||||
i_11_ 0.495600 0.504600
|
||||
i_12_ 0.502800 0.507600
|
||||
i_13_ 0.494600 0.500600
|
||||
i_14_ 0.504800 0.502800
|
||||
i_16_ 0.504000 0.505200
|
||||
i_17_ 0.497400 0.512600
|
||||
i_18_ 0.502200 0.502200
|
||||
i_19_ 0.495200 0.500000
|
||||
i_20_ 0.491000 0.493200
|
||||
i_21_ 0.495600 0.501600
|
||||
i_22_ 0.495200 0.503200
|
||||
i_23_ 0.505400 0.491000
|
||||
i_24_ 0.518400 0.508200
|
||||
i_25_ 0.502400 0.500800
|
||||
i_26_ 0.494600 0.494600
|
||||
i_27_ 0.497000 0.486400
|
||||
i_28_ 0.500400 0.500600
|
||||
i_29_ 0.503400 0.500800
|
||||
i_30_ 0.489000 0.511800
|
||||
i_31_ 0.495400 0.503000
|
||||
i_32_ 0.481000 0.510800
|
||||
i_33_ 0.500800 0.501600
|
||||
i_34_ 0.498400 0.496200
|
||||
i_35_ 0.512400 0.485400
|
||||
i_36_ 0.493000 0.499400
|
||||
i_37_ 0.497000 0.501000
|
||||
i_38_ 0.505800 0.501600
|
||||
n45 0.000600 0.025535
|
||||
n46 0.007400 0.237365
|
||||
n47 0.016000 0.000507
|
||||
n48 0.006400 0.000028
|
||||
n49 0.123000 0.026212
|
||||
n50 0.500600 0.125514
|
||||
n51 0.122000 0.026567
|
||||
n52 0.239600 0.095360
|
||||
n53 0.016000 0.004553
|
||||
n54 0.246800 0.094778
|
||||
n55 0.134400 0.030214
|
||||
n56 0.244200 0.089975
|
||||
n57 0.995200 0.000000
|
||||
n58 0.000000 0.000000
|
||||
n59 0.997800 0.025852
|
||||
n60 0.128000 0.029538
|
||||
n61 0.058400 0.007102
|
||||
n62 0.123000 0.025653
|
||||
n63 0.962800 0.090969
|
||||
n64 0.252200 0.094921
|
||||
n65 0.067000 0.006902
|
||||
n66 0.000000 0.000000
|
||||
n67 0.008200 0.237452
|
||||
n68 0.015400 0.000489
|
||||
n69 0.016000 0.000444
|
||||
n70 0.241000 0.098188
|
||||
n71 0.124000 0.026377
|
||||
n72 0.261000 0.089271
|
||||
n73 0.125400 0.025966
|
||||
n74 0.260000 0.099153
|
||||
n75 0.234000 0.097721
|
||||
n76 0.242600 0.092149
|
||||
n77 0.063800 0.008474
|
||||
n78 0.969400 0.000965
|
||||
n79 0.003600 0.121985
|
||||
n80 0.000000 0.000464
|
||||
n81 0.000200 0.000006
|
||||
n82 0.125400 0.026450
|
||||
n83 0.243400 0.094495
|
||||
n84 0.125000 0.026618
|
||||
n85 0.997400 0.000000
|
||||
n86 0.000000 0.000015
|
||||
n87 0.117600 0.026356
|
||||
n88 0.128800 0.029209
|
||||
n89 0.244800 0.102081
|
||||
n90 0.015000 0.000426
|
||||
n91 0.002800 0.236969
|
||||
n92 0.123800 0.027757
|
||||
n93 0.030400 0.001734
|
||||
n94 0.057800 0.006902
|
||||
n95 0.000200 0.000000
|
||||
n96 0.113000 0.024458
|
||||
n97 0.122200 0.025590
|
||||
n98 0.015400 0.000472
|
||||
n99 0.128200 0.027168
|
||||
n100 0.016200 0.000474
|
||||
n101 0.001600 0.000010
|
||||
n102 0.250200 0.091886
|
||||
n103 0.031200 0.001879
|
||||
n104 0.184400 0.031650
|
||||
n105 0.129200 0.028722
|
||||
n106 0.000000 0.000000
|
||||
n107 0.012200 0.000510
|
||||
n108 0.117600 0.028205
|
||||
n109 0.995000 0.000000
|
||||
n110 0.000200 0.000050
|
||||
n111 0.999400 0.000474
|
||||
n112 0.122000 0.028443
|
||||
n113 0.061600 0.006943
|
||||
n114 0.014600 0.000454
|
||||
n115 0.015800 0.000444
|
||||
n116 0.008000 0.005167
|
||||
n117 0.126800 0.026916
|
||||
n118 0.997200 0.000068
|
||||
n119 0.019200 0.000431
|
||||
n120 0.186000 0.007014
|
||||
n121 0.014600 0.000464
|
||||
n122 0.232200 0.017175
|
||||
n123 0.018200 0.000443
|
||||
n124 0.995600 0.001698
|
||||
n125 0.015200 0.000482
|
||||
n126 0.063800 0.007433
|
||||
n127 0.118200 0.025867
|
||||
n128 0.033400 0.002072
|
||||
n129 0.015800 0.000501
|
||||
n130 0.000000 0.000000
|
||||
n131 0.000000 0.000000
|
||||
n132 0.007000 0.000111
|
||||
n133 0.059000 0.007017
|
||||
n134 0.991000 0.000001
|
||||
n135 0.014200 0.000485
|
||||
n136 0.129000 0.028071
|
||||
n137 0.033400 0.002054
|
||||
n138 0.991800 0.000063
|
||||
n139 0.996400 0.000000
|
||||
n140 0.003000 0.000025
|
||||
n141 0.242000 0.089340
|
||||
n142 0.014600 0.000529
|
||||
n143 0.996800 0.000429
|
||||
n144 0.115000 0.025850
|
||||
n145 0.129200 0.026603
|
||||
n146 0.123000 0.027116
|
||||
n147 0.016600 0.000492
|
||||
n148 0.031000 0.002016
|
||||
n149 0.054800 0.006993
|
||||
n150 0.002400 0.000009
|
||||
n151 0.132600 0.029850
|
||||
n152 0.032200 0.001795
|
||||
n153 0.014400 0.000444
|
||||
n154 0.982200 0.003292
|
||||
n155 0.111400 0.025404
|
||||
n156 0.011400 0.000444
|
||||
n157 0.006600 0.000057
|
||||
n158 0.010400 0.000358
|
||||
n159 0.134000 0.010573
|
||||
n160 0.122200 0.028002
|
||||
n161 0.077000 0.007987
|
||||
n162 0.277200 0.152811
|
||||
n163 0.129600 0.028505
|
||||
n164 0.257400 0.100855
|
||||
n165 0.032800 0.001762
|
||||
n166 0.996400 0.000000
|
||||
n167 0.003600 0.000015
|
||||
n168 0.005200 0.000078
|
||||
n169 0.251400 0.091190
|
||||
n170 0.118400 0.025466
|
||||
n171 0.116600 0.024777
|
||||
n172 0.000000 0.000000
|
||||
n173 0.129400 0.029266
|
||||
n174 0.999000 0.000092
|
||||
n175 0.130000 0.029735
|
||||
n176 0.082200 0.007550
|
||||
n177 0.253800 0.091496
|
||||
n178 0.093200 0.201037
|
||||
n179 0.015800 0.000478
|
||||
n180 0.995400 0.000000
|
||||
n181 0.989600 0.092199
|
||||
n182 0.032600 0.002000
|
||||
n183 0.123800 0.028068
|
||||
n184 0.000000 0.000000
|
||||
n185 0.000200 0.000000
|
||||
n186 0.998200 0.000008
|
||||
n187 0.016800 0.000451
|
||||
n188 0.502600 0.247370
|
||||
n189 0.002800 0.000008
|
||||
n190 0.017800 0.000561
|
||||
n191 0.997600 0.000000
|
||||
n192 0.001800 0.000008
|
||||
n193 0.120200 0.026794
|
||||
n194 0.016800 0.000497
|
||||
n195 0.993200 0.000001
|
||||
n196 0.004200 0.139905
|
||||
n197 0.068400 0.007526
|
||||
n198 0.752800 0.035448
|
||||
n199 0.000800 0.001124
|
||||
n200 0.813400 0.030949
|
||||
n201 0.016800 0.000547
|
||||
n202 0.033600 0.002135
|
||||
n203 0.009000 0.159379
|
||||
n204 0.064600 0.007597
|
||||
n205 0.897200 0.009343
|
||||
n206 0.030800 0.001946
|
||||
n207 0.008200 0.000125
|
||||
n208 0.130000 0.027985
|
||||
n209 0.249400 0.094905
|
||||
n210 0.977400 0.039770
|
||||
n211 0.075200 0.007822
|
||||
n212 0.000000 0.000000
|
||||
n213 0.007200 0.253157
|
||||
n214 0.122000 0.029273
|
||||
n215 0.032600 0.001790
|
||||
n216 0.120800 0.028646
|
||||
n217 0.004800 0.000279
|
||||
n218 0.127200 0.027063
|
||||
n219 0.000200 0.055144
|
||||
n220 0.061600 0.061637
|
||||
n221 0.000200 0.094607
|
||||
n222 0.849200 0.027645
|
||||
n223 0.012600 0.000530
|
||||
n224 0.994000 0.163012
|
||||
n225 0.252600 0.093899
|
||||
n226 0.071800 0.068115
|
||||
n227 0.181800 0.032528
|
||||
n228 0.002800 0.008991
|
||||
n229 0.003000 0.000007
|
||||
n230 0.015200 0.000452
|
||||
n231 0.012800 0.000462
|
||||
n232 0.002400 0.000008
|
||||
n233 0.000000 0.000000
|
||||
n234 0.008400 0.000983
|
||||
n235 0.001800 0.000283
|
||||
n236 0.998600 0.000000
|
||||
n237 0.001400 0.006110
|
||||
n238 0.000000 0.000001
|
||||
n239 0.000000 0.000005
|
||||
n240 0.015600 0.000512
|
||||
n241 0.998800 0.000001
|
||||
n242 0.058600 0.211920
|
||||
n243 0.001400 0.005628
|
||||
n244 1.000000 0.000338
|
||||
n245 0.986400 0.000166
|
||||
n246 0.813200 0.000021
|
||||
n247 0.692000 0.089460
|
||||
n248 0.186600 0.030164
|
||||
n249 0.000800 0.000013
|
||||
n250 0.121800 0.027239
|
||||
n251 0.778400 0.019470
|
||||
n252 0.031000 0.016653
|
||||
n253 0.252800 0.092653
|
||||
n254 0.990600 0.001037
|
||||
n255 0.016000 0.000489
|
||||
n256 0.031800 0.001942
|
||||
n257 0.001000 0.000002
|
||||
n258 0.240600 0.093058
|
||||
n259 0.151400 0.026532
|
||||
n260 0.134600 0.028269
|
||||
n261 0.000000 0.000200
|
||||
n262 0.035600 0.023152
|
||||
n263 0.134000 0.186651
|
||||
n264 0.003800 0.049266
|
||||
n265 0.005600 0.000428
|
||||
n266 0.001200 0.000306
|
||||
n267 0.124600 0.177646
|
||||
n268 0.236200 0.086675
|
||||
n269 0.056600 0.006824
|
||||
n270 0.045200 0.004362
|
||||
n271 0.185600 0.030668
|
||||
n272 0.000000 0.000000
|
||||
n273 0.000200 0.000000
|
||||
n274 0.000000 0.000000
|
||||
n275 0.001600 0.000000
|
||||
n276 0.001400 0.000004
|
||||
n277 0.001200 0.000007
|
||||
n278 0.000000 0.000000
|
||||
n279 0.000000 0.000000
|
||||
n280 0.000600 0.000006
|
||||
n281 0.000000 0.000015
|
||||
n282 0.018400 0.000542
|
||||
n283 0.000000 0.000000
|
||||
n284 0.002200 0.000060
|
||||
n285 0.000400 0.000002
|
||||
n286 0.129600 0.028310
|
||||
n287 0.996000 0.000000
|
||||
n288 0.000000 0.000000
|
||||
n289 0.023000 0.032222
|
||||
n290 0.968600 0.000930
|
||||
n291 0.000000 0.000000
|
||||
n292 0.993000 0.000008
|
||||
n293 0.000200 0.000022
|
||||
n294 0.000000 0.000000
|
||||
n295 0.037200 0.000287
|
||||
n296 0.002200 0.000077
|
||||
n297 0.999800 0.000025
|
||||
n298 0.001000 0.000016
|
||||
n299 0.018200 0.000500
|
||||
n300 0.000000 0.000000
|
||||
n301 0.000000 0.000000
|
||||
n302 0.000200 0.000000
|
||||
n303 0.008600 0.000256
|
||||
n304 0.973800 0.000614
|
||||
n305 0.015800 0.000556
|
||||
n306 0.017800 0.000567
|
||||
n307 0.382000 0.171543
|
||||
n308 0.950600 0.002354
|
||||
n309 0.043000 0.000775
|
||||
n310 0.031600 0.001735
|
||||
n311 0.954200 0.000450
|
||||
n312 0.032400 0.001727
|
||||
n313 0.031200 0.001679
|
||||
n314 0.245000 0.087407
|
||||
n315 0.244800 0.101937
|
||||
n316 0.015800 0.000489
|
||||
n317 0.000400 0.000000
|
||||
n318 0.000000 0.000003
|
||||
n319 0.268200 0.091067
|
||||
n320 0.027200 0.009852
|
||||
n321 0.191400 0.006872
|
||||
n322 0.253200 0.091650
|
||||
n323 0.000000 0.210556
|
||||
n324 0.121800 0.025901
|
||||
n325 0.018000 0.000460
|
||||
n326 0.014600 0.000430
|
||||
n327 0.104800 0.000000
|
||||
n328 0.001400 0.059784
|
||||
n329 0.256400 0.101622
|
||||
n330 0.032400 0.001783
|
||||
n331 0.058400 0.007601
|
||||
n332 0.131400 0.003850
|
||||
n333 0.557600 0.094153
|
||||
n334 0.122800 0.027364
|
||||
n335 0.117600 0.013751
|
||||
n336 0.666200 0.085373
|
||||
n337 0.028600 0.222388
|
||||
n338 0.118600 0.024986
|
||||
n339 0.999000 0.000000
|
||||
n340 0.000800 0.000001
|
||||
n341 0.966200 0.000000
|
||||
n342 0.009400 0.000154
|
||||
n343 0.000000 0.000261
|
||||
n344 0.952200 0.002525
|
||||
n345 0.756200 0.196176
|
||||
n346 0.013200 0.000436
|
||||
n347 0.015800 0.004026
|
||||
n348 0.207400 0.150134
|
||||
n349 0.087800 0.001816
|
||||
n350 0.929400 0.000000
|
||||
n351 0.995800 0.000000
|
||||
n352 0.002800 0.000014
|
||||
n353 0.006200 0.166345
|
||||
n354 0.000400 0.000001
|
||||
n355 0.937600 0.005424
|
||||
n356 0.122000 0.028563
|
||||
n357 0.061200 0.007983
|
||||
n358 0.060000 0.006745
|
||||
n359 0.000200 0.000000
|
||||
n360 0.809600 0.031234
|
||||
n361 0.001600 0.000007
|
||||
n362 0.129600 0.026490
|
||||
n363 0.096200 0.296204
|
||||
n364 0.028600 0.001747
|
||||
n365 0.002200 0.202121
|
||||
n366 0.134400 0.027352
|
||||
n367 0.046800 0.002087
|
||||
n368 0.120400 0.026534
|
||||
n369 0.999200 0.000000
|
||||
n370 0.001600 0.000011
|
||||
n371 0.004200 0.000038
|
||||
n372 0.000200 0.000000
|
||||
n373 0.237000 0.089343
|
||||
n374 0.057400 0.006791
|
||||
n375 0.061000 0.007093
|
||||
n376 0.032400 0.001873
|
||||
n377 0.134000 0.026584
|
||||
n378 0.252800 0.103831
|
||||
n379 0.874800 0.026794
|
||||
n380 0.001800 0.000148
|
||||
n381 0.914800 0.006214
|
||||
n382 0.245400 0.097566
|
||||
n383 0.066200 0.007463
|
||||
n384 0.000000 0.000000
|
||||
n385 0.002600 0.000017
|
||||
n386 0.068800 0.007656
|
||||
n387 0.876200 0.000000
|
||||
n388 0.977600 0.030366
|
||||
n389 0.123800 0.000274
|
||||
n390 0.000200 0.000000
|
||||
n391 0.000400 0.000001
|
||||
n392 0.000000 0.000000
|
||||
n393 0.132600 0.025250
|
||||
n394 0.998800 0.138931
|
||||
n395 0.000200 0.000000
|
||||
n396 0.253400 0.091895
|
||||
n397 0.001000 0.000041
|
||||
n398 0.000400 0.129461
|
||||
n399 0.914800 0.001234
|
||||
n400 0.000000 0.000000
|
||||
n401 0.005400 0.234824
|
||||
n402 0.119800 0.026391
|
||||
n403 0.004400 0.002304
|
||||
n404 0.248800 0.094927
|
||||
n405 0.255200 0.084515
|
||||
n406 0.130400 0.025056
|
||||
n407 0.003400 0.000037
|
||||
n408 0.059000 0.006642
|
||||
n409 0.000000 0.000000
|
||||
n410 0.000600 0.000001
|
||||
n411 0.002800 0.000000
|
||||
n412 0.012600 0.002722
|
||||
n413 0.005600 0.194237
|
||||
n414 0.258400 0.100761
|
||||
n415 0.000400 0.000000
|
||||
n416 0.996000 0.000002
|
||||
n417 0.000000 0.000001
|
||||
n418 0.903400 0.000003
|
||||
n419 0.127400 0.176082
|
||||
n420 0.094200 0.008761
|
||||
n421 0.949600 0.004543
|
||||
n422 0.950800 0.192492
|
||||
n423 0.001800 0.000421
|
||||
n424 0.910400 0.000117
|
||||
n425 0.045800 0.000457
|
||||
n426 0.254400 0.097184
|
||||
n427 0.007800 0.251594
|
||||
n428 0.018600 0.000492
|
||||
n429 0.003800 0.184566
|
||||
n430 0.018600 0.000547
|
||||
n431 0.997800 0.000014
|
||||
n432 0.999600 0.000001
|
||||
n433 0.124400 0.026964
|
||||
n434 0.957200 0.000002
|
||||
n435 0.269400 0.097631
|
||||
n436 0.983200 0.000136
|
||||
n437 0.006000 0.000006
|
||||
n438 0.129400 0.176338
|
||||
n439 0.990600 0.000000
|
||||
n440 0.000800 0.005372
|
||||
n441 0.048400 0.002473
|
||||
n442 0.001400 0.000000
|
||||
n443 0.000000 0.000000
|
||||
n444 0.989600 0.000002
|
||||
n445 0.000000 0.000000
|
||||
n446 0.028200 0.001757
|
||||
n447 0.000800 0.000000
|
||||
n448 0.197200 0.006680
|
||||
n449 0.990800 0.015692
|
||||
n450 0.893800 0.008579
|
||||
n451 0.030400 0.002242
|
||||
n452 0.035000 0.001778
|
||||
n453 0.809400 0.034193
|
||||
n454 0.895600 0.001910
|
||||
n455 0.001200 0.000005
|
||||
n456 0.046800 0.000460
|
||||
n457 0.017200 0.003631
|
||||
n458 0.000000 0.003696
|
||||
n459 0.046600 0.294566
|
||||
n460 0.997400 0.000001
|
||||
n461 0.998200 0.000009
|
||||
n462 0.870800 0.004080
|
||||
n463 0.001800 0.000157
|
||||
n464 0.032800 0.002201
|
||||
n465 0.000800 0.000000
|
||||
n466 0.000600 0.073353
|
||||
n467 0.007000 0.000130
|
||||
n468 0.914800 0.023735
|
||||
n469 0.124400 0.024965
|
||||
n470 0.120200 0.026016
|
||||
n471 0.969800 0.035957
|
||||
n472 0.126400 0.027456
|
||||
n473 0.779400 0.032055
|
||||
n474 0.015200 0.000472
|
||||
n475 0.007200 0.001044
|
||||
n476 0.003200 0.000020
|
||||
n477 0.000600 0.000001
|
||||
n478 0.001200 0.000260
|
||||
n479 0.005400 0.011434
|
||||
n480 0.003600 0.195573
|
||||
n481 0.002000 0.000003
|
||||
n482 0.997400 0.000000
|
||||
n483 0.000200 0.000297
|
||||
n484 0.000200 0.000000
|
||||
n485 0.121400 0.029595
|
||||
n486 0.998200 0.000002
|
||||
n487 0.001200 0.000002
|
||||
n488 0.195800 0.007798
|
||||
n489 0.004400 0.000675
|
||||
n490 0.906000 0.000373
|
||||
n491 0.046000 0.000480
|
||||
n492 0.090400 0.002258
|
||||
n493 0.015600 0.118258
|
||||
o_0_ 0.033600 0.079455
|
||||
n495 0.130400 0.027814
|
||||
n496 0.018000 0.000300
|
||||
n497 0.020600 0.000511
|
||||
n498 0.008200 0.001020
|
||||
n499 0.239200 0.091074
|
||||
n500 0.003200 0.003406
|
||||
n501 0.003200 0.000075
|
||||
n502 0.021000 0.000029
|
||||
n503 0.254000 0.093762
|
||||
n504 0.014200 0.011958
|
||||
n505 0.064600 0.141413
|
||||
n506 0.478400 0.016355
|
||||
n507 0.785400 0.032210
|
||||
n508 0.000600 0.000076
|
||||
n509 0.564600 0.007997
|
||||
n510 0.001000 0.000047
|
||||
n511 0.006200 0.006710
|
||||
n512 0.991400 0.000134
|
||||
n513 0.991800 0.000000
|
||||
n514 0.998800 0.000007
|
||||
n515 0.064800 0.008156
|
||||
n516 0.063600 0.008282
|
||||
n517 0.995200 0.000013
|
||||
n518 0.000800 0.000002
|
||||
n519 0.184400 0.031666
|
||||
n520 0.002600 0.000076
|
||||
n521 0.000000 0.000000
|
||||
n522 0.253800 0.046650
|
||||
n523 0.000000 0.000000
|
||||
n524 0.000000 0.000013
|
||||
n525 0.000200 0.000000
|
||||
n526 0.998400 0.000001
|
||||
n527 0.977600 0.000001
|
||||
n528 0.000000 0.000000
|
||||
n529 0.988400 0.000037
|
||||
n530 0.629400 0.202368
|
||||
n531 0.000000 0.000000
|
||||
n532 0.002200 0.248496
|
||||
n533 0.002800 0.053861
|
||||
n534 0.965600 0.000765
|
||||
n535 0.994000 0.000001
|
||||
n536 0.019600 0.000830
|
||||
n537 0.002800 0.144940
|
||||
n538 0.008400 0.000014
|
||||
n539 0.181400 0.032234
|
||||
n540 0.997000 0.008733
|
||||
n541 0.997600 0.000000
|
||||
n542 0.001600 0.230501
|
||||
n543 0.004200 0.000041
|
||||
n544 0.942600 0.001642
|
||||
n545 0.001600 0.000006
|
||||
n546 0.000000 0.000001
|
||||
n547 0.001400 0.000249
|
||||
n548 0.014000 0.018895
|
||||
n549 0.994400 0.000000
|
||||
n550 0.998400 0.181024
|
||||
n551 0.000000 0.000000
|
||||
n552 0.990600 0.000091
|
||||
n553 0.948000 0.200131
|
||||
n554 0.000200 0.000000
|
||||
n555 0.000000 0.000003
|
||||
n556 0.999800 0.000011
|
||||
n557 0.999400 0.000004
|
||||
n558 0.000000 0.000000
|
||||
n559 0.014800 0.000011
|
||||
n560 1.000000 0.000000
|
||||
n561 1.000000 0.000765
|
||||
n562 0.000000 0.000000
|
||||
n563 0.000600 0.185376
|
||||
n564 0.972000 0.000135
|
||||
n565 0.006000 0.000001
|
||||
n566 0.244600 0.093221
|
||||
n567 0.007600 0.009102
|
||||
n568 0.001200 0.000001
|
||||
n569 0.003400 0.000014
|
||||
n570 0.181600 0.030721
|
||||
n571 0.001600 0.000016
|
||||
n572 0.980000 0.034116
|
||||
n573 0.006000 0.000255
|
||||
n574 0.001200 0.000004
|
||||
n575 0.992000 0.000000
|
||||
n576 0.986800 0.000153
|
||||
n577 0.993000 0.010326
|
||||
n578 0.990200 0.044848
|
||||
n579 0.997400 0.027042
|
||||
n580 0.001200 0.000004
|
||||
n581 0.004400 0.000019
|
||||
n582 0.999600 0.000400
|
||||
n583 0.000200 0.000000
|
||||
n584 0.003000 0.000010
|
||||
n585 0.000600 0.000000
|
||||
n586 0.999600 0.024774
|
||||
o_1_ 0.032000 0.069592
|
||||
n588 0.005400 0.000056
|
||||
n589 0.001800 0.126466
|
||||
n590 0.043800 0.002277
|
||||
n591 0.991000 0.000111
|
||||
n592 0.001600 0.226375
|
||||
n593 0.486600 0.000359
|
||||
n594 0.989600 0.281765
|
||||
n595 0.977200 0.000000
|
||||
n596 0.026000 0.019823
|
||||
n597 0.030800 0.237967
|
||||
n598 0.996000 0.000000
|
||||
n599 1.000000 0.000000
|
||||
n600 0.003200 0.247939
|
||||
n601 0.002000 0.000002
|
||||
n602 0.008600 0.103910
|
||||
n603 0.996800 0.000005
|
||||
n604 0.000200 0.000000
|
||||
n605 0.999800 0.000000
|
||||
n606 1.000000 0.000002
|
||||
n607 1.000000 0.000000
|
||||
n608 0.000000 0.000099
|
||||
n609 0.000200 0.076281
|
||||
n610 0.999800 0.167820
|
||||
o_2_ 0.237000 0.303482
|
||||
n612 1.000000 0.255095
|
||||
n613 0.869400 0.000001
|
||||
n614 0.797000 0.000002
|
||||
n615 0.646000 0.087836
|
||||
n616 0.716200 0.049102
|
||||
n617 0.070000 0.114336
|
||||
n618 0.011400 0.000416
|
||||
n619 0.019200 0.255465
|
||||
n620 1.000000 0.000000
|
||||
n621 0.989200 0.000145
|
||||
n622 0.944200 0.005996
|
||||
n623 0.023800 0.000065
|
||||
n624 0.995400 0.001738
|
||||
n625 0.902000 0.008206
|
||||
n626 0.000200 0.000011
|
||||
n627 0.910200 0.007352
|
||||
n628 0.966000 0.035921
|
||||
n629 0.998000 0.000161
|
||||
n630 0.994000 0.000000
|
||||
n631 0.023000 0.019872
|
||||
n632 0.951000 0.046487
|
||||
n633 0.948800 0.003589
|
||||
n634 0.044400 0.002077
|
||||
n635 0.039800 0.000019
|
||||
n636 0.898800 0.162778
|
||||
n637 0.000200 0.000015
|
||||
n638 0.997600 0.000000
|
||||
n639 0.989400 0.228063
|
||||
n640 0.000000 0.000001
|
||||
n641 0.276000 0.094945
|
||||
n642 0.013800 0.185645
|
||||
n643 0.000400 0.138614
|
||||
n644 0.502200 0.150843
|
||||
n645 0.999600 0.000000
|
||||
n646 0.001800 0.119488
|
||||
n647 0.005600 0.000019
|
||||
n648 0.991600 0.000018
|
||||
n649 0.984800 0.000000
|
||||
n650 0.048600 0.007295
|
||||
n651 0.007600 0.004766
|
||||
n652 0.003400 0.280438
|
||||
n653 0.999600 0.130579
|
||||
n654 0.998600 0.000000
|
||||
n655 0.999000 0.000002
|
||||
n656 0.381600 0.038059
|
||||
n657 0.000200 0.000000
|
||||
n658 0.011400 0.000427
|
||||
n659 0.001000 0.000013
|
||||
n660 0.998800 0.000000
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,575 @@
|
|||
i_0_ 0.504400 0.505000
|
||||
i_1_ 0.493000 0.499400
|
||||
i_2_ 0.501000 0.511000
|
||||
i_3_ 0.499400 0.501600
|
||||
i_4_ 0.508400 0.509800
|
||||
i_5_ 0.491000 0.500200
|
||||
i_6_ 0.491600 0.503600
|
||||
i_7_ 0.499600 0.498600
|
||||
i_8_ 0.501800 0.495600
|
||||
n28 0.000000 0.000000
|
||||
o_1_ 0.109400 0.001396
|
||||
n32 0.125200 0.027623
|
||||
n33 0.245400 0.092023
|
||||
n34 0.122000 0.027955
|
||||
n35 0.128800 0.028038
|
||||
n36 0.120000 0.027424
|
||||
n37 0.128600 0.028415
|
||||
n38 0.017000 0.000515
|
||||
n39 0.014000 0.000517
|
||||
n40 0.991000 0.000019
|
||||
n41 0.003200 0.000302
|
||||
n42 0.253400 0.094839
|
||||
n43 0.130600 0.027424
|
||||
n44 0.015400 0.000480
|
||||
n45 0.013400 0.000525
|
||||
n46 0.123000 0.026344
|
||||
n47 0.014200 0.000495
|
||||
n48 0.996600 0.026183
|
||||
n49 0.123400 0.028415
|
||||
n50 0.015200 0.000521
|
||||
n51 0.003600 0.000028
|
||||
n52 0.029000 0.001929
|
||||
n53 0.123600 0.028541
|
||||
n54 0.243000 0.091159
|
||||
n55 0.128200 0.028541
|
||||
n56 0.123400 0.027296
|
||||
n57 0.974000 0.000081
|
||||
n58 0.991400 0.012299
|
||||
n59 0.993800 0.000272
|
||||
n60 0.125400 0.027546
|
||||
n61 0.251800 0.091404
|
||||
n62 0.015600 0.000513
|
||||
n63 0.125200 0.028038
|
||||
n64 0.992600 0.026105
|
||||
n65 0.244600 0.094556
|
||||
n66 0.018200 0.000461
|
||||
n67 0.001000 0.000009
|
||||
n68 0.016600 0.000460
|
||||
n69 0.006200 0.000277
|
||||
n70 0.246400 0.094136
|
||||
n71 0.250800 0.094659
|
||||
n72 0.016800 0.000519
|
||||
n73 0.988600 0.000097
|
||||
n74 0.002200 0.000010
|
||||
n75 0.124600 0.027546
|
||||
n76 0.017800 0.000513
|
||||
n77 0.002200 0.000028
|
||||
n78 0.029800 0.001836
|
||||
n79 0.993000 0.000637
|
||||
n80 0.131400 0.027546
|
||||
n81 0.015800 0.000503
|
||||
n82 0.123000 0.029315
|
||||
n83 0.017400 0.000522
|
||||
n84 0.013600 0.000515
|
||||
n85 0.989200 0.015808
|
||||
n86 0.991800 0.179204
|
||||
n87 0.015000 0.000491
|
||||
n88 0.013800 0.000460
|
||||
n89 0.014600 0.000476
|
||||
n90 0.015000 0.000517
|
||||
n91 0.002000 0.000008
|
||||
n92 0.015800 0.000490
|
||||
n93 0.014200 0.000493
|
||||
n94 0.016400 0.000489
|
||||
n95 0.992600 0.000680
|
||||
n96 0.121000 0.026620
|
||||
n97 0.017600 0.000540
|
||||
n98 0.013000 0.000486
|
||||
n99 0.015600 0.000463
|
||||
n100 0.994400 0.027615
|
||||
n101 0.017800 0.000527
|
||||
n102 0.995600 0.026332
|
||||
n103 0.011800 0.000513
|
||||
o_2_ 0.392800 0.004866
|
||||
n105 0.976800 0.044322
|
||||
n106 0.989400 0.027905
|
||||
n107 0.128000 0.028038
|
||||
n108 0.016600 0.000460
|
||||
n109 0.034800 0.001977
|
||||
n110 0.993400 0.000500
|
||||
n111 0.063200 0.007459
|
||||
n112 0.064000 0.007578
|
||||
n113 0.994000 0.026473
|
||||
n114 0.017200 0.000466
|
||||
n115 0.018000 0.000538
|
||||
n116 0.956400 0.080573
|
||||
n117 0.993400 0.000021
|
||||
n118 0.030400 0.001943
|
||||
n119 0.997000 0.026203
|
||||
n120 0.997000 0.026244
|
||||
n121 0.991200 0.000366
|
||||
n122 0.013200 0.000524
|
||||
n123 0.983200 0.000254
|
||||
n124 0.932400 0.003943
|
||||
n125 0.993200 0.028607
|
||||
n126 0.256600 0.096659
|
||||
n127 0.013000 0.000521
|
||||
n128 0.943600 0.000001
|
||||
n129 0.011200 0.000155
|
||||
n130 0.254400 0.092023
|
||||
n131 0.128200 0.027623
|
||||
n132 0.010200 0.006964
|
||||
n133 0.987600 0.091560
|
||||
n134 0.127400 0.027293
|
||||
n135 0.243400 0.090882
|
||||
n136 0.992600 0.026686
|
||||
n137 0.124800 0.027623
|
||||
n138 0.028000 0.001761
|
||||
n139 0.015000 0.000490
|
||||
n140 0.905400 0.005237
|
||||
n141 0.983600 0.092411
|
||||
n142 0.987600 0.089702
|
||||
n143 0.251000 0.093192
|
||||
n144 0.252200 0.092951
|
||||
n145 0.030000 0.001877
|
||||
n146 0.015000 0.000479
|
||||
n147 0.012000 0.000455
|
||||
n148 0.251000 0.090555
|
||||
n149 0.121600 0.025759
|
||||
n150 0.970400 0.055415
|
||||
n151 0.994600 0.026281
|
||||
n152 0.019000 0.000540
|
||||
n153 0.017800 0.000475
|
||||
n154 0.015400 0.000493
|
||||
n155 0.990600 0.090028
|
||||
n156 0.247600 0.096893
|
||||
n157 0.015200 0.000461
|
||||
n158 0.122200 0.027713
|
||||
n159 0.991800 0.026282
|
||||
n160 0.015400 0.000458
|
||||
n161 0.013800 0.000488
|
||||
n162 0.014000 0.000495
|
||||
n163 0.993400 0.024862
|
||||
n164 0.015800 0.000513
|
||||
n165 0.993200 0.000005
|
||||
n166 0.001600 0.000006
|
||||
n167 0.019000 0.000501
|
||||
n168 0.993800 0.000003
|
||||
n169 0.001200 0.000006
|
||||
n170 0.011400 0.000458
|
||||
n171 0.994000 0.027665
|
||||
n172 0.995400 0.000943
|
||||
n173 0.116800 0.028366
|
||||
n174 0.132600 0.027973
|
||||
n175 0.033400 0.001972
|
||||
n176 0.017600 0.000458
|
||||
n177 0.004200 0.000040
|
||||
n178 0.248600 0.096659
|
||||
n179 0.993000 0.063142
|
||||
n180 0.015600 0.000538
|
||||
n181 0.992400 0.028765
|
||||
n182 0.018600 0.000501
|
||||
n183 0.014600 0.000489
|
||||
n184 0.990800 0.000002
|
||||
n185 0.001000 0.000007
|
||||
n186 0.001800 0.000010
|
||||
n187 0.001800 0.000009
|
||||
n188 0.017000 0.000490
|
||||
n189 0.256000 0.096893
|
||||
n190 0.016600 0.000508
|
||||
n191 0.005000 0.000031
|
||||
n192 0.002000 0.000007
|
||||
n193 0.002000 0.000007
|
||||
n194 0.885200 0.014300
|
||||
n195 0.932000 0.000246
|
||||
n196 0.961200 0.000035
|
||||
n197 0.995600 0.027933
|
||||
n198 0.988000 0.000405
|
||||
n199 0.033200 0.001977
|
||||
n200 0.983000 0.021348
|
||||
n201 0.018800 0.000517
|
||||
n202 0.014600 0.000082
|
||||
n203 0.986600 0.171512
|
||||
n204 0.931600 0.116050
|
||||
n205 0.983600 0.000126
|
||||
n206 0.997200 0.000450
|
||||
n207 0.001600 0.000006
|
||||
n208 0.990800 0.091488
|
||||
n209 0.020200 0.000490
|
||||
n210 0.012600 0.000521
|
||||
n211 0.996200 0.026170
|
||||
n212 0.994000 0.000842
|
||||
n213 0.991400 0.001902
|
||||
n214 0.992600 0.043426
|
||||
n215 0.017200 0.000487
|
||||
n216 0.989200 0.004753
|
||||
n217 0.002400 0.089457
|
||||
n218 0.996000 0.026375
|
||||
n219 0.994400 0.253713
|
||||
o_3_ 0.253000 0.001028
|
||||
n221 0.991800 0.000018
|
||||
n222 0.982000 0.000069
|
||||
n223 0.001600 0.000007
|
||||
n224 0.993200 0.000273
|
||||
n225 0.991600 0.020355
|
||||
n226 0.034000 0.001949
|
||||
n227 0.980000 0.000084
|
||||
n228 0.993200 0.000851
|
||||
n229 0.997000 0.000362
|
||||
n230 0.992600 0.000372
|
||||
n231 0.994000 0.006957
|
||||
n232 0.003600 0.000033
|
||||
n233 0.000600 0.000006
|
||||
n234 0.002000 0.000006
|
||||
n235 0.997800 0.026426
|
||||
n236 0.988200 0.124473
|
||||
n237 0.029400 0.001961
|
||||
n238 0.120200 0.028324
|
||||
n239 0.989200 0.001780
|
||||
n240 0.955000 0.002346
|
||||
n241 0.002400 0.000005
|
||||
n242 0.995000 0.026212
|
||||
n243 0.992000 0.071193
|
||||
n244 0.015000 0.000484
|
||||
n245 0.992800 0.001249
|
||||
n246 0.117200 0.026218
|
||||
n247 0.029400 0.001905
|
||||
n248 0.990600 0.000296
|
||||
n249 0.247200 0.095758
|
||||
n250 0.242000 0.094839
|
||||
n251 0.014000 0.000462
|
||||
n252 0.001600 0.000011
|
||||
n253 0.994800 0.024911
|
||||
n254 0.001600 0.000008
|
||||
n255 0.951200 0.086443
|
||||
n256 0.996400 0.000331
|
||||
n257 0.030400 0.001869
|
||||
n258 0.995600 0.029005
|
||||
n259 0.989600 0.015055
|
||||
n260 0.992400 0.090792
|
||||
n261 0.994200 0.028683
|
||||
n262 0.246200 0.091653
|
||||
n263 0.994400 0.027764
|
||||
n264 0.974200 0.000041
|
||||
n265 0.995600 0.026095
|
||||
n266 0.994800 0.024903
|
||||
n267 0.991200 0.003353
|
||||
n268 0.951400 0.009791
|
||||
n269 0.993400 0.025602
|
||||
n270 0.972200 0.052602
|
||||
n271 0.996000 0.024658
|
||||
n272 0.993000 0.000392
|
||||
n273 0.002400 0.000027
|
||||
n274 0.989200 0.000068
|
||||
n275 0.031600 0.001989
|
||||
n276 0.994800 0.007045
|
||||
o_4_ 0.297000 0.001719
|
||||
n278 0.895600 0.162379
|
||||
n279 0.990800 0.000033
|
||||
n280 0.995400 0.000570
|
||||
n281 0.969800 0.056467
|
||||
n282 0.994400 0.000229
|
||||
n283 0.992400 0.000331
|
||||
n284 0.996600 0.026226
|
||||
n285 0.996200 0.026302
|
||||
n286 0.993400 0.000373
|
||||
n287 0.249600 0.093823
|
||||
n288 0.250000 0.092951
|
||||
n289 0.996800 0.000243
|
||||
n290 0.981800 0.034860
|
||||
n291 0.997400 0.028228
|
||||
n292 0.995600 0.000058
|
||||
n293 0.029200 0.002075
|
||||
n294 0.996200 0.024840
|
||||
n295 0.992600 0.000793
|
||||
n296 0.014000 0.000486
|
||||
n297 0.968400 0.058886
|
||||
n298 0.996000 0.026631
|
||||
n299 0.997000 0.028612
|
||||
n300 0.993400 0.026054
|
||||
n301 0.992600 0.000046
|
||||
n302 0.994400 0.027752
|
||||
n303 0.990400 0.000070
|
||||
n304 0.002000 0.000008
|
||||
n305 0.003400 0.000008
|
||||
n306 0.028400 0.002051
|
||||
n307 0.993400 0.000005
|
||||
n308 0.995000 0.000821
|
||||
n309 0.987600 0.007892
|
||||
n310 0.917200 0.137535
|
||||
n311 0.977200 0.000024
|
||||
n312 0.014200 0.163494
|
||||
n313 0.996200 0.000388
|
||||
n314 0.993800 0.090997
|
||||
n315 0.994000 0.000041
|
||||
n316 0.961200 0.000024
|
||||
n317 0.990000 0.026195
|
||||
n318 0.017400 0.000500
|
||||
n319 0.988800 0.001915
|
||||
n320 0.953400 0.002400
|
||||
n321 0.994400 0.028718
|
||||
n322 0.992200 0.067620
|
||||
n323 0.996400 0.000606
|
||||
n324 0.962600 0.054766
|
||||
n325 0.993200 0.089159
|
||||
n326 0.994600 0.087093
|
||||
n327 0.951000 0.002410
|
||||
n328 0.994200 0.000229
|
||||
n329 0.262000 0.094556
|
||||
n330 0.994800 0.000201
|
||||
n331 0.990200 0.025110
|
||||
n332 0.002200 0.000011
|
||||
n333 0.247000 0.088997
|
||||
n334 0.993800 0.000025
|
||||
n335 0.002600 0.000008
|
||||
n336 0.967000 0.000184
|
||||
n337 0.004000 0.000018
|
||||
n338 0.002000 0.000010
|
||||
n339 0.995600 0.027787
|
||||
n340 0.990000 0.026131
|
||||
n341 0.033600 0.001970
|
||||
n342 0.995600 0.000592
|
||||
n343 0.994600 0.061071
|
||||
n344 0.994600 0.025674
|
||||
n345 0.992800 0.088582
|
||||
n346 0.031200 0.002019
|
||||
n347 0.995400 0.026195
|
||||
n348 0.993800 0.027783
|
||||
n349 0.990400 0.001937
|
||||
n350 0.966400 0.061577
|
||||
n351 0.995400 0.026353
|
||||
n352 0.995600 0.025715
|
||||
n353 0.995000 0.000404
|
||||
n354 0.993200 0.000299
|
||||
n355 0.992800 0.000064
|
||||
n356 0.123000 0.029263
|
||||
n357 0.003400 0.000013
|
||||
n358 0.985200 0.000014
|
||||
n359 0.001400 0.000006
|
||||
n360 0.996600 0.026199
|
||||
n361 0.960600 0.072606
|
||||
n362 0.994600 0.000216
|
||||
n363 0.995600 0.090478
|
||||
n364 0.015200 0.000455
|
||||
n365 0.960000 0.072079
|
||||
n366 0.994200 0.046113
|
||||
n367 0.992800 0.086595
|
||||
n368 0.959200 0.074103
|
||||
n369 0.993200 0.000660
|
||||
n370 0.990200 0.134607
|
||||
n371 0.031400 0.001808
|
||||
n372 0.981400 0.000039
|
||||
n373 0.004000 0.000031
|
||||
n374 0.995000 0.000263
|
||||
n375 0.983200 0.005627
|
||||
n376 0.026000 0.024331
|
||||
n377 0.001800 0.000018
|
||||
n378 0.996000 0.000311
|
||||
n379 0.963800 0.066206
|
||||
n380 0.996800 0.000463
|
||||
n381 0.996400 0.000277
|
||||
n382 0.996800 0.026305
|
||||
n383 0.991800 0.065971
|
||||
n384 0.001600 0.000010
|
||||
n385 0.987800 0.000024
|
||||
n386 0.003600 0.000037
|
||||
n387 0.993400 0.043420
|
||||
n388 0.969000 0.000110
|
||||
n389 0.002800 0.000011
|
||||
n390 0.992400 0.026279
|
||||
n391 0.927600 0.121195
|
||||
n392 0.992600 0.006354
|
||||
n393 0.996800 0.027708
|
||||
n394 0.981400 0.000215
|
||||
n395 0.001600 0.000008
|
||||
n396 0.003600 0.000029
|
||||
n397 0.992200 0.000030
|
||||
n398 0.002400 0.000009
|
||||
n399 0.001400 0.000006
|
||||
n400 0.996000 0.000501
|
||||
n401 0.989800 0.000018
|
||||
n402 0.002400 0.000011
|
||||
n403 0.001400 0.000008
|
||||
n404 0.989400 0.011878
|
||||
n405 0.916000 0.138225
|
||||
n406 0.992800 0.000014
|
||||
n407 0.988400 0.000008
|
||||
n408 0.005800 0.000118
|
||||
n409 0.011400 0.003587
|
||||
n410 0.002800 0.000009
|
||||
n411 0.991800 0.000040
|
||||
n412 0.991400 0.095598
|
||||
n413 0.990200 0.000379
|
||||
o_8_ 0.349800 0.002551
|
||||
n415 0.924000 0.130524
|
||||
n416 0.983400 0.032258
|
||||
n417 0.983800 0.011813
|
||||
n418 0.994000 0.000364
|
||||
n419 0.980000 0.000014
|
||||
n420 0.997000 0.026195
|
||||
n421 0.994200 0.000324
|
||||
n422 0.992800 0.121254
|
||||
n423 0.992600 0.000010
|
||||
n424 0.988600 0.006715
|
||||
n425 0.003400 0.006246
|
||||
n426 0.953400 0.000124
|
||||
n427 0.994200 0.241129
|
||||
n428 0.987000 0.007104
|
||||
n429 0.996400 0.026356
|
||||
n430 0.994800 0.000290
|
||||
n431 0.004400 0.092593
|
||||
o_9_ 0.403200 0.000043
|
||||
n433 0.995600 0.095814
|
||||
n434 0.993400 0.038196
|
||||
n435 0.993600 0.024852
|
||||
n436 0.130000 0.028115
|
||||
n437 0.993800 0.044574
|
||||
n438 0.013200 0.000453
|
||||
n439 0.019000 0.000508
|
||||
n440 0.989400 0.000015
|
||||
n441 0.994000 0.003184
|
||||
n442 0.891400 0.168369
|
||||
n443 0.978600 0.040581
|
||||
o_10_ 0.403800 0.000301
|
||||
n445 0.978000 0.000044
|
||||
n446 0.994400 0.025586
|
||||
n447 0.001200 0.000009
|
||||
n448 0.021400 0.004759
|
||||
n449 0.004400 0.000029
|
||||
n450 0.993800 0.000370
|
||||
n451 0.953400 0.000054
|
||||
n452 0.978800 0.209842
|
||||
n453 0.994400 0.089826
|
||||
n454 0.004200 0.000029
|
||||
o_11_ 0.350600 0.002084
|
||||
n456 0.962400 0.069158
|
||||
n457 0.994200 0.001589
|
||||
n458 0.840800 0.000140
|
||||
n459 0.991400 0.046785
|
||||
n460 0.870400 0.193841
|
||||
n461 0.125400 0.027828
|
||||
n462 0.990200 0.025435
|
||||
n463 0.029400 0.001816
|
||||
n464 0.031400 0.001794
|
||||
n465 0.994600 0.007160
|
||||
n466 0.996400 0.026214
|
||||
n467 0.993600 0.007148
|
||||
n468 0.955800 0.000567
|
||||
n469 0.995000 0.000888
|
||||
n470 0.994000 0.000270
|
||||
o_12_ 0.317400 0.243163
|
||||
n472 0.798600 0.250699
|
||||
n473 0.990000 0.019603
|
||||
n474 0.996200 0.027907
|
||||
n475 0.869000 0.074324
|
||||
n476 0.983200 0.000202
|
||||
n477 0.988600 0.000689
|
||||
n478 0.989000 0.000029
|
||||
n479 0.995200 0.027583
|
||||
n480 0.969000 0.000978
|
||||
n481 0.994600 0.002785
|
||||
n482 0.977400 0.000121
|
||||
n483 0.008400 0.089927
|
||||
n484 0.992000 0.028673
|
||||
n485 0.990200 0.000009
|
||||
o_13_ 0.307800 0.303413
|
||||
n487 0.993800 0.000516
|
||||
n488 0.995400 0.028651
|
||||
n489 0.996600 0.026395
|
||||
n490 0.979600 0.160741
|
||||
n491 0.996000 0.028813
|
||||
n492 0.995400 0.090836
|
||||
o_14_ 0.341000 0.316198
|
||||
n494 0.989200 0.000000
|
||||
o_15_ 0.219200 0.000318
|
||||
n496 0.930400 0.043796
|
||||
n497 0.955000 0.122138
|
||||
n498 0.965600 0.057609
|
||||
n499 0.858600 0.028316
|
||||
n500 0.993800 0.086371
|
||||
n501 0.995200 0.002791
|
||||
n502 0.997000 0.028222
|
||||
n503 0.984800 0.000180
|
||||
o_16_ 0.194000 0.027751
|
||||
n505 0.993800 0.006763
|
||||
n506 0.867000 0.000032
|
||||
n507 0.994800 0.026079
|
||||
o_17_ 0.172400 0.000018
|
||||
n509 0.996400 0.027848
|
||||
o_18_ 0.179600 0.000561
|
||||
n511 0.979600 0.000500
|
||||
n512 0.267400 0.086947
|
||||
n513 0.985000 0.080272
|
||||
n514 0.967200 0.000329
|
||||
n515 0.991400 0.176143
|
||||
n516 0.971600 0.000029
|
||||
n517 0.053000 0.000308
|
||||
n518 0.972400 0.000000
|
||||
n519 0.815600 0.244911
|
||||
n520 0.991000 0.024752
|
||||
n521 0.961600 0.000106
|
||||
n522 0.944800 0.002617
|
||||
n523 0.986400 0.000006
|
||||
n524 0.994800 0.000566
|
||||
n525 0.956600 0.061465
|
||||
n526 0.994200 0.038867
|
||||
n527 0.968400 0.058976
|
||||
n528 0.012200 0.000161
|
||||
n529 0.967800 0.000110
|
||||
n530 0.917600 0.000060
|
||||
n531 0.990600 0.184160
|
||||
n532 0.990800 0.000154
|
||||
n533 0.978000 0.000126
|
||||
n534 0.624400 0.058429
|
||||
n535 0.982200 0.000008
|
||||
n536 0.985600 0.009482
|
||||
n537 0.993200 0.028683
|
||||
n538 0.950000 0.000284
|
||||
n539 0.013200 0.119947
|
||||
n540 0.864800 0.001560
|
||||
o_5_ 0.336200 0.008020
|
||||
n542 0.994200 0.027847
|
||||
n543 0.981600 0.000066
|
||||
n544 0.104400 0.010183
|
||||
n545 0.985600 0.040693
|
||||
n546 0.952600 0.084627
|
||||
n547 0.989800 0.000016
|
||||
o_6_ 0.405200 0.002535
|
||||
n549 0.983600 0.000160
|
||||
n550 0.963000 0.068096
|
||||
n551 0.850800 0.211876
|
||||
n552 0.978600 0.020720
|
||||
n553 0.988800 0.000082
|
||||
n554 0.987200 0.123397
|
||||
n555 0.969000 0.000184
|
||||
o_7_ 0.362200 0.027373
|
||||
n557 0.988000 0.045601
|
||||
n558 0.967800 0.000073
|
||||
n559 0.939400 0.000077
|
||||
n560 0.515200 0.115410
|
||||
n561 0.079600 0.086566
|
||||
n562 0.962800 0.011938
|
||||
n563 0.883600 0.000532
|
||||
n564 0.989000 0.054625
|
||||
n565 0.765600 0.272521
|
||||
n566 0.963200 0.001389
|
||||
n567 0.950000 0.000028
|
||||
n568 0.991600 0.178580
|
||||
n569 0.608600 0.058685
|
||||
n570 0.845800 0.098692
|
||||
n571 0.993400 0.000005
|
||||
n572 0.958800 0.000768
|
||||
n573 0.990400 0.000011
|
||||
n574 0.963600 0.000164
|
||||
n575 0.922600 0.000670
|
||||
n576 0.992600 0.144436
|
||||
n577 0.962000 0.069620
|
||||
n578 0.880000 0.000415
|
||||
n579 0.030800 0.000687
|
||||
n580 0.962200 0.017248
|
||||
n581 0.876800 0.001237
|
||||
n582 0.993600 0.000739
|
||||
n583 0.947000 0.000178
|
||||
n584 0.971600 0.000000
|
||||
n585 0.956800 0.051408
|
||||
n586 0.924200 0.130560
|
||||
n587 0.991000 0.025470
|
||||
n588 0.981400 0.000101
|
||||
n589 0.904000 0.153507
|
||||
n590 0.995800 0.016707
|
||||
n591 0.980400 0.000107
|
||||
n592 0.994200 0.000569
|
||||
n593 0.984200 0.000024
|
||||
n594 0.918200 0.002910
|
||||
o_0_ 0.000000 0.000000
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue