Académique Documents
Professionnel Documents
Culture Documents
Tpicos Abordados
Tcnicas
Ferramentas FPGA Advantage Co-sim ModelSim LeonardoSpectrum Quartus Exemplos somador sqrt polgonos wrapper
Validao de HDL
Prticas Bsicas Design for Portability Design for Synthesis Design for Verification VHDL comportamental Tcnicas de Verificao Arquiteturas de TB Automatizao
Validao de HDL
guidelines estlo Modelsim/co-sim TB estruturado qualidade Leonardo Modelsim ganho de tempo re-utiliza TB Chipscope SignalTap
Referncias
Writing Testbenches [621.38173 B496w] ferramentas de verificao HDL comportamental arquitetura de testbenches tipos de geradores de estmulos e avaliadores de respostas Reuse Methodology Manual [621.38173 K25r] guidelines System-on-chip Verification [004.16 R224s] validao no nvel de sistema co-verificao Manual do Modelsim/FLI Diversos livros de VHDL guidelines para sntese
Validao de HDL
Referncias
Principles of Testing Electronic Systems [621.381548 M929p] TextBook de Teste Geradores de estmulos e compactadores de respostas embutidos: LFSR, MISR entre outros Essentials of Electronic Testing [621.38173 B978e] TextBook de Teste
A Designers Guide to Built-In Self-Test [621.381 s925d]
Validao de HDL
Muitos Outros
Tcnicas de Verificao
SUMRIO
Introduo Prticas Bsicas Design for Portability Design for Synthesis Design for Verification Tcnicas de Verificao Ferramentas
Validao de HDL
Introduo
Porque devo me importar com verificao? Porque voc tem que fazer algo que funcione!!! bvio!!! Porque voc no tem todo o tempo do mundo para terminar o projeto Porque devo fazer um testbench que leva mais tempo para fazer e mais complicado?
Validao de HDL
!!!!
SUMRIO
Introduo Prticas Bsicas Design for Portability Design for Synthesis Design for Verification Tcnicas de Verificao Ferramentas
Validao de HDL
10
Prticas Bsicas
Convenes de nomes (sinais, entidades, arquivos, etc) Incluir headers nos fontes descrio (func, autor, verso, etc) formato e temp. de entrada e sada histrico Comentrios (ingls) Indentao Instanciao (associao por nomes) Uma linha por comando/declarao
Validao de HDL
DISCIPLINA !!!
11
SUMRIO
Introduo Prticas Bsicas Design for Portability Design for Synthesis Design for Verification Tcnicas de Verificao Ferramentas
Validao de HDL
12
Validao de HDL
DISCIPLINA !!!
13
SUMRIO
Introduo Prticas Bsicas Design for Portability Design for Synthesis Design for Verification Tcnicas de Verificao Ferramentas
Validao de HDL
14
Regras de Clock
Evite utilizar duas bordas isto necessrio somente para projetos com restries de timing rigorosas complica testabilidade (criao de cadeias diferentes por borda) complica timing analysis (duty cycle torna-se crtico) Evitar gated clocks Evitar clocks e resets gerados internamente
Validao de HDL
15
Inferncia de Registradores
reset sncrono process(clk) begin if clkevent and clk = 1 then if rst = 1 then ... else ... end if; end if; end process; reset assncrono process(clk,rst) begin if rst = 1 then ... elsif clkevent and clk = 1 then ... end if; end process;
Validao de HDL
16
2 processos
synch_proc : process (rst,clock) begin if rst = 1 then ea <= S0; elsif clkevent and clk = 1 then ea <= pe; end if; end process;
Validao de HDL
17
3 processos
synch_proc : process (rst,clock) begin if rst = 1 then ea <= S0; elsif clkevent and clk = 1 then ea <= pe; end if; end process;
Validao de HDL
18
Evitar 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;
Validao de HDL
Exemplo1 falta else Exemplo2 falta atribuio de z quando c diferente de 0. Para evitar: atribua valores default as sadas process(inputs,state) begin outpus <= 0; case (state) ... end case; end process;
19
SUMRIO
Introduo Prticas Bsicas Design for Portability Design for Synthesis Design for Verification VHDL comportamental Tcnicas de Verificao Ferramentas
Validao de HDL
20
Teste x Verificao
Verificao 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 fabricao do dispositivo objetivo no verificar a funcionalidade objetivo exercitar as ns fsicos do sistema
ns devem ir de 0 para 1 ou de 1 para 0
Validao de HDL
21
Controlabilidade e Observabilidade
Alguns projetos podem ter pontos onde : difcil de colocar em um valor determinado
difcil controlabilidade
Validao de HDL
Alguma vez voc j teve que colocar mais portas de entrada ou de sada no top, para controlar ou para receber seu valor de um circuito ? Imagine que este circuito est bem escondido l no 7 nvel de hierarquia do seu projeto ???? Oque voc faria ??? Teria que modificar todas as entidades superiores ao nvel
22
Validao de HDL
23
TB
library 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;
Validao de HDL
24
SUMRIO
Introduo Prticas Bsicas Design for Portability Design for Synthesis Design for Verification VHDL comportamental Tcnicas de Verificao Ferramentas
Validao de HDL
25
VHDL Comportamental
VHDL RTL X VHDL comportamental RTL foca implementao Comportamental foca comportamento no use VHDL RTL para descrever TB cdigo comportamental mais rpido de descrever e mais simples cdigo comportamental aumenta desempenho da simulao descrever sistema e seu TB requer conhecimento de TODA a linguagem VHDL
Validao de HDL
26
RTL 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 clkevent and clk = 1 then if reset = 1 then state <= ....; else state <= NEXT_STATE; end if; end if; end process;
ack==0
req=1
ack==0
ack==1
req=0
ack==1
Validao de HDL
process begin ... req <= 1; wait until ack = 1; req <= 0; wait until ack = 0; ... end process;
27
VHDL Comportamental
Algumas estruturas geralmente no utilizadas em cdigo RTL mas teis em cdigo comportamental so: funes e procedimentos tipo string e time arquivos registros, matrizes listas, ponteiros e alocao dinmica assero outras dicas
Validao de HDL
28
Funes e Procedimentos
Encapsular detalhes de implementao funes de converso de tipo funes de leitura e escrita de arquivo
encapsula a formatao do arquivo
Validao de HDL
29
Arquivos
Usar packges para encapsupar detalhes do formato dos arquivos de entrada e sada
package IO_Pack is file 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(...) is begin ... readline(...); read(...); read(...); ... end procedure; procedure WriteFile(...) is begin ... writeline(...); write(...); write(...); ... end procedure; end package body;
Validao de HDL
30
Registros e Matrizes
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), ... );
EXEMPLO 1
type 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 ...
Validao de HDL
EXEMPLO 2
type array1T is array(1 to 2) of natural; type array2T is array(1 to 1024) of array1T; ... signal table : array2T table <= ( others => (0,0)); ...
31
Validao de HDL
32
Assero
til para comparar valores de sada e parar a simulao em caso de erro Exemplo: Assert (golden_out /= data_out) report error in sumulation!!!
Validao de HDL
33
Atributos Pr-Definidos
Alguns so: TLeft TRight TLow THigh TImage 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;
Validao de HDL
34
Validao de HDL
35
SUMRIO
Introduo Prticas Bsicas Design for Portability Design for Synthesis Design for Verification Tcnicas de Verificao Tipos de Verificao Arquiteturas de TestBenches
Gerao de Estmulos Avaliao de Respostas Referencial
Validao de HDL
Ferramentas
36
Tipos de Verificao
Compliance Testing verificar projeto de acordo com especificao Corner Case verificar situaes crticas do projeto Random complementar aos testes anteriores cria situaes inusitadas Real Code utilizar estmulos reais da aplicao Regression evita insero de novos bugs no sistema
Validao de HDL
37
SUMRIO
Introduo Prticas Bsicas Design for Portability Design for Synthesis Design for Verification Tcnicas de Verificao Tipos de Verificao Arquiteturas de TestBenches
Gerao de Estmulos Avaliao de Respostas Referencial
Validao de HDL
Ferramentas
38
Arquiteturas de Testbench
Principais partes: gerao de estmulos avaliao/comparao de respostas UUT referencial testbench
gerao de estmulos
Validao de HDL
UUT
referencial
avaliao de respostas
39
Gerao de estmulos
Origem dos estmulos: formas de onda de arquivos de tabelas aleatria mista
Validao de HDL
testbench
gerao de estmulos
UUT
referencial
avaliao de respostas
40
Validao de HDL
41
Estmulos 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 Vantagem: simples implementao readline(PatternFile , lineAux); para padres simples read(lineAux,value); ... end loop; Desvantagem: end procedure;
Validao de HDL
difcil de implementar para padres complexos aumenta tempo de simulao devido as chamadas de sistema
42
Estmulos de Tabela
type vector is record LD : std_logic; LL : std_logic; Vantagem: menor tempo de RST : std_logic; simulao que estmulo de arquivo 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 := ( Desvantagem: -- LD LL RST D P ( 0, 0, 0, xxxxxxxx 0), aumenta tempo de compilao ( 0, 0, 1, xxxxxxxx 0), ( 0, 0, 1, xxxxxxxx 0), consome memria para muitos ( 1, 0, 0, 00000101 0), padres ( 0, 1, 0, 11010100 0), ( 0, 0, 0, xxxxxxxx 1), ( 0, 0, 0, xxxxxxxx 1), ... );
Validao de HDL
43
Fonte: Modeltech Applications Note 116: VHDL Style Guidelines for Performance
Validao de HDL
44
Validao de HDL
FF 3
FF 2
FF 1
FF 0
LFSR padro
clk
UUT
clk 0 1 2 3 4 5 6 7 Q3 1 1 1 1 0 1 0 1 Q2 0 1 1 1 1 0 1 0 Q1 0 0 1 1 1 1 0 1 Q0 0 0 0 1 1 1 1 0 clk 8 9 10 11 12 13 14 15=0 Q3 1 0 0 1 0 0 0 1 Q2 1 1 0 0 1 0 0 0 Q1 0 1 1 0 0 1 0 0 Q0 1 0 1 1 0 0 1 0
45
Tipos de LFSRs
Standard LFSR
Validao de HDL
x2
x4
x3
Modular LFSR
x4 x3
x2
46
Validao de HDL
47
Validao de HDL
48
Validao de HDL
UUT
referencial
avaliao de respostas
49
Validao de HDL
50
Validao de HDL
51
MISR
Validao de HDL
UUT
x4 x3
x2
x4 x3
x2
UUT
52
Validao de HDL
53
Referencial
Mdulo que produz valores de referencia para o comparador
Validao de HDL
testbench
gerao de estmulos
UUT
referencial
avaliao de respostas
54
Descries do Referencial
pode ser descrito em HDL comportamental pode ser descrito em uma linguagem de mais alta abstrao C, java, SDL, outras pode ser um hardware (hard core) 8051 o ambiente de co-simulao pode ser usado para ligar HDL com outras linguagens ou hardware
Validao de HDL
referncia (C/Java/SDL)
sockets
comparao
estmulos
OK
UUT
NOK
TB VHDL
55
SUMRIO
Introduo Prticas Bsicas Design for Portability Design for Synthesis Design for Verification Tcnicas de Verificao Ferramentas
Validao de HDL
56
Tipos de Ferramentas
Compiladores modelsim/active Simulao funcional/temporal modelsim/active Co-simulao hw/sw Verificao Formal equivalence checking
compara dois modelos
Validao de HDL
model checking
procura por violaes e problemas genricos do projeto
57
Tipos de Ferramentas
Code coverage estimativa da qualidade do TB modelsim/active 100% no indica um projeto error free Code Profiling aumenta o desempenho da simulao diminui tempo de projeto quantas vezes voc simula seu projeto at que ele funcione na placa ? Controle de Reviso e Automatizao gerenciamento do projeto CVS e Make Emulao Prototipao
Validao de HDL
58
Automatizao
Baseado no uso de scripts e utilizao das ferramentas em batch mode Necessidade de uma estrutura padro de diretrios Necessidade de modelos de scripts para cada ferramenta na apresentao sobre ferramentas de verificao sero apresentados scripts para cada ferramenta uso de makefiles para executar scripts
Validao de HDL
59
Exemplo de Makefile
comp: teste.vhd vcom teste.vhd simul: vsim teste.beh temp_simul: vsim teste.beh -sdf syn: spectrum -file syn.tcl
Validao de HDL
60
Validao de HDL
Exemplos de TestBenchs
62
Tpicos
sqtr wrapper polgonos
Validao de HDL
63
Sqrt
Usa lfsr para gerar estmulos o referencial comportamental, implementado em uma biblioteca testbench com 11 linhas arquitetura ideal para validao de operadores aritmticos ou datapaths (seqncia de operaes aritmticas)
Validao de HDL
64
Polgonos
Estmulos lidos de arquivo (gerao complexa) referencial escrito em C Valor esperado compactado e gerado por software tb aplica estmulos de arquivo e compara compactao feita online com assinatura lida do arquivo
Gerador de polgonos aleatrios
Validao de HDL
estmulos
TB VHDL
ok/nok
assinatura
65
Wrapper
Patterns LFSR
n
Validao de HDL
adaptao
32
wrapper
ISCAS
32
ISCAS
m
referencial
adaptao m
Comparao
ok/nok