BRAZIL IP The BrazilIP Network SystemVerilog para Verificação funcional com OVM Curso do Brazil-IP Elmar Melcher UFCG

Slides:



Advertisements
Apresentações semelhantes
1 Hardware Description Language (HDL) Para quê precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital Concorrência.
Advertisements

Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Modelo Ambiental Eveline Alonso Veloso PUC-Minas.
(Unified Modeling Language)
Projeto conceitual Mostra ao cliente exatamente o que o sistema fará
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
VHDL - VHSIC Hardware Description Language
Fernando Moraes e Ney Laert Vilar Calazans
Aula 12 – Prototipação de Processadores e Entrada e Saída LABORG 1º/junho/2009 Ney Laert Vilar Calazans.
GAPH - PPGCC - FACIN - PUCRS
Parte 7 - VHDL: Processos, Paralelismo e o Comando process (Continuação) LABORG 05/outubro/2009 César Augusto Missio Marcon Ney Laert Vilar Calazans.
Parte 9 – Prototipação de Processadores e Entrada e Saída LABORG 27/novembro/2009 Ney Laert Vilar Calazans.
BRAZIL IP The BrazilIP Network BRAZIL IP The BrazilIP Network Verificação funcional por simulação Curso do projeto Fênix Agosto 2003 Elmar Melcher UFCG.
Ney Laert Vilar Calazans
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais.
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais.
Sistemas Digitais Projeto RTL – Unidade de Execução
Unidades de Execução e de Controle Sistemas Digitais.
Verilog AULA - 3.
VHDL AULA - 2.
Lógica reconfigurável por hardware
Metodologias Equipe do Curso de ES para SMA {lucena, furtado, choren,
Tiago Salmito SystemC Tiago Salmito
Lógica de Programação Módulo II
Descrição de hardware em SystemC
Testing of Digital Logic Cores
1 Segurança em Redes Elmar Melcher Universidade Federal de Campina Grande
Especificação e Verificação funcional
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
VERILOG HDL (HARDWARE DESCRIPTION LANGUAGE)
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
Hardware Description Language (HDL)
Princípios e Conceitos de Software(v2)
Diagrama de Estados.
SQL Server 2012 Introdução a Modelagem de Dados
EPUSP – PTC Guido Stolfi
Engenharia de Software para Computação Embarcada
Antonyus Pyetro Infra-estrutura de Hardware – IF674
Brazil-IP Program Angelo Brito, Camila Nunes, Marcelo Albuquerque, Maria Cireno, Maryane Brasilino, Rafael Barbosa, Rafael Lima, Raphael Almeida Universidade.
Lógica reconfigurável por hardware
JAVA Linguagem Ambiente de Desenvolvimento
Representação de Algoritmos
Uma Linguagem de Especificação de Sistemas
Validação de VHDL: técnicas e ferramentas
ENGENHARIA DE SOFTWARE - REQUISITOS
BRAZIL IP The BrazilIP Network Verilog Curso do Brazil-IP Elmar Melcher UFCG
Prof. Manoel Eusebio Prof. Abel Guilhermino
MO801 - Tópicos em Arquitetura e Hardware Michele Tamberlini 05/2006
Levantamentos de dados Desenho do Projeto
Hardware Description Language Aula 6 -VHDL Prof. Afonso Ferreira Miguel, MSc.
Curso OTN - Simulação.
Monitoria IP ~if669 Garbage Collection e pacotes.
Métodos Formais.
BRAZIL IP The BrazilIP Network Ferramenta para geração de templates para Testbench Projeto Fênix Fevereiro 2004 Karina Rocha G. da Silva UFCG
Hardware Description Language Aula 4 –VHDL (introdução)
Introdução à Linguagem VHDL
VERILOG.
VERILOG Monitoria Infra-Estrutura de Hardware Álvaro João – ajss Húgaro Bernardino – hbb Fred Rabelo - ferrf Leonardo Leandro – lsl2 Jéssica de.
Introdução a VHDL Monitoria de Digitais.
EDA – Electronic Design Assistant
Engenharia de Sistemas Embarcados Aula 7: Analisador Lógico.
Modelação Aula T15 Modelação Conceptual de Sistemas Revisão do Comportamento OCL – Object Constraint Language José Borbinha.
Análise e Projeto de Sistemas
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Verilog HDL. Introduzida em 1985 pela Gateway Design System Corporation Após 1990, passou a ser de domínio público, e em 1995 passou a ser padrão IEEE.
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
Projeto de Circuitos Integrados Semidedicados Prof. Marcio Cunha Aula 04 – Linguagem de Descrição de Hardware: VHDL.
Projeto de Circuitos Integrados Semidedicados
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
Transcrição da apresentação:

BRAZIL IP The BrazilIP Network SystemVerilog para Verificação funcional com OVM Curso do Brazil-IP Elmar Melcher UFCG

BRAZIL IP The BrazilIP Network 2 Plano do tópico início Introdução Fluxo de projeto Representação gráfica vs. textual Requisitos de uma linguagem de descrição de hardware Um exemplo de uma descrição SystemVerilog Simulação com SystemVerilog

BRAZIL IP The BrazilIP Network 3 Plano do tópico continuação Descrição TLM em SystemVerilog class FIFO

BRAZIL IP The BrazilIP Network 4 Plano do tópico continuação Testbench Transações randomizar visualizar Sinalizar erros Cobertura de código Cobertura funcional Cosimulação com C

BRAZIL IP The BrazilIP Network 5 Introdução Fluxo de projeto Representação gráfica vs. textual Requisitos de uma linguagem de descrição de hardware Simulação com SystemVerilog

BRAZIL IP The BrazilIP Network 6 Fluxo de projeto (simplificado) ‏ Especificação Descrição comportamental Descrição estrutural Layout Função Descrição RTL Função & Timing consumo, área, etc.

BRAZIL IP The BrazilIP Network 7 Representação gráficavs. textual intuitivo hierarquia trabalhoso de fazer bem feito trabalhoso de modificar aprender a linguagem hierarquia rápido de fazer, mas precisa de comentários rápido de modificar fácil de processar automaticamente A B F if (function==1) ‏ y = a-b; else y = a+b;

BRAZIL IP The BrazilIP Network 8 Representação gráfica melhor para domínio estrutural Representação textual melhor para domínio comportamental, atingindo um nível de abstração maior continuação Representação gráficavs. textual

BRAZIL IP The BrazilIP Network 9 Expressar ações concorrentes Expressar tempo (atraso, clock)‏ Permitir descrição comportamental, estrutural e física Permitir mesclar diferentes vistas de diferentes subsistemas Permitir simulação, síntese e verificação Ser fácil e seguro de usar Propriedades desejáveis de uma HDL

BRAZIL IP The BrazilIP Network 10 Exemplos de outros HDLs Verilog 1995 SystemC VHDL (VLSI HDL (Very Large Scale Integration Hardware Description Language))‏ Abel, Palasm, Cupl, OCCAM, Handle-C, ELLA...

BRAZIL IP The BrazilIP Network 11 Propriedades de SystemVerilog Expressar ações concorrentes Expressar tempo (atraso, clock)‏ Permitir descrição TL, RTL, estrutural e física Permitir mesclar diferentes vistas de diferentes subsistemas Permitir simulação, síntese e verificação Ser fácil e seguro de usar

BRAZIL IP The BrazilIP Network 12 Especificação Descrição TL Descrição estrutural Layout Função Descrição RTL Função & Timing consumo, área, etc. Fluxo de projeto usando SystemVerilog

BRAZIL IP The BrazilIP Network 13 Histórico Verilog, 1981 SystemVerilog, padrão IEEE em 2005 OVM, Janeiro 2008

BRAZIL IP The BrazilIP Network 14 Código bonito 50% é comentário todas as declarações tem comentário um module ou class não ultrapassa 50 linhas (uma página na tela)‏ identificadores refletem o que é o objeto identificado indentação consistente regras do SRS da Motorola regras do Brazil-IP Network

BRAZIL IP The BrazilIP Network 15 Evite nomes longos demais. fpop_rs1 no lugar de floating_point_opcode_rs1 Evite confusão entre ‘ 0 ’ e ‘O’, ‘ 1 ’ e ‘ l ’. Use capitalização consistente. Estilo C: packet_addr, data_in Estilo Pascal: PacketAddr, DataIn Estilo Modula: packetAddr, dataIn Código bonito identificadores

BRAZIL IP The BrazilIP Network 16 *_clk sinal de relógio *_next sinal antes de registra-lo *_n sinal ativo nível baixo *_xi entrada do circuito *_xo saída do circuito Código bonito sufixos de identificadores

BRAZIL IP The BrazilIP Network 17 Comentário /* Comentário atravessando várias linhas */ // Comentário até o fim da linha Cuidado com acentos á é ô à etc.

BRAZIL IP The BrazilIP Network 18 Simulação a definição Modelo: Descrição de aspetos interessantes de um sistema real Simulação: Dado um modelo de condições de contorno (sinais de entrada), fornece a reação do sistema (sinais de saída) com respeito aos aspetos modelados

BRAZIL IP The BrazilIP Network 19 Simulação o quê ela faz Processamento concorrente, faz de conta que diferentes ações acontecem no mesmo tempo Obedece a especificações temporais, como atrasos. “tempo de simulação” vs. “tempo simulado”

BRAZIL IP The BrazilIP Network 20 Simulação como funciona Trata eventos. Um evento é uma mudança de estado associado a um tempo simulado. Um evento ocorre devido a outro evento. Vários eventos podem ocorrer ao mesmo tempo. Cuidado com a causalidade!

BRAZIL IP The BrazilIP Network 21 Simulação um exemplo Saída de A muda; isso leva B e C a serem executadas. Muito embora, A não chama B nem C como numa chamada de função, B e C executam porque são conectadas a saída de A A B C

BRAZIL IP The BrazilIP Network 22 Fornecer sinais de entrada module tb; logic clk; logic a,b,s,c; initial clk <= 0; always #5 clk <=~clk; initial begin a <= 0; b <= clk); a <= 1; b <= 0; end duv U1(.*); endmodule

BRAZIL IP The BrazilIP Network 23 Visualização de formas de onda No início da simulação (para Cadence, pode ser diferente para Mentor): $shm_open(“filename”); $shm_probe(a,b,s,c); No fim da simulação: $shm_close();

BRAZIL IP The BrazilIP Network 24 Tipos de dados logic [3:0] d; // verdadeiro/falso ( 1 bit) enum {A, B} s; // enumeração integer j; // 32 bits incluindo 'z' e 'x' com sinal (compl.2)‏ int i; // 32 bits, só '1' e '0' byte b; // 8 bits, só '1' e '0' longint l; // 64 bits, só '1' e '0' float f; // ponto flutuante string s; // string de caractères coisa p; // ponteiro para instancia de classe Não para síntese

BRAZIL IP The BrazilIP Network 25 Operadores lógicos unários z é tratado como x ~ negação bit a bit ! negação lógica & e bit a bit | ou bit a bit ^ ou exclusivo - negativo

BRAZIL IP The BrazilIP Network 26 Operadores aritméticos binários Se um dos bits envolvidos for x ou z, todo o resultado é x. * multiplicação / divisão % resto da divisão + soma - subtração

BRAZIL IP The BrazilIP Network 27 Operadores lógicos binários Deslocamento com preenchimento com ‘0’ Deslocamento negativo não pode > (direita)‏ comparação == != >= lógico | & ^ || &&

BRAZIL IP The BrazilIP Network 28 Operador condicional ? :

BRAZIL IP The BrazilIP Network 29 Precedência de operadores

BRAZIL IP The BrazilIP Network 30 Testbench Transações FIFO visualizar randomizar Sinalizar erros Cobertura de código Cobertura funcional Cosimulação

BRAZIL IP The BrazilIP Network 31 Transação - inicia num determinado momento no tempo - termina num determinado momento no tempo - contém dados e/ou operações ex.: escrita numa memória, pacote ethernet, imagem de vídeo

BRAZIL IP The BrazilIP Network 32 Transação em SystemVerilog uma ovm_object class exemplo: class acesso extends ovm_object; enum { RD, WR } cmd; int addr; int data; endclass Referências a uma class são ponteiros. Um ponteiro é nulo antes de ser atribuído. O carroceiro do lixo vai passando...

BRAZIL IP The BrazilIP Network 33 FIFO no módulo transmissor: declaração: ovm_put_port #(acesso) vai; uso: acesso a; a = new(); vai.put(a); no módulo receptor: declaração: ovm_get_port #(acesso) vem; uso: acesso b; b = vem.get();

BRAZIL IP The BrazilIP Network 34 FIFO (cont.) ‏ no módulo que instancia transmissor e receptor: declaração: tlm_fifo #(acesso) myfifo; myfifo = new(“myfifo”, this, 10); conexão: tx_i.vai.connect(myfifo.put_export); rx_i.vem.connect(myfifo.get_export); 10 elementos

BRAZIL IP The BrazilIP Network 35 Transações e FIFOs Somente FIFOs (e não sinais) conectam source, driver, checker, Modelo de Referência e monitor. Transações são transportadas explicitamente de um módulo para outro, mas o handshake para garantir sincronismo é implícito. Metodologia simples, eficiente e aplicável para todas as situações.

BRAZIL IP The BrazilIP Network 36 Visualização de Transações No início da simulação (para Cadence, pode ser diferente para Mentor) : $sdi_open(“nome_de_diretório”);

BRAZIL IP The BrazilIP Network 37 Visualização de Transações (cont.) ‏ No início de driver ou monitor: integer record; No lugar onde quer gravar uma transação record = $sdi_transaction(“nome”,”tipo”, ”label”,”descricao”);... aqui acontece a transação... $sdi_set_atribute(record, address); $sdi_end_transaction(record);

BRAZIL IP The BrazilIP Network 38 Randomização direcionada de transações Por condições: class packet extends ovm_object; rand int i; constraint i_range { // aqui vai o direcionamento: i > 0; i < 16; } endclass

BRAZIL IP The BrazilIP Network 39 Randomização direcionada de transações Direcionamento por distribuições: i dist { 0, 1, 2, 3 }; unsando intervalos: i dist { [0:2], 3 }; Com pesos: i dist { [0:2] :/3, 3 :/1 };

BRAZIL IP The BrazilIP Network 40 Sinalizar Erros Usar ovm_report_error(“nome_transacao”, psprintf(“esperado: %d recebido %d”, valor_refmod, valor_monitor)) que fornece o nome do módulo e o tempo simulado. e gravar transação de erro incrementa um contador de erros, visualizar o contador junto às formas de onda e às transações.

BRAZIL IP The BrazilIP Network 41 Cobertura funcional O Plano de Teste define as situações que devem ser simuladas. A cobertura funcional é uma medida de quantas situações do plano de teste já foram simuladas. Por definição, cobertura de 100% significa que a verificação funcional está concluída.

BRAZIL IP The BrazilIP Network 42 Cobertura funcional (cont.) ‏ Estímulos são criados na forma de transações randômicos ( rand ), Respostas são gerados pelo monitor e pelo modelo de referência, TDriver, Monitor e Actor podem medir cobertura funcional de transações e do handshake de sinais. O Refmod deve medir a cobertura de funções executadas.

BRAZIL IP The BrazilIP Network 43 Medir cobertura funcional covergroup cg; coverpoint b { bins b1 = {0, 1, 2, 3}; option.at_least = 100; } endgroup Valores que devem ser observados Variável a ser coberta Número de vezes que os valores devem ocorrer durante a simulação

BRAZIL IP The BrazilIP Network 44 Medir cobertura funcional covergroup cg; coverpoint a { bins b1 = {0, 1, 2, 3}; bins b2[] = {0, 1, 2, 3}; option.at_least = 100; } endgroup *****ajeitar **********

BRAZIL IP The BrazilIP Network 45 Cossimulação Aqui: SystemVerilog + C (VHDL e SystemVerilog pode ser feito também)‏ Para quê? Quer usar C para o modelo de referência e SystemVerilog para TL e RTL.

BRAZIL IP The BrazilIP Network 46 Cossimulação – como ? SystemC compilado pelo gcc vira código objeto Verilog compilado pelo VCS vira código objeto O linker junta tudo em um só executável (Direct Kernel Interface)‏ Problemas: sincronização de dois tempos simulados Synopsys resolve comunicação entre sinais SystemC e sinais Verilog usuário precisa fornecer um arquivo de mapeamento

BRAZIL IP The BrazilIP Network 47 Cossimulação – receita de bolo Exemplo de arquivo de mapeamento duv.port : Comando para criar um wrapper do DUV: ccss_cosim -vcs -conn dki duv.v:duv -port duv.port Comando para executar cosimulação: ccss_cosim -vcs -conn dki duv.vdef:duv_i -sc_files tb.cpp -gen=sim -design tb ocp_Clk 1 bit bool ocp_MAddr 20 bitvector sc_uint

BRAZIL IP The BrazilIP Network 48 Cosimulação – receita de bolo No testbench tb.cpp é necessário acrescentar _if ao nome do módulo do duv, tanto no #include como na instanciação. Comando para executar a cosimulação: ccss_cosim -vcs -conn dki duv.vdef:duv_i -sc_files tb.cpp -gen=sim -design tb Nome da instância, não do módulo

BRAZIL IP The BrazilIP Network 49 Resumo Source em SystemVerilog Driver em SystemVerilog Monitor em SystemVerilog Modelo de referência em SystemVerilog Checker em SystemVerilog Testbench em SystemVerilog Fonte de transações Transforma transações em sinais

BRAZIL IP The BrazilIP Network 50 Resumo Source em SystemVerilog Driver em SystemVerilog Monitor em SystemVerilog Modelo de referência em SystemVerilog Checker em SystemVerilog Testbench em SystemVerilog Transforma sinais em transações Modelo do DUV a nível de transação

BRAZIL IP The BrazilIP Network 51 Resumo Transações em SystemVerilog Source em SystemVerilog Driver em SystemVerilog Monitor em SystemVerilog Modelo de referência em SystemVerilog Checker em SystemVerilog Testbench em SystemVerilog Compara transações Junta tudo