Made available in DSpace on 2014-06-12T15:58:20Z (GMT). No. of bitstreams: 2
arquivo3518_1.pdf: 1045256 bytes, checksum: e867a269b3f60e64d58cb765a97aec17 (MD5)
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2009 / Conselho Nacional de Desenvolvimento Científico e Tecnológico / Atualmente o processo de verificação funcional de System-on-Chip (SoC) complexos
envolve centenas de engenheiros ao longo do projeto de um circuito integrado. Tal esforço
visa garantir um nível de confiança satisfatório antes do mesmo ser enviado para o tapeout .
Estudos recentes revelaram que a etapa de verificação funcional constitui de 70% a
80% do esforço total do projeto sendo a etapa mais onerosa em termos de custo e tempo
dentro do fluxo de desenvolvimento de um SoC.
Devido às restrições de time-to-market e a atual complexidade dos SoCs, as equipes
de verificação funcional não usufruem do tempo necessário para obter o conhecimento do
sistema a ser verificado em profundidade. Contudo eles precisam garantir que todos os
módulos de propriedades intelectual (IP) presentes em um SoC continuam funcionando de
acordo com a sua especificação após integrados.
Na verificação funcional existem várias técnicas de como proceder com a mesma.
Atualmente, a mais utilizada é a verificação com auxílio de um processador processor
driven tests . Dado que nesses complexos sistemas sempre há um processador o qual é
responsável pelo controle do sistema. Uma forma de verificar se todos os IPs dentro da
hierarquia do SoC funcionam de acordo com suas especificações é executar aplicações em
software neste processador e verificar a saída do sistema. A idéia consiste em estimular um
IP através de rotinas em software comparando o resultado gerado com o esperado. Nesta
abordagem, um dos problemas existente consiste na escrita dos casos de testes. Uma vez
que nesses sistemas encontramos uma grande quantidade de IPs, e estando os mesmos
dispostos em diferentes níveis de hierarquia de barramentos dentro do SoC, acessar suas
interfaces e seus componentes internos utilizando uma linguagem estruturada, como C, é
bastante complexo.
Os IPs são acessados via dispositivo de entrada e saída baseado em memória, ou seja,
cada IP possui um ou mais endereços e a decodificação desses endereços é feita pelos
barramentos existentes no sistema. Para o processador é transparente se uma rotina de
escrita ou leitura vai ser processada por um bloco de memória de fato ou por um IP com
um conjunto de registradores internos. Desta forma, quando o engenheiro de verificação
está escrevendo os casos de testes ele precisa lidar com manipulação de endereços, macros
e/ou estruturas, defines, ou ainda, partir para uma linguagem de montagem.No processo de escrita dos casos de testes, as rotinas que implementam o acesso aos
registradores e seus campos consistem em uma atividade fundamental para permitir o teste
de funcionalidade do sistema. A essas rotinas encarregadas de ler e escrever valores nos
registradores internos do IPs de um SoC chamamos de camada de abstração de hardware
Hardware Abstraction Layer (HAL).
A STMicroelectronics, uma das lideres mundial na industria de semicondutores,
através do seu grupo de verificação funcional decidiu desenvolver uma metodologia para
verificação funcional de SoC que fizesse o uso de ferramentas específicas para automatizar
parte das atividades relacionadas a esta fase do projeto de um circuito integrado. Uma
necessidade do time de verificação funcional, no contexto desta metodologia, consistia em
possuir uma ferramenta capaz de automatizar o processo de geração dessa HAL, uma vez
que os engenheiros de verificação tinham bastante trabalho na escrita dessas rotinas e em
muitos casos elas eram responsáveis por falhas no processo de verificação funcional. O
interesse do time era permitir que o engenheiro focasse seu trabalho no teste de
funcionalidade do SoC não despendendo seu tempo na implementação das rotinas de
acesso aos registradores dos IPs.
Este trabalho foi desenvolvido em parceira com a STMicroelectronics visando
estudar e propor uma ferramenta capaz de atender tal necessidade. O trabalho propõe a
implementação de uma ferramenta capaz de gerar a camada de abstração de hardware.
A ferramenta proposta, HAL generator , é um dos instrumentos que suportam a
automação de parte do processo de verificação funcional. Esta ferramenta é responsável
pela geração automática de uma API que permite a manipulação dos valores dos
registradores. A manipulação dos valores pode ser feita em todo registrador ou em subcampos
do mesmo através de uma interface em um alto nível de abstração. Os engenheiros
de verificação utilizam as funções geradas pelo HAL generator para ler e escrever
valores nos registradores do SoC a ser verificado.
A ferramenta é capaz de gerar tanto a declaração como definição das funções. As
funções são geradas na linguagem de programação C e funcionam como uma API para ler
e escrever valores nos registradores. Com o apoio dessas funções geradas pela ferramenta,
a codificação dos casos de testes fica mais fácil e produtiva, permitindo ainda a
reutilização dos casos de testes em outros sistemas dado que a API gerada pelo HAL
generator segue um padrão na geração das funções o qual garante que um caso de testepara um mesmo IP possa ser executado em contextos diferentes, bastando apenas executar
o HAL generator para cada cenário
Identifer | oai:union.ndltd.org:IBICT/oai:repositorio.ufpe.br:123456789/2452 |
Date | 31 January 2009 |
Creators | Sampaio Lins, Tiago |
Contributors | Natividade da Silva Barros, Edna |
Publisher | Universidade Federal de Pernambuco |
Source Sets | IBICT Brazilian ETDs |
Language | Portuguese |
Detected Language | Portuguese |
Type | info:eu-repo/semantics/publishedVersion, info:eu-repo/semantics/masterThesis |
Source | reponame:Repositório Institucional da UFPE, instname:Universidade Federal de Pernambuco, instacron:UFPE |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.003 seconds