• Nenhum resultado encontrado

A Nova T´ecnica de Pr´e-Processamento Proposta

Como o pr´e-processamento tornou-se um passo essencial para o aumento do de- sempenho das t´ecnicas de verifica¸c˜ao formal baseadas em resolvedores de SAT, a se¸c˜ao seguinte apresenta a t´ecnica proposta no presente trabalho.

4.3

A Nova T´ecnica de Pr´e-Processamento Proposta

Esta se¸c˜ao detalha a t´ecnica de pr´e-processamento que deriva informa¸c˜oes redundantes dos dois circuitos sob CEC de modo a reduzir o tempo utilizado pelo Resolvedor de Satisfabilidade para a prova de equivalˆencia entre ambos circuitos. Para fazer a Veri- fica¸c˜ao de Equivalˆencia utilizando essa t´ecnica, os seguintes passos devem ser executa- dos. Primeiro, um circuito miter para os dois circuitos nos quais a equivalˆencia deve ser provada deve ser criado, passo necess´ario para todas as t´ecnicas de CEC baseado em SAT. Segundo, a ferramenta de pr´e-processamento denominada Vimplic deve percorrer a descri¸c˜ao do circuito miter gerando cl´ausulas bin´arias (implica¸c˜oes ou informa¸c˜oes redundantes) como explicado na Se¸c˜ao 2.3. Terceiro, o circuito miter ´e convertido para uma f´ormula em CNF. Essa f´ormula ´e concatenada `a propriedade que garante a equivalˆencia entre os circuitos miter e tamb´em ´e concatenada `a conjun¸c˜ao de cl´ausulas que foi derivada pela Vimplic; o que resulta em uma nova f´ormula em CNF. Quarto e ´

ultimo, essa nova f´ormula ´e submetida ao resolvedor de SAT para que o mesmo prove a equivalˆencia entre os circuitos miter.

Para executar os passos descritos anteriormente, a t´ecnica de pr´e-processamento para Verifica¸c˜ao de Equivalˆencia apresentada nessa se¸c˜ao utiliza quatro ferramentas. A primeira ´e uma ferramenta que cria o circuito miter a partir de dois circuitos, con- verte o miter para uma f´ormula em CNF e adiciona a propriedade. A segunda ´e a ferramenta de pr´e-processamento proposta. A terceira ´e uma ferramenta muito sim- ples que apenas concatena as cl´ausulas do circuito miter `a conjun¸c˜ao de cl´ausulas produzidas pela Vimplic. A ´ultima ferramenta ´e um resolvedor de SAT como, por exemplo, o Berkmin561 [GN02] ou o Minisat [ES03].

A primeira e a terceira ferramentas s˜ao muito simples enquanto a quarta ferra- menta, embora n˜ao seja t˜ao simples, ´e disponibilizada em diferentes implementa¸c˜oes. A segunda ferramenta, que ´e a ferramenta que fornece suporte `a t´ecnica de pr´e- processamento apresentada nesse trabalho, ´e descrita em detalhes no Algoritmo 2.

O Algoritmo 2 representa o algoritmo implementado na ferramenta Vimplic e exe- cuta os seguintes passos. Primeiro, a ferramenta lˆe a descri¸c˜ao do circuito miter e cria duas estruturas b´asicas: um grafo de implica¸c˜oes e uma tabela de (Assinalamento)- (Conjunto Completo de Justifica¸c˜oes), ambas vazias. O grafo de implica¸c˜oes ´e um grafo como explicado na Se¸c˜ao 2.4. A tabela ´e uma estrutura de dados que armazena em cada uma de suas entradas um assinalamento na sa´ıda de uma porta l´ogica que torna essa porta n˜ao-justificada (ver defini¸c˜ao na Se¸c˜ao 2.3). Juntamente com esse assi-

4.3 A Nova T´ecnica de Pr´e-Processamento Proposta 42

nalamento, o conjunto completo de justifica¸c˜oes que torna a porta l´ogica justificada tamb´em ´e armazenado (ver defini¸c˜ao na Se¸c˜ao 2.3).

No segundo passo, cada porta l´ogica lida do arquivo ´e transformada em um conjunto de v´ertices e arestas; esse conjunto ´e adicionado ao grafo de implica¸c˜oes (conforme ex- plicado na Se¸c˜ao 2.4). Enquanto essa transforma¸c˜ao ´e feita, a tabela (Assinalamento)- (Conjunto Completo de Justifica¸c˜oes) ´e preenchida. Apenas as portas l´ogicas BUFFER e NOT s˜ao ignoradas porque essas portas n˜ao podem se tornar n˜ao-justificadas.

No terceiro passo, uma Busca em Largura ´e executada na estrutura topol´ogica do circuito miter. Sempre que uma porta l´ogica, com exce¸c˜ao das portas BUFFER e NOT, ´e encontrada, o par de (Assinalamento)-(Conjunto Completo de Justifica¸c˜oes) para essa porta l´ogica ´e buscado da tabela. O par ´e usado para derivar implica¸c˜oes indiretas para a porta l´ogica encontrada. Relembrado a Se¸c˜ao 2.3, implica¸c˜oes indiretas s˜ao geradas pela deriva¸c˜ao de implica¸c˜oes diretas para cada justifica¸c˜ao do conjunto completo de justifica¸c˜oes; e executando, em seguida, a opera¸c˜ao de interse¸c˜ao entre os assinalamentos resultantes das implica¸c˜oes diretas. Isso ´e feito no quarto passo do Algoritmo 2.

O quinto passo consiste em aplicar sucessivamente o procedimento de deriva¸c˜ao de implica¸c˜oes simples em v´arios n´ıveis de portas l´ogicas de modo a derivar implica¸c˜oes diretas. Finalmente, no sexto e ´ultimo passo, as implica¸c˜oes simples s˜ao derivadas por uma Busca em Largura com o procedimento de ativa¸c˜ao (ver defini¸c˜ao na Se¸c˜ao 2.4).

Ap´os a descri¸c˜ao do algoritmo, podem ser destacadas as principais diferen¸cas entre a t´ecnica proposta e o trabalho de Arora e Hsiao [AH04]:

• A t´ecnica proposta utiliza o mecanismo de justifica¸c˜ao para a deriva¸c˜ao de im- plica¸c˜oes enquanto o mecanismo utilizado por Arora e Hsiao n˜ao ´e claramente descrito no seu artigo [AH04].

• Para derivar as implica¸c˜oes, a t´ecnica proposta utiliza o grafo de implica¸c˜oes par- cial, j´a Arora e Hsiao n˜ao explicam qual tipo de grafo de implica¸c˜oes ´e utilizado. • A presente t´ecnica utiliza apenas as implica¸c˜oes indiretas para aumentar a eficiˆencia

do resolvedor de SAT, j´a a t´ecnica de Arora e Hsiao utiliza implica¸c˜oes diretas, indiretas e estendidas. No entanto, as defini¸c˜oes utilizadas no artigo desses au- tores n˜ao condizem com as defini¸c˜oes originalmente publicadas por Kunz and Pradhan [KP94].

• A t´ecnica proposta n˜ao utiliza parˆametros espec´ıficos dos circuitos e, al´em disso, a mesma foi provada correta na deriva¸c˜ao de implica¸c˜oes. A t´ecnica de Arora e Hsiao n˜ao possui nenhuma dessas duas caracter´ısticas.

4.3 A Nova T´ecnica de Pr´e-Processamento Proposta 43

Algoritmo 2: Algoritmo de pr´e-processamento implementado na Vimplic Vimplic () In´ıcio

// Primeiro Passo

Lˆe o circuito miter no formato BENCH de um arquivo.

Cria um grafo de implica¸c˜oes parcial ou completo vazio de acordo com o parˆametro em linha de comando.

Cria uma tabela de (Assinalamento)-(Conjunto Completo de Justifica¸c˜oes) vazia - Tabela ACCJ.

// Segundo Passo

Enquanto ( N˜ao chegar ao fim do arquivo ) In´ıcio Lˆe porta l´ogica do arquivo.

Converte a porta l´ogica para a sua representa¸c˜ao no grafo de implica¸c˜oes. Se ( A porta l´ogica n˜ao for uma porta BUFFER ou uma NOT ) In´ıcio

Armazena o assinalamento a sa´ıda da porta l´ogica atual juntamente com o conjunto completo de justifica¸c˜oes na tabela ACCJ.

Fim Fim

// Terceiro Passo

Executa a Busca em Largura no circuito miter.

Para Cada ( Sa´ıda de porta l´ogica encontrada ) In´ıcio

Obtenha o assinalamento de sa´ıda a dessa sa´ıda de porta l´ogica da tabela ACCJ.

Obtenha tamb´em o conjunto completo de justifica¸c˜oes Acsj para esse

assinalamento.

DerivaImplica¸c˜oesIndiretas( a, Acsj );

Fim Fim

// Quarto Passo

DerivaImplica¸c˜oesIndiretas ( Assinalamento a, Conjunto Completo de Justifica¸c˜oes Acsj ) In´ıcio

Para Cada (Assinalamento b da Acsj ) In´ıcio

DerivaImplica¸c˜oesDiretas ( b );

Armazena o conjunto de assinalamentos encontrados. Fim

Faz a opera¸c˜ao de interse¸c˜ao entre os elementos do conjunto direto de implica¸c˜oes encontrado.

Para Cada (Assinalamento c obtido da opera¸c˜ao de interse¸c˜ao) In´ıcio Imprime a implica¸c˜ao b → c.

Fim Fim

// Quinto Passo

DerivaImplica¸c˜aoDireta ( Assinalamento b ) In´ıcio

Enquanto ( A lista de assinalamentos n˜ao estiver vazia ) In´ıcio DerivaImplica¸c˜oesSimples( Assinalamento b ) ;

Adiciona um novo assinalamento `a lista de novos assinalamentos. Fim

Fim

// Sexto Passo

DerivaImplica¸c˜oesSimples ( Assinalamento b ) In´ıcio

Executa a Busca em Largura sobre o grafo de implica¸c˜oes a partir do n´o inicial b. Armazena a lista dos n´os alcan¸cados.