Summary: | === The increasing demand for shorter time-to-market, combined with increased complexity and performance requirements put a tremendous pressure on post-silicon debug, which is usually the last step prior to chip release. In contrast to pre-silicon techniques, postsilicon debug have two main limitations, controllability and observability, which cause the failure analysis and identification to require significantly more efiort. Post-silicon debug is thus becoming a potential bottleneck in productivity and cost. Therefore it is emerging as one of the most important topics for research and the EDA industry. In this thesis, we present a novel technique to improve observability of circuits during post-silicon debug, where the choice of signals to be monitored is done accordingly to a failure detected. This technique requires an on-chip module to control signal selection, as well as an ofi-chip system to correctly integrate the debug architecture with the target circuit. The on-chip architecture employs a scan-chain to identify any assertion failure and a trace bufier to store the state of a limited set of internal signals. A design for debug module was then developed to integrate the identification of the assertion that has failed, acquired by the scan-chain, to a system that chooses which signals must be captured by the trace bufier in the next execution. One important aspect of the system is the correlation between the signals chosen to be captured and the assertion that has failed. Connection software was developed to do this selection in an early stage of development, before tape-out. This software implements the signal selection based on the cone of infiuence (COI) of the embedded assertions and it is also capable of gathering the assertions in clusters. Besides that, the developed software generates new register transfer level (RTL) code for the circuit under debug, including all the design for debug logic and the connections necessary to its proper functioning.The proposed architecture was tested using a MIPS32 based processor with 40 assertions. This case study is presented to illustrate the eficiency of our rchitecture. The entire debug fiow is reproduced, from design integration, then going through the bug detection and finally the extraction of relevant data to reproduce the error using a design verification tool. Furthermore, a separate study was done to analyze the method proposed for signal selection and it included the analysis of two more designs. The on-chip architecture had no impact over chip performance and the area overhead was minimum, thus it could be employed to post-silicon debug without any major impact. Additionally, the system was capable of extracting relevant data for the creation of lighthouses which were used to produce failing scenarios using a formal verification tool. On the other hand the signal selection based only on the cone of infiuence of the assertions was not sensitive enough to decrease the area of the chip to be analyzed. In more complex systems, the connection between the internal components of the designs analyzed were too high, resulting in cones of infiuence similar to the entire circuit and also between all properties. A second approach was then suggested considering the hierarchical position of signals in the cone of infiuence of each property. Although the signals of the COI sets are almost the same, the distance and the path to an assertion checker define the hierarchical configuration of its COI. The tests performed demonstrated that the second approach is a promising technique for selecting which areas of the chip should be observed according to an assertion failure. However, that approach still relies on the validation engineer knowledge of the system in addition to the development process, so it can be properly configured. In order to automate this process, more research should be done to refine the selection of which hierarchical instances should be considered for the signal selection. === A crescente demanda de mercado combinada ao aumento da complexidade e performance dos designs atuais resultam em uma grande pressão sobre a depuração de silício, que é a última fase de desenvolvimento de um circuito integrado. Ao contrário das técnicas de validação pré-silício, a depuração em silício possui duas grandes limitações: a falta de controlabilidade e a baixa visibilidade. Com isso, esta requere um esforço muito maior para a identificação da causa de um erro. Portanto, a depuração em silício tem se tornado um gargalo na produção e custo de novos circuitos integrados e, por isso, tem sido considerada um tópico de interesse emergente para pesquisadores, bem como para a indústria de eletrônica. O presente trabalho propõe uma nova técnica para melhorar a visibilidade interna dos circuitos durante a depuração em silício, na qual os sinais a serem observados são escolhidos dinamicamente de acordo com alguma falha identificada. Para isso, desenvolveu-se uma arquitetura embutida de depuração para controlar a seleção de sinais, assim como um software para integrar essa arquitetura com o circuito alvo. A arquitetura embutida é composta por um módulo de depuração, que controla uma cadeia de asserções para identificação de falhas, bem como uma memória interna para captura dos sinais. De acordo com a falha identificada, um grupo específico de sinais deve ser capturado. A determinação dos sinais que compõem cada grupo deve ser feita antes da produção do circuito. Para isso, desenvolveu-se um software capaz de selecionar sinais relevantes a uma asserção, sendo a escolha baseada em seu cone de influência (cone of influence ou COI). Este software também é capaz de agrupar as asserções de acordo com a semelhança entre seus COIs. Com isso, o programa gera um novo código para o circuito alvo, incluindo o módulo de depuração bem como as conexões necessárias para o seu funcionamento. A fim de se testar a arquitetura proposta, foi realizado um estudo de caso com um processador baseado na arquitetura MIPS32 com 40 asserções embutidas. O estudo de caso permitiu avaliar a eficiência do sistema proposto, bem como reproduzir o fluxo completo de depuração. Um segundo teste englobando outros dois designs foi realizado com o intuito de analisar o algoritmo de seleção de sinais baseado em cones de influência. A adição da arquitetura de depuração desenvolvida não impactou a performance do circuito, além disso, a área necessária para sua inclusão foi pequena. Isso atesta a viabilidade do uso do sistema embutido para depuração, já que não houve um impacto significativo. Além disso, o módulo de depuração foi capaz de capturar os dados necessários para a reprodução do erro por uma ferramenta de verificação formal. Entretanto, o método proposto para seleção de sinais baseado no cone de influência das asserções se mostrou ineficiente, não havendo grande diferença entre o conjunto de sinais que compõe o cone de influência das propriedades. Isso se deve ao fato dos circuitos atuais, em sua grande maioria, possuírem uma complexidade muito grande, sendo que seus componentes se encontram muito interligados entre si. Visto a dificuldade encontrada, um segundo método para seleção de sinais foi proposto e implementado. Este se baseia não somente no conjunto de sinais que compõe o cone de influência, mas também na hierarquia existente no COI. Por sua vez, essa segunda alternativa se mostrou muito mais promissora e capaz de empregar um foco maior em certas áreas do design que, provavelmente, são mais relevantes para a análise de cada propriedade. Apesar disso, uma melhor investigação deve ser feita a fim de se refinar o resultado dessa técnica, fazendo com que a mesma seja menos dependente do conhecimento do engenheiro quanto à estrutura do circuito, bem como seu processo de desenvolvimento e teste.
|