Massachusetts Institute of Technology Department of
Electrical Engineering and Computer Science
6.111 - Introductory Digital Systems Laboratory
A
Beginner's Guide to WARP
We have two versions of WARP
available on Athena computers, namely 4.3 and 6.2. No versions of WARP are
available on pcs in the lab as WARP is not available for pcs running any
variant of unix. Sunpal[12] computers in the digital lab have only WARP 4.3
available. WARP 4.3 is the default when you access it via an Athena machine and
setup 6.111. If you wish to switch versions then two aliases are provided,
namely setwarp43
and setwarp62. The aliases set the appropriate environment
variables and update your path.
WARP is a program donated to MIT by
Cypress Semiconductor. You are free to use it for any educational or personal
purpose. Should you want to use it in connection with any job (i.e., commercial
activity), you should secure your own donation or pay Cypress their rather
modest fee.
This rather short tutorial will not
tell you all there is to know about WARP. Rather it is aimed at getting you
started by supplying two relatively straightforward VHDL files. One of these
files implements a half adder. The other implements a full adder by wiring two
half adders and adding a two-input or.
What follows is an outline of the
steps to compile a JEDEC file and simulate a design of a full adder. This
design is, of course, simple; but it is done hierarchically to provide some
sample VHDL code which you may later edit to design some other digital
combinational logic.
The basic steps are the same for
both versions of WARP but they may differ in the exact series of mouse clicks.
Select a project Select a device Select a package Add
source files Select a file as the top Compile the files
After that you may wish to inspect
the report file and/or simulate the jedec file which was produced before
programming your device with the jedec file.
The exact mouse clicks are different
but both versions presume that you have sourced the appropriate warp.cshrc
file. You can verify that this has been done by typing
which galaxy
This should tell you the location of
the galaxy program which you will execute. From it you can easily tell which
version of WARP is currently selected.
If you want the other version (and
are on a computer which supports both), then use the alias setwarp43 or
setwarp62 to switch as desired. Remember to use ``setup 6.111'' if you are on
an Athena Sun computer.
First, make a directory and change
to it and start up galaxy.
cd
mkdir beginner
cd beginner
galaxy&
With 4.3, this pops up a window and
tells you the name of a project file that will be created. Click on OK. This
brings up the main window. With 6.2 you just get the main window.
You may use any editor you wish to
edit files. You can use emacs or the galaxy text editor as you wish.
Copy 2 xxx.vhd files from
/mit/6.111/vhdl/warp/examples/beginner/ to your present directory
cp /mit/6.111/vhdl/warp/examples/beginner/*.vhd .
chmod u+w *.vhd
This should give you copies of
halfadd.vhd and fulladd.vhd. The chmod instruction is to allow you to modify
the files. It is not really necessary at first. It is included so that you may
experiment with modifications of your choice. Actually, you should use the chmod
command like this anytime you copy files from the 6.111 directory so that you
can edit the files as desired.
Certainly you can look at these
files, but, at this point, do not change anything!
Since the mouse clicks are somewhat
different, there are two sections depending on the version you are using.
Warp 6.2
Click on File and then New In the
window that pops up, select ``Project[Target - Device]'' and click on OK. This
pops up another window and you should select VHDL and give your project a name,
say, beg. Then click on Next. This then allows you to add some files. Select
both .vhd files and add them and then click next. Yet another window pops up
and you can select a target device. Click on the button just to the left of
CPLD
and then click on c22v10. Select a
package of PALCE22V10-5PC. Anything with a P after the hyphen specifies a dip
package which is what you want for all the small plds. Finally you get to click
``Finish'' and you have defined a project, added the files, and specified a
device and package. Yet another window pops up, and yes, you do want to save
this new project.
Now you have to select a file as the
top level design file. Click on fulladd.vhd and then on Project Set Top. It
looks as if nothing happened, but it did. You can see that it actually set a
top level design by clicking on project again and noticing that a checkbox has
appeared to the left of Set Top.
Finally you are ready to compile the
files. That is easy to do as you just have to click on Compile Project. Galaxy
does a lot of work and prints out WARP done and also that the compilation was
successful. If you have been following this part, then skip the next section.
Warp 4.3
Click on files add all - two files
should show up.
There are three blocks of buttons in
the main galaxy window, edit, compile, and synthesis options.
Use the edit buttons if you choose
to use the galaxy editor; otherwise, use emacs.
There are four buttons for the
synthesis options. For now, at least, leave the top two alone and accept the
defaults. Use the ``Set top" button to tell galaxy which file is the start
of your design. Use the ``Device" button to select a target device.
Click on fulladd.vhd and click on
set top.
Click on device, then in the new
window click on the upper left down arrow and then click on the device C22V10
(or anything else you want to choose). The only Cypress part we have available
is the C374I but the JEDEC files for a 22V10, GAL16V8, GAL20V8, etc. are usable
to program parts we have with the pal program.
Click on OK to get rid of the device
window that popped up and use what you have selected.
Now you are ready to compile. There
are two buttons, ``Selected'' and ``Smart". It is pretty obvious what
``Selected" does. What is smart about ``Smart" is that galaxy will
look into the files and compile anything it has to (has been modified since
last compiled) for synthesizing your design (as indicated by the ``Set
top" button). It will also compile the files in the right order so that
circuits defined in a file are compiled before they are used. If you do use the
``Selected" button, then you must select the files in the right order.
Click on ``Smart" and see what
happens. A galaxy editor window pops up and you get some information as to what
galaxy is doing. Wait until you get the message ``WARP done.".
Try some touches and reclick on the
``Smart" button and see what happens. If you don't understand this, then
skip it for now.
Both Versions
If you feel adventurous, then edit
one or the other of the xxx.vhd files and make some mistakes on purpose and see
what comments you get in the editor window.
It is helpful to know how to quit
the galaxy editor. Of course, you could hide it behind another window before or
after iconifying it but if you quit the galaxy editor then the window really
will disappear! Click on ``File" and then ``Close" to close the
editor window. It also will go away when you quit galaxy.
What have you done?
Look at the files that have been
produced. There should be exactly one xxx.jed file and it can be used to
program a 22v10 (or your selected device) via the universal programmer.
Look at the equations in
fulladd.rpt. Sometimes one gets timing information. For example, some timing
information is in fulladd.rpt for the device C374I.
You can program your device at this
time with the JEDEC file you produced. Optionally, you can simulate your design
as embodied in the JEDEC file to see if the logic is what you intended.
If you have been using warp 6.2 then
you must use the alias setwarp43 before simulation with nova. If you later want to use warp 6.2, then
use the alias setwarp62.
You can simulate the JEDEC file with
the Nova simulator. You can run this from a shell by simply typing nova, In
warp 4.3 you can also click on Tools and then on Nova. Either way, this brings
up a simulation window. In it, click on File, then Open and select the JEDEC
file, fulladd.jed, by clicking on it. Click on OK to accept your choices.
The file is read in and some signals
appear. These are the signals defined in the entity in fulladd.vhd. You can
modify which signals are shown with the Views menu, but skip this for now.
Next you will create some waveforms
for the inputs ina, inb, and inc.
Click on ``ina" and then click
on ``Edit" and then ``Clock". Accept the defaults by clicking on
``OK".
Click on ``inb" and then click
on ``Edit" and then ``Clock". Double both the clock period to 20 and
the clock high time to 10. Click on ``OK" to accept this clock.
Click on ``inc" and then click
on ``Edit" and then ``Clock". Double both the clock period to 40 and
the clock high time to 20. Click on "OK" to accept this clock.
Finally, execute the simulation by
clicking on "Simulate" and then "Execute". Verify that the
simulation results are what one wanted.
You can click on the
"Views" button and then the "Zoom In (2X)" button to avoid
squinting at the waveforms.
When you are done, close the
simulator window and quit galaxy (hint: read again how you quit the editor).