introdução · pdf filearquitetura e organização de computadores 1...

Post on 15-Feb-2018

213 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1Arquitetura e Organização de Computadores

Prof. Otávio Gomesotavio.gomes@ifmg.edu.br

Prof. Mário Luiz Rodriguesmario.luiz@ifmg.edu.br

Introdução VHDLParte 4 - Testbench

2Arquitetura e Organização de Computadores

library IEEE;use IEEE.std_logic_1164.all;

entity portae is port( a: in STD_LOGIC; b: in STD_LOGIC; s: out STD_LOGIC);end portae;

architecture portae_arch of portae isbegin

s <= a and b;end portae_arch;

3Arquitetura e Organização de Computadores

4Arquitetura e Organização de Computadores

library IEEE;use IEEE.std_logic_1164.all;

entity portaou is port ( a: in STD_LOGIC; b: in STD_LOGIC; s: out STD_LOGIC );end portaou;

architecture portaou_arch of portaou isbegin

s <= a or b;end portaou_arch;

5Arquitetura e Organização de Computadores

6Arquitetura e Organização de Computadores

library IEEE;use IEEE.std_logic_1164.all;

entity inversor is port ( a: in STD_LOGIC; s: out STD_LOGIC );end inversor;

architecture inversor_arch of inversor isbegin

s <= not a;end inversor_arch;

7Arquitetura e Organização de Computadores

8Arquitetura e Organização de Computadores

library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_arith.all;

entity somador4bits isport (

dadoA : in unsigned (3 downto 0);dadoB : in unsigned (3 downto 0);result: out unsigned (4 downto 0)

);

end somador4bits;

architecture arch_soma of somador4bits isbegin

result(4 downto 0) <= ('0' & dadoA(3 downto 0)) + ('0' & dadoB(3 downto 0));

end arch_soma ;

9Arquitetura e Organização de Computadores

10Arquitetura e Organização de Computadores

library IEEE;use IEEE.std_logic_1164.all;

entity mux21_conc is port ( a: in bit; b: in bit; s: in bit; z: out bit );end mux21_conc ;

architecture mux21_arch of mux21_conc issignal aok, bok, ns : bit;

beginaok <= a and s;bok <= b and ns;ns <= not(s);z <= aok or bok;

end mux21_arch;

11Arquitetura e Organização de Computadores

12Arquitetura e Organização de Computadores

library IEEE;use IEEE.std_logic_1164.all;

entity mux21_estrut is port ( a: in STD_LOGIC; b: in STD_LOGIC; sel: in STD_LOGIC; saida: out STD_LOGIC );end mux21_estrut;

architecture mux21_arch of mux21_estrut issignal aok,bok,ns : STD_LOGIC;component portae port(a, b : in STD_LOGIC; s : out STD_LOGIC);end component;component portaou port(a,b : in STD_LOGIC; s : out STD_LOGIC);end component;component inversor port(a : in STD_LOGIC; s : out STD_LOGIC);end component;

begin u1: portae port map (a,sel,aok); u2: inversor port map(sel,ns); u3: portae port map (ns,b,bok); u4: portaou port map (aok,bok,saida);end mux21_arch;

13Arquitetura e Organização de Computadores

Descrição de Circuitos com VHDL Testbench

14Arquitetura e Organização de Computadores

Teste de código VHDL

O código VHDL permite utilizar vários comandos e construções, porém nem todos estes comando ou construções são suportadas pelas ferramentas de síntese.

Por exemplo, software Quartus da ALTERA é uma ferramenta utilizada para sintetizar o código VHDL e programar dispositivos PLD’s e FPGA’s, mas não suporta algumas opções de utilização dos comandos WAIT e AFTER.

15Arquitetura e Organização de Computadores

Teste de código VHDL

Comando WAIT

O comando Wait possui várias opções de utilização como: wait until, wait on e wait for. As duas primeiras necessitam de uma lista de sensibilidade assim como um processo.

WAIT ON lista de sensibilidade;

WAIT UNTIL expressão booleana;

WAIT ON lista de sensibilidade UNTIL condição booleana;

Não suportadas por algumas ferramentas de síntese.

16Arquitetura e Organização de Computadores

Teste de código VHDL

Onde é utilizada esta construção?

Softwares como Modelsim são programas que testam códigos VHDL sem se preocupar se o código é sintetizável ou não. Portanto todos os comandos utilizados na descrição do código VHDL são aceitos por este software.

17Arquitetura e Organização de Computadores

Testbench

Testbench: recurso em VHDL que permite que um circuito sob teste (Unit Under Test – UUT) seja submetido a sinais de estímulo e tenha a sua funcionalidade verificada.

18Arquitetura e Organização de Computadores

Testbench

• Um projeto fica incompleto se não for verificado. Uma das formas de se testar a descrição VHDL é pelo uso de testbench.

• Testbench é um ambiente onde o projeto, chamado de design ou Unit Under Test (UUT) é verificada através da aplicação de sinais ou estímulos, e da monitoração de suas respostas.

• Em outras palavras, um testbench substitui o ambiente de projeto, de forma que o comportamento do projeto possa ser observado e analisado.

19Arquitetura e Organização de Computadores

Testbench

Uma forma de testar o projeto:

– Na sua forma mais simples, contém um processo gerador

de teste e uma instância do projeto

– O testbench não contém portas de entrada/saída, é um

sistema “fechado”

20Arquitetura e Organização de Computadores

Consiste de:

Uma chamada do componente sob teste (UUT – Unit Under Test) ;

Geradores de estímulos;Os estímulos são um conjunto de sinais declarados internamente na

arquitetura do testbench e passada aos ports da UUT por sua chamada. Os estímulos são definidos como formas de onda em um ou mais processos comportamentais.

Ferramentas para monitoramento das respostas do circuito aos estímulos aplicados.

A

B

Y

Z

Unidade sob Teste Y

Z

A

B

Gerador de Estimulos

TESTBENCH

21Arquitetura e Organização de Computadores

TestbenchOs comandos que descrevem os estímulos não são sintetizáveis.

Ex:

22Arquitetura e Organização de Computadores

Formato de um Testbench

• O test bench é como outra especificação VHDL. Consiste de uma entity e de uma architecture.

• Uma importante diferença é que a entity de uma descrição de testbench não tem ports. Isto se deve ao fato que a descrição testbench não representa circuito real que precisa se comunicar com o ambiente e, portanto não tem entradas ou saídas.

• Todos os valores para os ports de entrada da UUT são especificados no testbench como estímulo.

23Arquitetura e Organização de Computadores

Formato de um Testbench

• As saídas são observadas pelo simulador e podem ser armazenadas em um arquivo. O arquivo a ser testado não precisa de modificações ou comandos adicionais. Assim, qualquer especificação VHDL pode ser testada.

• A UUT deve ser chamada na arquitetura da test bench. Isto pode ser feito da mesma forma que qualquer especificação estrutural, através de componente. Aos ports da UUT devem ser atribuídos os estímulos.

24Arquitetura e Organização de Computadores

Formato de um Testbench

• Como os processos e a chamada de componentes são concorrentes, não faz diferença se a UUT ou o estímulo for definido primeiro.

• A parte principal de um testbench é o conjunto de estímulos. Como o testbench não se comunica com o ambiente por sinais, todos os estímulos devem ser declarados como sinais no cabeçalho da architecture do testbench.

• Os estímulos podem ser especificados tanto como declarações concorrentes (mudanças nos sinais especificados como formas de onda), ou como processo que contenha declarações de sinais separados por comandos wait e for, introduzindo atrasos entre declarações subseqüentes.

25Arquitetura e Organização de Computadores

Formato de um Testbench

26Arquitetura e Organização de Computadores

Formato de um Testbench

27Arquitetura e Organização de Computadores

Formato de um Testbench

28Arquitetura e Organização de Computadores

Formato de um Testbench – Uso de Constantes

29Arquitetura e Organização de Computadores

Formato de um Testbench – Uso de Constantes

30Arquitetura e Organização de Computadores

Formato de um Testbench – Uso de Constantes

31Arquitetura e Organização de Computadores

Exemplo de teste para um flip-flop D utilizando constantesObjetivo: Descrição de sinais que podem ser adaptados para simulações

em várias freqüências, alterando apenas o valor de uma constante – Periodo de clock alterado para 500 ns - 4.

Formato de um Testbench – Uso de Constantes

32Arquitetura e Organização de Computadores

Testbench

• Ao final de uma verificação tem-se o resultado da simulação e/ou uma listagem de resultados na forma de relatório.

• Isto é obtido de várias formas; usando aplicativos dos simuladores, como nos exemplos anteriores(listagem das variações dos sinais ao longo do tempo ou telas gráficas),

• Ou usando o comando report que apresenta na tela do software de simulação ou em um arquivo os resultados de toda a simulação.

• Esta ultima forma é fácil de usar, e é empregada para mostrar uma mensagem quando há erros.

•Se esta opção é usada e não há mensagem durante a simulação, então se presume que o UUT tenha funcionado como esperado.

33Arquitetura e Organização de Computadores

Testbench

• Em conjunto com o comando report utiliza-se a declaração assert que verifica uma condição Booleana, que define uma mensagem a ser apresentada quando a condição é falsa

• O comando assert é por natureza seqüencial e portando usado em um processo.

• Deve-se usar o par assert-report para cada novo valor esperado do UUT e deve haver uma respectiva condição no conjunto.

34Arquitetura e Organização de Computadores

Testbench

• É esperado na mensagem que seja especificado no que ocorreu, quando ocorreu e os valores das entradas.

• Lembre-se que os novos valores só são atribuídos quando o processo é suspenso. Não se deve esperar valores nas saídas imediatamente após a sua atribuição.

• O comando report consiste da declaração assert que verifica uma condição Booleana, da declaração report que define uma mensagem a ser apresentada quando a condição é falsa, e da declaração severity que informa ao simulador quão severa foi a condição de erro encontrada, variando desde um alerta até uma falha geral no sistema.

35Arquitetura e Organização de Computadores

Testbench

Esta ultima forma é fácil de usar, e é empregada para mostrar uma mensagem quando há erros. Se esta opção é usada e não há mensagem durante a simulação, então se presume que a UUT tenha funcionado como esperado.

36Arquitetura e Organização de Computadores

Modelsim - Altera

37Arquitetura e Organização de Computadores

Quartus - ModelsimInstruções para rodar inserindo Formas de

Onda a partir do software Quartus

38Arquitetura e Organização de Computadores

Após feito a descrição no Quartus e salvado corretamente, abra o programa

Modelsim – Altera.

39Arquitetura e Organização de Computadores

Na barra de ferramentas clique em COMPILE e Na barra de ferramentas clique em COMPILE e em seguida em COMPILE OPTIONSem seguida em COMPILE OPTIONS

Nesta janela você vai configurar como

deseja que o Modelsim compile

sua descrição.

40Arquitetura e Organização de Computadores

Depois de configurado a simulação clique novamente Depois de configurado a simulação clique novamente em COMPILE e em seguida em COMPILE... em COMPILE e em seguida em COMPILE...

Nesta janela você vai selecionar a

descrição que deseja simular. No campo

EXAMINAR selecione a pasta e escolha o

arquivo (.vhdl) e clique em COMPILE.

41Arquitetura e Organização de Computadores

Observe que na janela Observe que na janela TRANSCRIPTRANSCRIP vai vai aparecer mensagens mostrando que a entidade aparecer mensagens mostrando que a entidade e a arquitetura foi carregada e compilada.e a arquitetura foi carregada e compilada.

Ex.:Ex.:

# -- Loading package standard# -- Loading package standard

# -- Compiling entity wait_a# -- Compiling entity wait_a

# -- Compiling architecture teste of wait_a# -- Compiling architecture teste of wait_a

Após isso clique em DONE.Após isso clique em DONE.

42Arquitetura e Organização de Computadores

Na janela Na janela WORKSPACEWORKSPACE clique em WORK. clique em WORK.

Veja que o arquivo está foi compilado para a pasta WORK do Veja que o arquivo está foi compilado para a pasta WORK do modelsim.modelsim.

Clicando no sinal + ao lado da entidade a que irá ser submetida a simulação verá que dentro da

entidade wait_a existe uma arquitetura chamada teste onde está estruturado nosso código.

Dê duplo clique sobre a entidade wait_a.

43Arquitetura e Organização de Computadores

Veja que na janela WORKSPACE foi listado

os processos que existem na entidade e

na janela OBJECTS foi listada as entradas e saídas da entidade

wait_a.

44Arquitetura e Organização de Computadores

Na barra de ferramentas no menu View habilite a janela Wave para fazermos a simulação por forma de onda.

45Arquitetura e Organização de Computadores

Selecione e arraste as entradas e saídas da janela OBJECTS para a janela WAVE.

46Arquitetura e Organização de Computadores

Na barra de ferramentas no menu Simulate escolha a opção Runtime Options...

Aqui você pode definir como quer que os sinais sejam exibidos, tempo padrão de simulação, número de iterações...

47Arquitetura e Organização de Computadores

Na barra de ferramentas no menu Simulate e submenu Run existem seis opções de simulação.

Simula até 1us (tempo definido em Runtime Opitions)

Simula até completar as 5000 iterações (definido em

Runtime Opitions)

48Arquitetura e Organização de Computadores

49Arquitetura e Organização de Computadores

50Arquitetura e Organização de Computadores

51Arquitetura e Organização de Computadores

Para alterar a forma de visualizar o sinal, clique com o botão direito do mouse sobre o sinal, selecione propriedades.

Em Radix selecione como deseja ver o sinal.

Altere as saídas xa e xb para unsigned.

52Arquitetura e Organização de Computadores

Este software simula o código VHDL sem se Este software simula o código VHDL sem se importar se ele é sintetizavel ou não. Então é feito importar se ele é sintetizavel ou não. Então é feito no Quartus uma descrição para testar outra no Quartus uma descrição para testar outra descrição. descrição.

Como assim?Como assim?

As vezes é muito demorado ficar gerando formas de As vezes é muito demorado ficar gerando formas de onda para testar uma descrição, ou então um onda para testar uma descrição, ou então um mesmo conjunto de forma de onda é utilizado para mesmo conjunto de forma de onda é utilizado para testar algumas variações da descrição que possui testar algumas variações da descrição que possui as mesmas entradas e saídas. Então para isso é as mesmas entradas e saídas. Então para isso é utilizado uma descrição para fazer o teste de outra utilizado uma descrição para fazer o teste de outra descrição.descrição.

53Arquitetura e Organização de Computadores

Quartus - ModelsimInstruções para rodar um TestBench

a partir do software Quartus

54Arquitetura e Organização de Computadores

library IEEE;use IEEE.std_logic_1164.all;

entity ffdr is port ( d: in STD_LOGIC; clk: in STD_LOGIC; rst: in STD_LOGIC; saida: out STD_LOGIC );end ffdr;

architecture ffdr_arch of ffdr issignal q : STD_LOGIC;

begin ffdr: process (d,clk,rst) begin if rst='1' then

q <= '0'; elsif rising_edge(clk) then

q <= d; end if; end process ffdr; saida <= q; end ffdr_arch;

55Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo

56Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo

57Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo

1

2

3

4

58Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo – Carregando um arquivo existente

59Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo – Carregando um arquivo existente

60Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo – Carregando um arquivo existente

61Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo – Carregando um arquivo existente

62Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo - Escolha da família (Cyclone II)

e do modelo (EP2C20F484C7) da FPGA

1

2

3

63Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo

64Arquitetura e Organização de Computadores

Ferramenta Altera QuartusCriando um projeto novo

65Arquitetura e Organização de Computadores

Ferramenta Altera QuartusProjeto novo criado com sucesso

66Arquitetura e Organização de Computadores

67Arquitetura e Organização de Computadores

68Arquitetura e Organização de Computadores

Test bench

Verificar o arquivo fornecido Test bench.OBS: Não adicionar o arquivo ao projeto. O software QUARTUS não sintetiza as descrições deste arquivo. Será utilizado o software MODELSIM (Mentor Graphics) para simulação e analise.

69Arquitetura e Organização de Computadores

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

ENTITY vetor_teste ISEND vetor_teste;

ARCHITECTURE sinais OF vetor_teste IS

SIGNAL dado : STD_LOGIC;SIGNAL clk : STD_LOGIC;SIGNAL rst : STD_LOGIC;SIGNAL sinal_saida : STD_LOGIC;

COMPONENT ffdrport (

d: in STD_LOGIC;clk: in STD_LOGIC;rst: in STD_LOGIC;saida: out STD_LOGIC);

END COMPONENT;(...)

70Arquitetura e Organização de Computadores

BEGINUUT: ffdr PORT MAP( d => dado,

clk => clk, rst => rst, saida => sinal_saida);

signal_clk: PROCESSBEGIN

clk<= '0'; WAIT FOR 50 ns;clk<= '1'; WAIT FOR 50 ns;

END PROCESS;

signal_rst: PROCESSBEGIN

rst<= '1'; WAIT FOR 100 ns;rst<= '0'; WAIT FOR 10000 ns;

END PROCESS;

signal_dado: PROCESSBEGIN

dado<= '0'; WAIT FOR 200 ns;dado<= '1'; WAIT FOR 200 ns;

END PROCESS;END sinais;

71Arquitetura e Organização de Computadores

Ir no menu Assignments / Settings e editar o campo Simulation, clicando sobre o botão TestBenches e em seguida clicar em New.

72Arquitetura e Organização de Computadores

Ir no menu Assignments / Settings e editar o campo Simulation, clicando sobre o botão TestBenches e em seguida clicar em New.

73Arquitetura e Organização de Computadores

Ir no menu Assignments / Settings e editar o campo Simulation, clicando sobre o botão TestBenches e em seguida clicar em New.

74Arquitetura e Organização de Computadores

Preencher os campos Test bench Name, Top level module in test bench, e o nome da instância criada no arquivo de test bench, a seguir, selecionar o arquivo de testbench e clicar em add.

75Arquitetura e Organização de Computadores

76Arquitetura e Organização de Computadores

77Arquitetura e Organização de Computadores

No Menu Tools / Run Simulation Tool / RTL Simulation, e a seguir o ModelSim irá abrir e executar a simulação.

Inicio da simulação

Simulação Funcional

Simulação considerando atrasos das células e roteamento

78Arquitetura e Organização de Computadores

Abaixo são mostrados os resultados obtidos por este test bench apresentados no ModelSim.

Simulação Funcional

79Arquitetura e Organização de Computadores

Abaixo são mostrados os resultados obtidos por este test bench apresentados no ModelSim.

Simulação Funcional

top related