Comandos 1a dia (manhã) TERÇA A) Criar o tb.sv e o duv.sh B) Explicar para que eles servem e contextualizar. C) Visualizar o Waveform. cds irun tb.sv duv.sv simvision & irun -ovmhome /usr/local/cds/ovm-2.0/ tb.sv duv.sv ls $ETBC_TMPL_DIR LEMBRE-SE SEMPRE DE REUSO... cds_gui iccr -gui & 1a dia (tarde) Quarta_MN A) Executar o passo um e vê-lo rodando =) B) Explicar para que serve cada arquivo individualmente C) Construir o modelo de referência do dpcm; colocar os estímulos; colocar a cobertura dos estímulos; D) Visualizar a cobertura e o waveform. Passo 1.1 cds unset ETBC_TLN_DIR etbc dpcm.tln trans dpcm etbc dpcm.tln sdi dpcm etbc dpcm.tln pre_source dpcm etbc dpcm.tln sink dpcm etbc dpcm.tln refmod dpcm etbc dpcm.tln tb_single_refmod dpcm etbc dpcm.tln Makefile_single_refmod dpcm etbc dpcm.tln tb_tcl dpcm 2a dia (manha) quarta_TD A) Fazer backup do passo anterior. Executar o passo 1.2 que é praticamente a mesma coisa do passo anterior... Fazer isso acompanhando o slide. B) Mudar o ref_mod para demostrar o que acontece com um erro... (ref_mod_mutante) C) Fazer cobertura apenas dos saturados e vê o que acontece. D) Faz a cobertura de todos os valores e vê o que está ocorrendo, se tem algum problema de cobertura. Se tiver corrigí-lo. Se não tiver, fazer alguma modificação que insira esse problema, como por exemplo, diminuir o range dos estimulos. Passo 1.2 cds unset ETBC_TLN_DIR etbc dpcm.tln trans dpcm etbc dpcm.tln sdi dpcm etbc dpcm.tln source dpcm etbc dpcm.tln checker dpcm etbc dpcm.tln refmod dpcm etbc dpcm.tln tb_double_refmod dpcm etbc dpcm.tln Makefile_double_refmod dpcm etbc dpcm.tln tb_tcl dpcm covergroup csat; coverpoint tr_out_saida.d { bins tr[] = { -8,7 }; option.at_least = 100; } endgroup 2a dia (manha/tarde) A) Abre o dpcm.sv deleta o miolo do arquivo, deixando apenas a declaração do módulo e das portas. Dentro desse arquivo você colocará o seu duv. B) Explica de um em um os novos arquivos que surgiram. Passo 1.3 cds unset ETBC_TLN_DIR etbc dpcm.tln trans dpcm etbc dpcm.tln sdi dpcm etbc dpcm.tln source dpcm etbc dpcm.tln checker dpcm etbc dpcm.tln refmod dpcm etbc dpcm.tln tb_duv dpcm etbc dpcm.tln Makefile_duv_emulation dpcm etbc dpcm.tln tb_tcl dpcm etbc dpcm.tln tdriver dpcm etbc dpcm.tln tmonitor dpcm etbc dpcm.tln tdriver_duv dpcm etbc dpcm.tln tmonitor_duv dpcm etbc dpcm.tln in_actor dpcm etbc dpcm.tln out_actor dpcm etbc dpcm.tln duv_emulation dpcm etbc dpcm.tln top dpcm etbc dpcm.tln top_tcl dpcm etbc dpcm.tln gene_clock dpcm etbc dpcm.tln axi_cover dpcm 2a dia (tarde) Passo 2.2 Abrir o dpcm.tln e colocar os módulos diff e os módulos sat. Criar pastas diferentes para diff, sat e dpcm. Executar o passo 2.2 3a dia (manha e tarde) A) Terminar os passos; Tirar todas as dúvidas que ainda existem; REALMENTE ENTEDER REUSO E USÁ-LO; SAIR DO CURSO SABENDO COMO SERÁ A ARQUITETURA PARA O SEU MÓDULO. Passo 2.3 Criar todos os passos novamente exceto o trans e o sdi, eles serão utilizados do módulo principal (dpcm). No Makefile você deve indica na linha de comando -incdir ../dpcm para indicar onde está o arquivo trans e na linha do target deve indicar onde este arquivo se encontra ../dpcm/trans.svh Passo 3.1 Criar o source, checker, makefile e tb. RANDOM CONSTRAIT Basico rand int d; constraint d_range { d dist { 0, 1, 2, [3:7] } } d dist { 0, 1, 2, [3:`h7] Com pesos rand int d; constrait d_range { d dist { 0 :/5, [3:7] :/1 }; } Threads no Source fork begin cois1; cois2; end join... Cobertura covergroup crm; coverpoint tr_out_saida.d { bins tr[] = { 0 }; option.at_least = 1; } endgroup Deve: 1 - ser transaction level 2 - random contraint 3 - self checker 4 - coverage cross 5 - testbench antes do DUV