Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Time Table
2 Motivation
In this lab you will take a simple design through the FPGA Computer Aided Design (CAD) tool-flow,
starting from design entry all the way to programming the hardware. This lab will give you experience
with the software that you’ll be using for the rest of the semester.
ChipScope
ModelSim
Schematic Schematic Convert to (Siimulation)
Capture Verilog
Xilinx ISE
A design written in Verilog using Notepad is fed through Synplify Pro, the Xilinx PAR tools and
finally iMPACT which will program it into the FPGA. The whole process is described in detail below.
1
3.1 Design Entry
The first step in logic design is to conceptualize your design. Once you have a good idea about the function
and structure of your circuit and maybe a few block diagram sketches, you can start the implementation
process by specifying your circuit in a more formal manner.
In this class we will use a Hardware Description Language (HDL) called Verilog. HDLs have several
advantages over other methods of circuit specification:
1. Ease of editing, since files can be written using any text editor
In this class we will default to using Notepad to edit Verilog. Fancier editors are available, and in fact
are included with the CAD tools such as Xilinx ISE and ModelSim; however these tools are slow and
will often hinder you. For this lab, we will provide you with a complete and working project in Verilog.
3.2 Simulation
With a design in hand, the first step is always to test it using an HDL simulator. Because actually
implementing any large design can take upwards of half an hour, it is much too time consuming to
simply synthesize a design, check to see if it works and then tweak it. In fact, because a fully implemented
design in hardware runs so quickly (at megahertz clock frequencies) and involves so many signals, even if
implementation took a mere 30 sec, it is highly impractical to debug the final hardware implementation
directly.
To speed up the design cycle and also to provide the designer, you, with more detailed information
about the functioning of a running circuit, we use HDL simulators such as ModelSim. Simulation allows
you to provide specific test inputs to your circuit and observe both the outputs and the internal operation
of your circuit giving you very detailed feedback as to what is happening and when.
Because simulation is software rather than hardware-based, it is relatively slow taking perhaps 5 min
to simulate 5 msec of real time. But it allows you to create very specific input conditions, using special
Verilog modules called “testbenches” to exercise your circuit. You can even to print out text messages
in the event of problems, rather than forcing you to look at the binary output of your circuit.
3.3 Synthesis
Once a design is entered, simulated and debugged, the next step in the CAD Tool Flow is synthesis. It
is the job of the synthesis program to translate the Verilog description of the circuit into an equivalent
circuit made of primitive circuit components that can be directly implemented in an FPGA.
In a way, the synthesis tool is almost like a compiler. Where a compiler translates a high level
language, such as C, into a sequence of primitive commands that can be directly executed on a processor,
synthesis translates a high level language, in this case Verilog, into primitive circuit components that can
be directly implemented on an FPGA. The final product of a synthesis tool is a netlist file, a text file
that contains a list of all the instances of primitive components in the translated circuit and a description
of how they are connected. As C and Verilog are both alike in that they are high-level descriptions for
your program/design, compilation and synthesis are alike in that they translate your description into a
form that a machine can more easily understand.
2
3.4.1 Translate
Translate takes as input a netlist file from the synthesis tools and outputs a Xilinx database file, which
is the same thing as the netlist, reduced to logic elements expressed in terms that Xilinx-specific devices
can understand.
3.4.2 Map
Map takes as input the database file which was output from Translate and ‘maps’ it to a specific Xilinx
FPGA. This is necessary because different FPGAs have different architectures, resources, and compo-
nents.
3.4.3 Placement
Placement takes as input the result of the “Map” step and determines exactly where, physically, on the
FPGA each LUT, flip-flop, and logic gate should be placed. For example, a 4LUT implementing the
function of a 4-input NAND gate in a netlist could be placed in any of the 38,400 4LUTs in a Xilinx
Virtex XCV2000E FPGA chip. Clever choice of placement will make the subsequent routing easier and
result a circuit with less delay.
3.4.4 Routing
Once the components are placed, the proper connections must be made. This step is called routing,
because the tools must choose, for each signal, one of the millions of paths to get that signal from its
source to its destination.
Because the number of possible paths for a given signal is very large, and there are many signals, this
is typically the most time consuming part of implementing a design, aside from specification. Planning
your design well and making it compact and efficient will significantly reduce how long this step takes.
Designing your circuit well can cut the time it takes to route from 30 min to 30 sec.
3.6 Verification
As with any major design process, the most important step is testing and verification. While most
software designs are relatively easy to test, at least to some degree, hardware presents several interesting
challenges. For example when a piece of software crashes or discovers a problem it will often report some
kind of error giving you, the designer, some kind of clue as to what has gone wrong. However when a
1 Note: placement and routing are NP hard optimization problems and the provided software uses heuristics to solve
them. There are cases where humans can do a better job by hand. However as the tools improve these cases are becoming
quite rare.
3
circuit in an FPGA doesn’t operate the way you would like, there are no error messages or clues as to
why it is not operating “correctly.” In fact 99.9% of the time, the circuit is operating perfectly, but it is
not the circuit you intended to build.
Verification is the rather complicated process of ensuring that under every conceivable set of valid
input conditions, your circuit behaves as desired, giving the correct output at the correct time. In
contrast to functional simulation described in Section 3.2, verification is the much more thorough process
of testing the final design as a whole. This often involves simulations using accurate timing models as
well as complicated hardware set-ups.
In this class, we will limit the verification step to making sure that the circuit works at a human
visible level. Since humans can’t generally perceive anything under 1 ms to 10 ms, this will make your
job significantly easier.
4 PreLab
Please make sure to complete the prelab before you attend your lab section. This week’s lab will be very
long and frustrating if you do not do the prelab ahead of time.
1. Read Section 3 above, please make sure you understand it and ask questions ahead of time if
necessary.
2. Examine the Verilog provided for this weeks lab. It’s okay if you don’t understand it, but try
to decipher what you can of it.
(a) Confine your attention to FPGA_TOP2.v, Lab1Circuit.v and Lab1Testbench.v.
(b) Do not try to understand ButtonParse.v, Debouncer.v or EdgeDetect.v, as they are rather
complicated.
5 Lab Procedure
5.1 Project Setup
1. Unzip all of the Lab1 files into C:\Users\cs150-xxx\Lab1Verilog.
2. Double-Click the Xilinx ISE icon on the desktop to start Xilinx ISE
3. Click File → New Project and type in a project name (i.e. Lab1)
(a) Set the project location to C:\Users\cs150-xx (Xilinx ISE will create a subdirectory for the
project).
(b) The Top-Level Module Type should be set to HDL.
(c) Click Next.
4. A new dialog will appear with configuration settings
(a) Device Family: VirtexE
(b) Device: xcv2000e
(c) Package: fg680
(d) Speed Grade: -6
(e) Synthesis Tool: Synplify Pro
(f) Simulator: ModelSimSE-Verilog
(g) Leave the “Enable Enhanced Design Summary,” “Enable Message Filtering,” and “Display
Incremental Messages” checkboxes set to their defaults.
(h) Click Next
5. Skip the Add New Sources dialog by clicking Next.
4
6. In the Add Existing Sources dialog you will want to add the Const.V file to your project.
(a) Click Add Source.
(b) Navigate to the C:\Users\cs150-xx\Lab1Verilog folder and select Const.V, then click
Open.
(c) Notice that the Copy to Project box should be Checked.
(d) Click Next, you will add the other Verilog files in a minute.
7. Take a moment to review the project settings. Then click Finish.
8. Ignore the “No design units detected in file” warning issued because of Const.V.
9. Right-Click in the Sources In Project box in the upper left corner of Xilinx ISE, and select
Add Source (not Add Copy of Source).
(a) Navigate to the C:\Users\cs150-xxx\Lab1Verilog folder and select everything except
Const.V, then click Open.
(b) Use shift-click and control-click to select multiple files.
(c) Click OK.
10. You should now have a Xilinx ISE project, which looks like Figure 2.
The Xilinx ISE Window, as shown in Figure 2, will allow you to manage your files and invoke
the various CAD tools from a central location. Do not depend on Xilinx ISE for everything; complex
5
testbenches may require manual creation of ModelSim projects, just as you should manage your files
from Windows Explorer.
In the upper left is the “Sources In Project” box, where you can see all the modules and testbenches
that are part of your project, as well as which modules they depend on (or test) and which files that are
in.
In the middle left, you can see the “Processes For Source” box, which will show all of the tools
which can be applied to the currently selected source file. Notice that if you select the testbench, the
Processes For Source box will change to show you ModelSim rather than Synplify Pro and the
Implement Design tools.
2. Select Behavioral Simulation from the Sources for: pull-down (see Figure 4).
6
Figure 4 Change the Sources to Behavioral Simulation
• This will change the Processes For Source box to show a number of steps involving Mod-
elSim.
(a) You may skip this step when working in the lab, as the ModelSim installation ensures it has
already been done.
(b) Select Properties from the popup menu.
(c) In the Other VLOG Command Line Options box type +define+MODELSIM, taking care to
keep the capitalization and the plusses.
(d) In the Simulation Runtime box type 10us (10 µs) to run the simulation for 10 microseconds.
(e) Click OK
5. Having set all the simulation options you can now simply Double-click on the Simulate Behav-
ioral Model process.
6. Examine the Wave Window with care; attempt to discover the function of this circuit.
(a) You can click the magnifying glass buttons to zoom in or out.
• The darkened magnifying glass is especially useful.
7
Figure 5 Defining the MODELSIM Simulation Flag
(b) You can drag the vertical dividers to show more or less of the signal names, value and
waveforms.
(c) The signal values listed in the second column are those at the vertical yellow cursor.
i. Move the cursor by simply clicking in the wave window.
ii. To see the signal values in hexadecimal select one or more signals, right-click and select
Radix → Hexadecimal.
(d) You will probably want to undock and maximize the Wave Window.
(e) If you know what the circuit does at this point, feel free to answer Question 4b on the Checkoff
Sheet.
8
• This will restart the simulation and then run it for 10 µs.
8. Look at the Wave Window again and measure the Clock-to-Output delay in this simulation.
That’s the time from when a rising edge of the clock happens until when the output changes.
Notice that this only applies to cycles where the output actually changes, so look for the cycles
where Enable (Not EnablePin) is 1’b1.
5.3 Synthesis
Having simulated the circuit, you will now synthesize and implement it so that you can play with the
actual circuit on a CaLinx2 board with a Xilinx XCV2000E FPGA. This step will acquaint you with
Synplify Pro, including its ability to generate schematics from your Verilog.
2. In Xilinx ISE select FPGA TOP2 from the Sources In Project box.
• This will cause a long list of implementation steps to appear in the Processes For Source
box.
(a) If there is an X or a ! next to the Synthesize - Synplify Pro step, this means that there
has been an error or warning.
(b) To see the errors and warnings from Synplify Pro, double-click the Synthesize - Synplify
Pro → View Synthesis Report step.
4. To view a schematic of the circuit double-click on the Synthesize - Synplify Pro → Launch
Tools → View RTL Schematic step
(a) This will launch Synplify Pro and automatically open the RTL Schematic.
(b) Navigate through the schematic using the Synplify Navigation Bar (see Figure 6), look inside
the Lab1Circuit and attempt to figure out what it does. You may find it easier if you first
figure out the Lab1Cell.
• You can look inside modules using the “Push/Pop” Navigation Bar buttons.
(c) Answer Question 4b on the Checkoff Sheet.
1. In Xilinx ISE make sure FPGA TOP2 is still selected in the Sources In Project box.
2. To invoke the Xilinx Place And Route tools, double-click on the Implement Design step in
the Processes For Source box.
(a) This will run three sub tools: Translate, Map and PAR.
(b) Ignore any warnings from these steps only in this lab. They will often give warnings that can
be safely ignored.
9
Figure 6 The Synplify RTL Navigation Toolbar
Zoom Full
(Show the whole Sheet)
Previous View Back
Zoom In
(WebBrowser Style) (Previous Sheet, Same Module)
Select Tool
Push/Pop
(Click Module to See Inside)
3. Learning about the size and speed of a design can help optimize it, therefore Question 4c on the
Checkoff Sheet asks you to find four separate design metrics.
(a) Navigate to the Implement Design → Map → Map Report and Double-click to open
it.
(b) This report should provide the information for Questions 4(c)i-4(c)iii on the Checkoff Sheet.
When you have answered those, Close the Map Report.
(c) Navigate to Implement Design → Place & Route → Generate Post Place & Route
Static Timing → Analyze Post Place & Route Static Timing (Timing Analyzer)
and Double-click to open it.
• This will start the Timing Analyzer tool.
(d) Click the Analyze against Auto Generated Design Constraints button on the toolbar
(see Figure 7).
10
(e) Find the Default Period Analysis for net Clock and write down the Minimum Period
as the answer to Question 4(c)iv.
(f) From that information, compute the maximum clock frequency and write that down in answer
to Question 4(c)v.
(g) When you are done, Close the Timing Analyzer; don’t save changes when prompted.
4. Return to Xilinx ISE
11
• Be sure to use the Enable and Out signals as with Question 4a.
(b) You should also be prepared to talk with your TA about what causes this delay, where
the critical path is in this circuit and so forth. If you are not sure of your answer, that’s okay,
you only need to think about it.
8. We’re now going to have you modify the testbench again, this time to try and break it.
(a) Close ModelSim.
(b) Double-Click the Lab1Testbench file in the Sources In Project box to open up that file
in the Xilinx editor.
(c) Change line 37 to ‘define HalfCycle XXX so that the clock cycle is 4ns shorter than the
minimum cycle you wrote down for Question 4(c)iv.
(d) HalfCycle represents 21 of the minimum period. The clock will be high for one HalfCycle and
then low for one HalfCycle.
(e) Rerun the simulation and answer Question 4e on the Checkoff Sheet.
9. Close ModelSim and return to Xilinx ISE.
6. Once the device is configured you can play with the circuit!
(a) Select the input on SW9, the upper dipswitch on the right hand edge of the board.
(b) Press SW1 to reset the circuit.
(c) Press SW2 to enable it.
(d) You will see the input on the leftmost pair of 7-Segment LEDs.
(e) You will see the output on the rightmost pair of 7-Segment LEDs.
6 References
[1] Greg Gibeling, Chris Fletcher, and Lebedev Ilia. EECS150 Documents, Fall 2008, 2008. URL:
http://inst.eecs.berkeley.edu/~cs150/fa08/Documents.htm.
12
Figure 8 Xilinx iMPACT
13
14
7 Lab 1 Checkoff
4. Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (40%)
(a) What is the Clock-to-Output Delay in the functional simulation? . . . . . . . . . . . . . . . ps
(b) What is the function of this circuit?
15