From 893f9c2adcc1ef7227d51a73e11ebe0aa37ab43f Mon Sep 17 00:00:00 2001 From: Sinaei Date: Fri, 23 Feb 2024 12:05:12 +0900 Subject: [PATCH] add chisel template --- .github/workflows/template-cleanup.yml | 62 +++ .github/workflows/test.yml | 59 +++ .gitignore | 299 ++++++++++- .mill-version | 1 + LICENSE | 698 +------------------------ README.md | 113 +++- build.sbt | 24 + build.sc | 30 ++ clkr/RAM.vhd | 74 --- clkr/RAM_INIT_isim_beh.exe | Bin 94720 -> 0 bytes clkr/REGISTER_FILE_isim_beh.exe | Bin 94720 -> 0 bytes clkr/RamInit.vhd | 34 -- clkr/RegFile.vhd | 43 -- clkr/TOP_isim_beh1.wdb | Bin 9892 -> 0 bytes clkr/Top.vhd | 72 --- clkr/Top_isim_beh.exe | Bin 94720 -> 0 bytes clkr/Top_isim_beh.wdb | Bin 9892 -> 0 bytes clkr/clkr.xise | 352 ------------- clkr/fuse.log | 25 - clkr/fuse.xmsgs | 12 - clkr/fuseRelaunch.cmd | 1 - clkr/input.dat | 5 - clkr/isim.cmd | 3 - clkr/isim.log | 30 -- clkr/xilinxsim.ini | 1 - project/build.properties | 1 + project/plugins.sbt | 1 + src/main/scala/gcd/DecoupledGCD.scala | 73 +++ src/main/scala/gcd/GCD.scala | 34 ++ src/test/scala/gcd/GCDSpec.scala | 68 +++ 30 files changed, 771 insertions(+), 1344 deletions(-) create mode 100644 .github/workflows/template-cleanup.yml create mode 100644 .github/workflows/test.yml create mode 100644 .mill-version create mode 100644 build.sbt create mode 100644 build.sc delete mode 100644 clkr/RAM.vhd delete mode 100644 clkr/RAM_INIT_isim_beh.exe delete mode 100644 clkr/REGISTER_FILE_isim_beh.exe delete mode 100644 clkr/RamInit.vhd delete mode 100644 clkr/RegFile.vhd delete mode 100644 clkr/TOP_isim_beh1.wdb delete mode 100644 clkr/Top.vhd delete mode 100644 clkr/Top_isim_beh.exe delete mode 100644 clkr/Top_isim_beh.wdb delete mode 100644 clkr/clkr.xise delete mode 100644 clkr/fuse.log delete mode 100644 clkr/fuse.xmsgs delete mode 100644 clkr/fuseRelaunch.cmd delete mode 100644 clkr/input.dat delete mode 100644 clkr/isim.cmd delete mode 100644 clkr/isim.log delete mode 100644 clkr/xilinxsim.ini create mode 100644 project/build.properties create mode 100644 project/plugins.sbt create mode 100644 src/main/scala/gcd/DecoupledGCD.scala create mode 100644 src/main/scala/gcd/GCD.scala create mode 100644 src/test/scala/gcd/GCDSpec.scala diff --git a/.github/workflows/template-cleanup.yml b/.github/workflows/template-cleanup.yml new file mode 100644 index 0000000..8c394eb --- /dev/null +++ b/.github/workflows/template-cleanup.yml @@ -0,0 +1,62 @@ +# Workflow to cleanup projects created from this template +# Adapted from workflow of the same name in https://github.com/JetBrains/intellij-platform-plugin-template +# SPDX-License-Identifier: Apache-2.0 + +name: Template Cleanup +on: + push: + branches: [main] + +jobs: + # Triggered on first push to repos created from the template + template-cleanup: + name: Template Cleanup + permissions: + contents: write + runs-on: ubuntu-latest + if: github.event.repository.name != 'chisel-template' + steps: + + - name: Checkout + uses: actions/checkout@v4 + with: + # These are needed to make ad-m/github-push-action work + # https://github.com/ad-m/github-push-action/tree/d91a481090679876dfc4178fef17f286781251df#example-workflow-file + persist-credentials: false + fetch-depth: 0 + + - name: Cleanup + run: | + export LC_CTYPE=C + export LANG=C + + # Prepare variables + NAME="${GITHUB_REPOSITORY##*/}" + ORG="$GITHUB_REPOSITORY_OWNER" + SAFE_ORG=$(echo $ORG | sed 's/[^a-zA-Z0-9]//g' | tr '[:upper:]' '[:lower:]') + GROUP="com.github.$SAFE_ORG" + + # Replace placeholders + sed -i "s/%NAME%/$NAME/g" build.sbt build.sc README.md src/test/scala/gcd/* + sed -i "s/%REPOSITORY%/${GITHUB_REPOSITORY/\//\\/}/g" README.md + sed -i "s/%ORGANIZATION%/$GROUP/g" build.sbt + + # Remove lines marked with #REMOVE-ON-CLEANUP# + sed -i '/#REMOVE-ON-CLEANUP#/d' README.md + + rm -rf \ + .github/workflows/template-cleanup.yml \ + LICENSE + + - name: Commit + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add . + git commit -m "Template cleanup" + + - name: Push changes + uses: ad-m/github-push-action@v0.8.0 + with: + branch: main + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..cbd456f --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,59 @@ +name: Continuous Integration + +on: + push: + tags: ['*'] + branches: ['main'] + pull_request: + workflow_dispatch: + +env: + verilator-version: v5.012 + verilator-install-dir: verilator-install + +jobs: + ci: + name: ci + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Cleanup + run: sed -i "s/%NAME%/test/g" build.sc + - name: Cache Scala + uses: coursier/cache-action@v6 + - name: Setup Scala + uses: coursier/setup-action@v1 + with: + jvm: adopt:11 + apps: sbt mill + - name: Setup Dependencies + run: | + sudo apt-get install ccache + - name: Get Cached Verilator + id: get-cached-verilator + uses: actions/cache@v4 + with: + path: ${{ env.verilator-install-dir }} + key: verilator-${{ env.verilator-version }} + - name: Install Verilator + if: steps.get-cached-verilator.outputs.cache-hit != 'true' + run: | + sudo apt-get install git help2man perl python3 make autoconf g++ flex bison numactl perl-doc libfl-dev + git clone https://github.com/verilator/verilator + unset VERILATOR_ROOT + cd verilator + git checkout ${{ env.verilator-version }} + autoconf + ./configure --prefix=$(pwd)/../${{ env.verilator-install-dir }} + make + make install + - name: Set PATH + run: | + echo "$(pwd)/${{ env.verilator-install-dir }}/bin" >> $GITHUB_PATH + echo VERILATOR_ROOT="$(pwd)/${{ env.verilator-install-dir }}/share/verilator" >> $GITHUB_ENV + ln -sf $(pwd)/${{ env.verilator-install-dir }}/bin/verilator_bin $(pwd)/${{ env.verilator-install-dir }}/share/verilator/verilator_bin + - name: SBT Test + run: sbt test + - name: mill Test + run: mill _.test diff --git a/.gitignore b/.gitignore index 6f33875..12033d3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ -# Created by https://www.toptal.com/developers/gitignore/api/xilinxise -# Edit at https://www.toptal.com/developers/gitignore?templates=xilinxise - -### XilinxISE ### +### Project Specific stuff +test_run_dir/* +### XilinxISE template # intermediate build files *.bgn *.bit @@ -46,16 +45,6 @@ *_usage.xml *_xst.xrpt -# iMPACT generated files -_impactbatch.log -impact.xsl -impact_impact.xwbt -ise_impact.cmd -webtalk_impact.xml - -# Core Generator generated files -xaw2verilog.log - # project-wide generated files *.gise par_usage_statistics.html @@ -65,10 +54,288 @@ webtalk_pn.xml # generated folders iseconfig/ -isim/ xlnx_auto_0_xdb/ xst/ _ngo/ _xmsgs/ +### Eclipse template +*.pydevproject +.metadata +.gradle +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath + +# Eclipse Core +.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Java annotation processor (APT) +.factorypath + +# PDT-specific +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse +### C template +# Object files +*.o +*.ko +*.obj +*.elf + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +### SBT template +# Simple Build Tool +# http://www.scala-sbt.org/release/docs/Getting-Started/Directories.html#configuring-version-control + +target/ +lib_managed/ +src_managed/ +project/boot/ +.history +.cache +### Emacs template +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +### Vim template +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +*.un~ +Session.vim +.netrwhist +*~ +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +### C++ template +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +### OSX template +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +### Xcode template +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata + +## Other +*.xccheckout +*.moved-aside +*.xcuserstate +### Scala template +*.class +*.log +/.bsp + +# sbt specific +.cache +.history +.lib/ +dist/* +target/ +lib_managed/ +src_managed/ +project/boot/ +project/plugins/project/ + +# Scala-IDE specific +.scala_dependencies +.worksheet +### Java template +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* -# End of https://www.toptal.com/developers/gitignore/api/xilinxise diff --git a/.mill-version b/.mill-version new file mode 100644 index 0000000..62d5dbd --- /dev/null +++ b/.mill-version @@ -0,0 +1 @@ +0.11.5 diff --git a/LICENSE b/LICENSE index f288702..68a49da 100644 --- a/LICENSE +++ b/LICENSE @@ -1,674 +1,24 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +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 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. + +For more information, please refer to diff --git a/README.md b/README.md index 356e05e..db79f5a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,111 @@ -# clkr -HyperDbg's HDL module for hardware-level debugging +Chisel Project Template +======================= + +You've done the [Chisel Bootcamp](https://github.com/freechipsproject/chisel-bootcamp), and now you +are ready to start your own Chisel project. The following procedure should get you started +with a clean running [Chisel3](https://www.chisel-lang.org/) project. + +## Make your own Chisel3 project + +### Dependencies + +#### JDK 8 or newer + +We recommend LTS releases Java 8 and Java 11. You can install the JDK as your operating system recommends, or use the prebuilt binaries from [AdoptOpenJDK](https://adoptopenjdk.net/). + +#### SBT or mill + +SBT is the most common build tool in the Scala community. You can download it [here](https://www.scala-sbt.org/download.html). +mill is another Scala/Java build tool without obscure DSL like SBT. You can download it [here](https://github.com/com-lihaoyi/mill/releases) + +#### Verilator + +The test with `svsim` needs Verilator installed. +See Verilator installation instructions [here](https://verilator.org/guide/latest/install.html). + +### How to get started + +#### Create a repository from the template + +This repository is a Github template. You can create your own repository from it by clicking the green `Use this template` in the top right. +Please leave `Include all branches` **unchecked**; checking it will pollute the history of your new repository. +For more information, see ["Creating a repository from a template"](https://docs.github.com/en/free-pro-team@latest/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template). + +#### Wait for the template cleanup workflow to complete + +After using the template to create your own blank project, please wait a minute or two for the `Template cleanup` workflow to run which will removes some template-specific stuff from the repository (like the LICENSE). +Refresh the repository page in your browser until you see a 2nd commit by `actions-user` titled `Template cleanup`. + + +#### Clone your repository + +Once you have created a repository from this template and the `Template cleanup` workflow has completed, you can click the green button to get a link for cloning your repository. +Note that it is easiest to push to a repository if you set up SSH with Github, please see the [related documentation](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh). SSH is required for pushing to a Github repository when using two-factor authentication. + +```sh +git clone git@github.com:%REPOSITORY%.git +cd %NAME% +``` +(The variables wrapped in `%` will be filled in by the template cleanup) + +#### Set project organization and name in build.sbt + +The cleanup workflow will have attempted to provide sensible defaults for `ThisBuild / organization` and `name` in the `build.sbt`. +Feel free to use your text editor of choice to change them as you see fit. + +#### Clean up the README.md file + +Again, use you editor of choice to make the README specific to your project. + +#### Add a LICENSE file + +It is important to have a LICENSE for open source (or closed source) code. +This template repository has the Unlicense in order to allow users to add any license they want to derivative code. +The Unlicense is stripped when creating a repository from this template so that users do not accidentally unlicense their own work. + +For more information about a license, check out the [Github Docs](https://docs.github.com/en/free-pro-team@latest/github/building-a-strong-community/adding-a-license-to-a-repository). + +#### Commit your changes +```sh +git commit -m 'Starting %NAME%' +git push origin main +``` + +### Did it work? + +You should now have a working Chisel3 project. + +You can run the included test with: +```sh +sbt test +``` + +Alternatively, if you use Mill: +```sh +mill %NAME%.test +``` + +You should see a whole bunch of output that ends with something like the following lines +``` +[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0 +[info] All tests passed. +[success] Total time: 5 s, completed Dec 16, 2020 12:18:44 PM +``` +If you see the above then... + +### It worked! + +You are ready to go. We have a few recommended practices and things to do. + +* Use packages and following conventions for [structure](https://www.scala-sbt.org/1.x/docs/Directories.html) and [naming](http://docs.scala-lang.org/style/naming-conventions.html) +* Package names should be clearly reflected in the testing hierarchy +* Build tests for all your work +* Read more about testing in SBT in the [SBT docs](https://www.scala-sbt.org/1.x/docs/Testing.html) +* This template includes a [test dependency](https://www.scala-sbt.org/1.x/docs/Library-Dependencies.html#Per-configuration+dependencies) on [ScalaTest](https://www.scalatest.org/). This, coupled with `svsim` (included with Chisel) and `verilator`, are a starting point for testing Chisel generators. + * You can remove this dependency in the build.sbt file if you want to +* Change the name of your project in the build.sbt file +* Change your README.md + +## Problems? Questions? + +Check out the [Chisel Users Community](https://www.chisel-lang.org/community.html) page for links to get in contact! diff --git a/build.sbt b/build.sbt new file mode 100644 index 0000000..9742b43 --- /dev/null +++ b/build.sbt @@ -0,0 +1,24 @@ +// See README.md for license details. + +ThisBuild / scalaVersion := "2.13.12" +ThisBuild / version := "0.1.0" +ThisBuild / organization := "%ORGANIZATION%" + +val chiselVersion = "6.0.0" + +lazy val root = (project in file(".")) + .settings( + name := "%NAME%", + libraryDependencies ++= Seq( + "org.chipsalliance" %% "chisel" % chiselVersion, + "org.scalatest" %% "scalatest" % "3.2.16" % "test", + ), + scalacOptions ++= Seq( + "-language:reflectiveCalls", + "-deprecation", + "-feature", + "-Xcheckinit", + "-Ymacro-annotations", + ), + addCompilerPlugin("org.chipsalliance" % "chisel-plugin" % chiselVersion cross CrossVersion.full), + ) diff --git a/build.sc b/build.sc new file mode 100644 index 0000000..0addcbe --- /dev/null +++ b/build.sc @@ -0,0 +1,30 @@ +// import Mill dependency +import mill._ +import mill.define.Sources +import mill.modules.Util +import mill.scalalib.TestModule.ScalaTest +import scalalib._ +// support BSP +import mill.bsp._ + +object %NAME% extends SbtModule { m => + override def millSourcePath = os.pwd + override def scalaVersion = "2.13.12" + override def scalacOptions = Seq( + "-language:reflectiveCalls", + "-deprecation", + "-feature", + "-Xcheckinit", + ) + override def ivyDeps = Agg( + ivy"org.chipsalliance::chisel:6.0.0", + ) + override def scalacPluginIvyDeps = Agg( + ivy"org.chipsalliance:::chisel-plugin:6.0.0", + ) + object test extends SbtModuleTests with TestModule.ScalaTest { + override def ivyDeps = m.ivyDeps() ++ Agg( + ivy"org.scalatest::scalatest::3.2.16" + ) + } +} diff --git a/clkr/RAM.vhd b/clkr/RAM.vhd deleted file mode 100644 index c5c43de..0000000 --- a/clkr/RAM.vhd +++ /dev/null @@ -1,74 +0,0 @@ -LIBRARY IEEE; -USE IEEE.STD_LOGIC_1164.ALL; -USE ieee.numeric_std.ALL; - --- A 128x8 single-port RAM in VHDL -ENTITY RAM IS - PORT ( - RAM_ADDR : IN std_logic_vector(6 DOWNTO 0); -- Address to write/read RAM - RAM_DATA_IN : IN std_logic_vector(7 DOWNTO 0); -- Data to write into RAM - RAM_WR : IN std_logic; -- Write enable - RAM_CLOCK : IN std_logic; -- clock input for RAM - RAM_DATA_OUT : OUT std_logic_vector(7 DOWNTO 0) -- Data output of RAM - ); -END RAM; - -ARCHITECTURE Behavioral OF RAM IS - - -- define the new type for the 128x8 RAM - TYPE RAM_ARRAY IS ARRAY (0 TO 127) OF std_logic_vector (7 DOWNTO 0); - - -- initial values in the RAM - SIGNAL RAM : RAM_ARRAY := ( - x"55", x"66", x"77", x"67", -- 0x00: - x"99", x"00", x"00", x"11", -- 0x04: - x"00", x"00", x"00", x"00", -- 0x08: - x"00", x"00", x"00", x"00", -- 0x0C: - x"00", x"00", x"00", x"00", -- 0x10: - x"00", x"00", x"00", x"00", -- 0x14: - x"00", x"00", x"00", x"00", -- 0x18: - x"00", x"00", x"00", x"00", -- 0x1C: - x"00", x"00", x"00", x"00", -- 0x20: - x"00", x"00", x"00", x"00", -- 0x24: - x"00", x"00", x"00", x"00", -- 0x28: - x"00", x"00", x"00", x"00", -- 0x2C: - x"00", x"00", x"00", x"00", -- 0x30: - x"00", x"00", x"00", x"00", -- 0x34: - x"00", x"00", x"00", x"00", -- 0x38: - x"00", x"00", x"00", x"00", -- 0x3C: - x"00", x"00", x"00", x"00", -- 0x40: - x"00", x"00", x"00", x"00", -- 0x44: - x"00", x"00", x"00", x"00", -- 0x48: - x"00", x"00", x"00", x"00", -- 0x4C: - x"00", x"00", x"00", x"00", -- 0x50: - x"00", x"00", x"00", x"00", -- 0x54: - x"00", x"00", x"00", x"00", -- 0x58: - x"00", x"00", x"00", x"00", -- 0x5C: - x"00", x"00", x"00", x"00", - x"00", x"00", x"00", x"00", - x"00", x"00", x"00", x"00", - x"00", x"00", x"00", x"00", - x"00", x"00", x"00", x"00", - x"00", x"00", x"00", x"00", - x"00", x"00", x"00", x"00", - x"00", x"00", x"00", x"00" - ); -BEGIN - - PROCESS (RAM_CLOCK) - BEGIN - IF (rising_edge(RAM_CLOCK)) THEN - IF (RAM_WR = '1') THEN -- when write enable = 1, - -- write input data into RAM at the provided address - RAM(to_integer(unsigned(RAM_ADDR))) <= RAM_DATA_IN; - - -- The index of the RAM array type needs to be integer so - -- converts RAM_ADDR from std_logic_vector -> Unsigned -> Interger using numeric_std library - END IF; - END IF; - END PROCESS; - - -- Data to be read out - RAM_DATA_OUT <= RAM(to_integer(unsigned(RAM_ADDR))); - -END Behavioral; \ No newline at end of file diff --git a/clkr/RAM_INIT_isim_beh.exe b/clkr/RAM_INIT_isim_beh.exe deleted file mode 100644 index fb891a9535ba402686c3a210d1430e181af1bb22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94720 zcmeFaeSB2K)xf`--6cy%xItKn2(sX!SVW`oC9t4b*vMVkRIF4{QG-FmY8BzGpdu#T z#IjtrQfpi7W2=3)FV9okr^OI0CIm@%kyl?(tl~@ST~{lJh9JuRzGv=k5>Wd*&+m`l zU%!0d-nnPa%$%7ybLPyMGqW{Ut#Wx>E|-`8*{sXe%v=7d)brmzY@!E_Y#HeKOaJFb zHM`@_kD59ErbWR83vat|;hb*=>*m~g>upBx`Wu1^6SoF$x-}TR;HA^8f$v*nzv2tMBAp|Kfe#@h9E2g7Dpx(uI{Yt%0 zQ1RcmscydH@l_PhsCK#L-tToi^TJi%$m8sDo$MM=(BI|i=XSYP@t?oSi+Pl)V3mSM zxWMJ|$%DWA+ttdqG#Y=jUwuANE-g?ell)8Yau5l+yffXdu_}~%JXzps9?%!?|1unO zyS6)|erX107&k02h#Bamc0!QUJy(x>f}qP)d&a`KbBsAI*MpORlBeqe-bK9o{8hmw zXEDEIkHJQ{(jyDVxSm2CB1um<^&(k&syIgUrWH{ld<@;n| z!57k8T1J{w;Md1PT&l#RkZj-v&F#`w`&NVA)T%X|Pl2GkT;g)AkwIWTGTP;`e7_;u zZ1w1Moy~rr`oTAKt5ff2&GM&fRh{;6qkvM|v8sZ(Hx-=K5e?On!ll>E4An|)XXz>5 zSc=w@-W?W^W~&>#+N0u2za(BY)YFH^$=a^h#U(Sc*ONm!`{Y7tbEU~L0|3r-vYu=C z?Ar@m69C*(q1W-!t&%Pvx>ej}-}FD^m|5MYunuphstesjHA>oUrkhqGywY1~tB%Id zavFy=cIkvyNkj2R@L_^Nl@5933Kk8G&Ao#%cf?aGRoaN^?-n4fWPcp}lnp#nB5lSYA{Hk#tnlc2EiN;l1fiW+>GJmWlmnT z032g9Q4jP)ohwmR;0~f3+!ts8bMhR8dJO~y;S~AH46>XL=`AN@`NE)0a6axSC*Ns3 z`TqSx@~vB`k`r;kEz*xeHaTT1pp49uP&BZIqCii|Ur0(T@bPVVil%@K?yCSC>h}-H zS8TC^+uDOmR|xJ8dvKrc!JY2lF73g6k6O`Ua{(}@rCFZrK|V>48DG=$CH)O#J=GYJ zz7dI_%ZGHHd{ha?R7xv-DeFi?b;ZW&idH=}Gqj*$V>YmCfOL~_ev2BJ2n)$K8@LXz zo_Z)0Qo}P3jQ|BjfcA?g&~!y>sHV%_NLX>Ah%Av`dc_v|FCpFy>qWp_cWwKYo?fkPKv)>-H}s0kjlRhmho(@k@vRtwUgWG!&FT5FBAE&p>D-WtDx1@`VF+ z=kq;2`y#$BBSIl=7esS?Wgl|3^wJ~p*rh7$+x88TIP$og2I)I!>iM=0B7osZ3D1YV zzJsP#;$J3STOGKbl9!7dW3bF&uw-+C<)Kiil*5>)wckI2NQ9-!1Y%aYjJagIk4#h( z2(!zF!|W2GiRIOsWKyTg5S~9=EPWUP^hH-wM|Vr9CVpRrx=& zP_3{~xW8hdb9-1w^34W@0~QwgSP{!Cq@YLqiiHGdKR6V&$@85wv#`xQqj@*1mwvde zZ#VVuPu1mDG%p{9ApL$fnB(>`dycxar?(bJOiboKhC`64!!4~s82S55XhDI{bnbrm zcuhb0O~lwUp*w)mIiL1OGSb2FK<&pMk*4ib!yyN=fNgLFAaRahd{%N~4$KM0d&urU z-|XTDzssDweyQ>jz!U+%;#H(`ZD1&qUCB>~wpWfJ1~&f|fJX&zw*ah8JM$55HPB)A zDn+KWWcTraQ-KDRHDn6x9f5%r?7`aUVBOpoYb`J-+D%E9OG$%rB{k$qDwjNF$?z$+ zZ#da0eQb}IA!#jKyOilkYeclF636zGSnHJN>sw;{3v^9%u---4?MZn`4y!k>Ar97a zeX(3$$m?GLXh;Qq(--U2FM(|k7&Yt7|1SnTzxjFLO*K=_#?qGu{? zEl3DfQnFt<#Vv)yLRwQR%+*W4aU}beDvJp~wYET-hk%m`{HGeSP$aNhjw$`_qca(k zuLZd9&K)Gp26Uf%1n%sc&uq!NhYuy^i=EQy`eL1@U{p_Kmt)~k03GHO9<11Cza!P8 zMaHI=e~#2lm7Gi-_O&81fTA2LbvT#$ZS-4RT1+HMs>G!z{57jEnWaQdh`1Rj+D*fH z5hzE^Qa$2k3o_)dg>F}mEK*a~Wz1a*q`}A1x~`TpRU5Ai)$_J1WRx&?gGYmh3m7r( z(El-*EwgzDG4;Id&!iSA*-_ws2)HMin*Es)B!#xtWpPzoLwr=>mJDbfVL8(tOggB99oyjz(N1(+&V@Ho_)P=p!CpPCn{FCrY?#64^nq{TlQ@ zM5T-|?>&VQ z?bC&;$sGBq)*j$zPIi!P$RQ1|3v)=df>bN$GMitCnLseh?WYGxbBU-@pT&IU3lue| zvIp@atP23n>;b$ffZmil`Rto=U=L!mLX?8d^$V`@|w_aCb%oWYtm*N#q4)3&l zb%dmgeOD1cCn_hY8`e<^0Qrze2Mn`|!oUhZ;9BZ#Q2^?kFX$dGVyUN47I9C&!Xg_7 zfk)b-Gn3VVK!k4{GQFL$psEsBD)3HDg2<;mO;#<$RZ5)sjC#8gqQXBXXsMFddD+jQ zk2#w1V=SK1k9efcPNEi<%2oRL5i20XX%S zP-f3DNGB%>GLNF9?3O&p>jio9cMMvQ*0`L(ehhT9*2H?+MRim%V+7SX$*Im@sZJMq zi&LHLs61aFCZC(MqhtWfdCQkK7SA9IvVa`QC6q_bRc^FV(VL(Ca1L6O5E7pDs1|*V zm%XTmgqnXxLOxfm=|)&r%91iSGw#Oe*%3NDbHJ(bN^4Y=90O4X=d;U2dA%>3H@kJFG|$*HnuVIE6IQ9-8}i_ z4*4-&4*4VVSSiJlv55#M@fu@J!NdUPBqa#csXS}O-MD- zp9!RE4?7tuL5G6zpEAWZtQSf6CBhPk*&{DSrM=0w z;}P!8_}+(5&7lY#&MXRmB1I61e`;dFjq&|ejRjRtcIf|Z= zE3c9+g3OC8Z>uhLL*FoBq&0nm2xLT@3~`7$ONa{f5OqX&v7iqjfujhy%^~E{zJ!eK zL&z6eX!SL@;$CE{hc@^pFZ-{@<=fx^Den791UvQKBxpUI>QcpNO_+nEA8Jk8Eqri~ za73Otjx7>>EYn|9lPdaGHA9u7Q=rn6vr21MP?>PvlCEOzO_j_Rs&>g|c=sJsr2KMw zy^5WUPT&!gn4mnVV4L-EoiyN?0=ZUMq7zDiD~BW2&ZfR~P7e3=*5MWoTR?eCdFn74Y>A zxDxQy4)_THPj|qh0LLBh_XK>70~YI+4hfEROP8@OI+>1jt5O1$@VT((7)hEcxt^EZ zgnH(Tnd`7xWai}uNlay*ul6pq3=;R>;CooC@|g>+@)r9EG;VK|6=+zL4`UCrMA1$u}t=>6>?f+m&93(vbc( z4_cw)O4SO!bPGg6$S0o(Ate`pXGa*%GRA@;^H_dvsr#k&AS~F!CmXyk5P%@pY z?T=8q9FwoPetvtE%w551t4z0EjawTd=G)zoE|)iM?Jx#MtSWy^-3;%+-Eq$j7Eekd!OZV%Z>He;WM>C4G)e(=mcc1=n+|wDa*c7uiLT>Qt^i8zi7D^af zV?`=;i-;X|l5WWppq3#H4c066%^?Q(W_yw>oUM{yO`?PBljs0skW@c-wVvGzC+6|# zq&aX)Ht_wAiHFfop!qIT{L`5Yd^ZR5TAQ=mRce{V^J(p;pn{mdZJ+^PgS2v`FE~X$ zobcIWB&>%wEgG*UXNUY(NJHt?r@HluZh54*0?D`CuZQ1Q_<_zsTh?GfOrO2znCqPc zuY2?weBjw5KR@^7TuYU#wS*GHQASVf)js$*3{>Lij}j7!QC- zFYJ<6$y8qUGAc$Ub1NaVg<~}hZj?v!L(oU5g|L}6sEE1 zP_Z$Rno*Dqyb4_EbWC0Kq!B7rg5iqD%*Zz*mq(w?DnBwPcowQ@R5bZ_KyU0LLn=we+po>ZfW)dD*0~vZh0pQv%4tt?K{Z# z4kv=oE%JFIpYia4gfAYpjbPk5AU(ujQ}6Pg0xgG-OcTA~{e&!2CI5i4>}Qmrnu9WsHiP1(&T`wb?M0h zamIvwJ1UEqm#p3P>j*KOk@&;h`&%bF-^+5}x8~kI7j+A~6~czR=P7n9xfd3+he>ux z-y4-kQyIH5`s8okJZ)qn1jtnMN>^KFMS6A}fW(KH;+WOmj)po&H`n=ftDu)y5rGiz z(0eqk+ZtQR$GDPQ8sAwS8iZn!UFT3M@JJ8*{G;H|o5P3Rb&7I9KduMtCzM`Hs|!(1 zHF}=C?X6pFF|*sh@G@=n&e$5K3El3P_QxH7s}`Q5AAH4pv(V@lAJ?WQOLb3Yjnx@5 z_g)xlOZQ7ma6St8@EC*U&6~Gsm7b*XbVqh$;^P{`Qql53v|}vWndoZQMpn55iGQ(% zLoNo`*rDxI%$kCK9aZni0ole7)edTJ(cQrBAtGacFXnPaUUF~jz zPTXeC8AlqcqpyU^&l$*l`y_DVsSziVKAyyfqrHc-)flP*C!@(g_!UBz7D3(v{0FhBa`%$Sle|oayc0o;+EOcIroR`5%xJAu5N`|XB z&UyuV{W&9%)=hgvp`Cn=pj##5dD*j2$dC|gnJHYE6Nwz@M3zZpI2VbUNsady19kH- z4Qme-c(Rae|2{&+B)ljlnu_&WTeG{I#!%A=f(`NQ%%fJx#u+Tk)qa@Fi;6~(>t&Id zGQsH9N7kY0ig$GLQ?J$-hbBTEt#Jw=^H71-h(`c{fY!)XB7x(zModry`e}`yLZf*| z(;AVf1pLN8^N`o*Zyp+;H5HKF{su(Ht-bUdIHaPl#vSH0;o-+gkvJ2>r)MG>%CPY+ zR}5Q-Ko#t?ET)xCyPfWdi9?5=SeuA^p2!JzdSMW=tu$t}>TP?yx@Vmp z?p$ae^|{C=XayA;Q5&?zn}iPQO7`E6P`k_dB35gv5peQ$z-^^^oo|7ZOolN}j;e5{ zW}fCC8!x9v5~3@;aG z;xotF%is(+ARCxWRMHc9hU{F{HZ~=+#)k-+X|HjUneJ~~V5a*Snt8}=T&2cS`p2sJ zB_DhpRw;!?WCg1#(x4)?+V2jLdib`0kYS1|*(I3&6rh7?T&-JM?KTH%wP0Ng)~^Js zwGY<0g7qH`)^foLfpwc;{kRVn<8-T?aIn5XBu#Q5QXU z80BVGTSik2T6T(kHA-oR>|nxgb6GYxo*6RD+6#oi&CYDbD^IES44JE0^eknEKql@|wxbW3HF4qA{oD{ifQLh45=Ac1}@VHfC$!BK1VlY~3&m*-0UXM8G& zL{6|uK0#z#J6MaATfPqndpg5A?)jQtw@LSG)UEp;Cjo5I>33z<;Xqh!m8=ITv&(iv zc`WG-L7s@lb*%QDl~qXijYNs{Ln+JJ7RkPt@mZUBh2JoWgl->nCyt9J6|JBaMw5!V ziq?3Fy}p=rb!E(2#QW{Osv%kei4k~2!<$*Qt=QV(7x(!LUP9?9~9Ryu8reIEnh zD;WDnw4U%ajtxsgv+NLai=LWM?ktX1Fm0}~OBGBnx5uF#qD8v+j$7NrX^92s3_V5E zJ7*BpZT~|}STo9*9(RJg%6=gSaPnJ6e$2wGc&|fmq|XnXA&wrpxzVjpDA{sxflGU+ zHK*wG(Qm>fJHW$pt*xze-odtPHc@b(U2of1n*Qblrov3&#C1jqDvBtai31bYCA_Fa z?G=)fnggXl%FS&I+gE6m#L4zTDy@%VF6|vdPV?ByS!WOE$XwJFDKm|U_H&a!v^G;S z(+SyAc_aEmVNnF`^pR@@ZD9IXGB%3rK@-6@>&Cjwx-zLLa-xdrmMh1ZoP1yjpa_B* zQupbnko_v9e?>oi2pd@)nNuLF%IIg#DRX7Y>=m@`D$zv($aIz}gbL{#r(kw(oq~Ji zl3F|E=Gf%iP&q3(wUFK4hl*3}nO{xCO;EvL+z1m(lAR8NoobKz>LlkmNq(r3R2DcX zLblZBE2`>MDKate0hGcuMu7YO2@93a;uTtDQUwp={Cf^ zZ|dnx#Ik#e0mv}~*!3ub)fGFj!o?8=L3xaoN4Y#IquOfCnSZk#5o=?O)rLYIYqLE& z-+gZVkzZ!-frDxko=TYe*XzW%iiC9#4cD>a|ngn*8&6$x$ zp%4kquD7Nr1Qs>z(aOPz*E0R0%Lnrj4{weouMXB|Q4BV1(o9w2aq+0yago(02Ex3Z zqgQVU2M`pk%g-DI*oFbY}`+v|}~M zobF!E5bDFZA^XS7-Cw~}e?&2X8ERXy_o4)jn!?vceX@LL54Ir`LiROZop_;>_~bQ( z5O42eZ$gc_U2q2c=|Eo^N@OWw_`U%#;kkzf1(`oaHh4p-9XgarXoHf1 zVt=|e&&+-JcifJ+wMk4oC$4Z$SuvzPGw$Uu33ik#^n-1})`@?v>Sf=HQ$zaCYj`WG z&1?9yTU)#tD-g!!{(5*_;@MbBp55b~ow~U%t1J%{>tapqMh8pD6HyL!XJsxIs{;&v zDolNHj=@h92G4~x!UG&;_rmNJDe{Sx4$v#lL<=wv?OnW7DVwmUu2mmG7ikjh7lsYm zPh(17!&<;)CkN!r)b@X*WvrLff`q)P*qIHCd0jY1sl}&H@LfU#3uBtTfw>SlR+9O> zT|~EasAE2Mc2GX3TN^UR*;j*Qzt;o&G9jmQyBVw~bbpU-CnHVNJB%C^d#nS;MM<46z$%6~{bjvOC!I4|$?$FV%Rzv`?v*{vuIBo0Ix4+G#R^+W%j=aC(F{?!LDECo|rfxT6vz)FIss=f$_4ocA&lWB1%im ze>~&2-^HjF#YE0_Q7uz$Ht^>?7@r*WMk_@6XiZ{@p+KDiL5W%avLBh|6q~f`C@N|N z?W=j~sg|`)=nmvw?S&4JfRMby<1YfGTU&02R z4BEG=L`+hoJEAp?QrT^@k90GT%x>1Wzszyb`wqmX-S;_=$dj}Gd}g$=(C}9d)tWLu zR!nm<{}}#>>$D~+#&-eVTH`jtz#2Pv>#1p;75>P?ty*IIs!qshO7>T@5#=<>gWWUXo6Q3WZkrpS+1$2S3G271ONSs(6&KqOi3FPQ6<*G z8QH*t`3QpuMXUByG!&0&Pt6Qn%#%YNJfoqD1TaOutI%o3Mn#3SUzGlXKq>YXr}PDh zeryp2+3(JmeoHoRZoUxCp&eEFkbFcJ_5Ht=euYzdnUp@)DSdvf^y_;{pPLOlwL4e$ z?@>tKy8qCLFqZybOaA)>WMplVKEZ#QT+ovlRxjDFP3E{}G1FD4vD0yvl1>!dXiI1(Kb)W20nb53_9&97AA_14)U!mNF4SOp@RNB94}7YdNfqZ zP{%PzWKGW+|JrMueaBL@WNfaviqaz{Po-p%r^3JlqXP`$4-()Xzz*gaRFmkH|Yw8koXNTnpWvuMqU zg0l5Zu}ivW9!!NN;2UAjL_iV#+eE@Mkah}JEGhQS!L=t(&4Kz0=m9{``w-bP`4-aT z_W+4ozJE;+w=my_yl?{8&dVy9%MBm2_AZfTz|tOGt}y4qrJ+N@B>Z) z*3C%Lgp zXN?lh=>RoLN&z4d$zm|=CHQp2QQOifU-BJkiiXFjX-8x@!m&$){WS(3?;fS>wKo?}wf= z709yWWj_%k8z;pFJ}}j)%rWWrp*b7)>;+i9Wa0?SXWi^)zbL4?W&Mt&$lcNjPuiy) zp9kVzTB3o1u zC#iA;`crzTop?jOb6Ywncv|B)8cG^j4XU8%gI27P7`S@|`D4z}ov$g**DUAj9OrAk z^L2{zwZQo*bH0{1Uq$N6s;AW)z@bwmTkCNFq>6xtz5SrPhO(JUaZKS-Lqqp-z&3!D+6yYJxCYTB6$8&b&<6T zRmB%$NhJ#%U3IZz@Qbh{bNa$K%PKh)4AsvQNk9%Kaj2EjWFI^mxBytLpVhVzoxK^u z1o|5+rWPS;T&QiLc=DD|FmgEqsyv=L_qAbg8tQP&+7R{|16bmkt)=GSp$qr((99R; z?KQ|I{G?_w-n#KpSlR=67!aIUVoq)%7oz46)sX!Rbgl8n!Y8T8v(IB+?{7oMf<@gM zd!z!x?PPLyU$1tv>6rAAe3+~7O=e3~sASiDmecotbLm8?=F$Ai{# zSVqOJ@~_Bn6J>+>{<(;)wI9OHtn|$8Nq1ZX@MQu1R)DF%hDu~z$~RJF9It#mqUx=W z+hOni##dy0n^P_O4U`Y-Md620UxgYK)Vg*Dt;W-Oi51=8w?De{D{>Afq672DInrDz zTbN|N{SwUV)oVVc$FqUD9nzNFhz8?q(Nc}m^}0Q}hmMTD?zdn3m+X7beBJM~Zyc3I zkF%vFgMXAtDaKVyb~EDEE$qZ#?Tn~nts-Zg4sW3=8 z&-O3jKjn*L|5!9HByrBy=a_xTAbS;iPrzW^RRLkInRol$3Csc;S{_I9&2G?B#q|uZ zuhY*2JN4uM`#hG9RBk-rcZK)O_R?$z9-T|ukKGxi8dbvRvW-;Np?g|mW@tTDj?A9i ze4xYfxy>c&7i8D+n~8ZHUlp-@SodV(sqslNj+sl* z{|zt8gA}s)@D{-cKR8<;kU4im`YG` zD}h>PLZP5p*uv!l$IV=}OpJU7*{J#zsWU-2V`Izg&epe+fA9AbLQgK970!a8URNt` zQ9l%ZJ@0Jb#pju#H_A?OJ0Yo_o(()nkOnG7)uNFK>;;zy>VrUABo}tmvw@|8-mqR; zrmwv3%lGBFg=1aGFp;d*D>2#f_{e^g%|NO4us9X2jar)>gR*WtuWa$z?U^xaXepO{ z`0KK9HTzf`@u?90ln$%XktMot{tOW)YTqWFDme`Xsc6N^F`BCKhl`AH+18k6yV*T{ z;YX>+2WI!6#r>K~D5AZgEsA7oM!iAF8yL|p!VL9r#EQ0g8AGBk?sAA_>P`8=j9}SN zZp8@(p`+seyHEVceEbj<@8~zUt31#L=P;D1JceL1xPypzD)2TiX%KHbHKPYrl9}@PA)gc#3$NGidl(ADJTUIFce(&^I=g?SF{KC$)S?kr~dp7}%8Y(XTowGUcSlN)(`xsPVA zCau~vpRUeHH~asZF2h|H&x(LV(A(cSAa(XAzf{b|iA=9tk_t#2thP1I!qRVe#BN%r zPr^&AqP1aytS1x2EzUaf(lT~u543NI*F`2_^N3qJYofp))IA*8M?wx)K+!+W*+ zeglRz^)m^Z|3TQ~Jfq{&{@s2eEP431{3fQ%_x6 zYEAz*9)5G-1y1!Aou`KnEi7hLu&6N7Rn6AonP%8!^ru!V6i&`CkoeNL5h#=<9?Wd_LmDU`>oo2&3u(7)iTAoA~uk7Q6S-%bKq;drwG&mb6u(9nbjt;B;DhgC7+ADV0mKJt{7(W#;Ifzx2E`OBv0I2 z&{Dd6iIRBoDt{zZ^;w$Llz?!g63-Zv0*d+l6H>Y4f6L3d*ozaI)?_O>0zVtfQl;cE zo)OQc8f#NjTuNeXZ{o0EJ`PGGyDo;aS50!ZyPNYig6+GVr>7IlrLQ(j{4N&@Sx-L+ zYNEKql()(M%pDCAR}qtkH3;nbhKb+n0~3bKe7#}f_xr$_1U9i@VyX}9K7pOmF!6yt zu=@peT*Jf%1yxL+Z)HImGo!HHD{m` z@xI}xH+vk}K+AJtnBFZMo*6b7$Gz6X099HxP)HQr9fco)5w*HkcgT>>c*)0^YM^dx~(at$w(==PSUN5{leI%+W|~bvOk2;!@lz$!pc*LX*EX0t!aMdDoW|J_l~Az z@tCahyE2qD1qmi)inF9M^OVbcbDh!+%sU||2%&PUa@`WA75rCU7Yu)U5lBZC*`0orrfe6J(wPn`Ghi+ zX{9#TKFCIy0Nk!H4<<3&3cA|7Mu`LR zDu`FysoT=N#HCKaV+_%W7oN(wRPV#}x)8VOgkPMx#h;ooQ~}~)eL#S0b;@7fpPpde z-#UoDHKzf+MX0((ER5TN@XOw~xLI4#qJ0AGR({u!eE_=?FHqRX^zC$d-~3kT4WEii zweYXaWa!e$yhU1Bw5UpNXshQNGTzr4(t@EpVB%J>Q(jza@6Z2B{c$T^R4Rp)@fj-> zSed}k{$>_2)wNX#e6PT5fjfj{I|aH=pxuez#TslWA=c0>FU=Gp9Z&By2#hb*pEg(( z^WeCSr+c3c!YLu&N2-J57L7igq&f(gx2Kcx9W!j|r!#EYtX7CGJ1+uy2xnEVzy{X<_!xAb(A z(?4x}`X`<%PujOz+Ls287t!=Hi=-1`w!roZY`4I+Lzn6y>Ap+p$hbq9(?NcKgZ^Fr zw1~PZa^)DC1S*uZ-+Z3uR(ttg5q`Tx9F3je`}x=c*BwDI+;px*qNg6Su?d6cnee z%|py6uim4fCff7*VqXmQS-sfsiqfS6-&Uk-T6jLB?3cUO!kvr9X)U*xX`F)UL(jqV zvBVU<&t6y&txe9`o>p|o!A{8+D(=y=mW5@Cj@L5^F(oAYx(6{QBbJ6ro#9H$*j_XT z)Skaagj2M}AJM_~lgjGa%GSnib%12B{Zj{0E0D!XPs{qQ4;8o$PA!uYABj3Fv6u6$ z*LBCtNuRkARAr&E>~zJNkQvxFFRY%P&a_`UYSgeN{{=p{32adLaLJ~qSz>onM)MO?m?OJ zp`v0%4Qi#7L@_5(jGldtk}yl(1c#fIUrP*fqW^TEokb8p!1G^0fRtZ$v~SRMn2U}$ zgUwjoxl*YUh)hSXh-r1c%nzugOR!|rSZP#NOq6?h&5T<6cqu)X_Y8YCT#pa2_yI@k zZ49Z3J;%BcN%2AZ?f0_T%11-1;0S}`E{)2G(R^IG{&QJ|eqM;8jc>WQGh$U4{v%{c zQwy{$C{g4XVrKbH`YIhghc~f z2g-I(Xm6YvPm|OqN$L}nYveld_QJ2x@rit>O;X|8Rc}OW&%de5(0@~xh}Drki@K;r z`P6u-YQ>om>m%__sgg%Df(0u1P)N*(k%{kVjqml7Dn1%|LI6+8B&6eS9sWp9J`;Kp zn6|PLj8ygBNwXFor)z7Uo1(2<>7P-~zU7-*#uKqN>2>SWPREc=q8=(*KvdhOUdozn zZHk0ZDWo-L zr2T|&;r_fI7cJ~ZL5mz*FSqV6^tG1v2gIyvT-D)&5o^O5M$oD8`nV{Ky zgSJxkDb4O1mu)kLJ3;q687C9UF(B}Z(j2JOhNMee4D0kk)EchB5F&Gg|sf5qAe_x zSMj2vnjAM}&QSd=c?=<^Dx7IN15w%yC84xkwIanP&P_12ZAj+g$E2Cb5X#K5Zh&u>gbazswZ5g2JW z@(W^@ofb*0b*{bHW~arn$*!5&)er*{ixBHzre9>Opvs_RLa)yfg!>T!pX+sabT=w# zW$)fYVwokPVi3WWj5T9H+}c1;?bSU&7O0QnTo}x5k652!oqx9;pfMsE-iNYdl}sjU zdzH!ubFDISRkSMVhlRTn$Ad9gFm62xqdq)7A^q|`yvT}Yvwht*#Wd19(Fxq~sWnZP zHj>UfOB&90X!LA5>~3@ z_V+1+c_$M7H1QinzFZSYEtr#No2twSJyqaX(Pn$DgD$2i_-W}dq1qVIgCo`afXz8_ zl=)g%M5Hs?UZ?$c1|abKOr~4TWF_lhM&oQI-K!sQ7q0D;mH49}xu%}oRnb=ZdKbbVF=Han`NlY&w-_Zn7bkuw zJTV~iK>dZcBsfRZA)m#WdIUwOx{!cCFnuc{YK6#&_q9pqC5F`B>plnHF|(sUfzp={ zJ*h&$&+dVLtfkKv_*|{=OnD=6Pn9=I#$qhdZvC-MnLL~_!RPKPaKYN@M;qH(xf zC!@g)GjR%$^r@)6T@ca}ouok{Ldho^XYm|ojOIDs7|gR=YbtYc@Taw0R_T6Dz@7da z4N=;*FnvHm=9Yr=djzC87RY0kJZ8#6ueRQz4icP^-T;oh4A-q*by8e5f{rV_{SdaA zs>;78W=b!HOIhcL4D#cqAZ*2Q_K~3lY}XI|FEP)KXe<+t%Gse=YSFEH&had;Z+;Y1 z>NrF0T$Q+{=!x!NM^2&_PtF~+c zl~SgNaz&5XiV4K`6G?9Qx>PQ{8;_T-MpX$S=L7BVT>!AZI4Srl3Bd=Fpy^|WP84%r zLoU1^8#w7d#fj|+@YV>Tz4Z*Zi_6rH{6Q*E@*7sx*+7~PbMk#4xe`SV-mk&Ku0=$P z6vc?f|6bB?hcWrcdYMJz`D)R~E+=Am_=%iK=K#saV6jjgYQO!43{e~=*8N_sjxD}r z$F{HEo3rgucL*P<I zduDOd*a?1a_c4l*fY(B_93<{Jucwx5YQ3bGO&BVFOsrh5d&N9_Br)9flZxZ$aZ;8w(9I_?*OoW`ge!kIndrhO;@QLx}xRyPYnQeKZDNd z&J47xd$M3jMZ~!@8z*s3v*S(?V|wC`Eh6j`Axp_xnFr_7rR6#M8T(uCMPiKoPmqrF zAj}QS!>>6cdaTHBlF9~GZf(x#WR{o4XifwBxd+aQmD)dKkYj>4hzW$XC+vgiLzeyy z7vxrsb!6=cWUO|&pEV^DKw{-1vzwszig>&V9C5A8&}Bz&f-}y0J6lPS(d|8xX?bA zUd)`H-{bcQ&zz*S)RhffgxlI?`z>krPWv|zmrGnK`fSh%8!_;)C&|gRvYrd6%A?kP zZVRdCN`2jJUxr)RDs|xk3xI9e@Z`0p!#b(^DKuX9Ap_>S@XW>LB->?ti&JPeW)9P+ zh1-9MDPR@xw@SQKY^xLC=SIvU_zBt*XbxHLj)`Q~M=3m%IkCE_D{(wX1xBeo%!!U@ z(Sy)97C-Z`DwiSek@53nob7;YXTo%(#vgWz{669)$;VE+VPxe1e%zW1uLzr{3!vH+ zcDjHZL?-8K?q#{NNz#?&*7&)|#+Wn#$2E7dCt5!-Se?4ltqyl{NI1<-ljn{4aM0+k z56>|!tPd|VD(b_FIdS+c(FKpW>LSN`_tK6WvcyrIOBqldGQ}0y$bb(s{%0{9xXkAZ z$de;4D?E*u@%{!V((GzQp0P&WM_X%aJIzCv-Mh@VjV+Mek~TfSh)2e4Gp3m7GGm;X zE;2@NH;dMkpmx<_68kv`tF4#KZKdhQB#)L43)3?GtGYTkbk<17+*XyAceV9KW-;J` z#O>z0N6deGW^OCcT0SVue2a_{*QiW_nQP4SOygoRJu$}nN#I!nELu)VCDotD+W!=4AffQEneiU*qQP2T}%V0+Bf+X z{d=^=)lio4j7#6P{kw`tW3}=~lqKX#*Flv_6$~ zv+ZTCmbn6BY`c%bkIU2`iz^h0KZo+>#XTr~PzGhb21-z&$U;)a)>?(4HF+Eg3PCIF zON9$Z1;mKx;q$AlEew8~eVN6B^>naZt2^}n1C*$H@{WN8u2C2HnYNK@r!XVU6MN^p zv99Dr!;`nNB0(G|!FP)~SuPx{4wO2+lror|LoF41Qq$e`f4tN)Zo`v{PLnbFsZd>a zkTLnH%>L%2eJ+E;Sl)fu`^?1UT1#!2w(yeFw9n1%(#55zOG@oq@z@fxa;vIu;1`n2 z8uAf?u+734N;9W!KCCWNTuj#eYq* zOM2z3Xv`t#kjt3GWOztSA{!(dHAEC9xtl@{{_6RveKLUa7s)y~7t~qSg1+yckn!hmR`nt`(povcgQNHCL{c#Y;&Fv7RNsvwWz53uX1Dzg{USbwCsd+O zN{^sF<}8^=pFfftUd@S#b}Q`h6_V;jI=vpz={h=jGd*}O*A1}&*QPfxD`xLq+$={Z zbn{NXD=|2Zd#E%U%eSp|)7KffXIT+1u4}^maty8#aa$h8+|caCBqQ_ASY>^EzD9I8)LOPt9VcF%<>Dzk77n1R@P~nJE(8?abR80tJrGIsJ!vXyn{p)1>AzIC%2_t-)a{renTEdmUg`vSi8;Yqm33 z6s1j9(yC(Urtf5NTnp<};j1Fa?0%%Mp3A(IoB!2$mJ)V848J%(oE}~7wllEq)5i

9(WY1ijmtk_}9J5BqE|WY*G1vE2CO4s;L50$?du2t+o-nmWH^C>E z)(%1T69vWqvonaNK>9sC%}zJL->R*yLi<-&QZI~25%`9E8e|zQ8?~lkTDhVWO=%D^ zDml$BOu(uMn`KsO{5}DWYTuW*P7*vo0y$oRbJ8~ZKJ{@#EW_LE1RuQl1*XM=V8FWF zdfQ>2eVr;`w`lyL=Ept5U&pH}HR1p>dt}8_f9SqR_a&HyZYwKkz(28o1;-Fd^Ypcb3Mo(&)A)?TkdrQsM(*D!R%p3jANyuXbSC22}0&2Vj z=ZV^2PSX-3@Up2OlYw zt?ezzlBEQ6pKAc(HoSY$)avDT<99qD8`&_me^GVv?qUFyd`u|fF;O5hfW%{FI}Gl- ztZ(9l?N-Sd0I>Kj4PCD_#^_HGU-KzjYYg)hPtE6dO3GuNPo8!$Nlz%#;$_NG#*zJ0 z3c5MF7EgSIKEBFXh`R zISDeefpaJVG2{V1o^rP7m=Kr<7U8*jcX^Ff$5mdrYrI63sOgnGb<8Qs(_JKcsZgKv z?JuI7$T7%=xs-Dn-K*O5juLw; zv5tVtysG9NXtVGARHTZMwddRY6h<-0GtDCTN82B7CHfeNpA(Y(iOPJBrJ`6)b>?T~ z(vuDJhbm64gtsmn!GxYbOmDV-#b&$x1PMA^BKp%;&;{gwJP2CTWIhC`9;9@+`e@Ji zBi45NjLU^Dawk1lbjc-t%reZ;s_mr3Fi5S_R_}<^FL6&~KQ!Tuab#tMd(v#fJLyc= zFph5>U7|@Iy=;JF?cX{WT zo2#^^+UIct)I4)<<-7sAov(g;70w%=)I zccmVAs5_gjsoSsDePkZKNL$He?yiQzaWAW~2fj`?brCbl0PQ<+B`53Hq1tyU3B~Jv zsWw_8=4WB;JGc`8`9r9gibu@PfecaDoWNWOUyD^OeSoNzkxiLPqgMP+pIOC!ij3PB z33uLewblNJ`Ig7C&fM!^hwS)>weDc1?Ngt{HMt`_+i%`EmtFFcQ`RjkZ6q$;_Gw`* z?xvlqX!P(Vt?5_10JK|IgWv{I}UB3dwp|LH4htsrmwd2$f##yyGit9`yOkDSL^J7G`JjCKQ}Zf z3PL4{r*4eQ#b-HgxfBi7;Kxkj{4UQ}Jxo$WRQE9Ci_H$yOK{K7j0)||*`?1f$zsnyDH4tdC{mUCe^@Nzox}yFO-o$X0 zB=ZsOzXB-QNNsL0m3{~S>l@|`DcIG*_>;ZmN|tq4<(=M@<-k|~!Q3inMm)7LR1YGy z9TM5UpQrlnQTYuZ;RbE>%8;x(+V=WAZK`17Y@xO`w-(BTx}pO{lp3gjj}G9Bzstd4 zmDh`-^lj%C&e)OpoOw0h$2r{^5zYC0BlI`}NF-*yJPGv>cgoXY@sanBpwtoX{ z>Bk{P55Jx`&tAo@SAJfTMQ-nI$FDnNw}W-Evs|p|S#4&PaEZL}T;>w`t*Y{TV?2s$ zSG075*BCm{lkl&Y>aL7nPp_)H-OaE0ak02}qDO7vS5=;s*d>o)T-WEMkloa($_j~= zcj6B#JYBoxKB|-X%$3c0BiBwjJBec;mK*rgJ@09`{{X=}R=3;@mFg7HICDvvH!;Sl z3Qm?KxDl8AWbu+u^s~Ru#{U*pFQO30T1E0mmHdfWFdH}%M#x2dVJyil znUnv94FaDJ`v|UZEKD!tRtfxUS)!lF$W%8!PMXXQ9pFv1**=>*_0(*STMS`|cT>~c z%GVR0PkWjyggBp>^nJSvrw4|7E4l3_T+i8}8zl9|PqJ_iPfjgx8&mbVf92GN=j~!i znkxW9gmt>isgkbF}#w&B6Z9_0mioNR$oyFb=sVeojf>ky0t--hWE$n8kde zL7vK{P+M**h*rp}0lKIG>|2Q%faT`tPq_d2A}8U05q72BG~Je-b;*2$Pu>q%Rwj{sy3z-#!;0)H$yDJ0}Yvi(#?RBX%$TDGk| zJli0T(TVdKHzh_O`3B-x>8`IFO*U*54UiuvXzHRK*1jF-%pfj(r~G~!3TIOXAsG!b zBkW;Zf+5F0DQHZa)Zds&gPf0z*!EL7NpK=vJ8%UAx2wua!dyFK1`tJqvvw^=L`{1wy*m`pEe;p9^-XksRN_b?+f~u~ooqrU1QPwvrGmHH< zv8>jKcl#PBmA{dCc>ki=G81C7JCt2?sh%3LUk~qC2tRJJAK4DRb2~z1JmuZjo3A7C zoLp}dW31xiq38cmLPo3L7fNGlwr=6*RJ!^2fp$s<&mtrTuIh@^}VK1^E@ zXLG-ls<52dHHtfYw}T^0of(x440?cBrKAps*}X)IZcUb4Az^WK6Mw^4__aiU{l%X2 z>gq+#v(bKsSva4}Zyk7!5I8k)Fdz7rx|UEL<@&h8`VLm~?G-ztsY~2)tr&JNiDLP` zfui*~I}(1Moo3wrzr{L39T;A3oYk9!q*EDS@VceP;I)FZk?{Hi8&zBFYcQ6@tdHrZ zY@kgtSk*IE;vj8^fgTAQHiw6k6o zF<9=>pFR8MZ;XFr9N(;Ii}i!s5x9RKI&+6o53_-xDswEE*?^ZIr|Du9d$NJ;*dOxY zcfLzd+_d}W;TlwwEa56H>8_2!CPaq;jQaV^SawxtRAWd#*rBe!}_kQ)}B zQU^*b$-zGHddbErI~wB$eK7tsM`1{&_C0;zx2v$JbTJB>CWUdH%BqyC8q!DLS-Zx; z*8x3S4?rKc&7R=EW(XReUvoYs8~Y?DJWHZdzS?(raYfHCb4@J}p?t!1fGkT8?EP=h z=c&7ADHlZ02Z_=;VcI^%fu)J1wMc5~vo{K!d2hE%T!b!B2MTjBe^fCYLEZe9JMlLW zF0^>Lv+*j;p8hTfTefg<5VpbwX#i?@5;@fG|-fyP~d%yDyPBhqL!|TFOQiGNOQd}FC34+sUm!B-X3y*xA{FddBBSo*LS^o}XMWH6 zRjF1)dS+7G8pNq~?56zO3F7(3XlI-qF-FGt7?Z^uWKN{J>C`w>aO$07BA?=QiAA~3 z9=4OOed%8%Vt3wM|JAqHeJ|6^=2lt;+k$Gvl1wo$h*C_NP;pz}R4(Mt|6s zQ!Lpy2v@f7q3+k19<=KpQYFiD_f>ak1ohOFxDKS(ii!dwA(^oK|M3w~oViQkp3+Ea zdOwc$w?~uLc=_+=fAPEnzh`EAPuh9h=PSG;#mkblE4+xKZAx_f78j2d-U;eRqcYQf zlw(nrhQg;+LX;@EBGY=8arHi-!uRfWUd}RZfr9L}VqRIy&Bz8WTfz01lD*ivC-X*y zBWA(!0MPt_k=+^%uUmY4WE^)1v~o{@cY*wF z(w~EN+ru;y4r?n4(O-927ZoE_E7gv{0@gz1)?uxm0J9O4f`*fzCBL z_$79E+(vPI|I!tWLl#h;_}_X8jN|J22L(dXnIAs*u-d(iAYVX>e5Qd5GNVr(TREFMT+sVRGp$%o%H%C?1fEo8b{8B#sOn)a&4 zoi(lWA#2(``(CP#)x2e2^Jihn?mW-`^9?wi-$}{wJc8h1F%)HPb*?qDn0Hp`)?)&b zOgJ4h;ulCuBPz<)@O`Eyi>WW=yY5wC8!RCrb$#|KwL0|O38tR>j!JC#ZdPCPry~W) z%qip4r}~VTuYb=OF*5Ht9ID1@l^o}i3vzbal`N~wF+Y)&gg7sa>F|A*Fkk3|o!?Qb z+e(*lnW84Y0f1Wt5!#B4F^M_z&UN8@Tmf##$6em2No{O`pyqTw2B9jS17IJe- zQ?*2{x?0(G^Jh;)U1PMYd7gU8Xc5-qDx4Ss0pG1|u0%m7Z?%00pfo$paL@Pz5<{ko zOw4-D`E{2Gl{jBQf5fvT=6RocXv)n)zJ=+Ato=EQ`$jR9G;o?k!rjzTdx}$(@7|AX ztzBzmo`V&|RsgUi2i%~5Umq^l8HrS}=llRKtYzNhwZ+j1bNRX4`%ybc77d-ke(x#9 z_{v#sW30BC-`UjN;X{i9(HOp^| zCod|FCg=Gxp5(PmA)Y0b{uI*6ceXU{kkz zo0c6hSj3^{gGdV*yJ}L=57_+ej8v8xXH{P5Hcr=858`(e-Qn$v#cBBL5s?-6r@s*K zy9HX~*%ID<2aVrWP(Flf%8d%U>*ysimja&p3gpiA*LXsxCfR#&dgH8AtwXIrfZL6)e zwzbtqt>Qi58dNUg4YjtYkL@R}7QB>;7xwo)GoRfo0s8nn-{0%^{PFt+l9|uk=ggUz zGv}N+6U+_o%M517h1Frt=)OIp`}U0P+cTNPVr3R_Sin>t+y%Uf;VEIz`&+l6Cm^z{krxvbXj6@0 zt#BN;sf&EDf<=4jKpLq_e33RO;i?-mArSlb6v|&**hgw`7%-|b+O1_nc)w=rEGRap)AbIU-2RR zOtl_-9XPg)_@RnTwk>+jW`&IuAn*#E0R)PLF!%gL_>eDI%SmtD099cNYf{HCIQx7i z7G&b$R}LI#;Z|vRh!2}*@QuQg|A=M+^4+Hxh^X}`f48RogdkdbEFURmGh0?CpUM4m z?CX4L?f<| zv@$=DdU(I)S;>>Zcj(mE)3cN1N-5w6X(Cw+(I)Y5%u9U+4~jm|N@k8@l^l|S*GRLz z{GDKZ=C37!i4x&cJwbLLc%e||6Qgg4gPB0B$L~`Fof7$p9=4m?KL4T^U-UInr5#|c zhs%e$TTbKxNDDfM{hRnEKT3IxzW0rGjJ#h4{SO`7qt=oA*ooCT@mTqi{hHb4eQGB=D5dGA8$#^hS7VQt15 z%B#6Z1WV*4ggR9u4~Rm0l}GN{!XUg$jjChnfn&|LEn2&6xtk~NR%M0{Cx-@`sU7cuYh%pR z^|)=BkIL8S*00Igy9>5Jbv-;*_Akb+Xk&Qf^$a$)c5L0_Gpz5PIOA$EiYz8FP%Eup z`!RfAl-BpH5^yP9WTkfAJ-AiQo5*1vg!nsnyr=Bt#u}?cQ=avoNQ90ZK9M3>hiM~dJTKsS`0#qhjy6RDF8?78KH=!z zWx2F^$43qWD+*j-#-8F0lAeMna)hV!!1Npl16u$#P`$jQIK+hq1D@wDJSCm|fr{+Ut9P zAxi3dm6Cdv^{XE<%h7Y`6Wzkl<%Pe>UNMHmzm~+L(mJN8K!$<3MF+lTRd1JFXv8YM zFA3*;U_`|LygPF1Q-Wt!Kc=n;t1?a~@-VrWNv|W`O2bGvp^P*jz zeO%C3HPp|I#~s#aze%nomJ(}L~`*(SnAqQTR{M~=ugzC+NbJ!e<9TvqP^YI4Q~ zbOYNn=b)c+z~^)ahm6~8?%+_LWI1NiE3g7hABCHjWWgLMY<1XTZ8^LZlGNO6rKzet z-?-LpCZ+2MlF7gq$+jOyS8adcs57y3#&d$!9AaUyK;X4{fi}-bq+B`DXpWtSIm)uC z$0VJcE7ZDpR5_fj|MKkrtRyvmcyobO8>5JDzmV{XZE~~p08)~(*6O@_Fz)m znWz-sFJsMDa=334+fzV!_0l}60&G{5Kq3twYPxP~DYOx1$@+k)FO142<+aYHy}}~* z`X*eL?OMw*oa3>+*s07L*LXUYmIgfkg0buQW@)Bc4du*LeiKXF=M=eBUQskGOG-Dq zMR5J)(2vYN2C1Ht*n;`I0wHBhrL1L>tjEct2!&%CyX`>{Zc~`6B|z5_3sl!GTl-++ zS=N1-<95P-DD3FbyY7BN0@znuNz?X_a(w0`DVoUuOt87Gd+Jk5#kk#Cl^8i%G^cPW z?19a}!4q^o*IJh}gF1i2GJQ)lXKxVZ$)WGN)*h5fj)hO*THy04y*NP!t>4Bwcx~@? z%L@#Owo%la^&V#xwTRejY%iOUZ?kCCdNQy3JBwCDpz<)Lw43k;%!A>7Fu#sq$Rf(3 z<^LCxXi{1-q3^Kz=VAjQn1P%tG*sC#k7PXcFFG1Yed+)Xa-=3%Q6z8M zNxWXl^SV(QZm)0IbT90V>Ao`6dND?O+N&66w6n>Rx$#5Vd7V-W8TAr=1ZZ+0uQN(J zQIRzL-xvq{EI4R!hbQGmgWmAu$DWbqo_SPrhaac8Le^#J27g0mGm?em7;KgGw0I%j zV_F;*E^cf;$gwWaX{^EVY>|01eT*m5DNR39l$+W!vsBX)ZH2HebfPpt%MsY7WN|a> zi{Gf)te0_*rHlH?w0Z9ViL&Y16Y(e9K&$7j;GO@;$_d1P)+J`}L;cijc*VF3BQ&o4 zvcA@^``L5#_fY2eI9mm@iER$`(%q+j8TF6L&}8ktUqMhsgISlDr5_5>Iy4LVwUOmp z$?zCZWxjER+;Fc_TRldzgx{?o(4Te$%-#^7lq>{_BNtJOJ^shsbMuynoip=eo}EH# zEHA@aE$zUNpwHaYy^R_D6l%?eb@{L9h`Irn2Y>XJAJFZn*VXRHsOEA=2*GA9$|GtI|BdPV+-2o%rX38v30${9Ea`ZepPFnT_P+eG=+ULjpm_LDr# z+3ae0n_z4B-HMR};lhH~+QE>L@_ABDxH4NB!4SDzw{MK*e78Z%i0&sB=Nzs@AHdca zAJLqPiGsi{Ma6;9np3>?6IaVJV&vuLInQNMrX*e)mf3-pS^2ttOgA1$WP6xNO@zIU zb(Y(=_`)lOaLL{6Tjw8A+FF`7&$pgZj8=c%Twl0~D50+ud~V(!On8o9wFIa6(X|P7&!?>y7Uvvagx%yHQX;p2Nq;#w>BVBmbyGK_R@uVDuGt=D7Gq2l|jPy`TH>@>1U(&V%ccRo3X% zX=drazODYWav4Y|J@P;_XU}!`_eAbg-}iyW2j5j^H9>fnApDD9lRRnj zu|mgPWL2p8HNovOG6h?`f%eDq+-brbL7=00&~(PSV#a#&r1Vg~*1$uydN z!mhr}BHpX37fM$*5Uxh+Qij~89)^(F+rXL^8>rDobtZ!o47wE3iw)}6HZP2w-UnHA z8@m!`y3F#1f-afo4KlxH0ctGxi=6JK1slfge&vv#s}ixH(X;-ibO&>D(xYY?CwKqj zQ#4SygJI4PR4A4+X6E8|dX|BJzhH|j0@0j5)vAH-mkjs9?>Vsgxrh_}F9OXye7bJ! z0{zWzbZ=Q7d>kil>?6>4m#)p5P7k^EFS(8-|rMVy%1ck?D96$YlK)Z`h3~G{OtM5t{7g zJlP9H#`Pa-D2bC*t9-B7B%5cVF`Pu51df#2UWIxB6loXt>7hZ`N44dOOQ}X#t{ADR z7P3@!Nx^4rx#B*2o)P_Mv@3iEer37hbJ;XY+b25-j$5usIhbI$;=s>XO^U3YIC_2Q zZB^n!c0p>2ECDeyFq1#qBY^pp0?gkyb;*$nsntG$Z8DvEYhM7ETxHQ?r1cyPu_2;1te(@awHu`s z0m=8Ftp52qAd#&4I8;E;Y=V%VM02hJw;+HpbTX$#unYmmJJ1I?)*8y@(&<(4D#90Z>db3QZ`wCsRz-NI14R0pL`Bw67ue{%zK(WCoZ>G~&Q+T}DCpV(s z-s*iYmyq^)N89pyysgjX?Gd1~Eq|oA<>jEWZTWiN6Iqco_O1s1x`VQi%(U*i1Q2cw zX7{v14V!h}PsDue-(8J42e%mBGz`J4S&=tWm@&cR;`A@%GBcZ(Au`ks-|1aX<2HMC z24@y*4^D(BGR9g?Z`z8u5oukDuNO;1)d83)(V8(gc7Mgv2mtP$&%ITjsI2glApA6&AzO3*z^r6Tn?V>1*2i#JTh61Z9LxkbC`6c9bI|*xkDkAUerx^lPJx=x8IikvDBAY%HSdUB z+Nb4ik$M47=Mu>K%asB*86p^Gqz0WN$+Zrwt$*`A5+D(_94E&xsi0c zgK`b8t3|Xo#M>NPAr6Aj9}wc%=elXNB=&r~w14=Ul%+-CZ=kRj6NG72RhI^lxzAV7 zqqvRR=1B;NpSmVW_D4r<5;Xk=Fa3l|F)Km7B>7x~2I21)Hs5 z2Ps#;v4pg6Pdp#4e#bs!R`&C*dr0+FPXTZ9hpS`ao7nU&YW6x8JBtF9C?+Q|v3Rp_ zGkDTmHK1s9r3nvF0CBS+YZX28Eb&pI8fc2 z(p;76Ji@Sk|0Aa9l&@snpqno$%f^RcwC*Nd>2{Xblysph@5$?u_O02}EcGdaO^`(L zWHT~HY*h*Sw!GNfg#;an#Vh(U=Hq#i7^5bxJ31gm@~yxBFdBV97%gq69aiNfsv%fk zB09$g^4r9Q`-@Br^2yHj@W08nQD^%#+1NH(ao_;}CHb zt1Bc~huR*@{?=!}7Y1rFof0_8ZHMqCb@5I3$v(4_+rW7X6y(IBuqgcl^irvvy$p-5 zFIhjMD`XOzXmS3pzL%w-F1Ouz8zN?FW{-6PT&!`QAc+VK6S>DRxBt3LDiKsGno#Q$ z>o8mdLkni7wR_$RJ4Lw+8J#cz z(10$MT7s8Ky(ySzxrWwwi$;f1YxuZa8sg(dCrNAk{W@y6wp`=)_*8{HRiQ6CQc&aZ z4Q?FC-`r)V)Fk_cVJFM=q`HF&!NdJfRbwPY<>vnOkQ&eHt`_8(A`5b@{SuEdqABJ; zlA>Ml5do{>@-LyM;lacY9ST1HeRqZw10NJyaEUUVa*_P)Q7?iVM(C&5oM#Bw!Bw;` zUa^+Lr%~5hkl7tI#5as*h=uOcLp<}A6Akfq+yBiF3o$JctrvWcFvKoB#22;rhmJtA z3s9p33Rz1)?ugLUHRi6!#WK18eS0KR4exu-ntol3uIpf z6)AD*`S;Q5ahn5e#rXmAxd(xP-`w3c%P@0ZK_uaO2Fe6JR+)L&-&UN0HejG_rL(xb zGU|CXbQuf8NwAZ!G$u+{_T?^??`Y1ptDp@wLOPqT6}QjLb3}$la~_z(a+Y&Lyi{(S z`CR^2{pKvAEvJfLzuA7T)bDv|)s@`6FEO|J3SP!OA&R(tOOiKvUJC6qcbHoWI{iGS z)~3^%YadZrHm*9C!v~kq$$Mh=|Si%WC9UESmmDKoZ(L9vliw6f^6piZ5zICpN z&c@V<0mo9O)}D@hsMyop!d{>7bLsP{0+sXTSk5pxVREwa^kja?&isCvx%Fw`aL@`S z9(JRULhxQ8%_*(i@ArJ}YWWx>DOtat?EJV^RcRfkl7k1Jy^z;wR8l+d-q#cLeq)>gG+~KS5Vx~DQ;_@mtTgsA7pu!3o7pyyQQwJ#=Gy5 zHoOJHb#PQv;sz4iAfch)49!%sD0R7$`-fnT=&XMs!(p~d?-9r!r$f_7SX#N)@A<&h zvQ=PoZLAw#sBX-m8(dkjyD=u#jr2gggUCOtWHR8O|5 zo_r+MEp!eto!q@V|lipnd>(n(0KcS;4Q%mQg|7`;%H6O zeptLM29%>v%hjdrY8C->6Px5O$5F#7BeCwMt7Z4svg{T+Ni2}}nQt7G^fZ!|nie3D zD+@cV9Z1K!f1&b_ts}ysQS7v*sh;4b>b+2XVzDMAd9XC0yV(4_RKAKYoZkS=>02 z-;1N7rEo z_jJt2QInLpIM2VG-1k)`@|F_bD#NciDx?o*nUC#LXcTp`j-e zLcM4lI^`)@Os#k3qB6n(qsw|g4yl+t2xG<|ycyO7FL*%0{AX#~IU)vbfDT$7Xgl{b zYNRID+BUNLJf8$7luj5mg1}&*^{a}@*SejK>OR90O}Np~!?opzQtbIAn1Y_i z-_-jN*4dnj&}r{{Tq@Wc+)~<>PthCrM8m}?jZN1n9=225PYNJ%8=pXcMg@O_VKAZQ zk0ACbt+Yf*@?uK-zrgXyMfAJ&&==d*y=n(5% zJQda^ia60NDl%jt-H%;rmK*rHTw#$Cq8YjAF$k9Rs>hC*?8_MO5iWzPg;3Y-ycf=w?(=m-dyLG+icGx(sbY$d{UkdSO0()}C012R`Ru{mcPJz?kgo~6HZ zxYLK+h@1T5Wf2wj-B9c68*Pcot9Uf0zxx!}zlc+S>ApVfeW}lOh}7T%{7j`%{QK4-ltZV&43zygMWY!Poi6I3I+fd6Kl+{O8gk)=w!JX-A`~Kn~sAzbD$f43s{pWXz;#UrTQ2E@bG#dU8{@@65p-7ee z{j*mhJ`eAmOxeRJ^>vOCYIEBf8g6|J=(T3EH9$2$P_28iG~i~ntB9F{DGuwAGePq9 z%<55+ch4nei|P{=_Y1wT4}?6v_3306xlceFeq2{t*w;4^CfTioONV}d>uW7DVwrrf zCw<9pmtgnE*S_c=*AEK&`X@$%3u6f=VFD!tFX!G$S!;SMm^>f|Sq@2-3BG15&5w>n zl4qji89|<*J$ZD7!(^2_6JrA-`v>N_Ia_Cpv1yjSUrKAa3$_zD3(vFA^QPxkEnIOdRU5XH}e`3aWp5%)gsg_W7gl-ywXSyr8Q#*J|&XcTvh1& z3jSA#`EHr{VM#K_6b?kC9?KP;$fQ+T3%+$Jd6N($rW4?uxH*`qt~8fKH+4sVpW6Ha z(Jpp^rr{;+{yZ$7q=))qDJ7{}Z}WS*pCcU|R1H%d6sft8I?_wcTBA6-y9djpyCQ;m zUCD4lH()-pFc_kX!GdTsv4er&Y0dgAko4epysZVXI@YzQ(p&vw`bI7;;mGHTB@3l) zNluT9v(d@s>IqYN-gn@<+GSBwIyD7da!)QbdKQPf)&dknNL^y9s)7KeNRoNVirRk3x4M=qk>Kcwtv2YdwB^BXYo z6S*d_eSx3{yV>C{lUkVpD+a7fjsc2LfHWceWpe14(1}t~!JbIA4XlH27qfX)?zYCB z0qQ}hn9bni4!y{0v`pn-{~F(fS;h&F_tN%B`DMU4 zd;>W&;-YAshb{!TTTECDt9@3DJR7kwNulRR0!!L2J`zXWq?!qsEF>Htu>f#$x_+Xo+C4YpsZK1%F*F_u~Vd9?9>G!xyQ})l9fu z*#Qh*Qqxud0!tmSiUpAg5=m7;(1h3!x6Uk_7?~}2o_$nNuuj?rL4E4AGq81oY%DCG z$yR+Hgq?tt2Ax8K;+5w_GGgIr65ht;lZ{DbSPZ@KPlEQR#p;x0HIDWfu(p7-2Cc$; zHLNiNVN@`m#9<>FMF1=x9zkySAu5@X+Gx(F7mI))mBl}LLu^m8vR8-~37^q@GFxT% z&=M}Dng59V3GB%wu3Ij>LYkdveMBaq6v(H_hoe)XYP}UQX!R zwt{TJadknF&iiEJM2|tq=ufh4qVRF=Al020uSJCQIbhGYcRXLYZhoJJdL~ar*V`3- zLx5`jqtrZT>oIrvOHtc)5yg(9;ELxNd#-?uWrqlwwxx!>ggAwvH;&U=Snwe=vT9PqnQB_4oMlPE&$w3>uRy$3~z zRjQ!ARAv2G6|F`5*S;plVPGxs)Hgextap7&bbTjQgiv=H+|kta4+~BFmVT1-Rn8;w z6o)95X7XT$(|&q1GKdchTTFEmAoENml1nIJ>plMZ3j>zV?Lqso`m>umy;!#xGm$@I z=eDw!%E7CUuW<%;sbD)$OKSL#BeWA?LD;qjD`zHq;L$cP4?~zwu%Ok19zWl@iEeE* zxB+5VS1YebRC}Kstp->y-S0`F??YK~kU?!CckO}InbsL9lh9I;ZRS6>BpWDId;)WS zn74VWH1=|7?DWwh<1EKF13^4a`Dlq^f|kPIN)zhSeUa+J5-ESEXY)#IjBSk6 zS)Ej`&Adtlb3I!WA?&&gy|W!w7SzAK?;6Urexg!lNJ}45ULmp~XC+qD!8@Qi=#mMr zQsCd+6U`~{tF`-XasW7vpGeR#2B$^tGCpD3)(ND!ZF3ddaqii+**H#*wwwY3*1N1X+Nd8Pg$NpUz$)sQE9x$a zeUSanrJ4)9NSld>nRr~!h^|(8;ED^a#NQLX>y$$~@V2EH);X*?KVokCo)e_=JuinB z*Au6}c0S-AG=jVOEd&c=+F4`1t6oGfr=*zEGZ4dgNvdo{2HG``L-YhF^G zHfte>O5I}|Qyvp&z@Q3tqpw4R(Nts`L!G}7Re6S*xk@`1;*PooPJwKMVQety*fXn|CNn5ssI*Lkl z{XJ#Ei*`CTmK)jS?w7&@2 zinMGfnd8Y`f?+zh@F$@af(zt~zXj#`_GL-kuQ5YNgwdP~pG+_`4$da^*3@d^@L)IaF`}>AHmOaI2xb7!{RbgD zcAfJHuDRj5j!DT~b}TAkId2jwsd6YGm}jOA$Cbeux>fUErPKn+)uy?$5pdvfHICxm zD^O(R5~5y!TqHdzeEvc{@i4_w@+8>J%RkVK!>LQ|C`5DSkwT$>f5PJ`b0}TX`db?= zjKCllAKP&6a&?h@5mFwf%)WM+Iq@>#sgPI|3Nfj?g=&CcJj*I%O<^NL!Q>u|mwB8>2)$_Tw%BtaQI$8d}Nf-Bjh6Ovw0gfBhPyIc{QxZVt!>koRs8f^M#|p zspkZmti*yFcb+9jnLWj|?_~8Cywy#5tkC4`s?xuCu4(#X`GOsla2u~oiSekM7`+Br{F^?s{t#h!nn5q$8S zSkbQM)4&3m!!mYQhY%1v?d2O4jy$Ke^*IfMlY8U!HNY5%sdM6vW9eKT8Xa-oa0ajP(_-`X$Er9ZVz;4v#A!WYXA|a& zc4=efAVU0+u}*(vYDs5(MXf|aFm+mJev|D!FHXCy(TCvVdx%KhyvPEmaZnhooJ zoLBNA^7@i@b$*#-XE!^q+nsh@N1DH213Tt&UqMIm2F$RnPAhJonRFQa(Bxg1n{ut) zz?fjeHr{V-BVAi~&(|i{Pta||!!3_3lFlMIZF#H^pWm}%}zCJy~2i)>+mP`jeK1koyVDvOrB zZ?6uHoE;Vjo!TDA;-EMu%lZeTBVxz|-m*F?S*O#e2`JaoO{IOYAJjINW$UHHb8ZS% zhB7?oX5hM7?jv%-h`GP#SlKcVzw61&i{<0V)G5lzIUmPQ=yz~gLzT8ITxBmZ(V7V( zT!e-SiO!tVBbzg}P^Wy9ij1C&)gK&8S7KPMv_$&D1Hhw9TQ8-(tTap8p7m zPLO|4V*WlS$p8F_^S??j;`Kid`#+)n_SF9%Ksb+Ko!8a};sELpCFEN|ta0r`hIr>~ISXqRW zOUM%`MM~8mZu!6GNdgob-=iequ$RYbIFEZE=tY-z9^r-bCw5rv?9vo>inmqkO^Vv_ z8ZvEZ$-5CpKVuMaTlWD0#S+lMDoNH%G|412bm)&WhdgRVy$GSKdI|yz)R>h?~YMS&~zq zzJX$u@>Q9FrJse8HXhBtzh;5^G(8kE{XwF&VWD&@Dflsuq;BUUcHuWETm74Ri{AO8$ z-?LK`sL;9MF6DM_QBg1*X^UrP=u^!6qR&~-=_}am^K`CEmzB)lR@M+fv81c5n4E98 zTISMfn&xVmfu|T%!L`j2Vm=^nGY|Sb{|Ke==A5Xa9Q-+G3q`vTC6eK``JNYz7~gZEfwb!Cm|o98rPot>NqgyqStt-Bs3r*q zM^uxZKb2BMH3=104zI434;eRGp(o3_cLuXs*kKrE^S8n7*(xVoS4#(p1TZMCWGTd? zxqeZHuvzJQf#|qxo=#WGC8QJ;wo-{J#hzxFQ%)eF)bas|IPhZL#^>4ZYB^PvIg9JZ zPrskuU1SNi-*Ote|EW$S-<;p)~FaWKkS`jhd?#mN0?BhxabK60L=}mf3jBG@~r{*0S^- zTn>ak*w5ftr=21L^Fg4Uff0`BNPA$iEa&BdmwS5fQbwgLMR-9e>U;zR2vNp<)m~TR6C~=rIdkEvP zl8C+IIz)BGe<(IK`PM-s-jP#vZo4kY4Tx+}+CK})dI!s*dI0u^~3) z!o5>=uZ1QsQ@;sOpSIoWUYCT;?NW1hY1>J82>SD!@`q=xd7uIti;+{&-R|JOT1j}& ztAuC1)^+WEe~L3Z1v`YkbxFR78$)kLPWHK;=;GH-_+A>OGLm0?za={*bP5k=7O!&@ zOFEgbtTb{V_TGyCVi-005_X^N-Z1kD!&~XXK|UWwaAb{d5}-41wCEjQ%ZlU?p;NeA z&r_ignSlfgP^WJ}4$#4}n5yoa#myQsuM;%989dA`&;T!hF<;RS+_9jbP;<>ptztweHd$w{@%b?x}xmxOb5!X-MZn~>=`IEkjvzHUzZ!UPHBz(x(c-n!^v|x74ZR;EpQ_@3cW96YF+C^CC zpJirONoRL*=oBoD23-c#&KfD)#`9gY%O1vnNyIKVO%jC)+?Ax;B4r|Z(vdybzt4##Me;oFqUKG_o{Y(X? zoKmxF0avVeU&tqB-J1x8hENpMnb23`I2oev*Gk!bv$}!0(3D5d2f#p@XCDnGC^YLc zxWz(BiK6K&*sysFkw6aOsfRMM+#DqBj=YIVACxPNQ0dSdq8OWceV3urD&CL>JFVX! zsE0^_U=db3{<>T`>fG$5aL?Z95)koIUtp&<1Mo}aX!l=4Fw9Y zG5lf)&s(UUH8QtPS?8FtE?Z0_Puvii&EyVVipk+=frFiCR3Cb8T6=cinl{(d?*rR6}VRkG28qpx2rfPsKoi2zMR+5O-J`rGF_ zd~3dv4Q8355Eve1BN9fz_1(Xu5Bj+8jUD%Y@kjd@4@6FuGrypk9Om0_In1xa;kD;! zj>sShl~_V05(MO4B6SPnue4n=V@+SS&~CDjO0(41wWHsy2dtX`gQ^`|#C>@!N$+`i zJ~GV3Mc;w2Z4OuB>+Uw)Bw7}341{oLK=faWAg}-O2zV(|V1V__Y?1o*rLD@Y z@@$ymwA9a|ndt0_b&8BL6n+&+@!@}rs~y^)$pbXq zGh!l@yTZsVnX{i`49r#pI-lU<88kWD8cBI5F&()g-hEkgdQ=;%Y+@8hz6Ze00bmIh zO$KsxSz9!b_jXt%FiiM(yd-NIUb#2BQ*6cDBe2G($ywH;D%djP3Dr86Q00BH3yb0u zz*;1;v$s`~9zJ;1F>n2$tD>)n1iFgN_sUGmIvMs;8Bczul(mI;PVYeIEXzgRCt&yG zQ8{=OFuJ>$8O1zV$Ac?hC#`sizj>>ogq6F zf(iYKxirId>xH^)p?p#o2A#fV(kjyq7~O+*$5>&^EM#_$L$8{zJp)D{E_As)81*m105;YXmdTkJ=|Rw8Rk3Kkxa_q z+3m%@l)y>C9qV?7J9!xR<)*>m9ZsL;aN}vA6wixGPYUly0q|Ta;0h~NNJ2yTLXZ8g z996GGrR3}6!!{Ux2q!VRnlve)5&U(8CYoE|RR*1~IuTbc17xA^V5;?WYu3z|u92ie zooZ(^lIg|vL(+jg!=nfPmi&zx>XNp31__dasQs(alr@A^#$NZq!;|AEaa{EZSw}dE z%ERE-<#RkNOJ%&%L}Do@ZkrBsRM;>P z1oj?dnNE5Z%{e5T3^VgoyD>pHX;pb{r5~mm5`Zj;=6vQ>OX8p!=7%>jU~B5TFhIc- zBl5|5d7@77dF5EU?R*83Me5BQ_Wfh-2}5OkDW^%#>%oCs77k{5i_Qvh8wA6^HDV{& zRy{fT`myXHjM6LC=qj0etg~YMH#CxKx4}Mgg|{s^ev_F7+Ryi>^Kax&awQnncA@pu zZ;+U9!RQ{^Ee$U8n{C2h_hC+URiV%G>52lLyfQaaDwq95YAt()+Pok}fYtp9R>C0L z92yv?TqBuzn7uLITU74|o@S~5`xfwcus#tjyH6*;YJ@vvbIOms3(o{q@9-jJLb+3l zmUi$4h1i%^&5+eeQM_g#C7P2%b40DnLCKN(p$k}NyX6MViPliPO`0E#i^_$Eiyb@> z^4uW-s3kjPu$-_Yv0`ogmQWSM8RT7*wFBI0xTTXOL1$AbhK5*q+Gji2J=G<^AD<); z&33JtptZ361IPoNq(1Z$*SRzcdQah4i}|{`dO!_>a_0UPFUWrk*9#7&>uNj z*hW0G(j|s=qqH$HYvnw}HGQ2#8xHDDx>{Iwq6GZzK>;1~z)560xF;|?8aVj3Ky)V- z|D%{}c;YhYmsDiEgcl|s?@|v3L6RkbtEE4sP`GTGJFMz>;bLzY-6>^u`6yc0CRohR z*g;22)k1z`S(mA51oOa$$aH8F3Kbb6-uLaNLrUj&m3HmTxn zKR&6VmAeXMB-p-t-h*?NR$>}*MEA`OjxSw4j+rH$hq2JnF$WWbFHKqJcNAUZdSb4_ znbhH1^8q7eqAy|X z!zfzAw^8JX6!r?gQH3W(a!KWIu8w5I;%NjSMa{);M>DHMj9OkO5HR< z5Y1_?-&%H`^tc0`T_lZstWqzjj?-S>isic)-> z!U^JvjU9sUNWHiiOfN>aH`VXi7JSKHfDpHHqfqL-=AleK_MJn@QbM=9Nz(F~L94Z` z3~Ty)+RBzX*(#-JCuns=sZGLY!a2UwfqSdf`H)Mfa)p%d=;~$a3Ta_@c{T!Z))1wN zy4@Nxb48h$@i_A{t5rdYb{E^ezJ zRS-yoL2P45V`60G zp!ty>6%Jl;MDX4+C`oe9%8lk2v_J$Kza&?9WiI!5?ocJq%7v>R&3P|ZM>pHiq3>@k zRvRwFUNpGCXMT;a>z3b17OWk|Zo#kSEk2hhm{3V+-?$`W@rn2xSIeM^h|LybOtQro zmx_R52U}SCa!2G&%tRn^P}~c+6A7}k+i9eE2s~a}&ls`DozJLReTsk`AYcadj~NZv zn8ixYP&s`;)^lYCt%t}pUON3g9zW&;}y{b zYJ@9L9ubzfi0yc*Sjj`sDUIfw1_MXsLwmv~F%KwxYX5|lM(FIGtO?nagwU3U{9Uw0 z50N`Kn;WZYC$>J5Lxo%+-Wr^8+yXRIz_n=3Z^%z>xm3Tyx*p|$67!%U(s?EXu1OXK zM-iOG?F7sg^#a9DDHMK6>u5gPs{=6}%KU58Rry{r71r;!m^{IYto(7RWh^2N>*n*s zuVkV;X?2CXzs$B_{R`0ngK?}b)5ju%fL=ykVDHhG7-cFIA`>{8Z^Nej7Id2?!**G} zy^7&J5b*ppNvAbwOqbNIbKlUZ-elB3@ zjISTHKw+SzUk!S=<4|oD{qGbm97i{Li^c`-;#QmM$!(qQIs0{a4g>o3snN)@sEKy{|DXS(btxFML*OS$zT(;-F=%eubBlG%hdrM;rRae@`yrpn_Z_A-WJxbcgoX!LU;z#A2s=*aI6fUq99LjAo-{k@mJ!d310NsyO>KSq?A ztp%%PBEFxAShZkRnQO|c)urZ1BZYra=6SVgaE))x`^NsV_MaL1QE%g_5uu^|r6zfW zrla~S=sGVp9^mttABCS2fEv7ZCY%s!k5}f=CigrvckC3<1sjeIWy$=A(1&zrp`BJj z!z&xGzewC|$HrMVqiBIK9@6d7Tfs6;3sja^0IRy!N;__NxwTIeRgO;olyH%)(~hkz zV73c=VLfwf9_mq^2m;IuZse4Q1J;)WWQV+&oFF2+xI%4y2BJ|y~<3y-4-H(qGffR*% zcgKkkmYh{_qKH5|;uwf?7X}$_JYIE2aL_C(w`ToJbtZ;cUWJ-oBX~i0r5{7P0rQS# zatA8Yd(8YzTn+QLmzh7FrP3+QbSp_0=}o|P!J`OEQvyy39%-DsW%5z*lqTqikdBBI zq;fz!8rIx+4$U`vs)NPfy5MBWkriL7Ct%;Co0Wfe&2RmZTA^~dEq)P4P{!+VpZ`N+_3@QC}Iqs_C$M;Tu8Uga_wj*krYL|>&T#s17 zFzSNmp`i;?f#10cYwPBU8>(B@Skcf>T{Tyd1}hhju3lbEc+>Sw*H+iXk{NRsEvu|2 z!TgGb+R;^u7fU(vGpD4qWYLr42{5r>wTJvA(IkCOGAy-L$Nh+(NvlKFzFLtoxGC303FP+UjMbnY663 z=GysE$%rDL)~(>hGxfhUz+%{`jd>nUo;)j{cUeq#adT7iCN#r4v*CR$Y&lvF)G@$~Mx>guW{cd*{QsA6fgyS|R!8h3C}byIa5P)!r*O7)6{ ziWREJ6?TEDtyQ&66$=+v2Wyv9*N1{?KFwufjjF3xvuTt)r=%V7Q#^h8Wz#3RM>c6_ z3N+j`6*RDFw1RcXjM^n`@~CJ+ribe481IR0@{-9=iF(SJRVS58>#wa2x|@O(!BCU5 zzbVwvP~Ql;QL_8Akxi$mZZgcIYz)=8!Q9Z|iePPh9o3HMDQ{|hXmOPuwAvW3YG&`cN0kHt^(;QgY}KqyO%AhR#^zE zZmPYuP9b(>{gMU&id*JTUA^i@6Md|!Zmb9ryzqLrourXblB^5?;c6~bR903uHPr$b z4O6;jlwUS|=6wH^m-@;|rq1`5%*f@YLldU3+1;lHfRS8{1$h_o8KJg;!v_{?-) zotsTzajk9!Q>e+kq@s$MLwGP)y`&*17`M2d*2>UN735LvU`cPRVDxM2D(f2s6&7DV zI^D*i%KExsMI|}Okx=?~n&N03tgcw1R@Ei-41R4LXt_jVbF5#|zHyo9qujopW&mk- z*^H7>P=_YgG}bSn3f8EKrl#s83m0GSt_n2@V%Jd=OMyyNTUQ&btyo<9eN}w=Oi9no zkPcUq)4ecst>E?b^&t?k2NI**C2DzHQr{GGFRs0=n$o2^jnz$|#X*^&m5iQL2Bf4- zqv9B!e@^A%#xvbDp}I;z3f<0%o<`L*1sg*$bp+W}C;W>SmsQl(jh4PkzsE|yW#O%^ zs}Ehf$lcUXQK>f}!50>U1b`*NYfLYA#rrNZn!%es)2-mm^sZx}tYmt9Yj`BqQz-RF zY0}1?N~-Mkk1dk;P<&LmfeCM4oUsJH^-{d=2 z@-@f;x3sn~7^+}Lj17{Erm8^N#k@EH{O7a1FuTtId2rl8S-j)z8Z$xi_4HdU9L$BL zdWNj3dTDK?oz|XzV{AB8FK=M}u=ojdde2naGe*HFM9p?Omi}OEa8YA5vl5KBE-{a! zKQVmlOjQ-Z3f*kA7RaAWjS2}N-ZUzD|fCyFZd%!S%T5W0X@-v}CyDnD?M-mm^*?^Ch;YL@PyyLx$Lwb~Tz1~u5}Gf?P~b5Ui}lD*>g z{)zR`o%&;>rYHW%H|mU#+Dp$=iSp}0ix+FJ`i5cE$Do2NBe{>!Cn+nXxVSh~e$Fj4 z)Db4%T~t0N&1sxpSU9^JCav48z~@}BXaPTL$PLT+agu`9v7AmEC;#MA{cxK|^`paf zD=V9fSu-yhRb(Y{`m-&m0(d-ivHX7nyxs^+*lxx#1;+G#sQgTXa zpEPIR^nMwc{aslD1`f*389XF+=&<1@jX3!f_o=6yo;UK0@8q9(R>9e$MxRqSX6(4} z=bm?d(S(VfNs}+Q(CeEr)n9zk#etG(mz0)WdRh79(`U@YMA@7xuey5fyldt!s90E8 zRb6xKqT26Xw|GfieZ%(}n}VUG%a&jN{To)ST(w#~BP8v(xH?A5%x2rHUp500m0eB3 zX9?l6@Vl&CB|RIsPcrdCd}&2f(8nIQw7R^$A=D5L*I~LiqYNsk;@avd^~-h6Su={K zj~hGMUs|fu$Nu(dZoa8`O)~?Ud{gsHH#TRdrZS>y*RExv6c#p@H@7l6`QIrjpWV!O zF{tI`t>ks*H@7yE%V1a+En4JsrY&!1Sk};R%y`bcibVX(2-TI<*Ub!7&#tbTxhQl| zW9>?7ySauQ7W5i7}*a^DnW48;zcSNvJn{n}4zV?*EGf$Be(* zSoHrj1~}Hl|LGea|MlP42#R~7qvv0e5 z|GLLIMep?AuD3m@vWyi>5C|F`S^KZgH*MbMl$UJ*3^ z+x-s&CN5brQ8+^Sr;4Am-DUi^#dAGBDx$3HoT{pG^hbFa+GYI8599?rj_MeD+JNFX z>Kh`YUZSB#VB6?~kSC!gs7xpoRX9XTwUh-3Q!6|usF}(|62K3{O=Ad#j{YJ~MVtt0>SQkIk>`6Z75wG?WsB0|b+thIfH0WHzQbC7l7wU_0B){Y_NN12n=rq+-_f$BI!aHn`5GH5uD3HLhWBKFDdx`C_0GJ$p}Kcr#4J!O8pX-2 zt>ni@Ro zR$b4DlqTA&40yLOwv_OQW8gCu#M1R}ao}3@q*zeBDAtv4)x?DK|F$!|;grz6qaf5f z-HAZCpkXmgG$l3ByymOtDOn8MAl27n;*W|2uJudmY8BHD9yd8`j`h{^7;|{@%ao^Q z{Fl}!-q2AaE25uRbum1#(|yNSFn#9C63Jg2;4f~dDhRic$t1jb;*WvWQNh{H0Xt2|JK)a-(!N!~z9{$_LNIz|SJ#J$X;!o6=1x>K-DjM~0 z2>Yg|AU&>}aw~*on^-^s=z8iG8PIX^>kjlPm3A{-)W9fc@O{+0@0sumf~*tuH8xbF zzrt!{JeMw17!r$E5XS_=xMs3p$OFFe8rY;slZ^{5m~6;H!sqZiieFw6Hh7EMSh0dM zXW-I?YxrHoZ$3PbvvJ8{z-BVYZcM@*$*;&hM_q81K^CJx{PN460zS@CafSiYQY}Ax z8iLcOl7BM4r}90Cf-aCk`LXd|;l6y&pAX}6G2$QAX#EYV91yW>*xwDoM#R$d=ffQr z5a?jOYhV-f1k9f=Ed9i9c)C5Gq;IH@Xgj-?xSP$_pV9WeZ+R}vfbsjJI8kS*!gzZ?jv^oF8h0v?RMDi zv$nh5b|1Ih2W|I$+r8Iz@3GyxZ1;BCz0G!Sw%u0SZL!^E+g)M1%WXGkyA8Ix*mf7$ zZk6pWu-&<~JI8is+HSe+mfCK>cKx>NwcSa!TV%WAZMV>N&$eB+?Pl4o({>Me?eVeQ zUADX4cJH#?<+eM=c8hE`*LL?`XpgJyK4`nGw!6S~y|!CuyZN^3w%sh-wJy-*{l#{7 z*=~pJ-fO$fwmZjm3vJhFyL%?0&>L>D(9fgva8= zmC&MuxZZUq=903d9C*=*MJRt_NMW7BxQjIKppQux3y_#c65=}&{E|k>i2Wq?L(2W{ z{0z-YF$Ox$bo6UTUr@xlTiBOA_jefm(U=&TmrR_SIAB2BAtzy{r5IU`%TG^kNK)w= zh5`5VBqM!ypF)SzVK}Eqnk3Sk;*dOh$>ZpsWc2@0dZA;8!x%!jj=m0~?*`lyhmj)R zt`x&HzK`J=+pl53N$JK(RW9SC@%@dH8gus#-kZH^U`JNNrrD&UV^i55N=MVqEZt8> zpCqHt*rY<`HYODga8XWGTD-hizE8)Z1wRfshn;Ugj?>5qW*9kD{fwOP=|)cDfR0$& zSH~O1U$Kd}D6x*|N#z5Eq#Hx3vWy|)UB-~cLHh^nb?wUR=ofF>rt>*Rz;Is`t7B-g zF?3;0Lw2EI#L7Np0{a-hcgM<3PchQRJB{?|eHsQRIP^7K(|gK%VWMG(ahn%nWvX^( z(r(&5p0?ZVP69Shq0saWzi--U_u~H|;d|&%sjI({{-Zt(GB#fF3=sHDPb!SH?_Bm% zFTeX@?UOMYNV<$ZMnC-8suMc6w0DC-o!GFL>sm4hQb2|n%t^R#zo-rcfvpAceY(upG%-K_+4gy4;YkU3>u$i3>xc-=UG?E zy2EcQ&vyJNoPA??95N2C0skPl!}#S)AFx-21@VJ_IpA~7*a00H&yEV)6>Iwom!s#- z?`?KF9DS3GzK&;&B=E(N?KHBh(v9qyeT{6&&z_#uFkoo9F_ij-R`oT85;k;f&fY=0 zdhqs&S%xv>3d4BFF0ZeQ-IN~O`vG(4X?{D17uVs=fNmOKxMyY=Zt%k0c+&o1dvkXU z?#OQFopojIwg=vQ@f;J$2l5wPF00-}k6PT!$JDmy!Nxp9Y6&KW(p~?K9Kp zLm%lwha)%L$fd8j^fi}$<&M>J-jUVE$O@(zS)|Jvo6+Iun`HDIn_B3|B@JcdQbsOu zq;JspQw9E9bzJ=E0udY;Nk)cafL^c0_9+}N#L0Zl1n)A8A=3qtdiKZs-()ds&Cl*-=sog1&i;1rT*Tm+{f)uY zHF)~K{aL&EcVsm5TcFn~<~;pQocHT)0RJGQOJn)dl8iLR&uqMaw>r}WUi3GzAI)lT z$ef#*K^grFS7X11zV1xJy=kc74(2kxLm1n^hTAdF7`lJR-ke=MWA(@y!+4foY4MyE zTzmc2xYv(5z&{)J^f>By<&br7W;SpeWDI#!py2ArY{*zJ^vu4%^K9Y@h&zk1$TzYY z^!zQP617I}X00BPVT=HdBY@)w#(V^Ij2Js~?~q;Kf?7Z52WzsxL*q;)FbDQCfj!|v z8%Y;iH<{;Z4Py_8&8t5kjPB&O+J@cGyfkBA)#Jv%@sF{eJz~W6vj${!dc8=CuNMM~ zyMJmJpYyvamj4tdI0!Ghv1e71^^>LE(0D<+66fXgocJ8?`wI*%^BXHmCH}#PC7EsRwTc$XsDv$O4vG(=+0G*-w7MZL;4c z;E}?4#%U(F&zd)6?4Sn6z&^kx%NY1*|Ax#38RdHXS#y|Q+03u(u`wL$*;jSHnae@u zGV7f^m*f5J_b1MA{5}$EuimH2b-w=OV@#O~jO9`DXw<{VJo(*b=X;GZ);@v>+t^r~ z1Ky1PUh)V>P4e;f3HNZuWO%wUysE!3e0-)ceEN|6dX?;%+a2rK5BOaio7)5W7z1d_ zfa$WEr!R=%(W_6fo^pdQwgxy(O*c**Kh!w&vtj#l_YU6m|Fm~L&{0))9>4j6(vZLq zVoO|=@sK@&i)_@`Mn##BghmZABmg&4L~UmO9DMP4V|Kk@Oov~F(y~V7a_!tIyY|^~DKC;sxwQE)yY7!oxo_=y$(V!4 z4!^(LGoNo`^9TG}5dXZlHgI3#nKYJvUQYRhcpl?{wW=uBj4K`eSXST2#3_3+d(y*p zZSw5y&8M-fI{`Ch@2HsiOV6h2m!SG3d0k?S^`2=j$STY~Kj)%}@qn4YGwVMvr$2IG zZcD#KT=~WQ`NvTHXfx(9@_XfRE!J^`Pt=d={@a)zBmMp8t)XLCLj$a#W0(`8&6(@$ z8tT>k30rrnV1`(4`@HpbM7kMK#4~)Jo;SFkL~@w(*(PsYV2};;MMnNPqssG3^SFbi zj$V7MSbsZnXealhb+l7`c`J3$dL6NSLNf2@mZLC7XSGJ%;3J*jwKC`){n(vaEqV^S*xyO|9+9>WPD`7@tR!8I2@%jqf>9s{- zxl1tRKA*nOb6A*HvdV*S9uBZB{;o{9|TyQ)G<)}6I9-qK_XY%%wzSKzl=B42iMdfH69#7cS5 z5jA7co1zh%)+5c;%kd#yEFA}~q~z~OEhZw z)V8Fye$%^7D~|0;;t}s1-W7bUeVNkRhMK!GYg%{_rFxl5Wyz%8IjY>&>NA>Uq5n2=G-MX zdNW??%YA1|sv{$re2u3ePya0ailt>yJmWtVZ3#0pwE5=VjH-CkJnJ?+cgcDJgx=SWSJ^$z*-I#XH~JiDPs$(xte~XM+r*gv!Bh9ikL$RI)Zt}*Y*R`h9c;nGcomH7N zjrGyehPswW^DOyM&sZLhnj`9eo5Ehk^va?tQA5#OY@m zy}(N!mNiVZ^pa8@g~loU?DARC_cN-Pca8Pl3dlQf^N_V+;|f-V!^-0=2T^Nav(-CW z6}1y?wO77deJE{1Qkbbm2{V|TtxFqJqZzG>7DZcF(WJ~N!0_ybRmBUGk4gv#jUj^=Br6)7_Ccv?%wCmKzNCKkB3tW;x{~WUt0>c&)+5l)$Rui zOt#^Xg_gcGrcN)J$6o2{@fd1e7{V7Q6!K0TFJ1qhv!rwvY<~W{ukfAXQ`ZLfF4{Nn z%R_n|@xP~1f%^VS$Hu9y9yVwiT$tDN-cjtrSuWgpo=qQc;RY8T>%zq@%qv~*2)OV# z7fwvE`SqQejxHC@w?Wh9!l%1%g$whwyLSX!_zV~3_mD$s+gUEW%Y`SnaIFgmU3iiU zpY6hh=i2=K<5|1wmu2q!G8g7Uo_933@Cp~6@4|1naM*?YpL`0rusdy1p9@pNembA2 z=TpOeI-jZMPZaj^`Akjk$NNk@f1GNZm1H<(Ld~TSNDjh2 zQ19P?oC>oM++#dyJ}azwtaGCf|D4KIUU3Yf@-@E|r+KZpEK&T~h~jZy@xmo8Th3?h77Gn&&ai0Z0#s6K6o>U@jitx)H0Lv(&MqWav8 zOh$MW>V-E!)pskR>+y=xi~kN(o1R8={#S_3kH;vok8iW$Eq0wgSyX???wyF*)t*-vyFs?BM~i61IT=_SL*umy%K@b_Dw z);;Hi9rY}xqs@P?`umF>l+#}Vj$UM+Yy6X1pOcSwvIZpQd#8GP%iwyX=6|ox%MO3b z7KJw-zy5s}+W59&cm5K~Z8uqVx_0|z`{7{RrB5})Neu^vJnUtHLmnr!8t++QLvLQS zRT_Hpy z`S4~Ob5oA~@>gy0a?Ifa%bWw(9SEB15B$r43sO?^y#Gw^bBWiDIe(SSN%7v{KQF({ zz4Mq%@8gIQ{cb^e%8}s?zsY)*@O3dY+{Oni-HZBOvFXCqk>up>SPz%IyZoIi?0qod zsQR8oEiOeqiRk;6dyyT;KIBgbF5gCezE>lQ)ff&x-zDh!Y@+fP*KSm9Xa7;>EESnOEnILR^S7;rR>M=!PQJ?wbMG2wX7vDa~* z;~vM|j=LP6bnJ25>G-(gHpfoK^^R*D{qk44@Jh$HV}oO@W7sj|SnOEjILR^KXdFMp z7ZlFq^aTF8H(5JO^+E%Gg6=u1@9y-F(!X1N&K>^qo66KR{kr&{X|;~%@HtSUcd2og z{YxI-v3#5>o@UJL$QkJEaLPxFDL@aw4!+ndM(=@Jm;jaN+u+kk1U&)YoXBqqqX!C% zc^OB^CUkw-aof54p9u7JxDQ#0E`IEv@Qp>6Z|PhlbXA&}4{vwzYv2!^{vXIw>FNK*!PA!@sLL}A(}o;{22l&++n@IgfJUGS;dlu7&^I4*3< z&x2n>BE)yXiE|h;v(wBpSWrbhRgQ@0S}}M}H8vrBBRrEOxf8tsu0d31vCHY=%ZTd0 z?{%9C=32c7UObQXl6M-cMwB-K*CM)>_@vXtH=N#9!&pKNkyrlGQ5NA$*$Uo;1ku;R zE<|N^!xh)qcCCj$MJkBj2TxgG>mwi9t%&+j{0XAG{Pvz1b*-%rzpH1;ogRk2MH)y` zREG@^*-e~y19OD<0{Dp2yJ68n+D7~|cvii=F26-?K91;G74Tsf-v#$Oy%$c6+BAi* z#_99nYX>p@S!`aJ=J8SV)%0&S{7*!EeF$EAqqS!(d>HY@A?)BrTS(q67`q8U z7x%AZ459bIyqj6K(Iar-D(zcKGfnWi&+-3p&}-o@kalj&``~G9w)`Ua#aq}9MtnQG zc{P6aq;G?}kvztgc)M17ZluQ^>j=Zkh;OoD&?66+*+UxP2VvyP$n!OiO!qv%^<&6lY&`h2)|y|r83 z2K=HB*{uow7THajL-4cr+P+%`ulWk|pZEoE{8w3jXuH^jXblu6+|NCL_#otW@=b-( zz>tLci$$Aw1|nYk0V3P>ziFdiLJC9eE}Txpj}I| z;q!>*R|2kh$oA1nIOSpLNqX@P@ zdr60P{)lmcz83x);*}2{{V~shjFau~^#8DW0et&sT#NK(H(s1btctvF(^FR83M0S3 zo+=+c)5}~y-v?(NU_78#!26`jR`4L=tyl2OgV>EUL3jf)at><(-2NQ4M&Ah^dESoU z?Xc<)zkNh}1ZMx9I-rZ+c!{>4Z-akCI?#{6GycFDf-YWzsJ#o|eNOLyzj69oaPbl9 zNBS7th^U_8{#O`J#P`A_uVNqU5QABNVhu;nhX0BbqIbYM{!Cu_=o-{iNM-r^k(@n!JWi01x5IPPu6Iq`XL15a%|=o{fK zL~RrgrXj?Ov-tPk>fiaWk3Atrh!^h|K^)_J4V-rhYmCysdl8kBfUlft^B#q>N80!> z+=3L4ek+_jin)kB1>T2fP3wT`vMG=FUiiHntM7stqqzqX&;PkF(-Ci8!);@*EAa_9 zHNbNgb<1n^5;zjL6Qd>mrU8)RQYHyk1MePw&dQp40ltz5o#q&Q+ M%uz(+;ba~E1CEnc#sB~S diff --git a/clkr/REGISTER_FILE_isim_beh.exe b/clkr/REGISTER_FILE_isim_beh.exe deleted file mode 100644 index fb891a9535ba402686c3a210d1430e181af1bb22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94720 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 M%uz(+;ba~E1CEnc#sB~S diff --git a/clkr/RamInit.vhd b/clkr/RamInit.vhd deleted file mode 100644 index d6861d2..0000000 --- a/clkr/RamInit.vhd +++ /dev/null @@ -1,34 +0,0 @@ -LIBRARY IEEE; -USE IEEE.STD_LOGIC_1164.ALL; -USE IEEE.STD_LOGIC_TEXTIO.ALL; - -LIBRARY STD; - -USE STD.TEXTIO.ALL; - -ENTITY RAM_INIT IS - PORT ( - CLK : IN STD_LOGIC; - PERFORM_INIT : IN STD_LOGIC - ); -END RAM_INIT; - -ARCHITECTURE Behavioral OF RAM_INIT IS - - FILE FIN : TEXT OPEN READ_MODE IS "input.dat"; - -BEGIN - - PROCESS (CLK) - VARIABLE RD_LINE : LINE; - VARIABLE HEX : STD_LOGIC_VECTOR(3 DOWNTO 0); - BEGIN - IF PERFORM_INIT = '1' THEN - WHILE NOT ENDFILE(FIN) LOOP - readline(FIN, RD_LINE); - hread(RD_LINE, HEX); - END LOOP; - END IF; - END PROCESS; - -END Behavioral; \ No newline at end of file diff --git a/clkr/RegFile.vhd b/clkr/RegFile.vhd deleted file mode 100644 index 9d6aaa1..0000000 --- a/clkr/RegFile.vhd +++ /dev/null @@ -1,43 +0,0 @@ -LIBRARY IEEE; -USE IEEE.STD_LOGIC_1164.ALL; -USE IEEE.NUMERIC_STD.ALL; - -ENTITY REGISTER_FILE IS - PORT ( - OUT_REG_A : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); - OUT_REG_B : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); - INPUT_VAL : IN STD_LOGIC_VECTOR(63 DOWNTO 0); - WRITE_ENABLE : IN STD_LOGIC; - SEL_REG_A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - SEL_REG_B : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - WRITE_REG_SEL : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - CLK : IN STD_LOGIC - ); -END REGISTER_FILE; - -ARCHITECTURE Behavioral OF REGISTER_FILE IS - TYPE REGISTER_FILE_TYPE IS ARRAY(0 TO 15) OF STD_LOGIC_VECTOR(63 DOWNTO 0); - SIGNAL REGISTERS : REGISTER_FILE_TYPE; -BEGIN - - RegFile : PROCESS (CLK) IS - BEGIN - IF rising_edge(CLK) THEN - - -- Read A and B before bypass - OUT_REG_A <= registers(to_integer(unsigned(SEL_REG_A))); - OUT_REG_B <= registers(to_integer(unsigned(SEL_REG_B))); - - -- Write and bypass - IF WRITE_ENABLE = '1' THEN - registers(to_integer(unsigned(WRITE_REG_SEL))) <= INPUT_VAL; -- Write - IF SEL_REG_A = WRITE_REG_SEL THEN -- Bypass for read A - OUT_REG_A <= INPUT_VAL; - END IF; - IF SEL_REG_B = WRITE_REG_SEL THEN -- Bypass for read B - OUT_REG_B <= INPUT_VAL; - END IF; - END IF; - END IF; - END PROCESS; -END Behavioral; \ No newline at end of file diff --git a/clkr/TOP_isim_beh1.wdb b/clkr/TOP_isim_beh1.wdb deleted file mode 100644 index 6f8bfa71e779994a45c6504c352a4ddd51a7014d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9892 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 RAM_ADDR, - RAM_DATA_IN => RAM_DATA_IN, - RAM_WR => RAM_WR, - RAM_CLOCK => CLK, - RAM_DATA_OUT => RAM_DATA_OUT - ); - - -- Initialize RAM - RAM_INITIALIZE: RAM_INIT PORT MAP (CLK => CLK, - PERFORM_INIT => PERFORM_RAM_INIT - ); - - PROCESS - BEGIN - IF IS_RAM_INITALIZED = '0' - THEN - PERFORM_RAM_INIT <= '1'; - END IF; - END PROCESS; - - -- Create testing signal - PROCESS - BEGIN - CLK <= NOT CLK; - WAIT FOR 1 ns; - END PROCESS; - -END Behavioral; \ No newline at end of file diff --git a/clkr/Top_isim_beh.exe b/clkr/Top_isim_beh.exe deleted file mode 100644 index fb891a9535ba402686c3a210d1430e181af1bb22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94720 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 M%uz(+;ba~E1CEnc#sB~S diff --git a/clkr/Top_isim_beh.wdb b/clkr/Top_isim_beh.wdb deleted file mode 100644 index 3fdede4c4601cbf5ae0b338720feb8fea2ddba12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9892 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 - - -

- - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/clkr/fuse.log b/clkr/fuse.log deleted file mode 100644 index 344577e..0000000 --- a/clkr/fuse.log +++ /dev/null @@ -1,25 +0,0 @@ -Running: C:\Xilinx\14.7\ISE_DS\ISE\bin\nt64\unwrapped\fuse.exe -intstyle ise -incremental -o C:/Users/sina/Desktop/HyperDbg/clkr/clkr/TOP_isim_beh.exe -prj C:/Users/sina/Desktop/HyperDbg/clkr/clkr/TOP_beh.prj work.TOP -ISim P.20131013 (signature 0x7708f090) -Number of CPUs detected in this system: 8 -Turning on mult-threading, number of parallel sub-compilation jobs: 16 -Determining compilation order of HDL files -Parsing VHDL file "C:/Users/sina/Desktop/HyperDbg/clkr/clkr/RamInit.vhd" into library work -Parsing VHDL file "C:/Users/sina/Desktop/HyperDbg/clkr/clkr/RAM.vhd" into library work -Parsing VHDL file "C:/Users/sina/Desktop/HyperDbg/clkr/clkr/Top.vhd" into library work -WARNING:HDLCompiler:1369 - "C:/Users/sina/Desktop/HyperDbg/clkr/clkr/Top.vhd" Line 57: Possible infinite loop; process does not have a wait statement -Starting static elaboration -Completed static elaboration -Compiling package standard -Compiling package std_logic_1164 -Compiling package numeric_std -Compiling package textio -Compiling package std_logic_textio -Compiling architecture behavioral of entity RAM [ram_default] -Compiling architecture behavioral of entity RAM_INIT [ram_init_default] -Compiling architecture behavioral of entity top -Time Resolution for simulation is 1ps. -Waiting for 1 sub-compilation(s) to finish... -Compiled 10 VHDL Units -Built simulation executable C:/Users/sina/Desktop/HyperDbg/clkr/clkr/TOP_isim_beh.exe -Fuse Memory Usage: 36456 KB -Fuse CPU Usage: 640 ms diff --git a/clkr/fuse.xmsgs b/clkr/fuse.xmsgs deleted file mode 100644 index a20abda..0000000 --- a/clkr/fuse.xmsgs +++ /dev/null @@ -1,12 +0,0 @@ - - - -"C:/Users/sina/Desktop/HyperDbg/clkr/clkr/Top.vhd" Line 57: Possible infinite loop; process does not have a wait statement - - - - diff --git a/clkr/fuseRelaunch.cmd b/clkr/fuseRelaunch.cmd deleted file mode 100644 index 32e102a..0000000 --- a/clkr/fuseRelaunch.cmd +++ /dev/null @@ -1 +0,0 @@ --intstyle "ise" -incremental -o "C:/Users/sina/Desktop/HyperDbg/clkr/clkr/TOP_isim_beh.exe" -prj "C:/Users/sina/Desktop/HyperDbg/clkr/clkr/TOP_beh.prj" "work.TOP" diff --git a/clkr/input.dat b/clkr/input.dat deleted file mode 100644 index 87e7edb..0000000 --- a/clkr/input.dat +++ /dev/null @@ -1,5 +0,0 @@ -55 -85 -69 -55 -55 \ No newline at end of file diff --git a/clkr/isim.cmd b/clkr/isim.cmd deleted file mode 100644 index fff18e8..0000000 --- a/clkr/isim.cmd +++ /dev/null @@ -1,3 +0,0 @@ -onerror {resume} -wave add / -run 1000 ns; diff --git a/clkr/isim.log b/clkr/isim.log deleted file mode 100644 index 8592119..0000000 --- a/clkr/isim.log +++ /dev/null @@ -1,30 +0,0 @@ -ISim log file -Running: C:\Users\sina\Desktop\HyperDbg\clkr\clkr\TOP_isim_beh.exe -intstyle ise -gui -tclbatch isim.cmd -wdb C:/Users/sina/Desktop/HyperDbg/clkr/clkr/TOP_isim_beh.wdb -ISim P.20131013 (signature 0x7708f090) ----------------------------------------------------------------------- -INFO:Security:51 - The XILINXD_LICENSE_FILE environment variable is not set. -INFO:Security:53 - The LM_LICENSE_FILE environment variable is not set. -INFO:Security:68a - user is sina, on host DESKTOP-8H0ML4R. -WARNING:Security:43 - No license file was found in the standard Xilinx license directory. -WARNING:Security:44 - Since no license file was found, - please run the Xilinx License Configuration Manager - (xlcm or "Manage Xilinx Licenses") - to assist in obtaining a license. -ERROR:Security:14 - No feature was available for 'ISIM'. - -No such feature exists. -Feature: ISIM -License path: C:/.Xilinx;C:\Xilinx\14.7\ISE_DS\ISE\/coregen/core_licenses\Xilinx.lic;C:\Xilinx\14.7\ISE_DS\ISE\/coregen/core_licenses\XilinxFree.lic;C:\Xilinx\14.7\ISE_DS\EDK/data/core_licenses\Xilinx.lic; -FLEXnet Licensing error:-5,357 -For further information, refer to the FLEXnet Licensing documentation, -available at "www.flexerasoftware.com". ----------------------------------------------------------------------- -WARNING: A full ISim License cannot be checked out due to the issues listed above. Please use Xilinx License Configuration Manager to fix these issues in order to check out a full ISim license. -WARNING: ISim will run in Lite mode. Please refer to the ISim documentation for more information on the differences between the Lite and the Full version. -This is a Lite version of ISim. -Time resolution is 1 ps -# onerror resume -# wave add / -# run 1000 ns -Simulator is doing circuit initialization process. -Stopped at time : 0 fs : File "C:/Users/sina/Desktop/HyperDbg/clkr/clkr/Top.vhd" Line 59 diff --git a/clkr/xilinxsim.ini b/clkr/xilinxsim.ini deleted file mode 100644 index 600496d..0000000 --- a/clkr/xilinxsim.ini +++ /dev/null @@ -1 +0,0 @@ -work=isim/work diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000..b19d4e1 --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version = 1.9.7 diff --git a/project/plugins.sbt b/project/plugins.sbt new file mode 100644 index 0000000..5708f81 --- /dev/null +++ b/project/plugins.sbt @@ -0,0 +1 @@ +logLevel := Level.Warn diff --git a/src/main/scala/gcd/DecoupledGCD.scala b/src/main/scala/gcd/DecoupledGCD.scala new file mode 100644 index 0000000..1cd2993 --- /dev/null +++ b/src/main/scala/gcd/DecoupledGCD.scala @@ -0,0 +1,73 @@ +// See README.md for license details. + +package gcd + +import chisel3._ +import chisel3.util.Decoupled + +class GcdInputBundle(val w: Int) extends Bundle { + val value1 = UInt(w.W) + val value2 = UInt(w.W) +} + +class GcdOutputBundle(val w: Int) extends Bundle { + val value1 = UInt(w.W) + val value2 = UInt(w.W) + val gcd = UInt(w.W) +} + +/** + * Compute Gcd using subtraction method. + * Subtracts the smaller from the larger until register y is zero. + * value input register x is then the Gcd. + * Unless first input is zero then the Gcd is y. + * Can handle stalls on the producer or consumer side + */ +class DecoupledGcd(width: Int) extends Module { + val input = IO(Flipped(Decoupled(new GcdInputBundle(width)))) + val output = IO(Decoupled(new GcdOutputBundle(width))) + + val xInitial = Reg(UInt()) + val yInitial = Reg(UInt()) + val x = Reg(UInt()) + val y = Reg(UInt()) + val busy = RegInit(false.B) + val resultValid = RegInit(false.B) + + input.ready := ! busy + output.valid := resultValid + output.bits := DontCare + + when(busy) { + when(x > y) { + x := x - y + }.otherwise { + y := y - x + } + when(x === 0.U || y === 0.U) { + when(x === 0.U) { + output.bits.gcd := y + }.otherwise { + output.bits.gcd := x + } + + output.bits.value1 := xInitial + output.bits.value2 := yInitial + resultValid := true.B + + when(output.ready && resultValid) { + busy := false.B + resultValid := false.B + } + } + }.otherwise { + when(input.valid) { + val bundle = input.deq() + x := bundle.value1 + y := bundle.value2 + xInitial := bundle.value1 + yInitial := bundle.value2 + busy := true.B + } + } +} diff --git a/src/main/scala/gcd/GCD.scala b/src/main/scala/gcd/GCD.scala new file mode 100644 index 0000000..07e434c --- /dev/null +++ b/src/main/scala/gcd/GCD.scala @@ -0,0 +1,34 @@ +// See README.md for license details. + +package gcd + +import chisel3._ + +/** + * Compute GCD using subtraction method. + * Subtracts the smaller from the larger until register y is zero. + * value in register x is then the GCD + */ +class GCD extends Module { + val io = IO(new Bundle { + val value1 = Input(UInt(16.W)) + val value2 = Input(UInt(16.W)) + val loadingValues = Input(Bool()) + val outputGCD = Output(UInt(16.W)) + val outputValid = Output(Bool()) + }) + + val x = Reg(UInt()) + val y = Reg(UInt()) + + when(x > y) { x := x - y } + .otherwise { y := y - x } + + when(io.loadingValues) { + x := io.value1 + y := io.value2 + } + + io.outputGCD := x + io.outputValid := y === 0.U +} diff --git a/src/test/scala/gcd/GCDSpec.scala b/src/test/scala/gcd/GCDSpec.scala new file mode 100644 index 0000000..e8c7ce8 --- /dev/null +++ b/src/test/scala/gcd/GCDSpec.scala @@ -0,0 +1,68 @@ +// See README.md for license details. + +package gcd + +import chisel3._ +import chisel3.experimental.BundleLiterals._ +import chisel3.simulator.EphemeralSimulator._ +import org.scalatest.freespec.AnyFreeSpec +import org.scalatest.matchers.must.Matchers + +/** + * This is a trivial example of how to run this Specification + * From within sbt use: + * {{{ + * testOnly gcd.GCDSpec + * }}} + * From a terminal shell use: + * {{{ + * sbt 'testOnly gcd.GCDSpec' + * }}} + * Testing from mill: + * {{{ + * mill %NAME%.test.testOnly gcd.GCDSpec + * }}} + */ +class GCDSpec extends AnyFreeSpec with Matchers { + + "Gcd should calculate proper greatest common denominator" in { + simulate(new DecoupledGcd(16)) { dut => + val testValues = for { x <- 0 to 10; y <- 0 to 10} yield (x, y) + val inputSeq = testValues.map { case (x, y) => (new GcdInputBundle(16)).Lit(_.value1 -> x.U, _.value2 -> y.U) } + val resultSeq = testValues.map { case (x, y) => + (new GcdOutputBundle(16)).Lit(_.value1 -> x.U, _.value2 -> y.U, _.gcd -> BigInt(x).gcd(BigInt(y)).U) + } + + dut.reset.poke(true.B) + dut.clock.step() + dut.reset.poke(false.B) + dut.clock.step() + + var sent, received, cycles: Int = 0 + while (sent != 100 && received != 100) { + assert(cycles <= 1000, "timeout reached") + + if (sent < 100) { + dut.input.valid.poke(true.B) + dut.input.bits.value1.poke(testValues(sent)._1.U) + dut.input.bits.value2.poke(testValues(sent)._2.U) + if (dut.input.ready.peek().litToBoolean) { + sent += 1 + } + } + + if (received < 100) { + dut.output.ready.poke(true.B) + if (dut.output.valid.peekValue().asBigInt == 1) { + dut.output.bits.gcd.expect(BigInt(testValues(received)._1).gcd(testValues(received)._2)) + received += 1 + } + } + + // Step the simulation forward. + dut.clock.step() + cycles += 1 + } + } + } +}