Simulação Funcional usando o ModelSim

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Essa página descreve os passos a serem realizados para a simulação funcional no Modelsim de um circuito implementado no Quartus Prime 20.1.1, disponibilizados na nuvem do IFSC.

Antes de acessar o simulador, o circuito deve estar descrito em VHDL utilizando o Quartus Prime, e o este deve ser configurado corretamente.

Configurando o Quartus Prime

Passo 1

Digite o seguinte código VHDL ou seu próprio código e após salvar o projeto faça a Analysis & Synthesis [Crtl+k].

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity bin2bcd is
	port (
		A      : in  std_logic_vector (6 downto 0);
		sd, su : out std_logic_vector (3 downto 0)
	);
end entity;

architecture ifsc_v1 of bin2bcd is
	signal A_uns          : unsigned (6 downto 0);
	signal sd_uns, su_uns : unsigned (6 downto 0);

begin
	sd     <= std_logic_vector(resize(sd_uns, 4));
	su     <= std_logic_vector(resize(su_uns, 4));
	sd_uns <= A_uns/10;
	su_uns <= A_uns rem 10;
	A_uns  <= unsigned(A);
end architecture;
Passo 2

Verifique se o caminho para o ModelSim está correto [Tools > Options > General > EDA Tools Options]. O campo Modelsim-Altera deve estar com

/opt/intelFPGA/20.1/modelsim_ae/linuxaloem

Figura 1 - EDA Tools Options
EDA Tools Settings.png
Fonte: Elaborado pelo autor.
Passo 3

Verifique se o formato do arquivo de simulação no ModelSim está correto [Assigments > Settings.. > General > EDA Tools Settings ]. O campo Formats da linha Simulation deve estar com

VHDL

Figura 2 - EDA Tools Settings
EDA Tools Settings.png
Fonte: Elaborado pelo autor.

Executando o Modelsim

Passo 4

Execute o Modelsim a partir da IDE do Quartus, [Tools > Run Simulation Tool > RTL Simulation]. O Modelsim deverá abrir uma tela semelhante a mostrada abaixo. No painel Libray, clique na caixa [-] na frente da pasta [work] para mostrar a entity e a architecture.


Figura 3 - Modelsim - tela entrada
Modelsim entrada.png
Fonte: Elaborado pelo autor.


Passo 5

Para iniciar o simulador, de um duplo-click sobre o nome da architecture. Abrirá uma nova aba [sim], e o painel de Objects irá mostrar os sinais de entrada, saída e internos do circuito. A tela deverá ficar semelhante a mostrada abaixo. Observe as colunas atentamente.


Figura 4 - Modelsim - tela inicial simulador
Modelsim inicial simulador.png
Fonte: Elaborado pelo autor.
Passo 6

Para inserir os sinais no painel Wave, na aba [sim] de um clique com o botão direito do mouse sobre o nome da Instance e clique em [Add Wave]. Abrirá um novo painel [Wave]. Todos os sinais de entrada e saída (Portas da Entity) serão inseridos no Wave, assim como os sinais internos (declarados como Signal). A tela deverá ficar semelhante a mostrada abaixo.


Figura 5 - Modelsim - tela inicial wave
Modelsim inicial wave.png
Fonte: Elaborado pelo autor.

Note que a aba [Transcript] mostrará o comando equivalente, que poderá ser utilizado depois para gerar um script de automatização da simulação.

add wave -position insertpoint sim:/bin2bcd/*
Passo 7

Modifique o forma de interpretação das informações mostrados no Wave, selecionando os sinais desejados e clicando com o botão direito do mouse sobre a seleção e clique em [Radix > Unsigned]. Com isso os bits serão interpretados com números inteiros sem sinal.

Passo 8

Defina o valor inicial dos estímulos. No exemplo temos apenas uma entrada, portanto


Figura 6 - Tela do Wave do Modelsim - comando force
ModelsimWave1.png
Fonte: Elaborado pelo autor.

Note que a aba [Transcript] mostrará o comando equivalente, que poderá ser utilizado depois para gerar um script de automatização da simulação.

force -freeze sim:/bin2bcd/A 10#13 0
Passo 9

Execute um passo de simulação. Existem várias formas de executar o Run:

  1. No menu execute [Simulate > Run > Run 100]
  2. Clique sobre o ícone ModelsimRun.png
  3. Digite na aba de Transcript
run
  • Em todos os casos serão simulados (por default) 100 ns.
  • Se desejar simular um tempo maior, pode repetir várias vezes o comando ou digitar o tempo de simulação após o comando run.
run 13 ps
run 130 ns
  • As subunidades de tempo aceitas no Modelsim são:
fs;
ps = 1000 fs;
ns = 1000 ps;
us = 1000 ns; 
ms = 1000 us; 
sec = 1000 ms; 
min = 60 sec; 
hr = 60 min;