A Metodologia de Verificação Universal (UVM) é uma forma popular de ajudar a verificar projetos do SystemVerilog e inclui um sistema de configuração que infelizmente tem alguns problemas de velocidade e uso. Rich Edelman, da Siemens EDA, escreveu um artigo detalhado de 20 páginas sobre como evitar esses problemas, e eu o revisei para resumir os destaques para você. Os engenheiros de verificação usam um banco de dados de configuração UVM para definir valores e, em seguida, obtê-los posteriormente em seu teste UVM. Um exemplo de configuração e obtenção de um valor 'T' é:
uvm_config#(T)::set(escopo, nome_caminho_da_instância, nome_campo, valor); uvm_config#(T)::get(escopo, nome_caminho_da_instância, nome_campo, valor);
Conectar o testbench UVM ao dispositivo em teste usa o banco de dados de configuração para passar pelas interfaces virtuais. Existem três problemas ao usar a configuração UVM:
- Código grande, cerca de 2,600 linhas de código
- Requer correspondência exata de tipo, então 'int' e 'bit' não são iguais
- Código lento
Considere o caso do código lento, porque com milhares de chamadas para set() usar nomes com caracteres curinga pode levar até 30 minutos para concluir a fase 'set' e 'get'.
Rich propõe uma nova solução para configurações UVM que possui velocidades muito mais rápidas, levando apenas alguns segundos em comparação.
Se o seu código UVM evitar o uso de curingas e tiver poucos comandos 'set', seu código será executado mais rapidamente.
As possíveis soluções para os problemas de configuração do UVM são:
- Use uma variável global em vez disso
- Use a configuração UVM com um set()
- Use a configuração UVM com alguns set()
- Use uma árvore de configuração
- Tente algo diferente
Essa última abordagem de tentar algo diferente é a nova solução, e ela continua a usar as APIs set() e get(), depois simplifica removendo a parametrização das configurações, remove a precedência e remove a alteração do algoritmo de pesquisa. Os resultados desta nova abordagem são velocidades rápidas.
Seu novo item de configuração é definido na classe derivada de 'config_item', e o exemplo abaixo mostra 'int value” como a propriedade que está sendo definida. Para fins de depuração, você adiciona a função pretty-print.
classe my_special_config_item estende config_item; função nova(string nome = "my_special_config_item"); super.novo(nome); valor interno da função final; string de função virtual convert2string(); return $sformatf("%s - valor=%0d <%s>", get_name(), valor, super.convert2string()); função final classe final
O 'config_item' possui um atributo name, e esse nome é pesquisado, mais o nome da instância. O objeto de configuração também possui uma função get_name() para retornar o nome. Para encontrar qualquer “instance_name.field_name”, o banco de dados de configuração usa uma matriz associativa para pesquisas rápidas e velocidades de criação.
Para rastreabilidade, você pode descobrir quem configurou ou quem chamou get, porque o nome do arquivo e o número da linha são campos nas chamadas de função set() e get().
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
A fila do acessador pode ser impressa durante a depuração para ver quem chamou set() e get().
Para oferecer suporte a curingas, é necessário adicionar um mecanismo de pesquisa usando contêineres. Considere o nome da instância 'top.abcd*_0'.
A parte curinga do nome da instância é tratada usando a árvore do contêiner, em vez da matriz associativa.
Resumo
O compartilhamento de dados entre o módulo/instância e o mundo baseado em classe em um testbench UVM pode ser feito usando o banco de dados de configuração UVM, apenas esteja ciente da lentidão da velocidade. Se sua metodologia usa muitas configurações, considere usar a nova abordagem introduzida, que possui um pacote usando cerca de 300 linhas de código em vez das 2,600 linhas de código no arquivo de banco de dados de configuração UVM.
Leia o artigo completo de 20 páginas, Evitando a loucura da configuração da maneira mais fácil na Siemens EDA.
Blogs relacionados
Compartilhe esta postagem via:
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- Fonte: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :tem
- :é
- :não
- $UP
- 30
- 300
- 600
- a
- Sobre
- adicionar
- acrescentando
- algoritmo
- tb
- an
- e
- qualquer
- api
- abordagem
- SOMOS
- Ordem
- AS
- At
- evitar
- consciente
- b
- BE
- Porque
- ser
- abaixo
- entre
- by
- chamado
- chamadas
- CAN
- casas
- alterar
- classe
- código
- comparação
- completar
- Configuração
- Considerar
- Recipiente
- Containers
- continua
- criação
- dados,
- banco de dados
- definido
- Derivado
- projetos
- detalhado
- dispositivo
- diferente
- feito
- durante
- fácil
- Engenheiros
- Éter (ETH)
- exemplo
- se estende
- RÁPIDO
- mais rápido
- poucos
- Campos
- Envie o
- Encontre
- Escolha
- da
- cheio
- função
- ter
- obtendo
- Global
- ido
- ajudar
- destaques
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTTPS
- if
- in
- inclui
- instância
- em vez disso
- interfaces de
- introduzido
- questões
- IT
- jpg
- apenas por
- Sobrenome
- mais tarde
- Line
- linhas
- olhou
- pesquisa
- grande quantidade
- Fazendo
- correspondente
- max-width
- mecanismo
- Metodologia
- minutos
- minutos
- muito
- nome
- nomes
- Novo
- nova solução
- número
- objeto
- of
- on
- ONE
- só
- or
- Fora
- pacote
- Papel
- parte
- passar
- fase
- platão
- Inteligência de Dados Platão
- PlatãoData
- mais
- Popular
- Publique
- precedência
- problemas
- propriedade
- propõe
- fins
- remove
- removendo
- requeridos
- Resultados
- retorno
- Rico
- Execute
- escopo
- segundo
- Vejo
- conjunto
- contexto
- Shows
- Siemens
- simplifica
- lento
- lentidão
- So
- solução
- Soluções
- alguns
- algo
- velocidade
- velocidades
- Tanga
- resumir
- super
- ajuda
- .
- T
- Tire
- tomar
- teste
- que
- A
- deles
- então
- Lá.
- Este
- isto
- milhares
- três
- Através da
- tempo
- para
- topo
- tópico
- Rastreabilidade
- árvore
- tentando
- tipo
- para
- infelizmente
- Universal
- Uso
- usar
- usos
- utilização
- valor
- Valores
- variável
- Verificação
- verificar
- via
- Virtual
- Caminho..
- qual
- QUEM
- precisarão
- de
- mundo
- escreveu
- Você
- investimentos
- zefirnet