#The TLUT tool flow: An introduction The TLUT tool flow is a tool flow that generates FPGA configurations. Its biggest difference with the traditional FPGA flow is the use of a new technology mapper, the TLUT mapper. The TLUT tool flow was developed to implement Dynamic Circuit Specialization (DCS) on FPGAs. A DCS implementation of an application specializes its circuit for the current values of a number of specific inputs, called parameters. This specialized circuit is smaller, and in some cases faster, than the original circuit. However, it is only correct for one set of parameter values. Each time the parameters change value, a new specialized circuit is generated. This new specialized circuit is then loaded into the FPGA using partial run-time reconfiguration.
The TLUT tool flow offers an efficient implementation of DCS because it uses the concept of parameterized configurations. A parameterized configuration is a configuration in which some bits are expressed as Boolean functions of the parameters. Before the FPGA can be configured, the parameter values are used to evaluate the Boolean functions. This generates the specialized configuration. Several papers on the academic underpinnings of the TLUT tool flow are listed in the wiki of this project or are contained in the documentation directory. There you can also find more information on our current research on extending and improving the TLUT tool flow. The TLUT tool flow itself and how to use it, is described in much more detail in this user guide.
##What can I do with this tool flow? First, you can evaluate our adapted TLUT technology mapper. This allows you to compare its results with a conventional technology mapper and see for yourself if Dynamic Circuit Specialization can be used to optimize your application. We have included a framework to make this comparison very easy. The following pages provide clear examples and show how to adapt the framework for you own uses.
Second, our tool flow has been integrated with the Xilinx FPGA tool flow so that you can perform DCS on a commercial Virtex 2 Pro or Virtex 5 FPGA. A number of examples that you can run right away on either the XUPV2P board (Virtex 2 Pro) or ML507 board (Virtex 5) are included in this repository. Information on creating your own project is also included in this document. The tool flow may be extended in the future to support more FPGAs, such as the Virtex 6 and 7.
##License The tlut tool flow is licensed by Ghent University. The license is included in all licensed code and in the repository, it is also printed below.
SOFTWARE LICENSE AGREEMENT
This software license agreement (hereinafter referred to as the "Agreement") provides the terms and conditions under which Universiteit Gent - Ghent University (hereinafter referred to as "UGent") is willing to grant you (being the person or entity installing and using the Licensed Software for Non-Commercial Purposes, hereinafter referred to as the "Licensee") a non-exclusive, limited right to use the Licensed Software under UGent Copyright.
By downloading the Licensed Software, or installing Licensed Software, or using Licensed Software, or clicking on the "accept" button under this Agreement, Licensee agrees to accept the terms and conditions of this Agreement and agrees to be bound by this Agreement. If Licensee does not agree with any of the terms or conditions of this Agreement, he should not download or install or use the Licensed Software.
(1) Licensee warrants and represents that the person accepting this Agreement on behalf of Licensee is its legally authorized representative and is duly authorized to accept agreements of this type on behalf of Licensee and obligate Licensee to the terms and conditions herein. Any breach of this warranty and representation is a material breach of this Agreement and, in such event, this Agreement and the rights granted to Licensee shall terminate automatically.
(2) Definitions - For the purposes of this Agreement, the following terms shall have the following meanings: a) "Software": refers to the computer software supplied with this Agreement named "tlut flow" and provided in Python and Java code form. b) "Licensed Software": refers to the Software, and any other computer software and documentation, if any, supplied with this Agreement. c) "Adaptation": refers to any work based on the Licensed Software, including: 1) any work which incorporates all or part of the Licensed Software, 2) any work which includes modifications to the Software, including but not limited to bug fixes, 3) any work which would be regarded as a derivative work of the Software under the Belgian Copyright Law, and 4) any work which is otherwise covered by any of UGent's intellectual property rights in the Licensed Software. d) "Grant Back Software": refers to any 1) modification of the objects distributed as the Software, including but not limited to the addition, deletion, and modification of verbs and properties on the objects, 2) creation of children to the objects distributed as the Software. e) "Copyright Holder": refers to Universiteit Gent - Ghent University, public institution with legal personality, having its administrative offices in Belgium, B-9000 Gent, Sint-Pietersnieuwstraat 25 (herein also referred to as "UGent") f) "Non-Commercial Purpose": refers to use of the Licensed Software solely for the purpose of education or research. "Non-Commercial Purpose" excludes, without limitation, any use of the Software as part of or in connection with a product (including software) or service which is sold, offered for sale, licensed, leased, loaned or rented.
(3) Adaptations - Licensee may create Adaptations of the Licensed Software only if a. Licensee treats the Adaptations as Licensed Software under this Agreement, and b. the Adaptations include all copyright notices appearing in the Licensed Software, and c. any Adaptations of the Licensed Software do not disable, modify or change the Licensed Software's requirement that an end-user accept the terms and conditions of the license agreement(s) contained in such Licensed Software before use and/or installation and d. any Adaptations of the Licensed Software do not modify or change the terms and conditions of such license agreement(s).
(4) Grant Back - Licensee hereby grants UGent a non-exclusive, royalty-free, fully paid-up, worldwide, perpetual license to: a. Reproduce and prepare derivative works based on and distribute all or part of any Grant Back Software; and b. make, have made, use, offer to sell, sell, license or import any products (including software) or services under any intellectual property rights owned or licensed by Licensee which relate to (1) all or part of any Grant Back Software or (2) methods or concepts embodied in, or implemented through the execution of any Grant Back Software. Licensee shall provide UGent with copies of Grant Back Software in source code form email@example.com.
(5) Distributing and Receiving Adaptations - Licensee may provide an Adaptation to other people or entities only if: a. either such other people or entities have already downloaded the Licensed Software directly from UGent and have agreed to the same terms as this Agreement, and b. the Adaptation is provided by Licensee for Non-Commercial Purposes, without any charge or fee, c. the Adaptation is provided with a short summary of the difference between the Adaptation and the Licensed Software downloaded from UGent, d. such other people or entities treat the Adaptation as Licensed Software under this Agreement with UGent, and e. before Licensee sends such Adaptation to any other people or entities, Licensee first provides UGent with a copy of the Adaptation (in source code form) and the summary. Licensee shall treat as Licensed Software under this Agreement any Adaptation it may receive from another person or entity.
(6) No Other Rights - Licensee acknowledges that it obtains no ownership rights in the Licensed Software under the terms of this Agreement. All rights in the Licensed Software including but not limited to trade secrets, trademarks, service marks, patents, and copyrights are, shall be and will remain the property and ownership of UGent. All copies of the Licensed Software delivered to Licensee or made by Licensee remain the property of UGent. Except as expressly authorized under this Agreement, Licensee shall not use, copy, distribute, display or transfer the licensed software in any form.
(7) Third party rights - Licensee warrants that it has obtained lawful permission to use all hardware and software required in order to use the Licensed Software including but not limited to obtaining appropriate licenses to use and create software in the Java and Python program languages.
(8) Warranty Disclaimer - UGent has no obligation to support or maintain the Licensed Software and grants Licensee this right to use the Licensed Software "as is". Licensee, and anyone to whom Licensee provides the Licensed Software pursuant to this Agreement, assume total responsibility and risk for Licensee's use of the Licensed Software. UGent does not make, and expressly disclaims, any express or implied warranties, representations or endorsements of any kind whatsoever, including, without limitation, the implied warranties of merchantability or fitness for a particular purpose, and the warranties of title or non-infringement.
In no event shall UGent be liable for (a) any incidental, consequential, or indirect damages (including, without limitation, damages for loss of profits, business interruption, loss of programs or information, and the like) arising out of the use of or inability to use the Licensed Software, even if UGent or any of its authorized representatives has been advised of the possibility of such damages, (b) any claim attributable to errors, omissions, or other inaccuracies in the Licensed Software, or (c) any claim by any third party. By way of example only, UGent does not warrant that the Licensed Software will be error-free. As used in this section, "UGent" includes its employees, directors, officers, agents, representatives, subcontractors, service providers and suppliers.
(9) Sole Remedy - If for any reason the Software is unusable or does not perform as Licensee intended or expected, then Licensee's sole remedy shall be to either terminate this Agreement or to modify the Software to create an Adaptation which is usable or performs as intended or expected. This limitation on remedies shall apply even if Licensee cannot modify the Software to make the Software usable or perform as intended or expected. Because some states do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to Licensee. In the event applicable state or federal law does not allow the complete exclusion of any warranties as set forth in this Agreement, UGent's liability is limited to the greatest extent permitted by law.
(10) Communications - By downloading and installing the Licensed Software, Licensee agrees that UGent may send e-mail messages or communications relating to the Licensed Software to Licensee, its employees and representatives.
(11) Termination - This Agreement and the rights granted to Licensee shall terminate automatically if Licensee fails to comply with any of the terms and conditions of this Agreement. Upon termination, all licenses granted herein shall terminate and Licensee shall immediately destroy all copies of the Licensed Software.
(12) Applicable Law - This Agreement shall be governed by and construed in accordance with the laws of the Belgium, without regard to its conflicts of law rules. The Commercial courts of Gent, Belgium are exclusively competent.
(13) Assignment - Neither this Agreement nor any of Licensee's rights hereunder shall be assigned, sublicensed, or transferred (in insolvency proceedings, by mergers, acquisitions or otherwise) by Licensee without the written consent of UGent. Any assignment or other transfer which is inconsistent with the foregoing shall be null and void ab initio. UGent may assign all or a portion of its rights and obligations hereunder.
##Installation and usage manual For installation instructions and an introduction to using the tool flow, please read documentation/user_guide.pdf
The user should provide the following dependencies:
- A UNIX operating system (tools used: gcc, bash, minicom, curl, stty, ...)
- Quartus II (tested with Web Edition version 11.0 SP1), Altera Corporation, http://www.altera.com
- Java (tested with version 1.8.0), Oracle, http://www.java.com
- Python 2.7, http://www.python.org
- A Xilinx XUP Virtex-II Pro Development System (XUPV2P board) and Xilinx Design Suite 9 (tested with version 9.1 SP2), Xilinx Inc., http://www.xilinx.com
Version 9 is old, but newer versions don't work well with the Virtex-II Pro.
- A Xilinx ML507 Virtex-5 Development System and Xilinx Design Suite (tested with version 13.4), Xilinx Inc.
##Contact us The TLUT tool flow is released by Ghent University, ELIS department, Hardware and Embedded Systems (HES) group (http://hes.elis.ugent.be).
If you encounter bugs, want to use the TLUT tool flow but need support or want to tell us about your results, please contact us. We can be reached at firstname.lastname@example.org
##Referencing the TLUT tool flow If you use the TLUT tool flow in your work, please reference in your publications the following paper:
Karel Bruneel, Wim Heirman, and Dirk Stroobandt. 2011. “Dynamic Data Folding with Parameterizable FPGA Configurations.” ACM Transactions on Design Automation of Electronic Systems 16 (4).