Guia de Redação da Plataforma de Teste de Verificação do SystemVerilog Capítulo 6 Randomização

6.11 Técnicas de restrição e técnicas
6.11.1 Restrições usando variáveis
Use variáveis ​​aleatórias para definir restrições do limite superior ao atribuir valores aleatoriamente.
Exemplo 6.33: Usando variáveis ​​para definir restrições do limite superior

class bounds;
	rand int size;
	int max_size=100;
	constraint c_size {
		size inside {[1:max_size]};
	}
endclass

Alterando o valor da variável max_size, o limite superior do tamanho da variável aleatória pode ser alterado.
O uso de variáveis ​​em restrições dist pode ativar ou desativar certos valores ou intervalos.
Exemplo 6.34 Restrição dist com variáveis ​​ponderadas

typedef enum {READ8, READ16,READ32} read_e;
class ReadCommands;
	rand read_e read_cmd;
	int read8_wt=1, read16_wt=1, read32_wt=1;
	constraint c_read {READ8:=read8_wt,
					   READ16:=read16_wt,
					   READ32:=read32_wt};
	}
endclass

Alterando o valor da variável de peso read8_wt, a probabilidade do comando de geração de restrição pode ser alterada. Mais importante, certos comandos podem ser proibidos configurando o peso para 0.
6.11.2 Usando valores não aleatórios
Se um conjunto de restrições gerou quase todos os vetores de excitação desejados durante o processo de randomização, mas ainda existem alguns tipos de vetores de excitação, você pode chamar a função randomiz () primeiro e usar a variável aleatória Defina o valor como um valor esperado fixo para resolver. O valor fixo da excitação definido pode violar as restrições relevantes.
Se apenas algumas variáveis ​​precisarem ser modificadas, você poderá usar a função rand_mode () para definir essas variáveis ​​como variáveis ​​não aleatórias.
Exemplo 6.35 Use rand_mode () para proibir a aleatorização de variáveis ​​SV Green Paper P155
p.length.rand_mode (0); // Defina o comprimento do pacote como um valor não aleatório
p.length = 42; // Defina o comprimento do pacote como uma constante
6.11.3 Verificando a validade dos valores com restrições
Após randomizar um objeto e alterar os valores de suas variáveis, é possível verificar se o objeto ainda é válido, verificando se os valores obedecem às restrições. Ao chamar a função handle.randomize (null), o System Verilog trata todas as variáveis ​​como variáveis ​​não aleatórias e apenas verifica se essas variáveis ​​atendem às restrições.
6.11.4 Aleatorizar variáveis ​​individuais Quando você
chama randomize (), apenas um subconjunto de variáveis ​​é passado e apenas algumas variáveis ​​da classe são randomizadas.
6.11.5 Ativando ou desativando restrições
Use operadores condicionais (-> ou if-else) para construir restrições controladas por variáveis ​​não aleatórias.
Um método mais comum é estabelecer um conjunto independente de restrições para cada instrução e fechar todas as outras restrições quando em uso.
6.11.6 Usando restrições em linha
durante o teste 6.11.7 O uso de restrições externas durante o teste
pode definir uma classe em um arquivo, essa classe possui apenas uma restrição vazia e, em seguida, define as diferentes restrições em cada teste diferente Versão para gerar diferentes incentivos.

6.12 Erros comuns na randomização
6.12.1 Cuidado com variáveis ​​assinadas
Não use tipos assinados em restrições aleatórias, a menos que seja necessário.
6.12.2 Dicas para melhorar o desempenho do solucionador
Evite usar operações complexas, como divisão, multiplicação e módulo.

6.13 Restrições de iteração e array
6.14 Gere excitações e cenários atômicos

Como gerar seqüências de transação aleatórias?
Matriz de seqüência
aleatória de objetos aleatórios
6.15 Controle aleatório
6.16 Gerador de números aleatórios
6.17 Configuração aleatória de dispositivos
6.18 Conclusão A

TRC (teste aleatório restrito) é a única maneira viável de gerar o estímulo necessário para verificar projetos complexos. O System Verilog fornece vários métodos para gerar excitações aleatórias.

Publicado 38 artigos originais · Gosto 29 · Visita 10.000+

Acho que você gosta

Origin blog.csdn.net/weixin_45270982/article/details/95859255
Recomendado
Clasificación