0% found this document useful (0 votes)
3 views

Modelsim Tutorial

This document is a guide for using Mentor Graphic’s QuestaSim / ModelSim, detailing the steps for compiling and simulating designs in both classic and project modes. It includes instructions for setting up the working directory, creating libraries, compiling designs and testbenches, running simulations, and managing waveforms. Additionally, it provides optional sections on setting simulator resolution and organizing project directories.

Uploaded by

24mv32
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Modelsim Tutorial

This document is a guide for using Mentor Graphic’s QuestaSim / ModelSim, detailing the steps for compiling and simulating designs in both classic and project modes. It includes instructions for setting up the working directory, creating libraries, compiling designs and testbenches, running simulations, and managing waveforms. Additionally, it provides optional sections on setting simulator resolution and organizing project directories.

Uploaded by

24mv32
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

Getting Started Using Mentor Graphic’s QuestaSim / ModelSim

There are two modes in which to compile designs in QuestaSim / ModelSim, classic/traditional
mode and project mode. This guide will give you a short tutorial in using classic/traditional
mode. From the perspective of this class, ModelSim's GUI is a subset of QuestaSim's.

This guide is broken down into the following sections


1. Part 1: Compiling a Design
2. Part 2: Simulating a Design
3. Transitioning to the Next Lab
4. Setting Simulator Resolution
5. Directory Structures and Running Scripts

1 Part 1: Compiling a Design

1.1 Code Your Design


Code your design per the lab directions.

1.2 Start QuestaSim


Start QuestaSim by double clicking on the QuestaSim Icon (windows) or by typing "vsim &" in
the shell (UNIX). If you window does not look as below, select the menu command "Layout >
Reset". Note the workspace, transcript and source windows can be moved.

Menu
Buttons

Other
Windows

Command /
Library Window Transcript Window

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 1
Using ModelSim

1.3 Set the Working Directory


Use the QuestaSim menu command "File > Change Directory" to set the working directory*.
For lab 1, browse to the directory "VhdlIntro/Chipper/vhdl_src" as shown in the following dialog
box.

Note if a simulation is active, you cannot run change directory. First you must end the simulation
with the QuestaSim menu pull down "Simulate > End Simulation".

1.4 Create a Work library


A library is a container of compiled VHDL designs. You can think of a library as a formal
storage location for object files (similar to "C" language *.o files).

Before compiling your design, you must create the work library. Use the QuestaSim menu
command "File > New > Library" to create the work library. The library pop-up window should
look like the following when you are done.

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 2
Using ModelSim

1.5 Compile a Design


In order to run a simulation, all files (design and testbench) that are to be used in the simulation
must be compiled. Use the QuestaSim menu command "Compile > Compile" to compile a
design (Inc.vhd for the first part of lab 1) into the work library. This causes the following
pop-up window to appear. In the pop-up window select Inc.vhd and press the compile button.

After compiling your design successfully (check transcript window for error messages), close the
pop-up dialog box by pressing "Done".

The key to understanding error messages is to realize that the message is produced after the
compiler gets lost. In the example below (note this is not your lab design), the entity Adder8 has
a ‘;’ after the last port declaration. Most often this means that the error message will be
generated on line 43. This is common, so make sure when you get an error message to read the
specific error message and realize the root cause may be something done on the previous line that
causes the compiler to "detect" the error on the current line.
39 -- Not the lab design
39 entity Adder8 is
40 port (
41 A, B : In std_logic_vector(7 downto 0);
42 Y : Out std_logic_vector(7 downto 0); -- error
43 );
44 end Adder8 ;

Also note that when you get an error message, you can double click on it and the QuestaSim
editor will take you to the line in error.

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 3
Using ModelSim

2 Part 2: Simulating a Design

2.1 Code the Testbench


Code the testbench per lab directions.

2.2 Compile the Testbench


Compile IncTb.vhd using the steps from "Compile a Design".

2.3 Load the Testbench = Start the Simulation


Go to the library tab of the workspace, press the plus sign in front of the work library, and right
click on your testbench (inctb) and select simulate. Do not double click on your testbench as this
starts an optimized simulation. Do not load your design (Inc), instead, it is loaded as a result of
the testbench being loaded.

When the simulation loads, the simulation window will overlay the library window as shown
below. You can switch back and forth between the two windows using the "sim" and "library"
tabs. Close the Objects and Process windows by pressing on the "X" in the right corner.

Press X
to close

Sim and
library
Tabs

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 4
Using ModelSim

2.4 Display Waveforms


Display the waveforms after loading the testbench and before running the simulation. To display
waveforms, select the design under test (U_Inc) in the "sim" tab, right-click the mouse, and select
"Add > To Wave >All items in region".

Design Under Test Specify default run length here Press here to undock wave window

Alternately, bring up a wave window by selecting "View > Wave" in the QuestaSim menu.
Select a design (such as U_Inc) in the "sim" tab of the QuestaSim workspace and click and drag
the design to the wave window.

2.5 Run the Simulation


For lab 1, you will be running your design for 720 ns. To do this, change the default run length
(see picture above) to 720 ns (type it in the box). Now select "Simulate > Run > Run 100*".
On some revisions, the 100 will be replaced by the actual run time.

Note that it is quite normal to see warning messages at the start of the simulation. Most
messages that occur before a design is initialized and/or reset can be ignored. For example, the
following warning results from the A input being initialized to "UUUUUUUU" at time 0:

# ** Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic


operand, the result will be 'X'(es)!
# Time: 0 ns Iteration: 0 Instance: /inctb/u_inc

Note that if you forgot to display your waveforms before running the simulation or find a bug
during simulation, you will need to re-run the simulation. See the next section for details.

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 5
Using ModelSim

2.6 Recompiling and Rerunning a Simulation


VHDL designs are required to be compiled bottom-up. If you find and fix a bug in your design,
you will need to re-compile both the design (Inc.vhd) and the testbench (IncTb.vhd).

To re-run a simulation, instead of starting a simulation, use the restart command. Restarting a
simulation sets the time to 0, reloads any recompiled designs, and maintains the current context
(such as signals in the wave window). Restart a simulation by using QuestaSim menu item
"Simulate > Restart". This will cause the following pop-up to appear. Press the Restart button.

At this point you can set breakpoints, display additional signals, and run the simulation (using the
Run command described previously).

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 6
Using ModelSim

2.7 Using the Waveform Window


All commands described in this section are done with the waveform window undocked. To
undock the wave window press on the undock button (see diagram in the Displaying
Waveforms section – it is the box with an arrow pointing out of it). The waveform window
menus should now look as below (you may need to stretch it some). Other changes made
to the wave window will be explained in this section. Note the same menu commands are
available when the wave window is docked, however, they are more difficult to find.

2.7.1 Displaying Waveforms after Running a Simulation


If you display waveforms after running a simulation and want to see the waveforms from
the beginning of time, you will need to restart your design (using the restart command) and
rerun the simulation.

2.7.2 Zooming
When in the wave portion of the waveform window, pressing the right mouse button allows
the following zoom options: In 2x, Out 2x, Full, Last, and Range. In addition, zooming to
an area can be done by clicking the middle mouse button and then dragging in a horizontal
direction.

2.7.3 Radix
The radix of the selected signal (or signals) can be specified using one of the following
waveform menu commands.
Format > Radix > Hexadecimal
Format > Radix > Unsigned (decimal, unsigned value)
Format > Radix > Decimal (signed, 2's complement value)

Alternately you can access a similar menu with the right mouse button when selecting the
signal(s).

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 7
Using ModelSim

2.7.4 Selecting Signals


Select one signal by clicking the left mouse button on its name.
To select multiple signals,
1. Select one signal and then press shift-left mouse button to select a range
2. Select one signal and then add more signals by pressing ctrl-left mouse button.

2.7.5 Moving Signals


Select signal(s) and drag to new location in wave window.

2.7.6 Using Cursors


The active cursor is shown in bold. To make a cursor the active cursor, click on it with the
left mouse button. To add cursors, use the "Add > Cursor" waveform menu command.
When more than one cursor is displayed, measurements can be made between adjacent
cursors.

To accurately place a cursor, use the find next change symbols (shown below) to move the
active cursor to the next change of the selected signal. Alternately dragging a cursor over
an edge of the selected signal will cause the cursor to try to snap to the edge.

Find next change to right


Find next change to left

2.7.7 [Optional] Saving and Restoring Waveforms


To save waveforms, use the following waveform window menu:
File > Save Format . . .

To Load (Restore) waveforms, use the following waveform window menu:


File > Load Format . . .

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 8
Using ModelSim

2.7.8 [Optional] Selecting Individual Signals to Display


Add the objects window to the QuestaSim GUI using the menu command, "View >
Objects". The window will now look as shown below. To display an individual signal in a
given design, select the design in the sim window (such as u_inc shown), right click on a
signal in the objects window and specify the "Add to Wave > Selected Signals". Note the
new waveform for Z in the docked wave window.

3 Transitioning to the Next Lab


There is no need to quit the simulator to go to the next lab. You can simply compile more
designs into the library and then run another simulation.

Note that if the next lab is in a different directory that you need to end the simulation with the
QuestaSim menu command "Simulate > End Simulation", before you can use the
change directory menu command "File > Change Directory".

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 9
Using ModelSim

4 [Optional] Setting Simulator Time Resolution


Simulator resolution is specified when loading a design for simulation. To set the simulator
resolution, select "Simulate > Start Simulation" from the QuestaSim menu. The resulting pop-up
works just like the workspace library tab, except it also allows the simulation resolution to be
specified as shown below.

Simulation Resolution
Note this is not the default run length.

Use this as directed in lab 2 optional


steps only.

5 Directory Structures & Running Scripts


Currently we are running the simulator out of the VHDL source directory (vhdl_src). If you
look in this directory, you will find that the simulator has added a few files to it (modelsim.ini,
vsim.wlf, and the directory work). An alternate way to organize a project is to have a separate
directory for source files and separate directories for the simulator and synthesis tools. The
following directory structure is being used for these labs:

Chipper

vhdl_src sim_mti fpga_xilinx

Exit out of the simulator. In the directory vhdl_src, keep all of your VHDL (*.vhd) files and
delete the rest. Delete the subdirectory work.

Start the simulator. Use "File > Change Directory" to go to the directory
VhdlIntro/Chipper/sim_mti. Execute the script (for Lab6 it is: TbLedFlasher_lab6.tcl) using
"Tools > TCL > Execute Macro …".

Copyright © 1999 - 2013 by SynthWorks Design Inc. All rights reserved Rev 1306 QuestaSim - 10

You might also like