brazil ip the brazilip network systemverilog para verificação funcional com ovm curso do brazil-ip...

Post on 22-Apr-2015

124 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

BRAZIL IPBRAZIL IP

The BrazilIP Network

SystemVerilog paraVerificação funcional

com OVM

Curso do Brazil-IP

Elmar Melcher

UFCG

elmar@dsc.ufcg.edu.br

BRAZIL IPBRAZIL IP

The BrazilIP Network 2

Plano do tópico início

IntroduçãoFluxo 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 IPBRAZIL IP

The BrazilIP Network 3

Plano do tópico continuação

Descrição TLM em SystemVerilog

class

FIFO

BRAZIL IPBRAZIL 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 IPBRAZIL 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

Função & Timing

Função & Timing

consumo, área, etc.

BRAZIL IPBRAZIL IP

The BrazilIP Network 7

Representaçãográfica vs. 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;

elsey = a+b;

BRAZIL IPBRAZIL 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çãográfica vs. textual

BRAZIL IPBRAZIL 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áveisde uma HDL

BRAZIL IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL IP

The BrazilIP Network 12

Especificação

Descrição TL

Descrição estrutural

Layout

Função

Descrição RTL

Função & Timing

Função & Timing

Função & Timing

consumo, área, etc.

Fluxo de projeto usando SystemVerilog

BRAZIL IPBRAZIL IP

The BrazilIP Network 13

Histórico

Verilog, 1981

SystemVerilog, padrão IEEE em 2005

OVM, Janeiro 2008

BRAZIL IPBRAZIL IP

The BrazilIP Network 14

Código bonito50% é 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 Motorolaregras do Brazil-IP Network http://lad.dsc.ufcg.edu.br/fenix/metodologia

BRAZIL IPBRAZIL 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_inEstilo Pascal: PacketAddr, DataInEstilo Modula: packetAddr, dataIn

Código bonitoidentificadores

BRAZIL IPBRAZIL 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 bonitosufixos de identificadores

BRAZIL IPBRAZIL IP

The BrazilIP Network 17

Comentário

/* Comentário atravessandovárias linhas */

// Comentário até o fim da linha

Cuidado com acentos á é ô à etc.

BRAZIL IPBRAZIL IP

The BrazilIP Network 18

Simulaçãoa 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 IPBRAZIL IP

The BrazilIP Network 19

Simulaçãoo 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 IPBRAZIL IP

The BrazilIP Network 20

Simulaçãocomo 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 IPBRAZIL IP

The BrazilIP Network 21

Simulaçãoum 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 IPBRAZIL IP

The BrazilIP Network 22

Fornecer sinais de entradamodule 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

BRAZIL IPBRAZIL 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 IPBRAZIL IP

The BrazilIP Network 24

Tipos de dados

logic [3:0] d; // verdadeiro/falso ( 1 bit) enum {A, B} s; // enumeraçãointeger 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 flutuantestring s; // string de caractèrescoisa p; // ponteiro para instancia de classe

Não para síntese

BRAZIL IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL IP

The BrazilIP Network 27

Operadores lógicos binários

Deslocamento com preenchimento com ‘0’Deslocamento negativo não pode<< (esquerda) >> (direita)

comparação== != < <= > >=

lógico| & ^ || &&

BRAZIL IPBRAZIL IP

The BrazilIP Network 28

Operador condicional

<condição> ? <expressão_verdadeira> : <expressão_falsa>

BRAZIL IPBRAZIL IP

The BrazilIP Network 29

Precedência de operadores

+ - ! ~ (unario) mais

+ - (binario)

<< >>

< <= => >

== !=

&

^

|

&&

||

?: (condicional) menos

BRAZIL IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL 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 erroincrementa um contador de erros,

visualizar o contador junto às formas de onda e às transações.

BRAZIL IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL IP

The BrazilIP Network 43

Medir cobertura funcional

covergroup cg;coverpoint b { bins b1 = {0, 1, 2, 3}; option.at_least = 100;}

endgroup

Valores quedevem serobservados

Variável a ser coberta

Número de vezesque os valores devemocorrer durantea simulação

BRAZIL IPBRAZIL 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 IPBRAZIL 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 IPBRAZIL IP

The BrazilIP Network 46

Cossimulação – como ?

SystemC compilado pelo gcc vira código objetoVerilog compilado pelo VCS vira código objetoO linker junta tudo em um só executável(Direct Kernel Interface)

Problemas:sincronização de dois tempos simuladosSynopsys resolve

comunicação entre sinais SystemC e sinais Verilogusuário precisa fornecer um arquivo de mapeamento

BRAZIL IPBRAZIL 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 boolocp_MAddr 20 bitvector sc_uint

BRAZIL IPBRAZIL 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 IPBRAZIL 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çõesem sinais

BRAZIL IPBRAZIL 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 sinaisem transações

Modelo do DUV a nível de transação

BRAZIL IPBRAZIL 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

top related