Академический Документы
Профессиональный Документы
Культура Документы
Palavras-Chave:
Engenharia inversa, replicao de circuitos, aquisio no invasiva, correspondncia
entrada-sada, aproximao heurstica.
ABSTRACT
In this master thesis, is developed a system to replicate digital integrated circuits
(combinational and sequential), by observing the normal operation.
The developed system is characterized by the capacity to extract and describe
the behaviour of a digital integrated circuit in VHDL language, during its normal
operation, using non-invasive and automated techniques, supported by algorithms for
data acquisition and analysis.
The developed system is based on two main modules: a software module which
contains analysis and control algorithms and also makes the management of the system
(hosted on a computer) and a data acquisition module (hardware) consisting of a circuit
able to realize the measurements required for system operation, commanded by the
software module. Communication between two modules is made via serial port.
The developed algorithms perform a input-output correspondence analysis,
seeking to apply an approach to a combinatorial circuit if possible. Otherwise, heuristic
methods are used to do an approach to a sequential circuit, by description of a
equivalente state machine. Constants inputs or outputs are previously identified and
excluded from the analysis process, for simplification purposes.
The results demonstrate that it is possible to replicate the observed behavior in
digital circuits (combinational and sequential) since the number of samples collected is
adequate. It is also observed that the developed method replicates the functionality of
the integrated circuit under conditions where the circuit is inserted.
Keywords:
Reverse engineering, circuits replication, non-invasive acquisition, input-output
correspondence, heuristic approach.
ii
AGRADECIMENTOS
Em primeiro lugar quero agradecer ao meu orientador, o Prof. Dionsio Barros,
por todo o tempo despendido na orientao deste trabalho, pelo apoio prestado e ideias
sugeridas que contriburam para a concluso com sucesso deste projeto e todo o
conhecimento que me transmitiu ao longo do meu percurso acadmico.
Quero igualmente agradecer ao Prof. Elias Rodrigues, co-orientador desta
dissertao, pelos diferentes pontos de vista que proporcionou, muito teis em diversas
situaes bem como pelo apoio e disponibilidade manifestados ao longo da realizao
ao longo do projeto.
minha famlia, em particular aos meus pais, pela oportunidade que me
concederam de ter um curso superior e uma esperana de um futuro melhor.
Ao Ricardo Sousa pelas trocas de ideias construtivas partilhadas ao longo do
trabalho e aos colegas com quem tive a honra de partilhar o laboratrio ao longo do
trabalho e que me proporcionaram momentos inesquecveis.
Ao engenheiro Filipe Santos pelo apoio prestado no laboratrio ao longo do
projeto.
Um agradecimento especial Andreia Correia que me proporcionou as energias
necessrias para a realizao deste trabalho.
A todos os que de alguma forma contriburam para a concluso com sucesso
desta dissertao, o meu obrigado.
iii
LISTA DE ABREVIATURAS
ADC Conversor de analgico para digital (Analog to Digital Converter)
ALU Unidade Lgica e Aritmtica (Arithmetic Logic Unit)
ASIC Application-Specific Integrated Circuit
AVMG Automatic Verilog Model Generator
BCD Codificao binria decimal (Binary-Coded Decimal)
CAD Desennho assistido por computador (Computer Aided Design)
CMOS Complementary Metal-Oxide Semiconductor
COM Component Object Model
CPLD Complex Programmable Logic Device
DAC Conversor de analgico para digital (Digital to Analog Converter)
EEPROM Electrically-Erasable Programmable Read-Only Memory
EI Engenharia Inversa
FPGA Field-Programmable Gate Array
FSM Mquina de estados finita (Finite State Machine)
GND Ground
HDL Linguagem de descrio de hardware (Hardware Description Language)
IC Integrated Circuit
LED Dodo emissor de luz (Light Emitting Diode)
LUT Look Up Table
OCR Reconhecimento tico de carateres (Optical Character Recognition)
PCB Placa de circuito impresso (Printed Circuit Board)
PLD Dispositivo Lgico programvel (Programmable Logic Device)
RAM Random Access Memory
RTL Register Transfer Level
SEM Scanning Eletron Microscope
TBJ Transstor Bipolar de Juno
TTL Transstor-Transistor Logic
iv
NDICE
Resumo ......................................................................................................................... i
Abstract ........................................................................................................................ ii
Agradecimentos ............................................................................................................iii
Lista de abreviaturas.................................................................................................... iv
ndicevi
1. Introduo ................................................................................................................. 1
1.1. Motivao ........................................................................................................... 1
1.2. Objetivos ............................................................................................................ 2
1.3. Organizao e contedos ................................................................................... 3
2. Estado da arte .......................................................................................................... 4
2.1. Introduo .......................................................................................................... 4
2.2. Engenharia inversa............................................................................................. 4
2.2.1. Aplicaes da engenharia inversa ................................................................ 4
2.2.2. Tcnicas de engenharia inversa ................................................................... 6
2.3. Sintetizao de circuitos digitais ....................................................................... 28
3. Arquitetura do sistema e algoritmos de replicao de circuitos digitais ................... 29
3.1. Introduo ........................................................................................................ 29
3.2. Funcionamento geral e arquitetura do sistema ................................................. 29
3.3. Parmetros de configurao inicial do sistema ................................................. 32
3.4. Algoritmos de identificao dos pinos destinados a alimentao ...................... 32
3.4.1. Funo do algoritmo................................................................................... 32
3.4.2. Dados requeridos pelo algoritmo ................................................................ 33
3.4.3. Gerao de instrues para aquisio de medies diferenciais analgicas
............................................................................................................................. 33
3.4.4. Anlise e processamento dos dados .......................................................... 35
3.4.5. Sensibilidade a erros .................................................................................. 38
3.5. Algoritmos de identificao de sinais analgicos .............................................. 39
3.5.1. Funo do algoritmo................................................................................... 39
3.5.2. Dados requeridos pelo algoritmo ................................................................ 39
3.5.3. Gerao de instrues para aquisio de medies analgicas
referenciadas ....................................................................................................... 40
3.5.4. Anlise e processamento dos dados .......................................................... 41
vi
vii
B.
viii
ix
1. Introduo
1.1. Motivao
Atualmente os circuitos eletrnicos so fundamentais no suporte da tecnologia
tal como a conhecemos. Os circuitos integrados esto presentes em quase todos os
aparelhos que utilizamos, tendo crescido exponencialmente nas ltimas dcadas e com
previso de crescimento nas prximas dcadas [1].
A substituio de um circuito integrado (IC Integrated Circuit) um
procedimento simples quando o mesmo se encontra perfeitamente identificado ou o seu
funcionamento conhecido. No entanto, quando no existe conhecimento do IC
avariado (por estratgia do fabricante, degradao do encapsulamento, ) nem do seu
funcionamento a substituio do mesmo assume contornos difceis.
A abordagem que fundamenta esta dissertao assenta no princpio que o
componente que substitui o IC avariado no necessita de ser exatamente igual, mas
sim um componente que realize as mesmas funcionalidades. Assim sendo, se as
funcionalidades de um determinado IC forem observadas durante o seu funcionamento
normal, possvel construir um componente alternativo com funcionalidades
semelhantes, capaz de substituir o IC observado, no sistema em que se encontra
inserido (ou num sistema igual).
A engenharia inversa de circuitos eletrnicos j utilizada h algumas dcadas,
no entanto a maioria dessas tcnicas baseiam-se em anlises estruturais, manuais e
so invasivas, ou seja, inutilizam o IC alvo de engenharia inversa [2]. Mais recentemente
a investigao nesta rea est direcionada para a automatizao destes processos bem
como o desenvolvimento de tcnicas no invasivas [2].
As razes mencionadas motivaram ao desenvolvimento de algoritmos capazes
de extrair o comportamento de circuitos integrados digitais e replic-los (obter esquema
de um circuito capaz de realizar as mesmas funes), de uma forma automatizada e
no invasiva, baseado num sistema de aquisio de dados compatvel.
Desta forma pretendido contribuir para o conhecimento nesta rea e aplicar o
contedo desta dissertao a situaes reais, tais como:
componente
que
se
encontra
em
1.2. Objetivos
A aplicao de engenharia inversa ao nvel estrutural, por vezes, j no
corresponde ao paradigma atual onde se pretende a reduo da componente manual
(automatizao) e a migrao para novas tecnologias, nomeadamente as linguagens de
descrio de hardware. Assim sendo, a evoluo para uma anlise comportamental
automatizada e replicao numa linguagem de descrio de hardware permite a
realizao de manuteno de um circuito eletrnico sem conhecimento do circuito ou do
sistema onde se encontra inserido, bem como inferir a contribuio de um IC num
sistema para anlise e possvel melhoramento.
Neste mbito, os objetivos a concretizar nesta dissertao so:
1)
2)
3)
4)
5)
2. Estado da arte
2.1. Introduo
O funcionamento de um circuito pode ser facilmente compreendido se existir
documentao sobre o mesmo. Porm quando no existe qualquer documentao ou
essa documentao no est disponibilizada ao pblico, h um ramo de engenharia que
estuda a recuperao ou duplicao de circuitos: a engenharia inversa [3]. Neste
captulo sero descritas tcnicas utilizadas para realizao de engenharia inversa.
O conhecimento sobre o funcionamento dos circuitos digitais (combinatrios e
sequenciais) necessrio para compreenso de algumas tcnicas descritas nas
subsees seguintes existindo vasta documentao nessa rea, como so exemplos
[4], [1], [5] e [6].
A EI pode ser utilizada para verificar se o produto est de acordo com a descrio
dada pelo fabricante atravs da comparao com o esquema ou por comparao com
um circuito standard. Esta aplicao da EI pode ser realizada pelo prprio fabricante no
sentido de garantir a qualidade do seu produto ou por uma entidade fiscalizadora no
sentido de defender os consumidores [3].
A EI uma tcnica que pode tambm ser utilizada para descobrir segredos e
tcnicas de concorrentes e utilizar os dados extrados para analisar as ideias contidas
no circuito concorrente e realizar melhorias sem ter de percorrer todo o caminho de
conceo realizado pelos competidores [10].
Desassemblagem do produto;
Anlise manual do sistema;
Engenharia inversa de circuitos integrados;
Engenharia inversa de placas de circuito impresso;
Engenharia inversa baseada em algoritmos para
comportamento.
extrao do
B. Anlise funcional
A anlise funcional consiste em monitorizar o sistema durante o seu
funcionamento. Esta tcnica consiste em colocar pontas de prova em pontos
estratgicos do circuito e analisar o sistema com base na visualizao e anlise dos
sinais medidos [10], [12].
Para auxiliar a anlise podem ser aplicados estmulos ao circuito de forma a
observar o circuito em diferentes modos de funcionamento (quando o circuito j
parcialmente conhecido). A utilizao de geradores de sinais, osciloscpios e
analisadores lgicos so muito usuais neste tipo de tcnica [10], [12].
Esta tcnica pode ser aplicada com complemento tcnica de desassemblagem
do produto, principalmente em sistemas multicamada, sendo nesse caso realizada a
B. Recolha de imagens
O processo de recolha de imagens tem por objetivo a sua ampliao para que
possa ser analisada (manualmente ou atravs de software especializado) e recuperado
o circuito do IC, tendo sido os sensores ticos os primeiros a ser utilizados para captura
de imagens. A captura das imagens pode ser efetuada de forma manual ou automtica,
embora para os atuais ICs o mtodo manual j no seja indicado [10], [12].
Os microscpios SEM utilizam um feixe focalizado de eletres de alta energia para gerar uma
variedade de sinais na superfcie das amostras slidas, que permitem determinar a morfologia
externa, composio qumica/estrutura cristalina e orientao dos materiais que a compem [22].
10
11
Apesar de inovador, este mtodo ainda possui uma limitao tcnica importante:
necessrio um conhecimento prvio do IC, nomeadamente do layout, para que a
navegao e interrogao do IC tenha sucesso. Assim sendo, nos casos onde essa
informao no est disponvel, necessria a utilizao das tcnicas tradicionais da
EI (tcnicas invasivas) [2].
O reconhecimento de componentes pode ser realizado em dois modos: janela
deslizante ou deteo de componentes. No caso da janela deslizante o reconhecimento
envolve a digitalizao densa do IC e localizao dos pontos de interesse, ao passo que
no modo de deteo de componentes realizada uma primeira varredura para deteo
de pontos de interesse e posteriormente realizada uma digitalizao densa das reas
de interesse, poupando assim recursos de memria [2].
A aprendizagem consiste num detetor treinado de exemplos positivos (aqueles que
geralmente correspondem a um ponto de interesse) e exemplos negativos (aqueles que
geralmente no correspondem a um ponto de interesse). O detetor ao longo da sua
operao pode memorizar mais exemplos positivos e negativos, aumentando assim o
seu conhecimento [2].
Este mtodo ainda apresenta as suas limitaes, no entanto um passo importante
no estudo de mtodos no invasivos na engenharia inversa de IC, que permitir que o
IC analisado se mantenha funcional aps sujeito a anlise [2].
12
obteno do circuito de uma PCB. Os mtodos mais comuns so para PCBs com cobre
em uma ou duas camadas e so compostos pelas seguintes etapas (Figura 2.3) [25],
[26]:
Figura 2.3 Etapas para extrao do circuito de uma camada de uma PCB atravs de tcnicas
automticas de EI [26].
Existem ainda mtodos para obter o circuito de uma PCB e converter para
Verilog HDL (Hardware Description Language) baseado num gerador automtico de um
modelo de Verilog HDL (AVMG Automatic Verilog HDL Model Generator) [27].
13
Na converso comum ser utilizado o algoritmo K-means [29] para realizar a converso para
escala de cinzentos e o mtodo de Otsu [29] para estabelecer um limiar que permita classificar
cada pixel como cobre ou substrato (material no condutor) [25].
6
Os mtodos mais utilizados para deteo de bordas so: aproximao de Sobel [30],
aproximao de Prewitt [31], aproximao de Robert [32], mtodo de Canny [33] e o Laplaciano
do mtodo Gaussiano [34].
14
a mesma luminosidade, situao que implica que s vezes sejam adicionados pixis
pretos a uma das imagens [25].
15
final for o circuito eltrico de uma forma grfica o circuito transferido para a nova PCB
com recurso a tcnicas de remoo do material condutor, baseadas no uso de persulfato
de amnio ((4 )2 2 8 ) e cloreto de ferro (2 ) [26]. Caso o formato de sada seja
um ficheiro do tipo GERBER7 ento o fabrico ser automtico, sendo apenas necessrio
transferir o ficheiro para a mquina de fabrico [26].
No processo de fabrico importante garantir que os componentes utilizados
possuem todos os requisitos dos componentes originais. Aps o fabrico testada a
funcionalidade do circuito para verificar se o circuito cpia opera da mesma forma que
o circuito original. Se o resultado do teste for positivo ento pode considerar-se que o
circuito foi copiado com sucesso, caso contrrio devem ser repetidos os passos
descritos desde o ponto B desta seco [26].
MTODO I
MTODO II
Resumo
Requerimentos
O formato GERBER [35] um formato standard e contm dados sobre a informao a ser
transferida para uma PCB baseado num sistema de coordenadas. Toda a informao relativa
forma e tamanho das pistas, furos e outras caratersticas est contida no ficheiro GERBER.
8 A linguagem de descrio de hardware ABEL permite escrever projetos digitais com equaes,
tabelas de verdade, diagramas de estado, ou qualquer combinao dos trs, otimizar e simular
o projeto sem especificar um dispositivo ou a atribuio de pinos [36].
16
Anlise de imagem;
Gerador grfico;
Gerador de ligaes;
Gerador de cdigo HDL.
Nesta tcnica assumido que a PCB sobre anlise apenas possui camada
condutora de um ou dois lados e nunca PCBs do tipo waffer [27].
Figura 2.6 Arquitetura de um gerador automtico de modelo Verilog HDL (AVMG) [27]
17
Figura 2.7 Gerador de cdigo Verilog HDL: a) Gerador de ligaes b) Gerador de cdigo
HDL [27].
18
Os algoritmos de corte (cut-enumeration) so, de uma forma genrica, algoritmos que dividem
circuitos mais complexos em sub-circuitos mais simples baseados numa filosofia dividir e
conquistar [40]. Este tipo de algoritmos tambm utilizado por grande parte das FPGAs para
sintetizao de hardware [41].
19
O circuito da Figura 2.8 consiste num seletor controlado pelo sinal , onde a
negao dos valores de 1 e 2 propagada para as sadas 1 e 2 (respetivamente)
quando = 0, caso contrrio a negao dos valores de 1 e 2 propagada para as
sadas 1 e 2 . Este tipo de propagao o objeto de anlise dos algoritmos de
propagao de palavra [9].
O algoritmo de anlise de propagao de palavra segue uma aproximao do tipo
previso e verificao. Considerando uma palavra inicial a etapa de previso
consiste em encontrar um conjunto formado pelas potenciais palavras propagadas,
atravs do agrupamento das sadas das portas acionadas por . De seguida, para cada
nova palavra ( ) existe um conjunto de sinais de controlo, que so
processados, e conectados s entradas (para um nmero pequeno de entradas) para
os quais a sada corresponde a [9].
A etapa de verificao consiste na realizao de simulao simblica10 de um
sub-circuito relevante para a propagao que est a ser analisada. Para efeitos de
simulao as entradas do sub-circuito so inicializados da seguinte forma [9]:
10
Por razes de eficincia utilizada a representao simblica onde as portas lgicas operam
, }, onde representa um valor do conjunto {0,1},
a negao de e
no domnio {0,1, ,
representa um valor desconhecido [9].
20
propagaes. Uma aproximao anloga pode ser efetuada no sentido inverso, isto ,
conhecida a palavra determinar qual a palavra e a combinao que a originaram,
permitindo assim testar propagao no sentido inverso [9].
Figura 2.10 Circuito tpico para aplicao do algoritmo baseado em suporte comum [9].
21
f.
22
um bit transita para o nvel alto quando todos os bits de ordem inferior
se encontram no nvel alto (contador crescente) ou transita para o nvel
baixo quando todos os bits menos significativos esto no nvel baixo
(contador decrescente);
(1 2 1 )
(1 2 1 )
(2.1)
(2.2)
11
(2.3)
23
( 1 )
(2.4)
(2.5)
(2.6)
24
menos uma das portas se encontra marcada e a porta apenas possui uma sada [9].
Aps o algoritmo efetuar a marcao, realizada uma anlise funcional. Considerando
que as latches representadas por e correspondem s latches de armazenamento
da informao e endereo, respetivamente, identificada lgica de leitura numa
memria RAM se forem verificadas as condies [9]:
25
12
26
ALGORITMO
FUNO
1
Identifica potenciais registos de estado
Distino entre os registos de estado reais dos potenciais registos de
2
estados
Agrupamento de registos de acordo com a partilha de sinais de
3
habilitao
4
Agrupa registos de estado de acordo com os grupos identificados
Identifica circuitos de lgica combinatria que formam realimentao
5
dos registos de estado
6
Anlise de componentes fortemente conectados
O algoritmo geral pode ser mais bem compreendido pelo fluxograma da Figura 2.13.
27
28
29
30
31
Parmetro
Diretoria de destino
Nome do ficheiro
Nmero de pinos
Tolerncia (V)
Nmero de amostras
digitais
Nmero de amostras
analgicas
Porta COM
Descrio
Define a diretoria onde sero armazenados todos os
ficheiros contendo dados temporrios gerados pelo
sistema, bem como a localizao do ficheiro VHDL gerado.
Define o nome do ficheiro VHDL.
Define o nmero de pinos do circuito a analisar.
Define a tolerncia mxima admissvel em torno de uma
medio (vlido para medies analgicas).
Define o nmero de amostras a realizar em cada medio
digital.
Define o nmero de amostras a realizar em cada medio
analgica.
No caso da existncia de vrios dispositivos ligados ao
computador via porta COM o utilizador deve especificar
qual das portas se encontra conectada ao sistema de
aquisio de dados.
32
nesta etapa classificam todos os pinos onde a tenso constante como pinos de
alimentao, ou seja, um pino de tenso constante no destinado a alimentao
classificado como pino de alimentao mesmo no o sendo no circuito em anlise, pois
a sua influncia no comportamento lgico similar a um pino de alimentao. Ao(s)
pino(s) com a tenso(es) constante(s) mais baixa(s) atribuda a designao de
referncia GND.
Para deteo dos pinos destinados a alimentao so utilizados dois mdulos
de software, de entre os mdulos apresentados na Figura 3.2:
(3.1)
(3.2)
(3.3)
(3.4)
=1
33
(3.5)
13
34
Figura 3.4 Distribuio tpica das amostras analgicas diferenciais para diferentes pares de
pinos.
(3.6)
2
considerando que o circuito analisado digital.
(3.7)
Pelas anlises que conduziram s equaes (3.6) e (3.7) possvel inferir que
perante medies de combinaes de pinos destinados a alimentao (ou constantes)
as amostras se localizam em torno do valor mdio da diferena de tenso entre os pinos.
Assim sendo, para que uma combinao de pinos seja classificada pelo algoritmo como
pinos destinados a alimentao, todas as amostras da medio devem respeitar a
condio
+ ,
= {0, 1, , }
(3.8)
35
analisados dois pinos destinados a alimentao todas as amostras devem estar contidas
no intervalo .
O desvio mximo permitido, , definido pelo utilizador (parmetro Tolerncia
da Tabela 3.1) e guardado nas configuraes iniciais. Para que o algoritmo funcione
corretamente, o valor de definido pelo utilizador deve respeitar a expresso
(3.9)
|
2
para um bom funcionamento do algoritmo e considerando valor tpicos para o VCC.
< |
1
=
=1
36
(3.10)
onde e representam o nmero de amostras e o valor da amostra obtida em gsimo lugar, respetivamente.
As amostras so armazenadas num vetor, calculado o valor mdio das amostras
e posteriormente verificado se cada amostra pertence ao intervalo . Quando
todas as amostras se encontram nesse intervalo, podem ocorrer as situaes
apresentadas na Tabela 3.2, considerando que os pinos denominados por e
originam a medio descrita na equao (3.1).
Tabela 3.2 Classificao dos pinos em funo do valor mdio.
<
>
Situao
A tenso no pino superior tenso no pino . Os pinos e podem
ser classificados como GND e VCC, respetivamente, ou em alternativa
VCC e GND14, respetivamente.
A tenso nos pinos e so aproximadamente iguais, isto ,
correspondem ao mesmo sinal. Assim sendo, se algum dos pinos j foi
previamente classificado como VCC ou GND essa classificao
estendida ao pino no classificado, caso contrrio nada se pode concluir
e nenhuma classificao efetuada.
A tenso no pino superior tenso no pino . Os pinos e podem
ser classificados como VCC e GND, respetivamente, ou em alternativa
GND e VCC14, respetivamente.
14
Esta classificao alternativa apenas atribuda se em alguma anlise anterior o pino de maior
tenso da anlise atual j tenha sido classificado como GND.
37
38
39
(3.11)
(3.12)
=1
40
Figura 3.7 - Funcionamento geral do algoritmo de anlise dos nveis de tenso em cada pino.
41
Figura 3.8 Funcionamento do sub-algoritmo de anlise dos nveis de tenso em cada pino.
1 ( 1) +
42
(3.13)
associada ao nvel,
1 e representam a mdia antes e aps a associao da ltima
amostra, respetivamente.
O despiste de falsos nveis de tenso devido a possveis erros de medio
realizado atravs da aplicao de uma funo de distribuio de frequncia que pode
ser representada por [44]
( , )
(3.14)
=1
(3.15)
,
(0 < < 100)
100
sendo um valor percentual e o nmero total de amostras associadas ao pino em
anlise15. Na Figura 3.9 encontra-se ilustrado um exemplo da distribuio de frequncia
associado a um pino, onde pode ser constatada a existncia de dois falsos nveis (X2 e
X3) dado que se encontram abaixo do limiar (a tracejado) definido pela equao (3.15).
<
43
Com o nmero de nveis provveis para cada pino o algoritmo atribui ao circuito
integrado em anlise uma das seguintes classificaes:
44
(3.17)
=1
45
1
= ( ( ) 1 ) , 1
10
10
(3.18)
Equivalente inteiro
0
1
10
11
100
101
110
111
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
46
47
anlise. Cada linha da matriz armazena as amostras obtidas referentes ao pino cujo
nmero igual ao nmero da linha da matriz. Esta organizao dos dados permite um
rpido acesso a qualquer medio ou conjunto de medies. No entanto, a matriz de
armazenamento das medies no contm toda a informao necessria para
construo de uma tabela de verdade pois no fornece informao acerca dos pinos de
entrada e sada do circuito em anlise. Para esse efeito utilizado um vetor de
comprimento , onde em cada posio se encontra armazenada a informao sobre o
tipo de pino e onde o ndice do vetor indica a que pino se refere a informao contida
na posio. Nesta fase do processo de replicao possvel encontrar quatro tipos de
pino: entrada, sada, VCC ou GND. A Figura 3.13 ilustra graficamente a estrutura de
dados que guarda informao sobre o tipo de cada pino, onde o valor apresentado entre
parenteses corresponde ao ndice do vetor e tambm ao pino a que se refere a
informao contida na respetiva posio.
Figura 3.13 Estrutura de dados para armazenamento de informao sobre o tipo de pinos.
48
49
100
2
(3.19)
50
Figura 3.14 Dados temporais importantes para o algoritmo de deteo do sinal de relgio.
(3.20)
(3.21)
=1
51
consistem nos instantes em que ocorrem as transies e a converso realizada por este
mdulo consiste na aplicao da equao (3.20).
O fluxograma da Figura 3.15 ilustra o funcionamento geral deste mdulo.
52
Numa primeira etapa realizado o clculo do valor mdio das amostras relativas
a um pino, que consiste na mdia aritmtica simples, de acordo com a expresso
1
=
(3.22)
=1
16
17
53
54
55
= ;
(3.24)
=1
= ;
=1
56
(3.25)
>0
>0
Anlise
Para que o valor da soma seja zero, ento
todas as amostras do sinal de relgio
armazenadas correspondem ao nvel
baixo, ou seja, todas as situaes de reset
ocorreram no nvel baixo do sinal de
relgio.
O valor da soma (superior a zero) indica
que ocorreu, no mnimo, um reset no nvel
alto do sinal de relgio. O valor nulo da
multiplicao indica a ocorrncia de pelo
menos uma situao de reset no nvel baixo
do sinal de relgio. Pela associao de
ambas as informaes verifica-se que
ocorreram situaes de reset em ambos os
nveis do sinal de relgio.
Combinao impossvel. O valor da soma
indica que todas as situaes de reset
ocorreram no nvel baixo do sinal de relgio
enquanto o valor da multiplicao indica o
oposto. Esta situao nunca ocorre.
O valor da soma indica a existncia de, no
mnimo, uma amostra no nvel alto do sinal
de relgio e o valor da multiplicao
demonstra que todas as amostras se
encontram no nvel alto do sinal de relgio.
Conclui-se que todas as situaes de reset
ocorreram no nvel alto do sinal de relgio.
Classificao
do reset
Sncrono
(Transio
descendente ou
nvel baixo)
Assncrono
------
Sncrono
(Transio
ascendente ou
nvel alto)
57
58
Situao
Inexistncia de
pinos de entrada
(excetuando sinais
de relgio e reset)
Existncia de pinos
de entrada e cada
combinao de
sada distinta e
associada a um
nico estado
Existncia de pinos
de entrada e vrios
estados associados
mesma
combinao de
sada
Implicaes
Devido inexistncia de pinos de entrada cada estado s
pode realizar uma transio. Assim sendo, existe uma
nica sequncia de estados (apenas interrompida pelo
sinal de reset) que sendo detetada algoritmicamente
permite esquematizar todos os estados e respetiva
transio, permitindo replicar o comportamento do
circuito em anlise. Os contadores so um exemplo deste
tipo de circuitos.
A existncia de pinos de entrada origina a que cada
estado tenha vrias transies possveis. Como a cada
combinao de sada apenas est associado um nico
estado, o diagrama de estados e transies pode ser
obtido atravs do relacionamento das sadas (estados)
com as entradas (transies).
A existncia de pinos de entrada origina a que cada
estado tenha vrias transies possveis. A no
existncia de uma relao explcita entre a combinao
de sada e o estado associado obriga a uma anlise
baseada na observao de estados anteriores e
transies j ocorridas de forma a determinar o estado
mais provvel associado a cada combinao de medida
e respetivas transies, de modo a construir
algoritmicamente um diagrama de estados e transies.
Na Tabela 3.5 foram descritas trs situaes distintas que podem ser alvo de
abordagens distintas para efeitos de aproximao. Porm, a distino entre as situaes
2 e 3 apresentadas na Tabela 3.5 impossvel pois o circuito desconhecido e no so
conhecidos os estados internos. Assim sendo, a utilizao de um algoritmo genrico
com capacidade de efetuar a aproximao de um circuito sequencial a uma mquina de
estados em qualquer uma das situaes referidas a soluo mais vivel [37].
A aproximao implementada visa a procura da melhor soluo. Uma mquina
de estados finitos to mais otimizada quanto menor for o nmero de estados, sem que
a reduo do nmero de estados afete o funcionamento da mquina de estados. A
aproximao implementada constri um diagrama de estados e transies que se
autocorrige medida que mais casos vo sendo observados. Quando uma nova
combinao de sada encontrada um novo estado criado. Quando ocorre uma
combinao de sada j observada anteriormente construda uma transio para um
estado j existente (que possua a mesma combinao de sada), visando a aproximao
da soluo tima. Quando esta situao acontece so verificadas as transies
seguintes do estado ao qual a nova transio foi associada e verificado se as prximas
transies so compatveis com as transies seguintes do estado associado, onde
59
Figura 3.19 Associao, com sucesso, a estado j existente com profundidade de anlise
unitria.
Pela anlise da Figura 3.19 verificado que nas primeiras trs medies so
encontradas novas combinaes de sada e so criados novos estados (A,B e C). Na
quarta medio a combinao de sada (00) coincide com uma medio j existente
logo criada uma nova transio para o estado A. Para simplificar a anlise ser
considerada uma profundidade de anlise unitria para exemplificao, ou seja, vamos
verificar a compatibilidade da transio seguinte: com a informao j conhecida, o
estado A quando recebe a combinao de entrada 1 transita automaticamente para o
estado B (sada 01), e como a medio seguinte consiste na combinao de entrada 2 ,
como ainda no tinha sido observada nenhuma ocorrncia desta combinao no h
incompatibilidade entre as transies em anlise e as previamente observadas (a
combinao de entrada e sada 1 e 01, respetivamente, tambm no indicavam
incompatibilidade). Porm, na Figura 3.20 apresentado um novo exemplo onde existe
incompatibilidade entre a associao efetuada e o comportamento observado
previamente. Esta anlise pode ser generalizada para profundidade .
Figura 3.20 Associao, sem sucesso, a estado j existente com profundidade de anlise
unitria.
60
Parmetro
Seleo automtica
dos parmetros
Preciso
Profundidade
Converso do sinal
de reset
Descrio
Permite escolher se os parmetros a utilizar so definidos
de forma manual ou automtica.
Define o grau de certeza para que uma nova transio seja
estabelecida. Pode assumir os nveis baixo, normal e alto.
Define a profundidade de anlise. O valor pode ser definido
de forma manual ou automtica.
O algoritmo possibilita a converso do sinal de reset para
sncrono, assncrono ou manter o sinal original.
61
62
63
seleo, ao invs de uma seleo simples como no caso anterior. A estrutura de cdigo
gerada pelo algoritmo encontra-se apresentada na Listagem 3.6.
Listagem 3.6 Bloco de atribuio das sadas e aplicao do diagrama de estados para circuitos
com entradas.
100
2
(3.26)
64
65
=
.
1
Como possvel constatar que o
() =
lim () = 0
(3.27)
(3.28)
= (). (1 ())
=1
1 . 1 =
=1
1
1
(3.30)
66
67
68
69
(4.1)
70
(4.2)
Componente
Rel
Transstor
Dodo
Descodificador
Referncia
EC2-5NU
2N2222
1N4448
DG526CJ
Caratersticas
[52]
[53]
[54]
[55]
71
(4.3)
72
Entrada
Sada
Caratersticas
Ligao: pinos do circuito sob teste
Gama de tenses de entrada: 0 V - 15 V
Nvel alto: 3,3 V / 5 V
Ligao: flip-flop
Gama de tenses de sada: 0 V - 5 V
Nvel alto: 5 V
Opto
acoplador
Requisitos
- Alta impedncia de entrada
- Converso para escala mais
baixa
- Sada compatvel com lgica
TTL/CMOS
6N136 [57]
Figura 4.6 Circuito de isolamento tico com opto-acoplador 6N136 e alta impedncia de
entrada.
(4.4)
73
5
=
= 625
(4.5)
74
Numa primeira fase, o sinal original convertido para uma escala compreendida
entre [-2,5; 2,5] V (reduo proporcional de seis vezes) atravs de um divisor resistivo
e posteriormente efetuada a soma de um valor constante de 2,5V convertendo assim o
sinal para o intervalo de interesse. Na Figura 4.7 apresentado o circuito de
condicionamento do sinal para leitura na ADC.
Figura 4.7 Circuito de aquisio de sinais analgicos numa gama de entrada de mdulo 15V.
2
.
1 + 2 +
(4.6)
4
. (+ )
3
(4.7)
= 2,5 +
1
, [15; 15]
6
75
(4.8)
Valor (k)
56
270
1
1
100
Resistncia
O circuito de aquisio utiliza um flip-flop (tipo D) para cada pino, com sinal de
relgio partilhado por todos os flip-flops, como ilustrado na Figura 4.8.
76
circuito. As caratersticas dos flip-flops dependem em grande parte dos isoladores ticos
utilizados no bloco anterior. No circuito implementado, os isoladores ticos 6N136 so
compatveis com lgica TTL e CMOS, compatvel com a generalidade dos componentes
de eletrnica digital.
O circuito completo de aquisio de sinais de frequncia normal de
funcionamento do circuito digital consiste no agrupamento dos circuitos dos blocos de
isolamento tico e aquisio de dados digitais de acordo com a Figura 4.1 e encontrase disponvel no Anexo F (seo F.2). O circuito completo do sistema de aquisio de
dados encontra-se disponvel na seo F.3 do mesmo anexo.
Requisito
Entradas analgicas:
Entradas/sadas digitais:
Interrupes externas:
Comunicao:
Frequncia de operao:
Memria interna:
Tipo ou quantidade
1
28
1
Porta COM ou Ethernet
16MHz18
248 KB (ver subseo 4.5)
18
77
19
Sinal de controlo
Designao
Sel_A
Sel_B
Habilitao Descodificador A
Hab_A
Habilitao Descodificador B
Hab_B
Rel_Con
Conexo da referncia
Ref_Con
Dg_Aq
78
Descrio
Seleciona o rel a ativar do
conjunto de rels A
Seleciona o rel a ativar do
conjunto de rels B
Habilita o funcionamento do
descodificador A (lgica direta)
Habilita o funcionamento do
descodificador B (lgica direta)
Ativa o interruptor que encaminha
o sinal de relgio
Ativa o interruptor que encaminha
a referncia (GND)
Sinal de aquisio (relgio) dos
flip-flops
4.4.4.3. Instrues
Instruo
(Parmetros)
Medio Analgica
(, , )
Cdigo
0001
Medio
Digital Assncrona
(, )
0010
Medio
Digital Sncrona
(, , , )
0011
Deteo de Transio
(, , )
0100
Confirmao de
ligao ()
1111
Descrio
Realiza medies analgicas de
tenso entre os pinos e .
Realiza medies digitais de todos os
pinos em simultneo para efeitos de
anlise de circuitos combinatrios. Utiliza
o pino indicado em como referncia.
Realiza medies digitais de todos os
pinos em simultneo a cada transio do
pino , para efeitos de anlise de
circuitos sequenciais. Utiliza o pino
indicado em como referncia.
Regista o intervalo de tempo entre
transies durante transies do sinal
do pino . Utiliza o pino indicado em
como referncia.
Confirma a existncia de uma ligao
entre o computador e o sistema de
aquisio de dados.
79
Instruo
Sinais de controlo
Cdigo Medies Arg1 Arg2 Sel_A Sel_B Hab_A Hab_B Rel_Con Ref_Con
0001
N
A
B
A
B
1
1
0
0
0010
N
A
A
0
1
0
1
0011
N
A
B
A
B
1
1
1
1
0100
N
A
B
A
B
1
1
1
1
4.4.4.4. Implementao das instrues
A. Medio analgica
Considerando a arquitetura implementada, a aquisio de medies analgicas
implica a identificao de um par de pinos, selecionveis atravs dos argumentos da
instruo. O valor resultante da medio, , dado pela expresso
= 1 2
(4.9)
80
Dg_aq
0
0
0
81
82
O tempo de espera (aguarda estabilizao dos sinais) para aquisio calculado a partir
do perodo do sinal de relgio, que um dos argumentos da instruo.
(4.10)
, ]0,1[
2
onde e representam o perodo do sinal de relgio e um fator de ajuste. Para efeitos
de implementao foi utilizado = 0,9 uma vez que os sinais j se encontram
estabilizados devido proximidade da transio do sinal de relgio.
= .
Para uma correta realizao desta instruo necessrio que todas as medies
sejam realizadas antes da transio seguinte do sinal de relgio, caso contrrio as
medies obtidas no sero fidedignas. Na implementao desta instruo necessrio
ter em conta o nmero de comandos que o microcontrolador tem de executar a cada
transio, nomeadamente quando o nmero de pinos do circuito sob anlise inferior a
16 (nmero mximo de pinos possveis). Foi analisado e decidido que,
independentemente do nmero de pinos a medir, realizada a medio de todos pinos
pois os comandos para excluir medies sem significado implicariam um maior custo
computacional, tendo ento sido tomada a opo em adquirir todas as medies e
posteriormente descartar as medies sem significado para o algoritmo de replicao.
D. Deteo de transio
A deteo consiste na execuo de uma instruo que deteta a transio de um
sinal e regista o tempo decorrido at ao momento em que a transio ocorre. No caso
implementado o microcontrolador (Arduno Mega) tem a funo que retorna o tempo
que passou desde o incio do funcionamento do sistema. De forma a minimizar as
operaes no microcontrolador entre transies so enviados os dados brutos (tempo
desde o incio do funcionamento at ocorrncia da transio) para o computador
sendo todo o processamento (subtrao dos tempos de duas transies consecutivas
para obter intervalo entre transies) realizados fora do microprocessador quando existe
mais tempo disponvel para processamento. O sistema implementado modular e
permite o melhoramento de diferentes partes do sistema, no entanto necessrio ter
em conta a forma como os dados so disponibilizados pelo sistema de aquisio de
dados, como exemplo esta instruo.
Esta instruo utilizada para fornecer dados para detetar algoritmicamente qual
dos pinos corresponde ao sinal de relgio, quando detetado um circuito sequencial. O
83
sinal a analisar indicado num dos argumentos da instruo e cada transio do mesmo
ir ser tratada atravs de uma interrupo externa, como ilustrado na Figura 4.14.
84
(4.10)
(4.11)
85
5. Resultados
5.1. Introduo
Neste captulo sero apresentados os resultados obtidos experimentalmente
atravs da replicao de circuitos integrados digitais (combinatrios e sequenciais)
utilizando o prottipo implementado, de forma a validar os algoritmos desenvolvidos.
Sero ainda analisados os fatores que influenciam as rplicas obtidas e comparados os
resultados obtidos para circuitos combinatrios e sequenciais.
86
Pela anlise da Figura 5.1 possvel verificar que a taxa de sucesso tende para
100% com o aumento da relao / , coincidente com o evoluo demonstrada
matematicamente pela equao (5.5). Esta convergncia confirma experimentalmente
que quando o nmero de amostras recolhidas muito superior ao nmero de
combinaes de entrada possveis, a replicao completa do circuito combinatrio um
acontecimento muito provvel. Quantitativamente, atravs dos dados obtidos
experimentalmente, quando o nmero de amostras recolhidas , no mnimo, cinco vezes
superior ao nmero de combinaes de entrada possveis ( = 5), muito provvel
que o circuito tenha sido replicado na totalidade, independentemente do nmero de
combinaes de entrada.
Teste
Tipo de
circuito
Componentes
20
Tipo de lgica
74LS08 [62]
74HCT32
[63]
74LS86 [64]
74HC139
[65]
#1
Porta AND
#2
Porta OR
#3
Porta XOR
#4
Descodificador
17
37
74LS48 [66]
CD4001[67]
#5
#6
Conversor BCD
- 7 segmentos
Porta NOR21
Mult.
0
Referncia
PL
4
Utilizando o software ISE Design da Xilinx [45], foi sintetizado o cdigo VHDL
gerado pelo sistema de replicao e realizadas simulaes para aferir o comportamento
da rplica. Nas verificaes experimentais realizadas os circuitos sob anlise foram
estimulados artificialmente utilizando um microcontrolador 22 auxiliar para efetuar a
gerao de sinais aleatrios nas entradas do circuito integrado, ou seja, apesar dos
circuitos sob teste no se encontrarem inseridos num sistema maior, a estimulao
provocada intencionalmente cria um ambiente de funcionamento equivalente para o
qual o sistema foi concebido. [68]
20
87
Taxa
(%)
100
90-99
<90
Teste
#1
#2
#3
#4
#5
#624
#1
#2
#3
#4
#5
#1
#2
#3
#4
#5
Componentes
PL
4
4
20
24
112
4
100
100
100
100
115
150
150
150
150
150
Mult.
0
0
0
0
10
0
9
2
5
10
10
12
8
10
10
10
Correspondncia
estrutural
Total23
Total22
Equivalente22
Equivalente 22
Inexistente22
Equivalente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Inexistente
Correspondncia
comportamental
Observada
Completa
Total
Total
Total
Total
Total
Total
Total
Total
Total
Total
Total
Total
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Total
Parcial
Pela anlise da Tabela 5.2 verifica-se que quando a taxa de sucesso igual a
100%, a correspondncia comportamental absoluta, isto , corresponde aos
comportamentos descritos nas folhas de caratersticas do circuitos e, por conseguinte,
ao comportamento observado. Por outras palavras, foi verificado experimentalmente
que quando todas as combinaes possveis so observadas num circuito combinatrio
a rplica obtida corresponde (funcionalmente) totalidade do circuito, inferindo-se desta
forma que estas rplicas podem substituir o circuito em qualquer circunstncia. Ao invs,
quando a taxa de sucesso inferior a 100%, foi confirmado experimentalmente que a
correspondncia comportamental existe apenas em relao ao comportamento que foi
observado, ocorrendo uma correspondncia parcial das funcionalidades do circuito
integrado. Nestas situaes, como a rplica obtida no corresponde totalidade do
circuito, no existe garantia que a rplica funcione corretamente em qualquer
circunstncia. Quando a rplica se destina a ser utilizada inserida no sistema onde foi
observada provvel que funcione corretamente, no entanto no pode ser excluda a
hiptese de ocorrer uma combinao no observada, ou seja, impossvel quantificar
com exatido a probabilidade de funcionamento de uma rplica no sistema onde foi
observada quando a taxa de sucesso inferior a 100%.
23
88
89
Caraterstica
Frequncia mxima do sinal de relgio
Nmero mximo de amostras para anlise
sequencial
Aplicao
Para deteo
Para aquisio
Para aquisio
Para processamento
Limite
31,25 kHz
2 kHz
2000
ilimitado
Teste
Tipo de circuito
Referncia
Tipo de lgica
#1
Contador
Conversor srieparalelo
Flip-Flop (D)
Conversor srieparalelo
Flip-Flop (JK)
74LS393 [69]
74HCT164 [70]
74HCT174 [59]
74HC595 [71]
74LS76 [72]
#2
#3
#4
#5
90
Figura 5.3 Diagramas de transio de estado das rplicas obtidas em funo da ocorrncia
do sinal de reset. (Legenda: Estado/ (Sada)).
91
alterado em funo da ocorrncia do sinal de reset: quando ocorre, pelo menos uma
situao de reset, o estado para onde realizada a transio definido como estado
inicial e realizada uma transio para este estado sempre que o pino de reset
ativado, contrariamente ao que ocorre quando nenhuma situao de reset detetada
onde o primeiro estado identificado definido como estado inicial, sendo definido
estaticamente e no existindo, aps sintetizao, qualquer relao entre o pino de reset
e um estado inicial.
O cdigo VHDL gerado influenciado pela ocorrncia de reset como pode ser
observado nos excertos de cdigo apresentados na Figura 5.4.
26
A varivel reset est associada ao pino de reset e funciona sempre em lgica direta (ativo no
nvel alto) e atualizada por um bloco process dedicado a verificar as variaes do pino de reset.
92
Figura 5.5 Montagens para estimulao do circuito integrado 74HCT164 (conversor srie
paralelo).
Figura 5.6 Diagrama de estados obtido para a montagem com reset associado sada Q3
(Legenda: Estado/ (Sada)).
27
O pino Q3 classificado como GND pois o tempo em que permanece no nvel alto
insignificante.
93
Figura 5.7 Diagrama de estados obtido para a montagem com reset associado sada Q4
(Legenda: Estado/ (Sada)).
Pela comparao entre as Figuras 5.6 e 5.7 pode facilmente inferir-se que para
o mesmo circuito integrado podem obter-se rplicas com diferentes diagramas de
transies. Diagramas de transies/estados diferentes ocorrem igualmente para
diferentes montagens dos circuitos integrados apresentados na Tabela 5.3.
Isto ocorre porque a rplica reflete o comportamento do circuito integrado ao
invs da sua estrutura interna, logo quando o meio envolvente impe diferentes
estmulos ao circuito, diferentes transies e/ou estados podem ser observados ou
ainda podem impedir que alguns estados e transies sejam observados. Por outras
palavras, as condicionantes impostas pelo sistema onde o circuito integrado se encontra
inserido no podem ser ultrapassadas pelo sistema de replicao desenvolvido que se
limita a efetuar a observao do funcionamento do circuito integrado, logo a rplica ir
refletir unicamente as transies e estados observados, que podem ser distintos para
diferentes em funo do meio onde o circuito integrado est inserido.
28
O pino Q4 classificado como GND pois o tempo em que permanece no nvel alto
insignificante.
94
que a rplica de um circuito sequencial tenha uma taxa de sucesso estimada em 100%
no garantido que tenha sido replicada a totalidade das funcionalidades do circuito
integrado, como pode ser comprovado com os testes realizados ao circuito integrado
74HCT164 e apresentados nas Figuras 5.6 e 5.7.
Na Figura 5.8 encontram-se as montagens utilizadas para teste dos circuitos
integrados 74HCT174 (flip-flop D) e 74LS76 (flip-flop JK).
Figura 5.8 Montagens para estimulao dos circuitos integrados 74HCT174 e 74LS76.
(5.6)
(5.7)
Circuito
integrado
74LS393
74HCT164
74HCT174
Montagem
N mnimo
de estados
N mnimo de
transies
Figura 5.2 a)
Figura 5.2 b)
Figura 5.5 a)
Figura 5.5 b)
Figura 5.5 c)
Figura 5.5 d)
Figura 5.8 a)
16
16
256
256
8
16
64
16
64
1024
512
16
32
4096
95
Taxa de
sucesso obtida
(%)
100
25
56
67
100
100
16
Circuito
integrado
74HCT174
74HC595
74LS7629
Montagem
Figura 5.8 b)
Sem
condicionamentos
Figura 5.8 c)
Figura 5.8 d)
N mnimo
de estados
N mnimo de
transies
64
Taxa de
sucesso obtida
(%)
100
512
8192
13
2
4
16
128
100
86
29
96
97
6. Concluses
6.1. Concluses gerais
A engenharia inversa um procedimento realizado desde h dcadas com o
objetivo de descobrir como um produto foi construdo sendo que os procedimentos mais
comuns para este efeito consistem em anlises manuais ou semi-manuais do(s)
circuito(s) atravs da separao das diferentes camadas e anlise das mesmas com
auxilio de sensores ticos e software de processamento de imagem. No entanto estas
tcnicas so direcionadas para uma recuperao do esquema eltrico/lgico do(s)
circuito(s) e geralmente danificam o(s) circuito(s) tornando(s)-os inutilizveis. Mais
recentemente tcnicas de engenharia inversa no invasivas tm sido desenvolvidas
assim como tcnicas baseadas em algoritmos com objetivo de identificar o(s) circuito(s)
atravs da anlise funcional do(s) mesmo(s). Atualmente alguns sistemas de
engenharia inversa apresentam a descrio do esquema lgico ou funcionalidade obtida
em linguagens de descrio de hardware pois desta forma fornecido um nvel de
abstrao muito maior, o que torna a rplica obtida independente do hardware. Esta
dissertao contribuiu para o conhecimento cientfico no mbito das tcnicas de
engenharia inversa no invasivas, baseadas em algoritmos e com converso do circuito
obtido para linguagem de descrio de hardware que uma rea cuja investigao
cientfica recente e onde possvel a existncia de desenvolvimentos significativos
nas prximas dcadas. Atualmente os algoritmos aplicveis em engenharia inversa so
essencialmente algoritmos de reconhecimento de padres e processamento de imagem
(anlise estrutural) ou por comparao com uma biblioteca de circuitos conhecidos
(anlise comportamental).
Os algoritmos desenvolvidos nesta dissertao visaram a obteno de uma
capacidade de anlise genrica, sem comparao com qualquer biblioteca de circuitos
conhecidos. Algoritmos diferentes foram desenvolvidos para circuitos combinatrios e
sequenciais. No caso dos circuitos combinatrios (quando verificado que para cada
combinao de entrada s existe uma combinao de sada) so observadas as
combinaes e a correspondncia entrada-sada refletida em cdigo VHDL atravs da
utilizao dos comandos case e when. Quando o circuito sequencial uma aproximao
a uma mquina de estados realizada atravs da utilizao de mtodos heursticos,
onde a soluo obtida pode no ser a soluo tima mas a uma soluo possvel em
funo do comportamento observado. Em qualquer um dos casos, a descrio em
linguagem VHDL automaticamente gerada e o cdigo pode ser sintetizado (utilizando
software destinado para o efeito) e obtido o esquema lgico da rplica, dado que a
estrutura do cdigo gerado otimizada para a sintetizao.
O sistema de aquisio de dados implementado visa retirar medies sem afetar
o funcionamento do circuito e ser facilmente controlado pelo computador atravs de
instrues estabelecidas entre o mdulo de controlo do sistema de aquisio de dados
e algoritmos dedicados gerao de instrues atravs de porta COM. O prottipo
98
99
100
Referncias
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
D. Tang, R. Zhu, and R. Xu, Functional reverse design: Method and application,
Comput. Support. Coop. Work Des. (CSCWD), 2010 14th Int. Conf., no.
50775111, pp. 723727, 2010.
[14]
[15]
101
[16]
L. Chouambe, N. Ag, B. Klatt, and K. Krogmann, Reverse engineering SoftwareModels of Component-Based Systems, in In 12th European Conference on
Software Maintenance and Reengineering, 2008, pp. 93102.
[17]
[18]
[19]
[20]
[21]
[22]
[23]
[24]
[25]
[26]
[27]
[28]
[29]
D. Liu and J. Yu, Otsu Method and K-means, 2009 Ninth Int. Conf. Hybrid Intell.
Syst., no. 2, pp. 344349, 2009.
[30]
102
[31]
W. Dong and Z. Shisheng, Color Image Recognition Method Based on the Prewitt
Operator, 2008 Int. Conf. Comput. Sci. Softw. Eng., pp. 170173, 2008.
[32]
[33]
[34]
J. Wan, X. He, and P. Shi, An Iris Image Quality Assessment Method Based on
Laplacian of Gaussian Operation, in MVA2007 IAPR Conference on Machine
Vision Applications, 2007, vol. 3, pp. 36.
[35]
[36]
[37]
Y. Shi, C. W. Ting, B.-H. Gwee, and Y. Ren, A highly efficient method for
extracting FSMs from flattened gate-level netlist, Proc. 2010 IEEE Int. Symp.
Circuits Syst., pp. 26102613, May 2010.
[38]
[39]
[40]
[41]
V. Pedroni, Digital Electronics and Design With VHDL. Burlington: Elsevier, 2008.
[42]
[43]
M. R. Garey and D. S. Johnson, Computer and intractbility, 1st ed. New York: W.
H. Freeman and Company, 1979.
[44]
[45]
[46]
103
[47]
[48]
[49]
[50]
[51]
[52]
Folha
de
caratersticas
EC2-5NU,
1999.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/nec/EC2-3TNJ.pdf. [Accessed: 17Jul-2014].
[53]
Folha
de
caratersticas
2N2222A.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/on_semiconductor2/2N2222A-D.PDF.
[Accessed: 17-Jul-2014].
[54]
Folha
de
caratersticas
1N4448,
2004.
[Online].
Available:
http://www.nxp.com/documents/data_sheet/1N4148_1N4448.pdf. [Accessed: 17Jul-2014].
[55]
Folha
de
caratersticas
DG526CJ,
1999.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets2/31/316139_1.pdf. [Accessed: 17Jul-2014].
[56]
Folha
de
caratersticas
AD622,
2013.
[Online].
Available:
http://www.analog.com/static/imported-files/data_sheets/AD622.pdf. [Accessed:
17-Jul-2014].
[57]
Folha
de
caratersticas
6N136,
2008.
[Online].
Available:
http://www.fairchildsemi.com/ds/6N/6N136.pdf. [Accessed: 17-Jul-2014].
[58]
Folha
de
caratersticas
74HCT174,
1998.
[Online].
http://pdf.datasheetcatalog.com/datasheet/philips/74HCT174N.pdf.
17-Jul-2014].
[59]
Folha
de
caratersticas
74HCT174N,
1998.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/philips/74HCT174N.pdf. [Accessed:
17-Jul-2014].
[60]
[61]
104
Available:
[Accessed:
[62]
Folha
de
caratersticas
74LS08,
2000.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/70/375337_DS.pdf. [Accessed: 17Jul-2014].
[63]
Folha
de
caratersticas
74HCT32,
1990.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/philips/74HC_HCT32_CNV_2.pdf.
[Accessed: 17-Jul-2014].
[64]
Folha
de
caratersticas
74LS86,
1995.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets2/11/115612_1.pdf. [Accessed: 17Jul-2014].
[65]
Folha
de
caratersticas
74HC139,
1993.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheet/philips/74HC_HCT139_CNV_2.pdf.
[Accessed: 15-Aug-2014].
[66]
Folha
caratersticas
74LS48,
1992.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/120/375650_DS.pdf. [Accessed: 15Aug-2014].
[67]
Folha
caratersticas
CD4001,
1988.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/166/108518_DS.pdf. [Accessed: 22Sep-2014].
[68]
[69]
Folha
de
caratersticas
74LS393,
1998.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/400/334868_DS.pdf. [Accessed: 03Sep-2014].
[70]
Folha
caratersticas
74HCT164,
2013.
[Online].
Available:
http://www.nxp.com/documents/data_sheet/74HC_HCT164.pdf. [Accessed: 03Sep-2014].
[71]
Folha
de
caratersticas
74HC595,
2011.
[Online].
Available:
http://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf. [Accessed: 03Sep-2014].
[72]
Folha
de
caratersticas
74LS76,
1999.
[Online].
Available:
http://www.futurlec.com/74LS/74LS76.shtml. [Accessed: 20-Sep-2014].
[73]
[74]
[75]
[76]
105
[77]
[78]
[79]
[80]
Folha
de
caratersticas
74HCT04,
2012.
[Online].
Available:
http://www.nxp.com/documents/data_sheet/74HC_HCT04.pdf. [Accessed: 17Jul-2014].
[81]
Folha
caratersticas
74LS04,
1989.
[Online].
Available:
http://pdf.datasheetcatalog.com/datasheets/134/231533_DS.pdf. [Accessed: 17Jul-2013].
106
ANEXOS
107
Tcnica
Funes
fisicamente
inclonveis
Ofuscao
Descrio
Consistem em dispositivos
que produzem uma chave
interna,
essencial
para
funcionamento, nica e no
conhecida por elementos
exteriores ao dispositivo.
possvel a extrao de
informao encriptada.
Baseia-se na implementao
de um esquema simples de
uma forma complexa, mais
difcil
de
descodificar,
utilizando tcnicas tais como o
roteamento em esparguete
ou a cobertura com uma
camada de metal, para evitar a
observao do circuito.
Consiste na adio de
componentes que dificultem a
recuperao do esquema do
Dissimulao circuito, mas no entanto no
tica
produzem efeito no circuito,
como por exemplo fios
fictcios, componentes sem
ligao, entre outros.
Migrao
para
circuitos
ticos e
acsticos
108
Impacto
Como o mecanismo de defesa
intrnseco ao dispositivo e o sistema
desenvolvido efetua a anlise de
entradas e sada, logo ser capaz
de replicar o funcionamento interno
e obter uma rplica com o mesmo
comportamento do ponto de vista
das entradas e sadas.
Estas tcnicas fornecem proteo
ao nvel da obteno da estrutura
do circuito por anlise visual
(manual ou computorizada) no
entanto a anlise comportamental
atravs
da
observao
das
entradas e sadas no afetada por
estas tcnicas de defesa.
semelhana do que ocorre na
tcnica
de
ofuscao,
a
dissimulao tica protege os
circuitos contra engenharia inversa
que utiliza mtodos visuais para
extrao do esquema eltrico, no
tendo
impacto
no
mtodo
desenvolvido para extrao do
comportamento.
O sistema implementado foi
concebido para analisar sinais
eltricos. Se os sinais de entrada e
sada forem eltricos (convertidos
para ticos no interior do circuito) o
sistema desenvolvido capaz de
extrair o comportamento, caso
contrrio devido impossibilidade
de adquirir medies eltricas o
sistema no conseguir extrair o
comportamento o circuito.
30
109
C. Sintetizao de circuitos
C.1. Introduo sntese de hardware
Atualmente uma grande parte dos sistemas digitais so projetados utilizando
uma linguagem de descrio de hardware, sendo o VHDL e o Verilog as linguagens
mais usadas [41].
A sintetizao consiste na gerao (e otimizao) de um modelo de circuito a
partir de um circuito mais abstrato, isto , o produto de uma sintetizao possui sempre
mais detalhe que o circuito ou diagrama original [41] [77].
Este tipo de linguagens permitem que o circuito seja sintetizado e totalmente
simulado por software antes de qualquer implementao fsica, permitindo um
desenvolvimento e teste maior sem incremento dos custos em material, uma vez que
aps escrito o cdigo este pode ser implementado fisicamente numa FPGA ou CPLD.
Aps todo o desenvolvimento concludo e testado, pode ser criado um circuito integrado
(tambm designado por ASIC Application-Specific Integrated Circuit) com a
funcionalidade sintetizada [41].
Acrescem ainda as vantagens destas linguagens permitirem que a tecnologia
seja independente do fabricante, pois cdigos previamente concebidos podem ser
facilmente incorporados em novos projetos ou reutilizveis com tecnologias diferentes
[41].
110
111
Verilog
VHDL
C.3.1. Recomendaes
sintetizveis
para
modelao
de
circuitos
Para evitar que o circuito resultante de uma sintetizao seja ineficiente, existem
recomendaes para melhorar vrios parmetros do circuito sintetizado essencialmente
a preciso e velocidade de funcionamento [78]. A Tabela C.2 apresenta algumas
recomendaes gerais para modelao de circuitos sintetizveis.
112
Preciso
Velocidade
Recomendaes
- Assegurar que todos os sinais de interesse se encontram na lista de
sensibilidade do ;
- No utilizar tipos de dados sem comprimento definido;
- A utilizao de parenteses em expresses permite algum controlo
estrutural.
- Utilizar sempre que possvel declaraes concorrenciais (reduz o
nmero de sinais que o simulador tem de monitorizar em simultneo);
- Minimizar o nmero de sinais na lista de sensibilidade do ;
- No modelar demasiados pequenos (existe um pequeno
atraso para os ativar/desativar).
113
Figura C.4 Estrutura genrica dos blocos de uma mquina de estados [38].
Na Figura C.3 b) verifica-se que a avaliao das entradas foi realizada atravs
de uma declarao no entanto a declarao tambm pode ser utilizada,
114
115
D. Algoritmos implementados
D.1. Inicializaes
A leitura dos parmetros de configurao do circuito so fundamentais aos
diversos mdulos. As funes que implementam a leitura das configuraes iniciais e
reconfiguraes encontram-se apresentadas nas Listagens D.1 e D.2, respetivamente.
A implementao foi efetuada na linguagem C.
Listagem D.1 Funo para leitura das configuraes iniciais.
void initialize(){
int k, nr_measurementsVCCGND=0;
int i, j = 0;
FILE *fpInit;
char fileLineContent[300];
fpInit = fopen("settings.REP","r");
if (fpInit==NULL ) printf("Error opening settings.REP\n");
fgets(fileLineContent,300,fpInit);
strcpy(chipDirectory,fileLineContent);
fgets(fileLineContent,300,fpInit);
strcpy(destinantionDirectory,fileLineContent);
fgets(fileLineContent,300,fpInit);
PINS_NR=atoi(fileLineContent);
fgets(fileLineContent,300,fpInit);
j=0;
while (fileLineContent[j]!= '\0'){
if (fileLineContent[j]==',')
fileLineContent[j]='.';
j++;
}
MAX_TOLERANCE=atof(fileLineContent);
fgets(fileLineContent,300,fpInit);
NON_USED_MEASUREMENTS_NR=atoi(fileLineContent);
fgets(fileLineContent,300,fpInit);
MEASUREMENTS_NR=atoi(fileLineContent);
fclose(fpInit);
j=0;
while (chipDirectory[j]!= '\0') j++;
chipDirectory[j-1]='\0';
for (j=0;j<MAX_PIN_NR;j++){
pinsType[j]=0;
pinsV[j]=0;
}
}
116
fgets(fileLineContent,50,settings);
ACCURACY=atoi(fileLineContent);
fgets(fileLineContent,50,settings);
RESET_CONVERT_TYPE=atoi(fileLineContent);
fgets(fileLineContent,50,settings);
ANALYSIS_DEPTH=atoi(fileLineContent);
}
fclose(settings);
117
Pela observao da Figura D.1 pode verificar-se que a numerao dos pinos do
circuito integrado apenas coincide com o nmero dos pinos do sistema de aquisio de
dados quando o nmero de pinos do circuito integrado igual a 16. Os algoritmos de
replicao utilizam no seu funcionamento a numerao de pinos do circuito integrado
(varivel) e o sistema de aquisio de dados utiliza a numerao prpria (fixa), logo para
compatibilizar ambos os sistemas necessrio realizar a converso, de acordo com a
expresso
,
() = {
(D.1)
(16 ) + ( ) ,
< 16
2
2
2
onde () representa o pino do sistema de aquisio de dados correspondente ao
pino do circuito integrado.
Esta converso realizada sempre que existe necessidade de realizar medies
em circuitos com menos de 16 pinos, de forma a compatibilizar o sistema de aquisio
de dados com os algoritmos. Durante o processo de replicao, alguns os ficheiros so
renomeados de forma a corresponder numerao do circuito integrado utilizando a
frmula de converso apresentada na equao (D.1).
118
119
Listagem D.4 Funo de escrita no ficheiro utilizado para transferir dados para a comunicao
com o sistema de aquisio de dados.
public void writeCOMfile(int i, int j, string storagePath) {
StreamWriter fileCOM = new StreamWriter("comdata.rep");
//_Open communication settings file_
fileCOM.WriteLine(portName);
//_Write COM port name_
fileCOM.WriteLine(storagePath);
//_Write storage path_
fileCOM.WriteLine("0001");
//_Write instruction opcode: diferential measurements
fileCOM.WriteLine(measurementsNR);
//_Write the number of measurements requested_
fileCOM.WriteLine(i.ToString());
//_Write positive pin to measure_
fileCOM.WriteLine(j.ToString());
//_Write negative pin to measure_31
fileCOM.Close();
//_Close file_
}
31
Quando a referncia para as medies analgicas j conhecida, o pino GND deve ser
atribudo aqui.
120
void verifyPins(){
//*Verify if selected file contains constant values
float measurements[MEASUREMENTS_NR];
float sum=0, MeasurementsAdjust=MEASUREMENTS_NR;
char* fileOpen;
char lineContent[50];
int i,violationDeteted=0,counter=0;
fileOpen=fileName;
fp0=fopen(fileName,"r");
if (fp0 == NULL) {
printf ("File opening error.\n");
exitValue=10;
}
while (fgets(lineContent,50,fp0)){
if (counter<MEASUREMENTS_NR){
//_read and store file measurements_
measurements[counter]=atof(lineContent);
sum+=measurements[counter];
counter++;
}
}
MeasurementsAdjust=counter;
fclose(fp0);
mean=sum/MeasurementsAdjust;
//_Calculates average_
MeasurementsAdjust=MEASUREMENTS_NR;
counter--;
while (counter>=0 && violationDeteted==FALSE){
//_verify if samples are in confidence interval_
if ( measurements[counter]>=(mean+TOLERANCE) || measurements[counter]<=(mean-TOLERANCE)){
violationDeteted=1; break;
}
counter--;
}
if(mean>=0){
meanCorrected=mean;
}else{
//_Obtain absolute value_
meanCorrected=mean*(-1);
121
}
if (violationDeteted==0 && meanCorrected>2*TOLERANCE){
if (pinsType[x-1]!=0 || pinsType[y-1]!=0){
specialCaseVCCGND();
}else{
if (mean>0){
pinsType[x-1]=VCC_PIN;
pinsType[y-1]=GND_PIN;
pinsV[x-1]=meanCorrected;
}else{
pinsType[x-1]=GND_PIN;
pinsType[y-1]=VCC_PIN;
pinsV[y-1]=meanCorrected;
}
}
}
}
Listagem D.7 Funes para normalizao dos resultados.
void addOffset(){
float offset=getMinimum();
int j;
for (j=0;j<PINS_NR;j++){
if (pinsV[j]!=0 || pinsType[j]==2){
pinsV[j]+=offset;
if (pinsV[j]<1.7)
pinsType[j]= GND_PIN;
else
pinsType[j]= VCC_PIN;
}
}
}
//*get the minimum VCC deteted. That value is added to all VCC
//_find minimum_
122
float getMinimum(){
float minimum=pinsV[0];
int i;
for (i=1;i<PINS_NR;i++){
if (pinsV[i]<minimum)
minimum=pinsV[i];
}
if (minimum<0)
minimum=minimum*(-1);
return minimum;
}
123
124
default: exitValue=0;
}
}
Listagem D.10 Funo de anlise de nveis.
void searchLevels(int pin){
//*detect how many diferent tension levels found. Applied to the indicated pin on function argument
int i,j,k, endIf,newLevelDetected,level;
float analysingValue, newMean,auxCounter;
samplesLevelCounter = malloc(sizeof *samplesLevelCounter *MEASUREMENTS_NR);
ghostLevels=0; levelsCounter=1;
for (i=0;i<MEASUREMENTS_NR;i++) samplesLevelCounter[i]=0;
//_initialize_
levelsMeanValues[pin][0]=measurements[pin][0];
//_copy the first measurement: first level_
samplesLevelCounter[0]=1;
//_increases/initialize nr of samples to the first level_
for(i=1;i<MEASUREMENTS_NR;i++){
//_Start levels detection_
newLevelDetected=1;
analysingValue=measurements[pin][i];
//_copy to analysingValue the sample in analysis_
endIf=0;
for(j=0;j<levelsCounter;j++){
if (analysingValue<levelsMeanValues[pin][j]+TOLERANCE &&
analysingValue>levelsMeanValues[pin][j]TOLERANCE && endIf==0){
newLevelDetected=0;
//_current sample attached to previous level_
level=j; endIf=1;
}
}
if (newLevelDetected==1){
//_new level detected_
levelsMeanValues[pin][levelsCounter]=analysingValue;
//_save the new level_
levelsCounter++;
}else{
samplesLevelCounter[level]++;
//_increases level counter_
newMean=levelsMeanValues[pin][level]*(samplesLevelCounter[level]-1)+analysingValue;
//_re-calculates de mean (Step 1)_
levelsMeanValues[pin][level]=newMean/samplesLevelCounter[level];
//_re-calculates de mean (Step 2)_
}
}
for (k=0;k< levelsCounter;k++){
if(samplesLevelCounter[k]<maxMeanDeviationSamples*MEASUREMENTS_NR){
//_Detect level with a low number of measurements_
ghostLevels++;
globalGhostLevels++;
}
}
}
125
Listagem D.12 Funo de escrita no ficheiro utilizado para transferir dados para a comunicao
com o sistema de aquisio de dados: medio digital no sincronizada.
public void writeCOMfile(int i, int j, string storagePath) {
StreamWriter fileCOM = new StreamWriter("comdata.rep");
//_Open communication settings file_
fileCOM.WriteLine(portName);
//_Write COM port name_
fileCOM.WriteLine(storagePath);
//_Write storage path_
fileCOM.WriteLine("0010");
//_Write instruction opcode
fileCOM.WriteLine(measurementsNR);
//_Write the number of measurements requested_
fileCOM.WriteLine(pinsNR.ToString());
//_Write number of pins pin to measure_
fileCOM.WriteLine(pinGND.ToString());
//_Write reference (GND) pin to measurements_
fileCOM.Close();
//_Close file_
}
Listagem D.13 Funo de escrita no ficheiro utilizado para transferir dados para a comunicao
com o sistema de aquisio de dados: medio digital sincronizada.
public void writeCOMfile(int i, int j, string storagePath) {
StreamWriter fileCOM = new StreamWriter("comdata.rep");
//_Open communication settings file_
fileCOM.WriteLine(portName);
//_Write COM port name_
fileCOM.WriteLine(storagePath);
//_Write storage path_
fileCOM.WriteLine("0011");
//_Write instruction opcode
fileCOM.WriteLine(measurementsNR);
//_Write the number of measurements requested_
fileCOM.WriteLine(pinCLK.ToString());
//_Write clock pin to synchronize _
fileCOM.WriteLine(pinGND.ToString());
//_Write reference (GND) pin to measurements_
fileCOM.WriteLine(clkPeriod_4.ToString());
//_Write of period from CLK signal_
fileCOM.Close();
//_Close file_
}
126
Listagem D.14 Funes de converso dos dados recebidos e escrita na estrutura de dados.
public void dataConversion(){
UInt64 lineData;
int i;
createFiles();
//_Create files to store converted measurements_
//_Open non-processed measurements file_
StreamReader fileResult = new StreamReader(path + "\\unprocessedMeasurements.rep");
for (i = 0; i < measurementsNR; i++){
//_Read all lines of data_
lineData = Convert.ToUInt64(fileResult.ReadLine());
//_Convert line of data_
writeIntoFiles(lineData);
//_Write converted data into files_
}
fileResult.Close();
//_Close files_
}
public void writeIntoFiles(UInt64 data){
//*Receives data into a 16 bits array and serializes it
int i;
UInt64 excess;
uint [] dataSplit=new uint [16];
for (i = 0; i < 16; i++){
excess = data % 10;
//_Uses rest of integer division by 10 to get LSB_
data = data / 10;
//_Exclude last bit to next operation_
dataSplit[i] = excess;
//_Store LSB_
}
//_Open files to append data_
StreamWriter fileM01 = File.AppendText(path + "\\MeasurementsP1.MED");
StreamWriter fileM02 = File.AppendText(path + "\\MeasurementsP2.MED");
(...)
StreamWriter fileM16 = File.AppendText(path + "\\MeasurementsP16.MED");
//_Append data and close the file_
fileM01.WriteLine(dataSplit[0].ToString()); fileM01.Close();
fileM02.WriteLine(dataSplit[1].ToString()); fileM02.Close();
(...)
fileM16.WriteLine(dataSplit[15].ToString()); fileM16.Close();
}
127
else{
pins[i] = (16 - halfPins) + (i - halfPins);
}
}
String file2;
int j = 9-factor;
for (i = (9+factor); i <=16; i++){
//_Range of pins to re-adjust_
try{
file = path + "\\MeasurementsP" + i.ToString() + ".MED"; //_Original file name_
file2 = path + "\\MeasurementsP" + j.ToString() + ".MED"; //_Readjusted file name_
System.IO.File.Move(@file, @file2);
//_Re-adjust files names_
j++;
}
catch (Exception){
}
}
128
Listagem D.17 Funo de escrita do corpo do ficheiro VHDL para circuitos combinatrios.
void writeBodyBasicDigitalFileVHDL(int pin){
//* write the body of VHDL file
int i,j,comma;
int secondCondition=0;
int intAux;
char strAux1[500], strAux2[500],strAux[50];
highProb=100*(newMeasurementsNr)/(power(2,inputPins));
//_Write estimated success rate_
fprintf(ficheiroVHDL,"--Probability of success(%%): %f\n", highProb);
//_creates auxiliar signal_
fprintf(ficheiroVHDL,"signal concatenate : STD_LOGIC_VECTOR (%i downto 0);\nbegin\n\tprocess(",inputPins-1);
129
for (i=0;i<PINS_NR;i++){
if (pinsType[i]==1){
sprintf(strAux, "%i", i+1);
if (comma==1)
fprintf(ficheiroVHDL,",");
fprintf(ficheiroVHDL,"pin%s",strAux);
comma=1;
}
}
int readPins=1;
char strAux3[1000];
//_Concatenate inputpins_
fprintf(ficheiroVHDL,")\n\tbegin\n\t\tconcatenate<=");
for (i=0;i<PINS_NR;i++){
if(pinsType[i]==1){
strcpy(strAux3,"pin");
sprintf(strAux, "%i", i+1);
strcat(strAux3,strAux);
if (readPins!=inputPins) strcat(strAux3," & ");
readPins++;
fprintf(ficheiroVHDL,strAux3);
}
}
fprintf(ficheiroVHDL,";\n\n\t\tcase concatenate is\n");
//_creates case statement_
for (i=0;i<newMeasurementsNr;i++){
//_create case options_
strcpy(strAux1,"\t\t\twhen ");
fprintf(ficheiroVHDL,strAux1);
fprintf(ficheiroVHDL,"%c",34);
for (j=0;j<PINS_NR;j++){
if (pinsType[j]==1) {
sprintf(strAux1, "%i", processedMeasurements[j][i]);
fprintf(ficheiroVHDL,strAux1);
}
}
fprintf(ficheiroVHDL,"%c",34);
//_Add special character_
fprintf(ficheiroVHDL,"=> ");
for (j=0;j<PINS_NR;j++){
//_create the events when the specified case happens_
if (pinsType[j]==2) {
strcpy(strAux1,"pin");
sprintf(strAux2, "%i", j+1);
strcat(strAux1,strAux2);
fprintf(ficheiroVHDL,strAux1);
fprintf(ficheiroVHDL," <= '%i'; ",processedMeasurements[j][i]);
}
}
fprintf(ficheiroVHDL,"\n");
}
//_write the dafault case_
fprintf(ficheiroVHDL,"\t\t\twhen others => ");
for (j=0;j<PINS_NR;j++){
if (pinsType[j]==2) {
strcpy(strAux1,"pin");
sprintf(strAux2, "%i", j+1);
strcat(strAux1,strAux2);
fprintf(ficheiroVHDL,strAux1);
fprintf(ficheiroVHDL," <= '0';");
}
}
fprintf(ficheiroVHDL,"\n\t\tend case;\n");
}
130
131
132
133
134
135
atributionVerification==FALSE){
preAtributionState=sequentialTable[index_].possibleTransitions[sequentialTable[index_].indexTransition];
atributionVerification=verifySeletedAtribution(preAtributionState,index_,positionStart);
if(atributionVerification==TRUE){
sequentialTable[index_].assignedState=preAtributionState;
}
sequentialTable[index_].indexTransition++;
}
if(atributionVerification==FALSE){
sequentialTable[index_].decision=EXCLUDED;
applyCorretionAlghoritm(index_,positionStart);
}
}
136
137
138
139
Menu
Main Page
Load Default Values
Communication Settings
Help
Exit
Descrio
Apresenta a janela principal (Figura E.1)
Reconfigura os parmetros, atribuindo as predefinies.
Permite definir a porta srie a utilizar na ligao com o
sistema de aquisio de dados32. Apresenta ainda a taxa
de transmisso de dados (Ver Figura E.2).
Apresenta a descrio de cada parmetro, permitindo ao
utilizador efetuar uma melhor configurao dos
parmetros (ver Figura E.3).
Fecha a aplicao.
32
140
141
Figura E.5 Interface para configurao dos parmetros para anlise sequencial.
142
143
144
145
146
pinMode(50,INPUT);
pinMode(51,INPUT);
pinMode(52,INPUT);
pinMode(53,INPUT);
pinMode(ADC,INPUT);
pinMode(flipFlopAcq,OUTPUT);
pinMode(relayGND,OUTPUT);
pinMode(relayCLK,OUTPUT);
// initialize serial communication:
Serial.begin(115200);
Serial.flush();
initialization();
}
void initialization(){
//_initializes controler pins
int i;
for(i=22;i<32;i++) digitalWrite(i,LOW);
digitalWrite(flipFlopAcq,LOW);
digitalWrite(relayGND,LOW);
digitalWrite(relayCLK,LOW);
}
void transitionDetection(){
timeValues[clkMeasurements]=micros();
clkMeasurements++;
if(clkMeasurements>MEASUREMENTS_NR){
finishedDataCLK=true;
detachInterrupt(0);
}
}
void sequentialAcquisition(){
int i, value;
unsigned int sum=0;
delayMicroseconds(periodCLK);
digitalWrite(flipFlopAcq,HIGH);
delayMicroseconds(1);
digitalWrite(flipFlopAcq,LOW);
for(i=0;i<16;i++){
value=digitalRead(38+i);
sum=sum+value*pow(2,i);
}
digitalSeq[seqMeasurements]=sum;
seqMeasurements++;
if(seqMeasurements>MEASUREMENTS_NR){
finishedSeqMeasurements=true;
detachInterrupt(0);
}
}
void sendSeqdata(){
int i;
for(i=0;i<MEASUREMENTS_NR;i++){
Serial.println(digitalSeq[i],BIN);
}
Serial.println("END");
digitalWrite(EnableNegativeMux, LOW);
digitalWrite(EnablePositiveMux, LOW);
}
void sendCLKdata(){
147
int i;
for(i=0;i<MEASUREMENTS_NR;i++){
Serial.println(timeValues[i]);
}
Serial.println("END");
digitalWrite(EnableNegativeMux, LOW);
digitalWrite(EnablePositiveMux, LOW);
}
void clockDetection(char *arguments){
char *argA, *argB;
int pinsNR,referenceMux,acquiredData=0;
argA=strtok(arguments,":");
argB=strtok(NULL,":");
pinsNR=atoi(argA);
referenceMux=atoi(argB);
changeNegativeMux(referenceMux);
changePositiveMux(pinsNR);
digitalWrite(relayGND,HIGH);
digitalWrite(relayCLK,HIGH);
delay(5);
attachInterrupt(0, transitionDetection, CHANGE);
}
148
}
void changeNegativeMux(int relayIndex){
digitalWrite(EnableNegativeMux, LOW);
delay(25);
convertNegativeMuxIndex(relayIndex);
digitalWrite(EnableNegativeMux, HIGH);
delay(25);
}
void analogReading(){
//*Provides N analog measurements
int acquiredData=0;
int analogValue;
int waitingTimeUs, totalDelayUs;
randomSeed(millis());
while(acquiredData<MEASUREMENTS_NR){
//_Acquire N samples_
delay(5);
//_Stabilization time for ADC (fixed time)_
waitingTimeUs=random(1,2000);
//_Generate random time(us)_
delayMicroseconds(waitingTimeUs);
//_Wait random time to avoid periodical measurements_
analogValue=analogRead(portADC);
//_Acquire data_
Serial.println(analogValue);
//_Send data_
acquiredData++;
//_Increment acquired samples_
}
Serial.println("END");
//_Send message which indicates the end of measurements_
}
void digitalReading(int numberPins){
int i;
unsigned int sum=0;
int value;
digitalWrite(flipFlopAcq,HIGH);
delayMicroseconds(1);
digitalWrite(flipFlopAcq,LOW);
for(i=0;i<16;i++){
value=digitalRead(38+i);
sum=sum+value*pow(2,i);
}
Serial.println(sum,BIN);
}
149
//_Ativate intrruption_
//_String received_
//_Clean input buffer_
//_Convert to char array_
//_Clean string for next communication_
//_Breaking instruction: extrating opcode_
150
measurementsStr=strtok(NULL,":");
MEASUREMENTS_NR=atoi(measurementsStr);
arguments=strtok(NULL,"-");
//Execute instructions_
if(strcmp(opcode,"0001")==0){
runDifferentialAnalogMeasurements(arguments);
}
if(strcmp(opcode,"0010")==0){
runCombinatorialMeasurements(arguments);
}
if(strcmp(opcode,"0011")==0){
runSequentialMeasurements(arguments);
}
if(strcmp(opcode,"0100")==0){
clockDetection(arguments);
}
if(strcmp(opcode,"1111")==0){
Serial.println("1");
Serial.println("END");
}
}
void loop() {
generalSerialReading();
if(finishedDataCLK==true){
clkMeasurements=0;
sendCLKdata();
finishedDataCLK=false;
}
if(finishedSeqMeasurements==true){
seqMeasurements=0;
sendSeqdata();
finishedSeqMeasurements=false;
}
}
151
152
comparativamente transio ascendentes, no entanto um atraso na ordem dos nanosegundos. Na Figura F.6 encontra-se ilustrado um diagrama temporal relativo deteo
de uma transio descendente.
153
G. Esquema de montagem
A montagem do prottipo para verificao experimental do sistema proposto
encontra-se apresentada na Figura G.1.
154
/
1
1,25
1,5
1,75
2
2,25
2,5
2,75
3
3,25
3,5
3,75
4
4,5
5
6
Com base nos valores da Tabela H.1, com recurso a software ISE Design foi
possvel obter funo com melhor aproximao aos pontos registados (regresso
logstica), tendo sido obtida a expresso
98,7
, = 8
1 + 1,9 1,27
99
, = 6
1 + 3,7 1,72
98,9
, = 4
{1 + 10,49 2,13
onde representa o nmero de entradas do circuito.
155
(H.1)
Figura H.1 Esquema lgico obtido aps sintetizao das rplicas (testes: 74LS08 (#1),
74HCT32 (#2) e 74LS86 (#3)).
156
Figura H.2 Esquema lgico obtido aps sintetizao da rplica (Descodificador: 74HC139
(teste #4)).
157
Figura H.3 Esquema lgico obtido aps sintetizao da rplica (Conversor de BCD para 7
segmentos (teste: #5)).
158
Figura H.4 Simulao obtida para a rplica do circuito 74LS08 [62]: quatro portas lgicas do
tipo AND (teste #1).
Figura H.5 Simulao obtida para a rplica do circuito 74HCT32 [63]: quatro portas lgicas
do tipo OR (teste #2).
Figura H.6 Simulao obtida para a rplica do circuito 74LS86 [64]: quatro portas lgicas do
tipo XOR (teste #3).
159
Figura H.7 Simulao obtida para a rplica do circuito 74HC139 [65]: descodificador 2:4
duplo (teste #4).
Figura H.8 Simulao obtida para a rplica do circuito 74LS48 [66]: descodificador de BCD
para sete segmentos (teste #5).
160
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC
--Clock signal
--Reset: direct logic, assynchronus
--Digital port
--Digital port
--Digital port
--Digital port
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: VCC
--No connection needed: VCC
--No connection needed: VCC
161
);
REPLY_STATE_8,
REPLY_STATE_9,
REPLY_STATE_10,
REPLY_STATE_11,
REPLY_STATE_12,
REPLY_STATE_13,
REPLY_STATE_14,
REPLY_STATE_15
-- synchronus reset
process (CLK) is
begin
case curr_reply_state is
when REPLY_STATE_0 => pin3 <='0';pin4 <='0';pin5 <='0';pin6 <='0';next_reply_state := REPLY_STATE_0;
when REPLY_STATE_1 => pin3 <='1';pin4 <='0';pin5 <='0';pin6 <='0';next_reply_state := REPLY_STATE_2;
when REPLY_STATE_2 => pin3 <='0';pin4 <='1';pin5 <='0';pin6 <='0';next_reply_state := REPLY_STATE_3;
when REPLY_STATE_3 => pin3 <='1';pin4 <='1';pin5 <='0';pin6 <='0';next_reply_state := REPLY_STATE_4;
when REPLY_STATE_4 => pin3 <='0';pin4 <='0';pin5 <='1';pin6 <='0';next_reply_state := REPLY_STATE_5;
when REPLY_STATE_5 => pin3 <='1';pin4 <='0';pin5 <='1';pin6 <='0';next_reply_state := REPLY_STATE_6;
when REPLY_STATE_6 => pin3 <='0';pin4 <='1';pin5 <='1';pin6 <='0';next_reply_state := REPLY_STATE_7;
when REPLY_STATE_7 => pin3 <='1';pin4 <='1';pin5 <='1';pin6 <='0';next_reply_state := REPLY_STATE_8;
when REPLY_STATE_8 => pin3 <='0';pin4 <='0';pin5 <='0';pin6 <='1';next_reply_state := REPLY_STATE_9;
when REPLY_STATE_9 => pin3 <='1';pin4 <='0';pin5 <='0';pin6 <='1';next_reply_state := REPLY_STATE_10;
when REPLY_STATE_10 => pin3 <='0';pin4 <='1';pin5 <='0';pin6 <='1';next_reply_state := REPLY_STATE_11;
when REPLY_STATE_11 => pin3 <='1';pin4 <='1';pin5 <='0';pin6 <='1';next_reply_state := REPLY_STATE_12;
when REPLY_STATE_12 => pin3 <='0';pin4 <='0';pin5 <='1';pin6 <='1';next_reply_state := REPLY_STATE_13;
when REPLY_STATE_13 => pin3 <='1';pin4 <='0';pin5 <='1';pin6 <='1';next_reply_state := REPLY_STATE_14;
when REPLY_STATE_14 => pin3 <='0';pin4 <='1';pin5 <='1';pin6 <='1';next_reply_state := REPLY_STATE_15;
when REPLY_STATE_15 => pin3 <='1';pin4 <='1';pin5 <='1';pin6 <='1';next_reply_state := REPLY_STATE_0;
when others => next_reply_state := REPLY_STATE_0;
end case;
end process;
end rtl;
162
Listagem I.2 Cdigo VHDL gerado para rplica do circuito integrado 74LS393 (sem ocorrncia
de reset durante a observao).
--Created by Circuit Replicator
--VHDL language replication file
--Author: Rodolfo Rodrigues
--Created on Sat Sep 15 17:49:24 2014
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity counterNoRST is
port(
CLK:
pin2:
pin3:
pin4:
pin5:
pin6:
pin7:
pin8:
pin9:
pin10:
pin11:
pin12:
pin13:
pin14:
);
end entity;
in
inout
out
out
out
out
inout
inout
inout
inout
inout
inout
inout
inout
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC
--Clock signal
--No connection needed: GND
--Digital port
--Digital port
--Digital port
--Digital port
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: GND
--No connection needed: VCC
--No connection needed: VCC
--No connection needed: VCC
163
process (CLK) is
--this process select next state
begin
if (reset = '1') then
curr_reply_state:= REPLY_STATE_0;
elsif (falling_edge(CLK)) then
curr_reply_state := next_reply_state;
end if;
end process;
process (CLK) is
begin
case curr_reply_state is
when REPLY_STATE_0 => next_reply_state:=curr_reply_state;
when REPLY_STATE_1 => pin3 <='0'; pin4 <='0'; pin5 <='1'; pin6 <='0'; next_reply_state:=REPLY_STATE_2;
when REPLY_STATE_2 => pin3 <='1'; pin4 <='0'; pin5 <='1'; pin6 <='0'; next_reply_state:=REPLY_STATE_3;
when REPLY_STATE_3 => pin3 <='0'; pin4 <='1'; pin5 <='1'; pin6 <='0'; next_reply_state:=REPLY_STATE_4;
when REPLY_STATE_4 => pin3 <='1'; pin4 <='1'; pin5 <='1'; pin6 <='0'; next_reply_state:=REPLY_STATE_5;
when REPLY_STATE_5 => pin3 <='0'; pin4 <='0'; pin5 <='0'; pin6 <='1'; next_reply_state:=REPLY_STATE_6;
when REPLY_STATE_6 => pin3 <='1'; pin4 <='0'; pin5 <='0'; pin6 <='1'; next_reply_state:=REPLY_STATE_7;
when REPLY_STATE_7 => pin3 <='0'; pin4 <='1'; pin5 <='0'; pin6 <='1'; next_reply_state:=REPLY_STATE_8;
when REPLY_STATE_8 => pin3 <='1'; pin4 <='1'; pin5 <='0'; pin6 <='1'; next_reply_state:=REPLY_STATE_9;
when REPLY_STATE_9 => pin3 <='0'; pin4 <='0'; pin5 <='1'; pin6 <='1'; next_reply_state:=REPLY_STATE_10;
when REPLY_STATE_10 => pin3 <='1'; pin4 <='0'; pin5 <='1'; pin6 <='1'; next_reply_state:=REPLY_STATE_11;
when REPLY_STATE_11 => pin3 <='0'; pin4 <='1'; pin5 <='1'; pin6 <='1'; next_reply_state:=REPLY_STATE_12;
when REPLY_STATE_12 => pin3 <='1'; pin4 <='1'; pin5 <='1'; pin6 <='1'; next_reply_state:=REPLY_STATE_13;
when REPLY_STATE_13 => pin3 <='0'; pin4 <='0'; pin5 <='0'; pin6 <='0'; next_reply_state:=REPLY_STATE_14;
when REPLY_STATE_14 => pin3 <='1'; pin4 <='0'; pin5 <='0'; pin6 <='0'; next_reply_state:=REPLY_STATE_15;
when REPLY_STATE_15 => pin3 <='0'; pin4 <='1'; pin5 <='0'; pin6 <='0'; next_reply_state:=REPLY_STATE_16;
when REPLY_STATE_16 => pin3 <='1'; pin4 <='1'; pin5 <='0'; pin6 <='0'; next_reply_state:=REPLY_STATE_1;
when others => next_reply_state := REPLY_STATE_1;
end case;
end process;
end rtl;
Figura I.1 Diagrama temporal da simulao temporal realizada rplica do circuito integrado
74LS393 sem ocorrncia de reset.
164
Figura I.2 Esquema lgico obtido para a rplica do circuito integrado 74LS393 (contador)
com ocorrncia de reset durante a observao.
165
Figura I.3 Esquema lgico obtido para a rplica do circuito integrado 74HCT174 (flip-flop tipo
D, com montagem da Figura 5.8 b)) com ocorrncia de reset durante a observao.
166
Figura F.4 Esquema lgico obtido para a rplica do circuito integrado 74LS76 (flip-flop tipo
JK, com montagem da Figura 5.8 c)) com ocorrncia de reset durante a observao.
167
Dionsio Barros
CCCEE
University of Madeira
Funchal, Portugal
e-mail: dbarros@uma.pt
Elias Rodrigues
CCCEE
University of Madeira
Funchal, Portugal
e-mail: elias@uma.pt
ABSTRACT
This paper proposes a novel system to extract the behavior from digital integrated circuits (ICs), combinational and
sequential, by observing its normal operation. An acquisition data system controlled by a computer send measurements
of voltage values on the pins of the IC, that is subsequently analyzed on the computer by several algorithms to obtain
its behavioral. When an input-output correspondence is found a combinatorial function is made, otherwise heuristically
methods are applied to achieve a sequential circuit approach. Extracted behavior is automatically converted into VHDL
language description, to synthetize the extracted schematic. Thus, the replica obtained by the system could be
structurally improved, assuming the same behavior, so an equivalent circuit has been generated. Due to abstraction
level, provided by behavioral description, the obtained replica has a lower dependence of hardware compared to
structural approaches.
KEYWORDS
Reverse engineering, integrated circuits replication, non-invasive techniques, input-output correspondence, heuristic
approach
1. INTRODUCTION
Nowadays, electronic circuits dependence is enormous and ICs are present into a large amount of devices,
so the maintenance of electronic circuits is so important as its development. The maintenance of electronic
circuits, which contains ICs, have two problems: (1) older circuits could have obsolete ICs which are no
longer produced and technical information may be not available and (2) detect ICs with anomalies could
be difficult with visual analysis because it appears perfect, so when a circuit is working badly, behavioral
reverse engineering could be applied to all ICs contained on circuit to find the origin of the malfunctioning.
Definitely, behavioral reverse engineering is a potential solution for circuits recovering, even with few
information.
168
In the recent years, reverse engineering has gained popularity in activities such as performance and security
benchmarking, control quality certifications and support patent licensing (Torrance & James 2011).
However, many techniques of reverse engineering still semi-manual (Raja 2008) focused on logical
schematic extraction, from a disassembled chip and using image analysis algorithms (Quijada et al. 2014).
This kind of processes are invasive and usually after reverse engineering analysis, the IC is no longer
useable. The developing of non-invasive techniques of reverse engineering is currently a research area
(Matlin et al. 2014). The increasingly complexity of microchips using a greater number of layers and logic
gates makes this process unaffordable when using traditional methods that rely on human inspection and
analysis (Quijada et al. 2014). Despite modern computers have greater processing capacity than a human
being, fully algorithmic reverse engineering is a relatively new field of research (Subramanyan et al. 2014).
Actually, mostly of reverse engineering techniques based on algorithms uses libraries with components
information, and reverse engineering is made by matching the circuit under analysis against libraries
component to find any correspondence (structural or functional) (Subramanyan et al. 2014). Many
algorithms try to accomplish an approach to typical circuits, as counters, shift registers, and others
(Subramanyan et al. 2014). Our purpose is develop a system capable of replicate digital integrated circuits
by learning its behavior, using non-invasive, automatic and fully algorithmic techniques, without the
support of any library. The used approach tries to create a generic learning method independently if circuits
under test has a typical behavior or not. Usual applications of reverse engineering aim to discover the exact
content of IC (mainly security and control applications), but the proposed system is aimed to create an
equivalent replica, independently of structural similarity between original circuit and the obtained replica.
2. METHODOLGY
2.1 Developed system
The proposed system consists of a set of algorithms (hosted in a computer) and an acquisition circuit
measurement (controlled by computer) capable of performing measurement of voltages on the pins of the
IC and send the collected information to the computer. After the analysis processes the extracted behavior
is described into a VHDL file, into a synthesizable structure as shown into Figure 1.
In this paper, we will focus algorithms of behavior extraction. Generically, the analysis made by the
algorithms consists into three steps: find constant signals and discard them, input-output correspondence
analysis (combinational approach) and heuristic approach is applied to generate a customized state machine,
which describes circuit behavior (when combinational approach failed). This sequence of procedures could
be diagrammed by flowchart of Figure 2.
Sub-algorithms, such as communication with data acquisition system, are used to provide all data required
by the main algorithms.
169
2.2 ALGORITHMS
2.2.1 Detection of constant signals
Constant signals have no influence in IC behavior, or by others words, the influence is always the same
during circuit normal operation and consequently could be discarded. This analysis allow us to find pins
intended to supply the IC (designated as VCC and GND) and eventually other constant signals, whose
discarding will simplify analysis. The measurements required by this algorithm are differential
measurements between each combination of pins, in analog format. For each combination of pins, the
differential voltage average can be obtained using the expression
(1)
=1
where and means voltage mean value and number of samples, respectively. Assuming only digital ICs
are being analyzed, differential voltage average should be near to zero or VCC for two constant signals and
VCC/2 when, at least, one of the signals is not constant. Two pins are classified as constants when all
samples measured between those pins are included in range [ ; + ] , where represents the
maximum tolerance allowed. This step provides reference pin (GND) for the next measurements.
(2)
where , and means the success rate, number of input combinations observed and number of input pins,
respectively.
170
When the transition to a state previously detected causes two different transitions for the same
combination of state and input transitions a mismatch is found: Incorrect transition is reversed and a new
attempt is made to perform a new transition to another state with the same output, already identified. If all
previous states with the same output combinations are incompatible, a new state is generated. An
unsuccessful example of a transition to a previous state is shown in Figure 4.
From Figure 4 it appears that the attempt to make the transition from state C to state A is not correct because
in the next transition there are two different transitions (01 and 10) to the same input combination (1 ).
Therefore, as there are no other states with the same output, a new state is created (state D). The accuracy
of the approximation rises with the increasing depth analysis. The implementation of the algorithm is
summarized in the flowchart of Figure 5.
Figure 5. Flowchart of the heuristic method to generate a customized finite state machine.
3. CONCLUSION
This paper proposed a novel system to extract the behavior from digital ICs(combinational and sequential),
using input-output correspondence and heuristic methods to achieve combinational and sequential circuits
replica, after observing circuit during its operation. The main advantage of the proposed system is the level
of abstraction provided by the VHDL code automatically generated, allowing the simulation and synthesis
of the replica. Recovery circuits and possible technological upgrades (when applied to old circuits) are
possible applications to the proposed system. A compatible data acquisition system was developed and first
results showed the replication of some circuits, with success rates between 55% and 100% depending on
the number of samples used and the type of circuit.
REFERENCES
Cordenonsi, A.Z., 2008. Ambientes, objetos e dialogicidade: uma estratgia de ensino superior em heursticas e
metaheursticas. Universidade Federal do Rio Grande do Sul.
Matlin, E., Agrawal, M. & Stoker, D., 2014. Non-Invasive Recognition of Poorly Resolved Integrated Circuit
Elements. IEEE Transactions on Information Forensics and Security, 9(3), pp.354363.
Quijada, R. et al., 2014. The Use of Digital Image Processing for IC Reverse Engineering. In 11th International
Multi-Conference on Systems, Signals & Devices (SSD). Barcelona, Spain, pp. 14.
171
Raja, V., 2008. Reverse engineering: an industrial perspective First Edit. V. Raja & K. J. Fernandes, eds., London:
Springer.
Subramanyan, P. et al., 2014. Reverse Engineering Digital Circuits Using Structural and Functional Analyses. IEEE
Transactions on Emerging Topics in Computing, Vol. 2, No. 1, pp.6380.
Torrance, R. & James, D., 2011. The state-of-the-art in semiconductor reverse engineering. In 48th
ACM/EDAC/IEEE Design Automation Conference (DAC). San Diego, USA, pp. 333338.
172