A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "BRAZIL IP The BrazilIP Network SystemVerilog para Verificação funcional com OVM Curso do Brazil-IP Elmar Melcher UFCG"— Transcrição da apresentação:

1 BRAZIL IP The BrazilIP Network SystemVerilog para Verificação funcional com OVM Curso do Brazil-IP Elmar Melcher UFCG elmar@dsc.ufcg.edu.br

2 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

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

4 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

5 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

6 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.

7 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;

8 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

9 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

10 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...

11 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

12 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

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

14 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 http://lad.dsc.ufcg.edu.br/fenix/metodologia

15 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

16 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

17 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.

18 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

19 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”

20 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!

21 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

22 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 <= 1; @(posedge clk); a <= 1; b <= 0; end duv U1(.*); endmodule

23 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();

24 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

25 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

26 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

27 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 | & ^ || &&

28 BRAZIL IP The BrazilIP Network 28 Operador condicional ? :

29 BRAZIL IP The BrazilIP Network 29 Precedência de operadores

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

31 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

32 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...

33 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();

34 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

35 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.

36 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”);

37 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);

38 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

39 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 };

40 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.

41 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.

42 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.

43 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

44 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 **********

45 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.

46 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

47 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

48 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

49 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

50 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

51 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


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

Apresentações semelhantes


Anúncios Google