forked from verilog-to-routing/vtr-verilog-to-routing
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NewDeveloperTutorial.txt
110 lines (78 loc) · 4.95 KB
/
NewDeveloperTutorial.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
###############################################################
# 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. Read the README.release.txt file. Follow the instructions in that file 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 vpr/VPR_User_Manual.doc
Task #6 - Submitting Changes and Regression Testing
1. Read README.txt 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!