Skip navigation
Please use this identifier to cite or link to this item: https://repositorio.ufpe.br/handle/123456789/2452
Title: The development of a hardware abstraction layer generator for system-on-chip functional verification
Authors: Sampaio Lins, Tiago
Keywords: Microeletrônica; Circuitos semicondutores
Issue Date: 31-Jan-2009
Publisher: Universidade Federal de Pernambuco
Citation: Sampaio Lins, Tiago; Natividade da Silva Barros, Edna. The development of a hardware abstraction layer generator for system-on-chip functional verification. 2009. Dissertação (Mestrado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2009.
Abstract: 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
URI: https://repositorio.ufpe.br/handle/123456789/2452
Appears in Collections:Dissertações de Mestrado - Ciência da Computação

Files in This Item:
File Description SizeFormat 
arquivo3518_1.pdf1.02 MBAdobe PDFView/Open


This item is protected by original copyright



Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.