Validação de VHDL: técnicas e ferramentas

Preview:

DESCRIPTION

Validação de VHDL: técnicas e ferramentas. Alexandre Amory (amory@inf.pucrs.br). Técnicas Práticas Básicas Design for Portability Design for Synthesis Design for Verification VHDL comportamental Técnicas de Verificação Arquiteturas de TB Automatização. Ferramentas FPGA Advantage - PowerPoint PPT Presentation

Citation preview

Validação de VHDL:técnicas e ferramentas

Alexandre Amory

(amory@inf.pucrs.br)

2V

alid

ação

de

HD

LV

alid

ação

de

HD

LTópicos Abordados

Técnicas• Práticas Básicas

• Design for Portability

• Design for Synthesis

• Design for Verification

– VHDL comportamental

• Técnicas de Verificação

– Arquiteturas de TB

• Automatização

Ferramentas

• FPGA Advantage

• Co-sim

• ModelSim

• LeonardoSpectrum

• Quartus

Exemplos

• somador

• sqrt

• polígonos

• wrapper

3V

alid

ação

de

HD

LV

alid

ação

de

HD

L

scr i

pts

Fluxo de Projeto Simplificado

especificação

descrição do HDL

verificação funcional

sínteselógica

verificação temporal

síntesefísica

prototipação

•guidelines•estílo

•Modelsim/co-sim•TB estruturado•qualidade•Leonardo

•Modelsim•ganho de tempo•re-utiliza TB•Chipscope•SignalTap

4V

alid

ação

de

HD

LV

alid

ação

de

HD

LReferências

• Writing Testbenches [621.38173 B496w]

– ferramentas de verificação– HDL comportamental– arquitetura de testbenches– tipos de geradores de estímulos e avaliadores de respostas

• Reuse Methodology Manual [621.38173 K25r]

– guidelines• System-on-chip Verification [004.16 R224s]

– validação no nível de sistema– co-verificação

• Manual do Modelsim/FLI• Diversos livros de VHDL

– guidelines para síntese

5V

alid

ação

de

HD

LV

alid

ação

de

HD

LReferências

• Principles of Testing Electronic Systems [621.381548 M929p]

– TextBook de Teste– Geradores de estímulos e compactadores de respostas

embutidos: LFSR, MISR entre outros• Essentials of Electronic Testing [621.38173 B978e]

– TextBook de Teste• A Designer’s Guide to Built-In Self-Test [621.381 s925d]

• Muitos Outros

Técnicas de Verificação

Alexandre Amory

(amory@inf.pucrs.br)

7V

alid

ação

de

HD

LV

alid

ação

de

HD

LSUMÁRIO

• Introdução• Práticas Básicas• Design for Portability• Design for Synthesis• Design for Verification• Técnicas de Verificação• Ferramentas

8V

alid

ação

de

HD

LV

alid

ação

de

HD

LIntrodução

• Porque devo me importar com verificação?– Porque você tem que fazer algo que funcione!!! Óbvio!!!– Porque você não tem todo o tempo do mundo para terminar

o projeto• Porque devo fazer um testbench que leva mais tempo para

fazer e é mais complicado?

– Economia de tempo BURRA !!!!– Efeito “bola de neve”

• 70% do tempo de projeto é para verificação

9V

alid

ação

de

HD

LV

alid

ação

de

HD

LSUMÁRIO

• Introdução• Práticas Básicas• Design for Portability• Design for Synthesis• Design for Verification• Técnicas de Verificação• Ferramentas

10V

alid

ação

de

HD

LV

alid

ação

de

HD

LPráticas Básicas

• Convenções de nomes (sinais, entidades, arquivos, etc)• Incluir headers nos fontes

– descrição (func, autor, versão, etc)– formato e temp. de entrada e saída– histórico

• Comentários (inglês)• Indentação• Instanciação (associação por nomes)• Uma linha por comando/declaração

DISCIPLINA !!!

11V

alid

ação

de

HD

LV

alid

ação

de

HD

LSUMÁRIO

• Introdução• Práticas Básicas• Design for Portability• Design for Synthesis• Design for Verification• Técnicas de Verificação• Ferramentas

12V

alid

ação

de

HD

LV

alid

ação

de

HD

LDesign for Portability

• Usar tipos baseados nos tipos padrões IEEE– std_logic x std_ulogic

• Não usar valores fixos na descrição– use generic ou constant

• Evitar código dependente de tecnologia– usar e abusar de regras de inferência (ISE e Quartus)– se for inevitável, descreva-o em uma entidade separada

• Não se vicie num único conjunto de ferramentas– simule com diversos simuladores– sintetize para targets diferentes

DISCIPLINA !!!

13V

alid

ação

de

HD

LV

alid

ação

de

HD

LSUMÁRIO

• Introdução• Práticas Básicas• Design for Portability• Design for Synthesis• Design for Verification• Técnicas de Verificação• Ferramentas

14V

alid

ação

de

HD

LV

alid

ação

de

HD

LRegras de Clock

• Evite utilizar duas bordas– isto é necessário somente para projetos com restrições de

timing rigorosas– complica testabilidade (criação de cadeias diferentes por

borda)– complica timing analysis (duty cycle torna-se crítico)

• Evitar gated clocks• Evitar clocks e resets gerados internamente

15V

alid

ação

de

HD

LV

alid

ação

de

HD

LInferência de Registradores

reset síncrono

process(clk)

begin

if clk’event and clk = ‘1’ then

if rst = ‘1’ then

...

else

...

end if;

end if;

end process;

reset assíncrono

process(clk,rst)

begin

if rst = ‘1’ then

...

elsif clk’event and clk = ‘1’ then

...

end if;

end process;

16V

alid

ação

de

HD

LV

alid

ação

de

HD

LInferência de Máquina de Estados

architecture ....type state is (S0,S1,S2,S3);signal ea,pe : state;...comb_proc: process(inputs,ea)begin

case (ea) iswhen S0 =>

outputs <= input +1;...pe <= S1;

when S1 =>when S2 =>when S3 =>when others =>

end case;end process;

synch_proc : process (rst,clock)

begin

if rst = ‘1’ then

ea <= S0;

elsif clk’event and clk = ‘1’ then

ea <= pe;

end if;

end process;

2 processos

17V

alid

ação

de

HD

LV

alid

ação

de

HD

LInferência de Máquina de Estados

architecture ....type state is (S0,S1,S2,S3);signal ea,pe : state;...trans_proc: process(inputs,ea)begin

case (ea) iswhen S0 =>

pe <= S1;when S1 =>when S2 =>when S3 =>when others =>

end case;end process;

synch_proc : process (rst,clock)

begin

if rst = ‘1’ then

ea <= S0;

elsif clk’event and clk = ‘1’ then

ea <= pe;

end if;

end process;

comb_proc: outputs <= inputs + 1 when ea = S1 else (others => ‘0’);

3 processos

18V

alid

ação

de

HD

LV

alid

ação

de

HD

LEvitar Latches

Maus exemplos:

process (a,b)

begin

if (a = ‘1’) then

q <= b;

end if;

end process;

process(c)

begin

case c is

when ‘0’ => q <= ‘1’; z <= ‘0’;

when others => q <= ‘0’;

end case;

end process;

• Exemplo1 falta else• Exemplo2 falta atribuição de z

quando c é diferente de ‘0’.

• Para evitar:• atribua valores default as saídas• process(inputs,state)• begin

– outpus <= ‘0’;– case (state)– ...– end case;

• end process;

19V

alid

ação

de

HD

LV

alid

ação

de

HD

LSUMÁRIO

• Introdução• Práticas Básicas• Design for Portability• Design for Synthesis• Design for Verification

– VHDL comportamental• Técnicas de Verificação• Ferramentas

20V

alid

ação

de

HD

LV

alid

ação

de

HD

LTeste x Verificação

• Verificação– usado para verificar se o projeto está de acordo com o desejado– objetivo é verificar a funcionalidade– a ferramenta mais utilizada é o simulador

• Teste– usado para verificar a fabricação do dispositivo– objetivo não é verificar a funcionalidade– objetivo é exercitar as nós físicos do sistema

• nós devem ir de 0 para 1 ou de 1 para 0

– usa padrões específicos para exercitar estes nós• estes padrões são gerados por ferramenta de ATPG (automatic test

pattern generation )

21V

alid

ação

de

HD

LV

alid

ação

de

HD

LControlabilidade e Observabilidade

• Alguns projetos podem ter pontos onde é:– difícil de colocar em um valor determinado

• difícil controlabilidade

– difícil de ler seu valor pelas portas de saída• difícil observabilidade

• Alguma vez você já teve que colocar mais portas de entrada ou de saída no top, para controlar ou para receber seu valor de um circuito ? – Imagine que este circuito está bem “escondido” lá no 7º

nível de hierarquia do seu projeto ???? Oque você faria ???– Teria que modificar todas as entidades superiores ao nível

22V

alid

ação

de

HD

LV

alid

ação

de

HD

LSignalSpy e Sinal Global

• SignalSpy é um recurso do Modelsim que permite acesso a sinais internos da UUT

• uso:– Signal_Spy("/uut/sum", "/buried_sum");

• Sinais globais podem ser utilizados nos níveis inferiores do projeto

library ieee;

use ieee.std_logic_1164.all;

package global_sigs is

signal sum_int : integer range 0 to 255;

signal maximum : bit;

end;

23V

alid

ação

de

HD

LV

alid

ação

de

HD

LExemplo de Sinal Global

ENTITYlibrary IEEE;

use IEEE.std_logic_1164.all;

use work.global_sigs.all;

entity adder is

port (...);

end adder;

architecture behavioral of adder is

begin

vsum <= a + b;

sum <= vsum;

...

end architecture

TBlibrary IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

use work.global_sigs.all;

architecture adder of testbench is

component adder

port (...);

end component;

begin

...

value_vsum <= vsum;

...

end architecture;

24V

alid

ação

de

HD

LV

alid

ação

de

HD

LSUMÁRIO

• Introdução• Práticas Básicas• Design for Portability• Design for Synthesis• Design for Verification

– VHDL comportamental• Técnicas de Verificação• Ferramentas

25V

alid

ação

de

HD

LV

alid

ação

de

HD

LVHDL Comportamental

• VHDL RTL X VHDL comportamental– RTL foca implementação– Comportamental foca comportamento

• não use VHDL RTL para descrever TB– código comportamental é mais rápido de descrever e mais

simples– código comportamental aumenta desempenho da simulação

• descrever sistema e seu TB requer conhecimento de TODA a linguagem VHDL

26V

alid

ação

de

HD

LV

alid

ação

de

HD

LRTL X Comportamental

Type STATE_TYPE is (...,MAKE_REQ,RELEASE,...);signal STATE, NEXT_STATE : STATE_TYPE;...COMB:process(state,ack)begin

case STATE is...when MAKE_REQ =>

REQ <= ‘1’;if ACK = ‘1’ then

NEXT_STATE <= RELEASE;end if;

...end case;

end process;SEQ: process(clk)begin

if clk’event and clk = ‘1’ thenif reset = ‘1’ then

state <= ....;else

state <= NEXT_STATE;end if;

end if;end process;

req=1 req=0ack==1

ack==0 ack==1

ack==0

processbegin ... req <= ‘1’; wait until ack = ‘1’; req <= ‘0’; wait until ack = ‘0’; ...end process;

27V

alid

ação

de

HD

LV

alid

ação

de

HD

LVHDL Comportamental

• Algumas estruturas geralmente não utilizadas em código RTL mas úteis em código comportamental são:– funções e procedimentos– tipo string e time– arquivos– registros, matrizes– listas, ponteiros e alocação dinâmica– asserção– outras dicas

28V

alid

ação

de

HD

LV

alid

ação

de

HD

LFunções e Procedimentos

• Encapsular detalhes de implementação– funções de conversão de tipo– funções de leitura e escrita de arquivo

• encapsula a formatação do arquivo

– encapsular temporização de sinais e barramentos (BFM)

29V

alid

ação

de

HD

LV

alid

ação

de

HD

LArquivos

• Usar packges para encapsupar detalhes do formato dos arquivos de entrada e saída

package IO_Pack isfile InputFile : TEXT open READ_MODE is ”input.txt";file OutputFile : TEXT open WRITE_MODE is ”output.txt";procedure ReadFile(...);procedure WriteFile(...);

end package;package body IO_Pack is

procedure ReadFile(...) isbegin

...readline(...);read(...);read(...);...

end procedure;procedure WriteFile(...) isbegin

...writeline(...);write(...);write(...);...

end procedure;end package body;

30V

alid

ação

de

HD

LV

alid

ação

de

HD

LRegistros e Matrizes

EXEMPLO 1type bus_data is array(integer range <>) of

std_logic_vector(31 downto 0);

signal bus_interface busdata(N-1 downto 0);

...

If reset = ‘0’ then

bus_interface <= (others => (others => ‘0’));

else

...

EXEMPLO 2type array1T is array(1 to 2) of natural;

type array2T is array(1 to 1024) of array1T;

...

signal table : array2T

table <= ( others => (0,0));

...

type vector is record

LD : std_logic;

LL : std_logic;

RST : std_logic;

D : std_logic_vector(7 downto 0);

P : std_logic;

end record;

type vectorArrayType is array (0 to TABLE_SIZE) of vector;

constant vectorTable : vectorArrayType := (

-- LD LL RST D P

( ‘0’, ‘0’, ‘0’, “xxxxxxxx” ‘0’),

( ‘0’, ‘0’, ‘1’, “xxxxxxxx” ‘0’),

( ‘0’, ‘0’, ‘1’, “xxxxxxxx” ‘0’),

( ‘1’, ‘0’, ‘0’, “00000101” ‘0’),

( ‘0’, ‘1’, ‘0’, “11010100” ‘0’),

( ‘0’, ‘0’, ‘0’, “xxxxxxxx” ‘1’),

( ‘0’, ‘0’, ‘0’, “xxxxxxxx” ‘1’),

...

);

31V

alid

ação

de

HD

LV

alid

ação

de

HD

LListas, Ponteiros e Alocação Dinâmica

process

type list_typ;

type list_ptr is access list_typ;

type list_typ is record

base_addr : natural;

data : natural;

next_node : list_ptr;

end record;

variable head : list_ptr;

begin

...

end process;

process

procedure get_data(addr : in natural; here : out list_ptr) is

variable element : list_ptr;

begin

element := head;

-- busca posição

element := new list_typ;

element.base := 123;

element.next_node := head;

element.data := 456;

head := element;

here := element;

end procedure;

begin

...

end process;Fonte: writing testbenches

32V

alid

ação

de

HD

LV

alid

ação

de

HD

LAsserção

• Útil para comparar valores de saída e parar a simulação em caso de erro

• Exemplo:

Assert (golden_out /= data_out)

report “error in sumulation!!!”

33V

alid

ação

de

HD

LV

alid

ação

de

HD

LAtributos Pré-Definidos

• Alguns são:

– T’Left

– T’Right

– T’Low

– T’High

– T’Image

– T’ Ascending

procedure lfsr(constant polynomial : in std_logic_vector;

variable sig: inout std_logic_vector) is

variable i : std_logic_vector(polynomial'range) := sig;

begin

i := i(i'left-1 downto 0)&i(i'left);

if sig(sig'left) = '1' then

i := i xor polynomial;

end if;

sig := i;

end procedure;...variable var: integer;...write(outline,”valor = ” & integer'image(var);...

34V

alid

ação

de

HD

LV

alid

ação

de

HD

LOutras Dicas Gerais

• Como gerar arquivos de saída com nomes diferentes para cada simulação

entity tb is

generic (outputFile: string := "saida”);

end entity

...

file PoligFile : TEXT open READ_MODE is outputFile & ".txt";

...

35V

alid

ação

de

HD

LV

alid

ação

de

HD

LSUMÁRIO

• Introdução• Práticas Básicas• Design for Portability• Design for Synthesis• Design for Verification• Técnicas de Verificação

– Tipos de Verificação– Arquiteturas de TestBenches

• Geração de Estímulos

• Avaliação de Respostas

• Referencial

• Ferramentas

36V

alid

ação

de

HD

LV

alid

ação

de

HD

LTipos de Verificação

• Compliance Testing– verificar projeto de acordo com especificação

• Corner Case– verificar situações críticas do projeto

• Random– complementar aos testes anteriores– cria situações “inusitadas”

• Real Code– utilizar estímulos reais da aplicação

• Regression– evita inserção de novos bugs no sistema

Fonte: reuse methodology manual

37V

alid

ação

de

HD

LV

alid

ação

de

HD

LSUMÁRIO

• Introdução• Práticas Básicas• Design for Portability• Design for Synthesis• Design for Verification• Técnicas de Verificação

– Tipos de Verificação– Arquiteturas de TestBenches

• Geração de Estímulos

• Avaliação de Respostas

• Referencial

• Ferramentas

38V

alid

ação

de

HD

LV

alid

ação

de

HD

LArquiteturas de Testbench

• Principais partes:– geração de estímulos– avaliação/comparação de respostas– UUT– referencial

UUT

testbench

geração de estímulos

avaliação de respostas

referencial

39V

alid

ação

de

HD

LV

alid

ação

de

HD

LGeração de estímulos

• Origem dos estímulos:

– formas de onda

– de arquivos

– de tabelas

– aleatória

– mista

UUT

testbench

geração de estímulos

avaliação de respostas

referencial

40V

alid

ação

de

HD

LV

alid

ação

de

HD

LEstímulos Tipo Forma de Onda

process

begin

s <= ‘0’ ; wait for 20 ns;

s <= ‘1’ ; wait for 10 ns;

s <= ‘0’ ; wait for 10 ns;

s <= ‘1’ ; wait for 20 ns;

s <= ‘0’ ; wait for 50 ns;

s <= ‘1’ ; wait for 10 ns;

s <= ‘0’ ; wait for 20 ns;

s <= ‘1’ ; wait for 10 ns;

s <= ‘0’ ; wait for 20 ns;

s <= ‘1’ ; wait for 40 ns;

s <= ‘0’ ; wait for 20 ns;

end process;

viável somente nas primeiras versões de TB

41V

alid

ação

de

HD

LV

alid

ação

de

HD

LEstímulos de Arquivos

procedure ReadFile() is

variable lineAux : line;

file PatternFile : TEXT open READ_MODE is “inputPattern.txt";

begin

for i in 0 to nPolig-1 loop

readline(PatternFile , lineAux);

read(lineAux,value);

...

end loop;

end procedure;

Vantagem: simples implementação para padrões simples

Desvantagem: •difícil de implementar para padrões complexos•aumenta tempo de simulação devido as chamadas de sistema

42V

alid

ação

de

HD

LV

alid

ação

de

HD

LEstímulos de Tabela

type vector is record

LD : std_logic;

LL : std_logic;

RST : std_logic;

D : std_logic_vector(7 downto 0);

P : std_logic;

end record;

type vectorArrayType is array (0 to TABLE_SIZE) of vector;

constant vectorTable : vectorArrayType := (

-- LD LL RST D P

( ‘0’, ‘0’, ‘0’, “xxxxxxxx” ‘0’),

( ‘0’, ‘0’, ‘1’, “xxxxxxxx” ‘0’),

( ‘0’, ‘0’, ‘1’, “xxxxxxxx” ‘0’),

( ‘1’, ‘0’, ‘0’, “00000101” ‘0’),

( ‘0’, ‘1’, ‘0’, “11010100” ‘0’),

( ‘0’, ‘0’, ‘0’, “xxxxxxxx” ‘1’),

( ‘0’, ‘0’, ‘0’, “xxxxxxxx” ‘1’),

...

);

Vantagem: menor tempo de simulação que estímulo de arquivo

Desvantagem:

•aumenta tempo de compilação

•consome memória para muitos padrões

43V

alid

ação

de

HD

LV

alid

ação

de

HD

LComparação entre Estímulos de Arquivo e

de Tabela

Fonte: Modeltech Applications Note 116: VHDL Style Guidelines for Performance

44V

alid

ação

de

HD

LV

alid

ação

de

HD

LEstímulos de Dados Pseudo-Aleatórios

LFSR padrão

FF3

FF3

FF2

FF2

FF1

FF1

FF0

FF0

clk

UUT

45V

alid

ação

de

HD

LV

alid

ação

de

HD

LTipos de LFSRs

1 x x2

x3

x4

x2 x 1x4

x3

Polinômio primitivo: P(x) = 1 + x3 + x4

Provê os 2n-1 padrões

Standard LFSR

Modular LFSR

46V

alid

ação

de

HD

LV

alid

ação

de

HD

LDescrição Comportamental de LFSR Modular

procedure lfsr(constant polynomial : in std_logic_vector;

variable value: inout std_logic_vector) is

variable i : std_logic_vector(sig'range) := value;

begin

i := i(i'left-1 downto 0)&i(i'left);

if value(i'left) = '1' then

i := i xor polynomial;

end if;

value := i;

end procedure;

value: “0111”

i: “1110”

polynomial: “1100”

value: “0010”

47V

alid

ação

de

HD

LV

alid

ação

de

HD

LGeração de Mista de Estímulos

• Geração pseudo-aletaória pode demorar muito para gerar um padrão específico– geralmente que estimula algum corner case– pode aumentar muito o tempo de simulação

• Nestes casos é desejável utilizar uma geração de estímulo mista– estímulos de tabela + estímulos aleatórios

48V

alid

ação

de

HD

LV

alid

ação

de

HD

LAvaliação e Comparação de Respostas

• Tipos:– sem comparação (inspeção visual)– usando assert– com compactação de dados– de arquivo– de tabela

UUT

testbench

geração de estímulos

avaliação de respostas

referencial

49V

alid

ação

de

HD

LV

alid

ação

de

HD

LComparação de Respostas com Assert

• para a simulação se condição for verdadeira• Exemplo:

Assert (golden_out /= data_out)

report “error in sumulation!!!”

• Aplicado somente há sistemas pequeno– validação de operação aritméticas (sqrt)

50V

alid

ação

de

HD

LV

alid

ação

de

HD

LComparação com Compactação de Dados

• Usa técnica similar ao CRC para diminuir o número de comparações e diminuir o volume da dados de referência

• Utilizar uma variação de LFSR (MISR) para gerar uma assinatura das respostas

51V

alid

ação

de

HD

LV

alid

ação

de

HD

LMISR

x2 x 1x4

x3

UUT

x2 x 1x4

x3

UUT

52V

alid

ação

de

HD

LV

alid

ação

de

HD

LDescrição Comportamental de um MISR

procedure misr(constant polynomial : in std_logic_vector;

signal input : in std_logic_vector;

variable sig: inout std_logic_vector) is

variable i : std_logic_vector(sig'range) := sig;

begin

i := i(i'left-1 downto 0)&i(i'left);

i := i xor input;

if sig(i'left) = '1' then

i := i xor polynomial;

end if;

sig := i;

end procedure;

53V

alid

ação

de

HD

LV

alid

ação

de

HD

LReferencial

• Módulo que produz valores de referencia para o comparador

UUT

testbench

geração de estímulos

avaliação de respostas

referencial

54V

alid

ação

de

HD

LV

alid

ação

de

HD

LDescrições do Referencial

• pode ser descrito em HDL comportamental

• pode ser descrito em uma linguagem de mais alta abstração

– C, java, SDL, outras

• pode ser um hardware (hard core)

– 8051

• o ambiente de co-simulação pode ser usado para ligar HDL com outras linguagens ou hardware

UUT

estí

mul

os

com

para

ção

TB VHDL

referência(C/Java/SDL)

OK

NOK

sockets

55V

alid

ação

de

HD

LV

alid

ação

de

HD

LSUMÁRIO

• Introdução• Práticas Básicas• Design for Portability• Design for Synthesis• Design for Verification• Técnicas de Verificação• Ferramentas

56V

alid

ação

de

HD

LV

alid

ação

de

HD

LTipos de Ferramentas

• Compiladores– modelsim/active

• Simulação funcional/temporal– modelsim/active

• Co-simulação hw/sw• Verificação Formal

– equivalence checking• compara dois modelos

– model checking• procura por violações e problemas genéricos do projeto

• Testbench automation tool

57V

alid

ação

de

HD

LV

alid

ação

de

HD

LTipos de Ferramentas

• Code coverage– estimativa da qualidade do TB– modelsim/active– 100% não indica um projeto “error free”

• Code Profiling– aumenta o desempenho da simulação– diminui tempo de projeto– quantas vezes você simula seu projeto até que ele funcione

na placa ? • Controle de Revisão e Automatização

– gerenciamento do projeto– CVS e Make

• Emulação• Prototipação

58V

alid

ação

de

HD

LV

alid

ação

de

HD

LAutomatização

• Baseado no uso de scripts e utilização das ferramentas em batch mode

• Necessidade de uma estrutura padrão de diretórios• Necessidade de modelos de scripts para cada ferramenta

– na apresentação sobre ferramentas de verificação serão apresentados scripts para cada ferramenta

• uso de makefiles para executar scripts

59V

alid

ação

de

HD

LV

alid

ação

de

HD

LExemplo de Makefile

• comp: teste.vhd– vcom teste.vhd

• simul:– vsim teste.beh

• temp_simul:– vsim teste.beh -sdf

• syn:– spectrum -file syn.tcl

60V

alid

ação

de

HD

LV

alid

ação

de

HD

LExemplo de Estrutura de Diretório

Makefile

doc

syn (projeto de síntese lógica do Leonardo)

altera (projeto de síntese física da Altera)

xilinx (projeto de síntese física da Xilinx)

simul

model (projeto de simulação do Modelsim)

active (projeto de simulação do Active)

scr

tb

Exemplos de TestBenchs

Alexandre Amory

(amory@inf.pucrs.br)

62V

alid

ação

de

HD

LV

alid

ação

de

HD

LTópicos

• sqtr• wrapper• polígonos

63V

alid

ação

de

HD

LV

alid

ação

de

HD

LSqrt

• Usa lfsr para gerar estímulos• o referencial é comportamental, implementado em uma

biblioteca• testbench com 11 linhas

• arquitetura ideal para validação de operadores aritméticos ou datapaths (seqüência de operações aritméticas)

64V

alid

ação

de

HD

LV

alid

ação

de

HD

LPolígonos

• Estímulos lidos de arquivo (geração complexa)

• referencial escrito em C

• Valor esperado compactado e gerado por software

• tb aplica estímulos de arquivo e compara compactação feita online com assinatura lida do arquivo

CassinaturaTB VHDL

ok/nok

estímulos

Gerador de polígonos aleatórios

65V

alid

ação

de

HD

LV

alid

ação

de

HD

LWrapper

ISCASISCAS

wrapper

LFSR

adaptação

adaptação

Comparação

ok/nok

referencial

Patterns

n

m

32

32

n

m

Recommended