| ############################################################### |
| # New Developer Tutorial |
| # |
| # By Jason Luu |
| # May 8, 2013 |
| ############################################################### |
| |
| Welcome to the Verilog-to-Routing (VTR) Project. This project is an |
| open-source, international, collaboration towards a comprehensive FPGA |
| architecture exploration system that includes CAD tools, benchmarks, |
| transistor-optimized architecture files, and documentation, along with support |
| to make this all fit together and work. The purpose of this tutorial is to |
| equip you, the new developer, with the tools and understanding that you need to |
| begin making a useful contribution to this project. |
| |
| While you are going through this tutorial, please record down things that should |
| be changed. Whether it is the tutorial itself, documentation, or other parts of |
| the VTR project. Your thoughts are valuable and welcome because fresh eyes help |
| evaluate whether or not our work is clearly presented. |
| |
| Task #1 - Environment Setup |
| |
| 1. Log into your workstation/personal computer. Check your account for |
| general features such as internet, printing, git, etc. If there are problems |
| at this stage, talk to your advisor to get this setup. |
| |
| 2. If you are not familiar with development on Linux, this is the time to get |
| up to speed. Look up online tutorials on general commands, basic development |
| using Makefiles, etc. |
| |
| Task #2 - Background Reading |
| |
| 1. Read the first two chapters of "Architecture and CAD for deep-submicron |
| FPGAs" by Vaughn Betz, et al. This is a great introduction to the topic of |
| FPGA CAD and architecture. Note though that this book is old so it only |
| covers a small core of what the VTR project is currently capable of. |
| |
| 2. Read chapters 1 to 5 of "FPGA Architecture: Survey and Challenges" by Ian |
| Kuon et al. |
| |
| 3. Review material learned with fellow colleagues. |
| |
| Task #3 - Setup VTR |
| |
| 1. Use git to clone a copy of VTR from |
| https://github.com/verilog-to-routing/vtr-verilog-to-routing |
| |
| 2. Build the project |
| |
| 3. Run "./run_quick_test.pl" to check that the build worked |
| |
| 4. Follow the Basic Design Flow Tutorial found in the Tutorials |
| section of the documentation (https://vtr.readthedocs.io/en/latest). |
| This tutorial will allow you to run a circuit through the entire flow |
| and read the statistics gathered from that run. |
| |
| Task #4 - Use VTR |
| |
| 1. Create your own custom Verilog file. Create your own custom architecture |
| file using one of the existing architecture files as a template. Use VTR to |
| map that circuit that you created to that architecture that you created. The VTR |
| documentation, to be found at https://vtr.readthedocs.io/en/latest/ |
| will prove useful. You may also wish to look at the following links for descriptions |
| of the language used inside the architecture files: |
| - http://www.eecg.utoronto.ca/~jluu/publications/luu_vpr_fpga2011.pdf |
| - http://www.eecg.utoronto.ca/vpr/utfal_ex1.html |
| |
| 2. Perform a simple architecture experiment. Run an experiment that varies |
| Fc_in from 0.01 to 1.00 on the benchmarks ch_intrinsics, or1200, and sha. Use |
| tasks/timing as your template. Graph the geometric average of minimum channel |
| width and critical path delay for these three benchmarks across your different |
| values of Fc_in. Review the results with your colleagues and/or advisor. |
| |
| Task #5 - Open the Black Box |
| |
| At this stage, you have gotten a taste of how an FPGA architect would go about |
| using VTR. As a developer though, you need a much deeper understanding of how |
| this tool works. The purpose of this section is to have you to learn the |
| details of the VTR CAD flow by having you manually do what the scripts do. |
| |
| 1. Using the custom Verilog circuit and architecture created in Task #4, |
| directly run Odin II on it to generate a blif netlist. You may need to skim the Odin II |
| readme file and the vtr_flow/scripts/run_vtr_flow.pl. |
| |
| 2. Using the output netlist of Odin II, run ABC to generate a technology-mapped blif file. |
| You may need to skim vtr_flow/scripts/run_vtr_flow.pl. |
| |
| 3. Using the output of ABC, run VPR to complete the mapping of a user circuit |
| to a target architecture. You may need to consult the VPR User Manual and skim |
| You may need to skim vtr_flow/scripts/run_vtr_flow.pl. |
| |
| 4. Read the VPR section of the online documentation. |
| |
| Task #6 - Submitting Changes and Regression Testing |
| |
| 1. Read README.developers.md in the base directory of VTR. Code changes rapidly |
| so please help keep this up to date if you see something that is out of date. |
| |
| 2. Make your first change to git by modifying README.txt and pushing it. I recommend |
| adding your name to the list of contributors. If you have |
| nothing to modify, just add/remove a line of whitespace at the bottom of the file. |
| |
| |
| Now that you have completed the tutorial, you should have a general sense of what |
| the VTR project is about and how the different parts work together. It's time |
| to talk to your advisor to get your first assignment. |
| |
| |
| Good luck! |
| |