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

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

Upload: internet

Post on 22-Apr-2015

124 views

Category:

Documents


0 download

TRANSCRIPT

Page 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

BRAZIL IPBRAZIL IP

The BrazilIP Network

SystemVerilog paraVerificação funcional

com OVM

Curso do Brazil-IP

Elmar Melcher

UFCG

[email protected]

Page 2: BRAZIL IP The BrazilIP Network SystemVerilog para Verificaçã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

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

BRAZIL IPBRAZIL IP

The BrazilIP Network 3

Plano do tópico continuação

Descrição TLM em SystemVerilog

class

FIFO

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

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

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

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.

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

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;

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

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

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

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

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

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

. . .

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

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

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

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

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

BRAZIL IPBRAZIL IP

The BrazilIP Network 13

Histórico

Verilog, 1981

SystemVerilog, padrão IEEE em 2005

OVM, Janeiro 2008

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

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

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

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

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

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

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

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.

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

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

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

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”

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

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!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

BRAZIL IPBRAZIL IP

The BrazilIP Network 28

Operador condicional

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

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

BRAZIL IPBRAZIL IP

The BrazilIP Network 29

Precedência de operadores

+ - ! ~ (unario) mais

+ - (binario)

<< >>

< <= => >

== !=

&

^

|

&&

||

?: (condicional) menos

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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.

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

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.

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

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.

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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