Usando o Simulador Active-HDL

Propaganda
LABORG
Parte 1 – Introdução à
Simulação em VHDL
Ney Laert Vilar Calazans
24/agosto/2009
Introdução
• VHDL: Uma linguagem para descrever sistemas digitais
• Outras linguagens de descrição de hardware
– SystemC, VERILOG, Handel-C, SDL, ISP, Esterel, … (existem dezenas)
• Originalmente  especificar hardware; hoje  simulação e síntese!
• Origem
– Linguagem para descrever hardware, no contexto do programa americano
“Very High Speed Integrated Circuits” (VHSIC), iniciado em 1980.
– VHDL  VHSIC Hardware Description Language
– Padrão IEEE em 1987 (Institute of Electrical and Electronics Engineers), revisado
em 1993, 2000, 2002 e 2004
– Linguagem utilizada mundialmente por empresas de CAD (simulação, síntese,
propriedade intelectual). Verilog muito usada nos EUA.
Ney Calazans
2
Benefícios / Desvantagens
• Benefícios (em relação a diagramas de esquemáticos)
– Especificação do sistema digital:
• Projetos independentes da tecnologia (implementação física é postergada)
• Ferramentas de CAD compatíveis entre si
• Flexibilidade: re-utilização, escolha de ferramentas e fornecedores
• Facilidade de atualização dos projetos
• Permite explorar, em um nível mais alto de abstração, diferentes alternativas de
implementação
• Permite, através de simulação, verificar o comportamento do sistema digital
– Nível físico:
• Reduz tempo de projeto (favorece níveis abstratos de projeto)
• Reduz custo do projeto
• Elimina erros de baixo nível (se usado como base de ferramentas automatizadas)
• Conseqüência: reduz “time-to-market” (tempo de chegada de um produto ao mercado)
• Desvantagens (em relação a diagramas de esquemáticos)
– Hardware gerado pode ser menos otimizado
– Controlabilidade / Observabilidade de projeto reduzidas
Ney Calazans
3
VHDL é uma linguagem de programação?
•
•
Resposta curta: Não, é uma linguagem de descrição de hardware!
Código é executado em um simulador
–
•
Projeto do usuário
–
•
Não se enxerga o “compilador” de VHDL, não há um “código executável” visível
Especificado tipicamente no nível de abstração de transferência em ter registradores (em
inglês, Register – Transfer Level ou RTL), mas não apenas neste nível!
Testbench: uma descrição em VHDL ou outra linguagem do procedimento de teste de
um circuito
–
–
–
Especificação comportamental do ambiente externo ao projeto (estímulos externos)
Interage com o projeto
Não precisa ser descrito em VHDL (o projeto VHDL pode ser validado em ambiente C/C++!!)
Estrutura Geral de um Testbench
Geração de estímulos
e
Captura de saídas
Circuito (RTL)
Comparação
Resultados
Ney Calazans
Resultados
esperados
4
Sumário de Descrição de Hardware (1/2)
• INTERFACE EXTERNA: entity
– Especifica somente a interface entre o hardware e o ambiente
– Não contém definição do comportamento ou da estrutura internos
Esquemático:
A
B
Tabela Verdade
Sum
Carry
Código VHDL da entidade:
A
B
Sum
Carry
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
entity halfadd is
port (A, B: in std_logic;
Sum, Carry: out std_logic);
end halfadd;
Ney Calazans
5
Sumário de Descrição de Hardware (2/2)
• COMPORTAMENTO : architecture
– Especifica o comportamento e/ou a estrutura internos da entity
– Deve ser associada a uma entity específica
– Uma entity pode ter associada a si várias architecture
(representando diferentes formas de implementar um mesmo módulo)
Código VHDL da entidade:
architecture comp of halfadd is
begin
Sum <= A xor B;
Carry <= A and B;
end comp;
Ney Calazans
6
Descrição Completa do Somador
library IEEE;
use IEEE.Std_Logic_1164.all;
entity halfadd is
port (A, B: in std_logic;
Sum, Carry: out std_logic);
end halfadd;
Esta biblioteca e
pacote definem o
tipo std_logic (que
não é parte da
linguagem VHDL!)
architecture comp of halfadd is
begin
Sum <= A xor B;
Carry <= A and B;
end comp;
Ney Calazans
7
Validação por Simulação
• Uma forma simples de testar o projeto: testbenches
– Na sua forma mais simples, um testbench 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 ou autônomo.
TESTBENCH
Y
A
A
Y
Z
B
B
Z
GERADOR
DE TESTE
Ney Calazans
PROJETO
8
Exemplo de Testbench para o Somador
library ieee;
use ieee.std_logic_1164.all;
entity halfadd_tb is
end halfadd_tb;
Testador não tem pinos externos (ports in ou out)
architecture TB_ARCHITECTURE of halfadd_tb is
signal aa,bb,soma,vaium : std_logic;
begin
Nome do projeto (entidade)
UUT : entity work.halfadd
port map ( A => aa, B => bb,
Sum => soma, Carry => vaium );
Instanciação do
projeto, conectando
pinos do projeto a
fios do testador
aa <= '0', '1' after 10 ns, '0' after 20 ns, '1' after 30 ns;
bb <= '0', '1' after 20 ns;
end TB_ARCHITECTURE;
Ney Calazans
Geração dos
estímulos,
dizendo
como fios do
testador se
comportam
9
Usando o Simulador Active-HDL
• Abrir o Active-HDL
– Executar o comando
Create New Workspace
– Definir o nome do
Workspace
Ney Calazans
10
Usando o Simulador Active-HDL
• Criar projeto vazio (Empty)
• Dar Next na próxima janela (seleção de VHDL)
• Definir o nome do Projeto
dentro do Workspace
Ney Calazans
11
Usando o Simulador Active-HDL
• O próximo passo é colocar o VHDL no projeto:
• Escolher a opção de menu File  New  VHDL source
• Apenas selecionar um nome para o VHDL, usando no
restante das janelas o botão Next. Uma janela é aberta
com um template. Desta vez, selecionar todo o texto do
template e o apagá-lo.
• Agora, inserir o código das lâminas anteriores
(Descrição do Somador e Descrição VHDL do
Testbench)
Ney Calazans
12
Usando o Simulador Active-HDL
Compilar até não haver
mais erros de sintaxe
Ney Calazans
13
Usando o Simulador Active-HDL
• Uma vez concluído o processo de compilação sem erros,
inicializar a simulação:
Ney Calazans
14
0. Certifique-se de escolher a aba Structure do Projeto
1. Abrir a hierarquia para visualizar o módulo que está sendo testado
2. Abrir uma janela de formas de onda
3. Definir o tempo de simulação: 40 ns
4. Selecionar e arrastar os sinais que se deseja verificar o
comportamento desta janela para a janela de formas de
onda
Ney Calazans
15
Usando o Simulador Active-HDL
Botão para disparar a execução
Estes valores correspondem ao valor dos sinais no
instante onde está o cursor vermelho!!
Botões de Zoom da janela de simulação
• O comportamento é o esperado? Explicar.
Ney Calazans
16
Sinais de 1 Bit e Barramentos
•
std_logic  fio e std_logic_vector  vários fios (barramento)
•
Escrever um novo código utilizando sinais não de 1 bit mas de 4 bits
std_logic_vector(3 downto 0). O efeito é transformar o meio somador
de 1 bit em um somador de 4 bits
•
A entidade deve ser:
entity soma is
port (A, B: in std_logic_vector(3 downto 0);
Soma: out std_logic_vector(3 downto 0)
);
end soma;
•
O corpo da arquitetura deverá conter apenas “soma <= a + b;”
•
Incluir o uso da: use IEEE.std_logic_unsigned.all; (Porquê?)
•
Escrever o test bench correspondente e mostrar ao professor a
simulação
Ney Calazans
17
Dicas para uso do Simulador
• Na versão atual do simulador, não se pode ter mais de um projeto
(design) no mesmo workspace. Assim, o procedimento de criação
do novo projeto pressupõe repetir a ação das transparências 10-12.
• Se a licença do simulador permitir,
pode-se ter:
• File  New Design  Empty, com
nome soma. No browser do
simulador ter-se-á:
Workspace criado no início da aula
Projeto inicial
Novo projeto
Ney Calazans
18
Geração de Estímulos e Resultado Esperado
• 4 bits podem ser representados como um único dígito em
hexadecimal. No testbench pode-se escrever:
– aa <= x"4", x"5" after 10 ns, x"A" after 20 ns, x"B" after 30 ns;
– bb <= x"8", x"3" after 20 ns;
– Ao simular este circuito, na simulação aparece algo como:
(testar outros valores no seu testbench)
• O comportamento é o esperado? Explicar.
Ney Calazans
19
TRABALHO A FAZER
• Implemente o circuito de seis portas lógicas abaixo em VHDL;
• Crie um projeto com o simulador Active-HDL que contenha o
par entidade-arquitetura correspondente a este circuito;
• Crie um arquivo que instancie este circuito, que gere
estímulos para todas suas 4 entradas e os aplique à instância,
isto é, crie um testbench para o circuito.
• Simule o testbench e descreva como o circuito funciona.
Ney Calazans
20
A ENTREGAR
• Os três projetos Active-HDL (somador de 1 bit, somador de 4
bits, diagrama de esquemáticos de portas lógicas) completos,
contendo, para cada circuito:
–
–
–
–
VHDL do circuito proposto;
O testbench implementado;
Instâncias de formas de onda geradas, explicando a operação do circuito;
Um texto descrevendo como o circuito funciona.
– Data Final de Entrega: 14/09/2009, até o fim do dia, por e-mail
(Acréscimos do trabalho estão disponíveis na aula seguinte)
Ney Calazans
21
Download