• Nenhum resultado encontrado

2.3), ou seja, deriva¸c˜ao de implica¸c˜oes entre sinais de um circuito. Essas implica¸c˜oes s˜ao utilizadas para provar a equivalˆencia entre os dois circuitos que comp˜oem o miter atrav´es de um procedimento descrito a seguir.

O primeiro passo do procedimento consiste na justifica¸c˜ao (ver Se¸c˜ao 2.3) de todas as portas l´ogicas pertencentes ao TFI de uma sa´ıda escolhida. Durante a justifica¸c˜ao de uma porta l´ogica, novas portas podem se tornar n˜ao justificadas sendo necess´arias novas justifica¸c˜oes e, assim, sucessivamente. Esses casos s˜ao tratados de forma recursiva. O procedimento utiliza o n´ıvel de recurs˜ao inicial igual a 1.

A justifica¸c˜ao acontece atrav´es da atribui¸c˜ao do valor l´ogico 0 nas sa´ıdas das portas l´ogicas AND e NOR e atrav´es da atribui¸c˜ao do valor l´ogico 1 nas sa´ıdas das portas l´ogicas OR e NAND. Por meio das justifica¸c˜oes, diversas implica¸c˜oes diretas e indiretas s˜ao derivadas e armazenadas.

Ap´os derivar e armazenar as implica¸c˜oes para os dois circuitos que comp˜oem miter, tenta-se justificar a sa´ıda do mesmo com o valor l´ogico 1, isto ´e, tenta-se encontrar um conjunto de assinalamentos que prove que a sa´ıda do miter pode alcan¸car o valor l´ogico 1. Se existir alguma justifica¸c˜ao, os circuitos n˜ao s˜ao equivalentes. Se exis- tirem implica¸c˜oes que provem que tal assinalamento ´e inconsistente, os circuitos s˜ao equivalentes. Se n˜ao existirem nem uma justifica¸c˜ao e nem uma prova de algum assi- nalamento inconsistente para a sa´ıda do miter, ´e necess´ario repetir o primeiro passo, incrementando o n´ıvel de recurs˜ao.

A maior limita¸c˜ao desse procedimento ´e que a complexidade de tempo cresce expo- nencialmente em fun¸c˜ao do n´ıvel de recurs˜ao, sendo intrat´avel mesmo para n´ıveis de recurs˜ao pequenos (acima de 4). A grande vantagem ´e que se os circuitos s˜ao similares, o n´ıvel de recurs˜ao ´e pequeno. Caso contr´ario, o RL n˜ao deve ser utilizado como motor ´

unico de resolu¸c˜ao.

3.7

CEC Utilizando Resolvedor de SAT

Apesar de serem amplamente conhecidos desde o surgimento do problema de CEC, os resolvedores de SAT foram ignorados por muitos anos pela comunidade de CEC devido `a ineficiˆencia dos mesmos. Para resolver uma instˆancia de um problema de CEC entre dois circuitos utilizando um resolvedor de SAT, dois passos iniciais s˜ao necess´arios: a cria¸c˜ao de um miter e a transforma¸c˜ao das portas l´ogicas em cl´ausulas em CNF. Com o circuito transformado em uma f´ormula com cl´ausulas em CNF, que ´e a entrada padr˜ao da maior parte dos resolvedores de SAT atuais, basta criar uma propriedade que obrigue a sa´ıda do miter ser 1. Se o resolvedor encontrar algum assinalamento para a f´ormula com a propriedade, esse ser´a um contra-exemplo que prova que os circuitos n˜ao s˜ao equivalentes; se o resolvedor n˜ao encontrar tal assinalamento, os circuitos s˜ao equivalentes.

3.7 CEC Utilizando Resolvedor de SAT 35

A partir da publica¸c˜ao de Larrabee [Lar92], houve um retorno no interesse em se aplicar resolvedores de SAT nos problemas de ATPG existentes na ind´ustria de circuitos integrados. Em rela¸c˜ao ao problema de CEC, a maior motiva¸c˜ao originou-se dos grandes avan¸cos obtidos nos resolvedores de SAT, principalmente ap´os a publica¸c˜ao do resolvedor de SAT denominado GRASP [SS96].

Entretanto, as t´ecnicas para CEC utilizando resolvedores de SAT ainda eram bas- tante ineficientes. A primeira metodologia que obteve resultados um pouco melhores quando comparada com os obtidos com BDDs e ATPG foi a de Silva e Silva [SS99]. Como j´a era clara a ineficiˆencia dos m´etodos para resolver instˆancias de problemas de CEC baseados em resolvedores de SAT, Silva e Silva [SS99] propuseram duas impor- tantes melhorias: a utiliza¸c˜ao de RL integrado ao resolvedor de SAT e o armazena- mento da estrutura topol´ogica do circuito, evitando que a mesma fosse perdida durante a transforma¸c˜ao para CNF.

O RL foi utilizado de duas formas para aumentar o desempenho do resolvedor de SAT. A primeira consistiu em fazer um pr´e-processamento2 seja na f´ormula em CNF

que descreve o circuito, ou seja, nas portas l´ogicas do pr´oprio circuito miter. Esse pr´e-processamento gerava muitas cl´ausulas de implica¸c˜oes atrav´es de RL e as mesmas eram concatenadas `a f´ormula do problema original com o intuito de reduzir o n´umero de retrocessos e, conseq¨uentemente, o tempo para resolver a instˆancia. A segunda forma consistiu em integrar o procedimento de RL dentro dos motores de dedu¸c˜ao e decis˜ao do resolvedor de SAT. Apesar de ter obtido bons resultados com ambas as formas comparando-se com as outras t´ecnicas baseadas em resolvedores de SAT, a metodologia n˜ao foi capaz de superar os resultados obtidos com motores de CEC baseados em BDD e ATPG.

O trabalho de Goldberg et al. [GPB01] foi o primeiro a demonstrar, atrav´es de resultados experimentais, que os motores baseados em resolvedores de SAT poderiam obter resultados t˜ao bons quanto os resultados das metodologias baseadas no motor BDD. Os autores estenderam as t´ecnicas de cortes utilizadas nas metodologias com motor BDD e aplicaram em uma metodologia com um motor SAT. Em detrimento de se construir um BDD para o corte, a ferramenta proposta utiliza um resolvedor de SAT simples, baseado em DPLL, com o intuito de provar a equivalˆencia entre os circuitos. Se um resultado negativo surgir, isto ´e um indicativo de que ambos os circuitos podem n˜ao ser equivalentes, um resolvedor SAT mais robusto (GRASP de [SS96]) ´e utilizado para provar se o resultado era um falso negativo ou um negativo verdadeiro.

As maiores contribui¸c˜oes desse trabalho foram a demonstra¸c˜ao de que metodologias para CEC utilizando o motor SAT poderiam ser t˜ao eficientes quanto as metodologias que utilizam o motor BDD; e a proposta de uma heur´ıstica de cortes que funciona bem

2Devido a importˆancia das t´ecnicas de pr´e-processamento para SAT, todo o Cap´ıtulo 4 foi dedicado