Mudanças entre as edições de "Simulação Funcional usando o ModelSim"
(→AQUI) |
|||
Linha 1: | Linha 1: | ||
− | Essa página descreve os passos a serem realizados para a simulação funcional no ''' | + | 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 [https://wiki.sj.ifsc.edu.br/index.php/Acesso_ao_IFSC-CLOUD_(NUVEM)#Acesso_a_VM_Experimental_Quartus_e_Matlab_em_nuvem_via_Cliente_X2GO: 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. | 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: | ;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]'''. | 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]'''. | ||
Linha 30: | Linha 30: | ||
end architecture; | end architecture; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
;Passo 2: | ;Passo 2: | ||
Linha 43: | Linha 41: | ||
{{fig|2| EDA Tools Settings | EDA_Tools_Settings.png | 400 px |}} | {{fig|2| EDA Tools Settings | EDA_Tools_Settings.png | 400 px |}} | ||
+ | ==Executando o Modelsim== | ||
;Passo 4: | ;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'''. | 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'''. | ||
Linha 49: | Linha 48: | ||
;Passo 5: | ;Passo 5: | ||
− | Para iniciar o simulador, de um duplo-click sobre o nome da ''' | + | 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. |
{{fig|4| Modelsim - tela inicial simulador | Modelsim_inicial_simulador.png | 400 px |}} | {{fig|4| Modelsim - tela inicial simulador | Modelsim_inicial_simulador.png | 400 px |}} | ||
;Passo 6: | ;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 ''' | + | 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. |
{{fig|5| Modelsim - tela inicial wave | Modelsim_inicial_wave.png | 600 px |}} | {{fig|5| Modelsim - tela inicial wave | Modelsim_inicial_wave.png | 600 px |}} | ||
Note que a aba '''[Transcript]''' mostrará o comando equivalente, que poderá ser utilizado depois para gerar um script de automatização da simulação. | 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/* | add wave -position insertpoint sim:/bin2bcd/* | ||
− | |||
;Passo 7: | ;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. | 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. | ||
Linha 67: | Linha 65: | ||
Note que a aba '''[Transcript]''' mostrará o comando equivalente, que poderá ser utilizado depois para gerar um script de automatização da simulação. | 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 | force -freeze sim:/bin2bcd/A 10#13 0 | ||
+ | |||
+ | ;Passo 9: | ||
+ | Execute um passo de simulação. Existem várias formas de executar o '''Run''': | ||
+ | # No menu execute [Simulate > Run > Run 100] | ||
+ | # Clique sobre o ícone [[Arquivo:ModelsimRun.png]] | ||
+ | # Digite na aba de '''Transcript''' | ||
+ | run | ||
+ | Em todos os casos serão simulados (por ''default'') '''100 ns'''. |
Edição das 15h40min de 2 de outubro de 2022
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
- 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
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
- 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
- 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
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
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:
run
Em todos os casos serão simulados (por default) 100 ns.