Mudanças entre as edições de "Seguindo o tutorial da ALTERA para o MODELSIM"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 10: Linha 10:
  
 
=PASSO 2 - Functional Simulation with ModelSim=
 
=PASSO 2 - Functional Simulation with ModelSim=
;Creating a Project:
+
==Creating a Project==
 
* To create a project in ModelSim, select '''[File > New > Project...]'''
 
* To create a project in ModelSim, select '''[File > New > Project...]'''
 
:project name = serial_adder,  
 
:project name = serial_adder,  
Linha 21: Linha 21:
 
* click '''[Close]'''
 
* click '''[Close]'''
  
;Compiling a Project:
+
==Compiling a Project==
 
Compilation in ModelSim checks if the project files are correct and creates intermediate data that will be used during simulation.  
 
Compilation in ModelSim checks if the project files are correct and creates intermediate data that will be used during simulation.  
 
* select '''[Compile > Compile All]'''. A green check mark will appear to the right of the serial.vhd file in the Project tab.
 
* select '''[Compile > Compile All]'''. A green check mark will appear to the right of the serial.vhd file in the Project tab.
  
;Preparing Simulation:
+
==Preparing Simulation==
 
* Put Modelsim in simulation mode by selecting '''[Simulate > Start Simulation...]'''
 
* Put Modelsim in simulation mode by selecting '''[Simulate > Start Simulation...]'''
 
* The window to start simulation consists of many tabs. For the purposes of the functional simulation, we only need to look at the '''Design tab'''.
 
* The window to start simulation consists of many tabs. For the purposes of the functional simulation, we only need to look at the '''Design tab'''.
Linha 46: Linha 46:
 
  sim:/serial/my_control/counter
 
  sim:/serial/my_control/counter
 
* There are two ways to run a simulation in ModelSim: manually or by using scripts. In this tutorial, we perform the simulation manually.
 
* There are two ways to run a simulation in ModelSim: manually or by using scripts. In this tutorial, we perform the simulation manually.
;Manual Simulation:
+
 
 +
==Manual Simulation==
 
* To set the '''clock''' period, right-click on the clock signal and select '''Clock...''' from the pop-up menu.  
 
* To set the '''clock''' period, right-click on the clock signal and select '''Clock...''' from the pop-up menu.  
 
: '''[clock period = 100 ps]''', '''[first edge = falling edge]''' and click '''[OK]'''.
 
: '''[clock period = 100 ps]''', '''[first edge = falling edge]''' and click '''[OK]'''.
Linha 71: Linha 72:
 
  run 1000 ps [enter] (or)
 
  run 1000 ps [enter] (or)
 
  run 1000 [enter]
 
  run 1000 [enter]
;Simulation with do files:
+
==Simulation with do file==
 
*Create a do file with all the transcript commands. '''[File > New > Open > Do]''' and '''[File > Save As...]''' ''serial_adder.do''
 
*Create a do file with all the transcript commands. '''[File > New > Open > Do]''' and '''[File > Save As...]''' ''serial_adder.do''
 
  # Preparing Simulation
 
  # Preparing Simulation
Linha 105: Linha 106:
 
  do serial_adder.do
 
  do serial_adder.do
 
* Change the radix of '''A''', '''B''',  '''sum''' and '''counter''' signal to unsigned. There is no tcl command for this.
 
* Change the radix of '''A''', '''B''',  '''sum''' and '''counter''' signal to unsigned. There is no tcl command for this.
 +
 +
==Saving wave format==
  
 
=PASSO 3=
 
=PASSO 3=

Edição das 20h34min de 16 de setembro de 2015

Este tutorial ensina como utilizar o Modelsim para realizar a simulação funcional e também temporal. É requisito para a realização do tutorial o acesso ao software Quartus II e Modelsim ou Modelsim-ALTERA.

PASSO 1

/opt/altera/13.0sp1/modelsim_ase/bin/vsim
  • Para usar o ModelSim 10.1d no LabProg abra um terminal e digite:
/opt/altera/13.0/quartus/modelsim_ase/linux/vsim

PASSO 2 - Functional Simulation with ModelSim

Creating a Project

  • To create a project in ModelSim, select [File > New > Project...]
project name = serial_adder,
project location <= <subdiretorio do usuário>/Using_ModelSim/functional
default library name <= tutorial
copy settings field.
click [OK]
  • Since the file for this tutorial exists, click Add Existing File and select serial.vhd file.
  • Once the file is added to the project, it will appear in the Project tab
  • click [Close]

Compiling a Project

Compilation in ModelSim checks if the project files are correct and creates intermediate data that will be used during simulation.

  • select [Compile > Compile All]. A green check mark will appear to the right of the serial.vhd file in the Project tab.

Preparing Simulation

  • Put Modelsim in simulation mode by selecting [Simulate > Start Simulation...]
  • The window to start simulation consists of many tabs. For the purposes of the functional simulation, we only need to look at the Design tab.
  • In the Design tab you will see a list of libraries and entities you can simulate. In this tutorial, simulate a entity called serial.
  • To select this entity, scroll down and locate the tutorial library and click on the plus (+) sign.
  • You will see three entities available for simulation: FSM, serial, and shift_reg. Select the serial entity (Design Unit(s) = tutorial.serial) and click [OK] to begin simulation.
See the equivalent tcl command in Transcript window:
vsim tutorial.serial
  • Using the sim tab and the Objects window we can select signals for simulation. To add a signal to simulation, rightclick (with shift key) on the signals names in the Objects window and [select Add > To Wave > Selected Signals]. Add signals A, B, resetn, start, clock, sumfrom serial entity,
add wave  \
sim:/serial/A \
sim:/serial/B \
sim:/serial/start \
sim:/serial/resetn \
sim:/serial/clock \
sim:/serial/sum
  • Add signal current_state and counter from my_control component.
add wave  \
sim:/serial/my_control/current_state \
sim:/serial/my_control/counter
  • There are two ways to run a simulation in ModelSim: manually or by using scripts. In this tutorial, we perform the simulation manually.

Manual Simulation

  • To set the clock period, right-click on the clock signal and select Clock... from the pop-up menu.
[clock period = 100 ps], [first edge = falling edge] and click [OK].
  • To reset the circuit, set the resetn signal low by right-clicking on it and selecting the Force... from the pop-up menu.
[Value = 0] and [OK].
  • Set the value of the start signal to 0.
[Value = 0] and [OK].
force -freeze sim:/serial/clock 0 0, 1 {50 ps} -r 100
force -freeze sim:/serial/resetn 0 0
force -freeze sim:/serial/start 0 0
  • To run a simulation for 100 ps, set the value in the text field to 100 ps (default) and press the [Run] button.
run 
  • To test the serial adder we will add numbers A=143 and B=57 => sum=200.
  • To specify a value for A (B) in decimal, right-click on it, and choose Force... from the pop-up menu.
A [Value = 10#143] and [OK].
B [Value = 10#57] and [OK].
  • Set resetn to 1 to stop the circuit from resetting. Then set start to 1 to begin serial addition,
force -freeze sim:/serial/A 10#143 0
force -freeze sim:/serial/B 10#57 0
force -freeze sim:/serial/start 1 0
force -freeze sim:/serial/resetn 1 0
  • Change the radix of A and B signal. Highlight them in the simulation window and select [Format > Radix > Unsigned]. Change the radix of the sum and counter signal to unsigned as well.
  • To complete the operation, the circuit will require 10 clock cycles. run 1000 ps using the Transcript command.
run 1000 ps [enter] (or)
run 1000 [enter]

Simulation with do file

  • Create a do file with all the transcript commands. [File > New > Open > Do] and [File > Save As...] serial_adder.do
# Preparing Simulation
restart
vsim tutorial.serial
# Adding signal to wave
add wave  \
sim:/serial/A \
sim:/serial/B \
sim:/serial/start \
sim:/serial/resetn \
sim:/serial/clock \
sim:/serial/sum
add wave  \
sim:/serial/my_control/current_state \
sim:/serial/my_control/counter
# Defining clock and inicial reset and start value
force -freeze sim:/serial/clock 0 0, 1 {50 ps} -r 100
force -freeze sim:/serial/resetn 0 0
force -freeze sim:/serial/start 0 0
# Simulation of 1 clock periods
run 100
# Defing A = 143 and B = 57
force -freeze sim:/serial/A 10#143 0
force -freeze sim:/serial/B 10#57 0
# Redefining reset and start value
force -freeze sim:/serial/start 1 0
force -freeze sim:/serial/resetn 1 0
# Simulation of 10 clock periods 
run 1000
  • type in transcript command
do serial_adder.do
  • Change the radix of A, B, sum and counter signal to unsigned. There is no tcl command for this.

Saving wave format

PASSO 3