Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos,...
Transcript of Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos,...
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
1
Projecto de Circuitos e Sistemas Digitais(MEEC1078)
Mestrado em Engenharia Electrotécnica e de Computadores
(Informática Industrial)
Faculdade de Engenharia da Universidade do PortoDepartamento de Engenharia Electrotécnica e de Computadores
Edição 2004/05
António José Duarte Araújo
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
2
Sistemas Digitais• Importância crescente
– Cada vez mais áreas de aplicação• Comunicações móveis• Automóvel• Computação pessoal
– Custo cada vez mais baixo• PCs, telemóveis, equipamentos domésticos, ...
– Tamanho físico reduzido• densidade do processo 0.18µ ≈100.000 gates/mm2
– Consumo de energia cada vez menor• alimentação eléctrica com baterias, telemóveis, computadores portáteis
• Projectar um SD– “if it wasn’t hard they wouldn’t call it hardware”, J.F. Wakerly
– Ferramentas computacionais automatizam partes do projecto...– ...mas a concepção e o desenho têm de ser feitos “à mão”
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
3
Fluxo de projecto (típico)
Ideia
sistema (algoritmo)
circuito (RTL ou lógico)
Síntese(mapeamento tecnológico)
Validaçãofuncional
Validaçãotemporal
implementação
teste
DQ
DQ
um controlador de intensidadeluminoas para ligar e desligar luzes de casa sempre queanguem entra ou sai da casota do cao que se chama bobi e temtambem um gato que se chama tareco1 - receptor2 - um cpu para calcular a luz3 - interface de potência
inte
rfac
e processador
memória
CI/dev/null
validaçãofuncional
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
4
Concepção do sistema• Tecnologias de implementação
– Como vai ser construído o sistema? Um ASIC ou CIs off-the-shelf?– Que tecnologia de montagem a usar nas cartas de circuito impresso?– A decidir o mais cedo possível no ciclo de projecto
• Particionamento – um sistema pode não “caber” num único CI– divisão da funcionalidade em diferentes dispositivos
memória
A/D
co-proc.
CPU
I/O
?funcionalidaderapidezdisponibilidadenúmero de pinosencapsulamentofabricante(s)
?PCBCOBMCMwire-wrap
ASIC
RAMµP
A/D
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
5
Fabricar um CI: que tecnologia ?
• Critérios a ter em conta– acessibilidade às ferramentas e bibliotecas– custo de projecto e fabrico (prototipagem e produção)– fiabilidade– rapidez (ns / NAND, frequência máxima de clock)– tamanho (área, número de gates ou transistores)– consumo de energia– dissipação térmica– compatibilidade electromagnética– resistência mecânica (do encapsulamento)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
6
Ferramentas computacionais(no fluxo de projecto de circuitos integrados)
• CAD/CAE (Computer Aided Design/Computer Aided Engineering)– fundamentais para projectar em tempo útil circuitos complexos
• vários problemas de optimização combinatória (NP-difíceis)– geralmente não atingem soluções óptimas
• baseadas em processos de optimização do tipo shake&hope– para problemas de dimensão reduzida, um projectista pode fazer melhor
• mas à custa de mais tempo; justifica-se apenas para partes pequenas
• Ferramentas CAD/CAE para projecto de sistemas digitais– trabalham com representações electrónicas de SDs (modelos)– alguns tipos de ferramentas...
• captura esquemática (é mais do que desenhar um circuito lógico...)• síntese (lógica, RTL, alto nível)• mapeamento tecnológico• desenho físico (layout), verificação de regras geométricas• simulação lógica, verificação funcional, verificação temporal• análise temporal• análise eléctrica, análise térmica• modelação e simulação de faltas, geração de vectores de teste
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
7
Modelos de circuitos digitais• Representações electrónica de SDs
– usadas e transformadas por ferramentas CAD/CAE
• Um modelo é uma aproximação!– que pode ser boa e pode ser má…– rigor ⇒ detalhe ⇒ aproximação da tecnologia– a simulação de um modelo nunca é igual ao seu funcionamento real
• Modelos (mais frequentemente) tratados por humanos– modelos estruturais (esquemáticos)
• detalham a estrutura do circuito, interligando “componentes” entre si– modelos comportamentais (HDLs, state charts, tabelas de verdade)
• descrevem o comportamento do sistema mas • não contêm informação estrutural
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
8
Classificação de modelos: Y- chart
comportamental
estrutural
físico
placas, MCMs
módulos, chips
células
layout detransistores
transistoresportas lógicas
registos, muxs
processadores, memórias
fluxogramas,algoritmos
transferências entre registos
expressõesbooleanas
funções detransistores
dispositivológico
RTLsistema
níveis
de ab
stracçã
o
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
9
Especificação de um SD• Tradicionalmente…
– captura esquemática (modelo estrutural)• interligação de portas lógicas, flip-flops, componentes RTL,…• bibliotecas de componentes específicas de uma tecnologia• anotação do desenho com atributos
– nomes, parâmetros de componentes, restrições para implementação• captura a estrutura (física) do circuito
– tabelas de verdade, expressões booleanas (modelo comportamental)• conveniente para blocos de lógica combinatória ou FSMs
– minimização lógica– codificação de estados
• representação textual, tradução automática para circuitos lógicos• independente da tecnologia alvo de implementação
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
10
Especificação de um SD• ... e actualmente
– projecto a níveis de abstracção mais elevados• representações comportamentais ao nível RTL e algorítmico• linguagens normalizadas para descrição de hardware
– suportadas por ferramentas de síntese automática– combinam modelação estrutural com comportamental– permitem ao projectista abstrair-se da tecnologia alvo (mas não totalmente!)– Portabilidade, facilidade de manutenção e documentação
• redução do ciclo de projecto– permite explorar diversas alternativas com diferentes compromissos
– comparando com a programação de computadores...
código máquinaassemblyC, Pascal
layoutportas lógicasHDLs
nível deabstracção crescente
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
11
Projecto estruturado• Hierarquia e modularidade
– conceitos semelhantes aos empregues em programação estruturada– objectivos:
• reutilização de componentes (sub-circuitos)• facilitar a verificação do projecto• simplificar a produção da documentação (geralmente esquecida!)
– quantos níveis de hierarquia? que granulosidade?• critérios principais:
– funcionalidade e complexidade dos módulos
• uma diferença importante da hierarquia usada em software:– não significa reduzir a complexidade do circuito.– geralmente “desaparece” durante as várias fases do projecto
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
12
Metodologias de projecto• Abordagens típicas
– bottom-up (capture-and-simulation)• hierarquia criada de baixo para cima (lógico ⇒ RTL ⇒ sistema)• ciclo de projecto:
– desenhar os circuitos mais simples (ou usá-los se já existirem)– validar esses circuitos por simulação– usá-los na construção de outros circuitos mais complexos
– top-down (describe-and-synthesize)• hierarquia criada de cima para baixo (sistema ⇒ RTL ⇒ lógico)• ciclo de projecto:
– especificar o sistema de forma comportamental– sintetizar e avaliar as soluções resultantes de diferentes restrições
– na prática: top-down + bottom-up = meet-in-the-middle
manual
automático
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
13
Validação do projecto• Simulação funcional
– verificação de uma especificação a um nível abstracto• geralmente usados modelos unit-delay ou zero-delay• verificar que é satisfeita a funcionalidade desejada• se não funciona? detecção e depuração de erros (debug)• problemas:
– como definir os vectores de simulação?– como se sabe que o resultado é correcto?– quão exaustivo é o teste?
– fontes de erro comuns• especificações incompletas, ligações erradas ou nomes trocados• uso incorrecto de ferramentas de síntese automática• distração... (Save before quit? ou Quit without save?)
• é bom lembrar: os computadores não erram, os humanos sim…• ...e que: são humanos que criam as ferramentas de software!
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
14
Validação do projecto• Verificação temporal
– circuitos lógicos introduzem atrasos• O modelo do circuito ainda funciona considerando os atrasos?• qual é o desempenho (atrasos, frequência de relógio)?• o que limita o desempenho? Como se pode aumentar?
– modelos de atrasos• específicos de uma tecnologia• dependem do circuito em que um componente se insere (fan-out)• quanto mais completo é o modelo, mais complexa é a simulação
– tpLH, tpHL, tr, tf (mínimos, típicos e máximos)
• interligações também introduzem atrasos – função do comprimento e da forma (30ps/cm no vazio)– só são realmente conhecidos após a implementação física do circuito
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
15
Teste• Teste do circuito fabricado
– testar para quê?• minimizar (→ 0%) o número de circuitos defeituosos vendidos• detectar e diagnosticar defeitos de fabrico• melhorar o sistema ou o processo produtivo
– como testar?• construir um modelo de faltas do circuito • criar vectores de simulação que as consigam detectar
– gerando saídas diferentes na presença ou ausência da falta– ferramentas para ATPG - Automatic Test Pattern Generation
– o teste é uma fatia importante do custo de produção• projecto orientado para a testabilidade (DfT - Design for Testability)• auto-teste (BIST - Built-in Self Test)• teste de PCB (boundary scan test, normas IEEE 1149.1 e IEEE1149.4)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
16
Linguagens de descrição de hardware• Modelação de um circuito (digital) com HDL
– descrições comportamentais permitem níveis elevados de abstracção• definir a funcionalidade de um sistema sem detalhar a sua estrutura
– fluxo de projecto seguindo uma metodologia top-down• descrição em HDL, validação, síntese automática (RTL+lógica)
– representação textual• facilita a portabilidade, edição e documentação
– duas perspectivas de modelação no desenvolvimento de um projecto• construir modelos sintetizáveis do circuito a fabricar
– subsets das HDLs e regras de modelação dependem das ferramentas• por exemplo, $monitor() não é sintetizável!
– um modelo sintetizável deve descrever “bem” o seu funcionamento
• construir modelos não sintetizáveis para validar o projecto (testbench)– não será sintetizado; descreve um comportamento apenas para simulação
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
17
Modelação com HDLs
circuitoa
fabricar
geraçãode
estímulos
análisede
respostas
modelo sintetizável(vai ser o circuito lógico)
modelo não sintetizável(testbench)
clockreset
memóriasA/D e D/Ainterfaces
ficheiros...
simula o comportamento dedispositivos externos
analisa respostas para verificar a correcção do modelo
ficheirosregistos de textowaveforms...
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
18
Verilog e VHDL - história• VHDL
– ‘80: por necessidade de normalização, documentação e portabilidade, e DOD funda projecto para criar linguagem de “programação” para descrever hardware
– ‘83: início do desenvolvimento do VHDL (IBM, Texas, Intermetrics)– ‘87: o DOD impõe que todos os SDs fossem descritos em VHDL; standard IEEE 1076;
os sistemas electrónicos do F-22 foram um dos primeiros projectos em VHDL– ‘93: VHDL é revisto e adoptado como o standard IEEE 1076 ’93– ‘96: adopção generalizada por ferramentas EDA; package para ferramentas de síntese
(IEEE 1076.3); modelação de bibliotecas para ASIC e FPGA (IEEE 1076.4)
• Verilog– ‘81: Gateway Design Automation, Philip Moorby cria GenRad HDL e o simulador HILO– ‘83: Gateway lançou a linguagem Verilog HDL e um simulador de Verilog– ‘85: linguagem e simulador são enriquecidos (Verilog-XL)– ‘87: Synopsys adopta Verilog como formato de entrada para ferramentas de síntese– ‘89/’90: Cadence compra Gateway e separa o simulador da linguagem; a linguagem é
libertada para o domínio público; é criado o OVI (Open Verilog International)– ‘93: neste ano, de todos os circuitos submetidos a fundições de silício, 85% foram
desenvolvidos em Verilog.– ‘95: Verilog é revisto e adoptado como o standard IEEE 1364
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
19
Verilog e VHDL - comparação• capacidade de modelação
– é semelhante para modelos estruturais– VHDL oferece melhor suporte para modelos abstractos e modelos de atrasos– Verilog tem melhores construções para modelar ao nível lógico e switch level
• tipos de dados– VHDL suporta tipos de dados abstractos (por exemplo estruturas)– em Verilog os tipos são muito simples e mais próximos do hw (wire e reg)
• sintaxe e aprendizagem– VHDL é fortemente tipada, mais verbosa e requer mais tempo para aprendizagem– Verilog é mais simples, com uma sintaxe próxima da linguagem C
• parameterização– VHDL tem construções para parametrizar número de bits, replicar estruturas e
configurar modelos– Verilog suporta apenas modelos com parâmetros e instanciação com redefinição de
parâmetros
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
20
Modelação em HDLs(recomendações gerais)
• Antes de iniciar a construção do modelo– definir a arquitectura e estruturação do projecto (particionamento)– ferramentas de síntese não processam bem circuitos infinitamente
grandes!
• Escrever o código de modo a reflectir a arquitectura– estruturado em módulos e funções, ter em mente a reusabilidade– favorecer a legibilidade: nomes, comentários, parêntesis, parâmetros...
• Garantir a precisão da simulação– deve traduzir fielmente o comportamento do hardware gerado– modelar correctamente o comportamento das partes não sintetizáveis
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
21
Verilog HDL• Linguagem de descrição de hardware digital
– representação textual e estruturada de circuitos lógicos– originalmente para modelação e simulação de circuitos digitais– actualmente usada também como fonte para síntese automática– interligação de modelos estruturais com modelos comportamentais– não é uma linguagem de programação!
• Unidade básica de um modelo em Verilog:– module: sub-circuito definido por:
• interface (entradas, saídas ou sinais bidireccionais)
• implementação (modelo do circuito digital)
presetclear
q
qbar
q
qbar
preset
clear
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
22
Verilog - introdução• Modelo de um full-adder
module full_adder(a, b, cin, s, cout);input a, b, cin;output s, cout;wire t1, t2, t3;
xor xor_1( s, a, b, cin );
and and_1( t1, a, b ),and_2( t2, a, cin),and_3( t3, b, cin);
or or_1( cout, t1, t2, t3);
endmodule
interface
implementação
instância
saída
entradas
primitivaslógicas
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
23
Verilog – modelos estruturais
• Modelo de um somador de 4 bits– usando o full-adder anterior
module four_bit_adder(a, b, cin, s, cout);input [3:0] a, b;input cin;output [3:0] s;output cout;wire [2:0] cy;
full_adder fa_0( a[0], b[0], cin, s[0], cy[0] ),fa_1( a[1], b[1], cy[0], s[1], cy[1] ),fa_2( a[2], b[2], cy[1], s[2], cy[2] ),fa_3( a[3], b[3], cy[2], s[3], cout );
endmodule
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
24
Verilog – verificação funcional• Modelo completo do somador de 4 bits
– reunião dos módulos full_adder e four_bit_adder
• Verificação funcional do somador de 4 bits (módulo testbench)
module four_bit_adder_testbench;reg [3:0] a, b;reg cin;wire [3:0] s;wire cout;
four_bit_adder adder4(a, b, cin, s, cout);
initialbegin
$monitor($time, “ ci=%b, a=%d, b=%d, s=%d, co=%b”, cin, a, b, s, cout);cin=0; a=2; b=4; #10a=0; #10a=4’b1111; b=0 #10$stop;
endendmodule
o circuito a testar
monitor de sinais
alguns estímulos de simulação
registos (seguram valores)
fios (propagam valores)
controlo do simulador (pára)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
25
Verilog – verificação funcional• Verificação exaustiva do somador de 4 bits
• se fosse de 32 bits, e gastando apenas 1ns para cada vector, seria necessário 1170 anos!
module four_bit_adder_testbench;reg [3:0] a, b;reg cin;wire [3:0] s;wire cout;
four_bit_adder adder4(a, b, cin, s, cout);
initialbegin
$monitor($time, “ ci=%b, a=%d, b=%d, s=%d, co=%b", cin, a, b, s, cout);cin = 0;for(a=0;a<15;a=a+1)
for(b=0;b<15; b=b+1) #10 b=b;$stop;
endendmodule
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
26
Verilog – modelos comportamentais
• Modelo comportamental do full-adder
module full_adder_comp(a, b, cin, s, cout);input a, b, cin;output s, cout;reg cout;
assign s = a ^ b ^ cin;
always @( a or b or cin )begincout = (a & b) | (a & cin) | (b & cin);
endendmodule
modela um bloco combinacional
sempre que...
liga s à expressão
operadores lógicos
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
27
Verilog – modelos comportamentais• Modelo comportamental do somador de 4 bits
module four_bit_adder_c(a, b, cin, s, cout);input [3:0] a, b;input cin;output [3:0] s;output cout;reg cout;reg [5:0] ta, tb, ts; // “registos” temporários
always @( a or b or cin or ta or tb or ts )beginta = { 1’b0, a, 1’b1 };tb = { 1’b0, b, cin };ts = ta + tb;cout = ts[5];s = ts[4:1];
endendmodule
sempre que...
{...} é concatenação de bits
o somador
extrair os resultados
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
28
Verilog – circuitos síncronos
• o elemento mais simples: um flip-flop tipo D
module my_DFF(clk, d, q);input clk, d;output q;reg q;
always @( negedge clk )beginq <= d;
endendmodule
modela um blocosíncrono com clk
sempre que clk
q “segura” um valor lógico
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
29
Verilog – um contador up/down
`timescale 1ns/100psmodule updown_counter(clk, reset, enable, down, dout, end_count);input clk, reset, enable, down;output [3:0] dout;reg [3:0] dout;output end_count;
assign end_count = enable & (down ? (dout==0) : (dout==15) );
always @( posedge clk or posedge reset)begin
if ( reset ) dout <= 0
elsebegin
if ( enable )if ( down )dout <= dout – 1;
elsedout <= dout + 1;
endendendmodule
síncrono com clkreset síncrono
combinacional
unidade de tempo do simulador / precisão
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
30
Verilog – testbench para o contador
`timescale 1ns/100psmodule updown_counter_testbench;reg clk, reset, enable, down;wire [3:0] dout;wire end_count;
updown_counter count_1(clk, reset, enable, down, dout, end_count);
initialbegin
clk = 0; down = 0; reset = 0; enable = 1;# 2 reset = 1; // apply reset# 6 reset = 0; // release reset# 300 // count up 30 clock cyclesenable = 0; // disable counter# 40down = 1; // count down# 100enable = 1; // enable counter# 300$stop; // stop simulation
end
always #5 clk = ~clk; // 10ns clock period
endmodule
estímulos de simulação
instância do contador
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
31
Modelação em Verilog• Modelos estruturais
– instanciação de módulos ou primitivas• primitivas lógicas: and, or, nand, nor, xor, xnor not, buf
– ligação de sinais por posição ou nome
module xpto(a,b,c);input a,b;output c;...endmodule
module top;wire x1,x2;reg k1,k2;
xpto xpto_1(k1,k2,x1),xpto_2(.c(x2),.a(x1),.b(k2));
endmodulexpto_1
xpto_2a
bc a
bc
k1
k2x1
x2
primeiro sinal é saída, restantes são entradas
primeiro sinal é entrada,restantes são saídas
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
32
Verilog - modelos comportamentais• Entidade básica: processo
– processo: um componente que realiza uma acção• síncrono com um relógio, assíncrono ou combinacional• activado por eventos abstractos (por exemplo dump da memória)
• Um sistema– vários processos que operam concorrentemente– comunicam entre si através dos sinais que os interligam
• Construções: always statement;
always trigger_event
statement; @(a or b or c)@(posedge clock)@(modulename.event)wait(rqst == 1)
initialstatement;
simula statement uma vezquando o simulador inicia (não é sintetizável)
repete statement para sempre (é sintetizável)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
33
Verilog - modelos comportamentais• Instruções condicionais
if (condition)statement1
elsestatement2
case (expression)expr1: statement1;expr2: statement2;default: statement3;
endcase;
(expression)?(true):(false)
if (a[2:0]==3’b010 && cy)...
casez
casex
(Z é considerado don’t care)
(Z e X são don’t cares)
case (ir[7:4])4’b0001: ...4’b0010: ...default: ...
endcase;
casex (ir[7:4])4’bxx01: ...4’bxx10: ...default: ...
endcase;
acc=(ir[7:0]==4’b0011) ?0 : 255;
if (a[2:0]===3’b01z && cy)...
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
34
Verilog - modelos comportamentais• Ciclos
for(start;end_expr;update)statement;
forever statement;
for(i=0;i<8;i=i+1)x[i] = x[i+1]
repeat(loop_count)statement;
repeat(10)begin
a[i]=a[i+1];i=i+1;
end;
forevera = b;
while(i<8)begin...end
while(condition)statement;
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
35
Verilog - modelos comportamentais
• task– equivalente a um procedimento– pode chamar-se a si próprio
usando os mesmos registos locais
• function– equivalente a uma função– retorna um valor– não pode conter instruções
com temporizações ou eventos
• Estruturação em “subrotinas”multiply(a,b,acc);...
task multiplyinput [15:0] a, b;output [31:0] prod;
begin...end
endtask
if (testDF(d1,d2)==2’b00)...
function [1:0] testDF;input [1:0] Duab, Dvab;
begin...testDF=2’b01;end
endfunction
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
36
Verilog - modelos comportamentais
• Atribuição procedimental
• Atribuição non-blocking
begina1=in0+in1-acc;y1=a1+b1;z1=y1+a1;
end
begina1<=in0+in1-acc;y1<=a1+b1;z1<=y1+a1;
end
Admitindo que in0=4,in1=4,acc=1a1=4, b1=4, y1=8
a1 = 4+4-1 = 7;y1 = 7+4 = 11;z1 = 11+7 = 18;
a1 = 7;y1 = 4+4 = 8;z1 = 8+4 = 12;
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
37
Verilog - modelos comportamentais
• Atribuição contínua– modela um bloco de lógica combinacional
– modelação de atrasos
assign #delay one_wire = expression,other_wire = expression;
#delay#(d1,d2,d3)#(d1m:d1t:d1M, d2m:d2t:d2M, d3m:d3t:d3M)
delay: atrasod1: atraso de 0 - 1d2: atraso de 1 - 0d3: atraso para HiZ
mínimo típico máximo
assign #5 sum= a^b^ci,cout = a & b |
a & ci |b & ci;
wire #delay one_wire = expression,other_wire = expression; wire [7:0] #10
sum = a + b;
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
38
Verilog - modelos comportamentais
• Módulos com parâmetros
• Tasks do sistema (para testbenches)– $display(); imprime quando é invocado– $monitor(); só um activo no modelo– $time; tempo de simulação– $finish; termina a simulação– $stop; interrompe a simulação
module my_multiply(...);parameter size=16, delay=5;...endmodule
my_multiply #(8,2) mult1(...);
valores por omissão
valores atribuídos à instância mult1
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
39
Construção de modelos sintetizáveis(em Verilog, para Synopsys FPGA Express)
– Atrasos são sempre ignorados• o seu uso pode tornar incoerente a simulação e o comportamento do circuito
– Sinais do tipo reg• nem sempre são traduzidos em registos• podem ser traduzidos em wire, D-flip-flops ou latches transparentes
– Atribuição contínua (assign sum=a^b^cin;)• traduzida para um bloco de lógica combinacional
– Operadores aritméticos e lógicos• apenas para inteiros sem sinal, dimensão dos resultados depende dos operandos• são gerados circuitos combinacionais que os implementam• podem ou não ser partilhados para diferentes operações do mesmo tipo• os operadores / e % só podem ser usados com operandos constantes (V 2001.08-FE3.6.1)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
40
Construção de modelos sintetizáveis(em Verilog, para Synopsys FPGA Express)
– always - duas formas• always @(posedge ...): os sinais tipo reg são traduzidos para Dffs
always @(posedge clock or negedge reset)beginif (!reset)acc = 8’b00000000;
elseacc = data_in;
end
• always @(a or b or ...): sinais do tipo reg são latches ou wires
reset assíncrono;tem de ser avaliado no primeiro if(...)
always @(a or b or sel)beginif (sel)
out = a;else
out = b;end
out é uma latch out é uma função combinacional de sel, a e b
lista de sensibilidadespode ser omitida sópara síntese
always @(a or sel)beginif (sel)
out = a;end
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
41
Construção de modelos sintetizáveis(em Verilog, para Synopsys FPGA Express)
– inferência de latches em construções always - regra geral• latches são geradas para sinais do tipo reg que não sejam
completamente especificados para todos os casos de instruções condicionais (por exemplo if (sel) out = a; e quando sel==0 ? )
• no caso contrário é apenas gerado um circuito combinacional sem elementos de memória
– latches são (geralmente) indesejáveis e fatais num circuito síncrono• como podem afectar o funcionamento de um circuito síncrono?!
– ferramentas de síntese ignoram a lista de sensibilidades• em construções do tipo always @( enable or bus_a or bus_b)
• o simulador só avalia o bloco quando algum sinal muda de estado
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
42
Construção de modelos sintetizáveis(em Verilog, para Synopsys FPGA Express)
– inferência de buffers de 3-estados• atribuindo z a um sinal (do tipo reg)
module three_state(in, out, en);input in, en;output out;reg out;
always @( in or en)if (en)
out = in;else
out = 1’bz;endmodule
assign out = en ? in : 1’bz;
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
43
Construção de modelos sintetizáveis(em Verilog, para Synopsys FPGA Express)
– ciclos• for(...): só são suportadas 4 formas:
– crescente ou decrescente de passo constante (...;index=index±step)– condição de terminação com <, >, <= ou >=
• while (...): cria um ciclo combinacional; deve ser quebrado com @(posedge clock)
always @( a or b or carry )for(i=0;i<=31;i=i+1)begins[i] = a[i]^b[i]^carry;carry = a[i]&b[i] | a[i]&carry | b[i]&carry;
end
always @( posedge clock )while (x<y)begin
@(posedge clock);x=x+z;
end
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
44
Modelação de máquinas de estados
• FSM (Finite State Machine)– sequência determinada de estados, síncrono com relógio– estrutura geral
saída
próximoestado
registo deestado
entradas saídas (Mealy)
reset(assíncrono)
reset(síncrono)
clock
saídas (Moore)
saídas (Moore)
saída
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
45
Máquinas de estados - especificação
• Tabela de transição de estados
• Diagrama de transição de estados
00 01
10
0X/1
01X/0
1
1
X1/0X0/1
XX/1
S0 S1
S2
i1/Yme i1/YmeYmo
Ymo
i2/Yme
Ymei2/Yme
entradas estado próximo saídasi1 i2 corrente estado Yme Ymo0 X 00 (S0) 00 (S0) 1 01 X 00 (S0) 01 (S1) 0 0X 1 01 (S1) 00 (S0) 0 1X 0 01 (S1) 10 (S2) 1 1X X 10 (S2) 00 (S0) 1 1
saídas Mealysaídas Moore
i1 i2/Yme
Ymo
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
46
Máquinas de estados - modelação em Verilog
• Modelo incorrectomodule FSM_mal(clock, i1, i2, Yme, Ymo);input clock, i1, i2;output Yme, Ymo;reg Yme, Ymo;reg [1:0] state;
always @(posedge clock)case (state)
2’b00: beginYmo=0;if (i1)begin
state=2’b01; Yme=0;endelse
Yme=1;end
2’b01: beginYmo=1;if (i2)begin
state=2’b00; Yme=0;endelse
beginstate=2’b10; Yme=1;
endend
2’b10: beginYmo=1; state=2’b00; Yme=1;
endendcase
endmodule
00 01
10
0X/1
01X/0
1
1
X1/0X0/1
XX/1
i1 i2/Yme
Ymo
Funciona? Quais são os erros?
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
47
Máquinas de estados - modelação em Verilog
• Modelo incorrectomodule FSM_mal(clock, i1, i2, Yme, Ymo);input clock, i1, i2;output Yme, Ymo;reg Yme, Ymo;reg [1:0] state;
always @(posedge clock)case (state)
2’b00: beginYmo=0;if (i1)begin
state=2’b01; Yme=0;endelse
Yme=1;end
2’b01: beginYmo=1;if (i2)begin
state=2’b00; Yme=0;endelse
beginstate=2’b10; Yme=1;
endend
2’b10: beginYmo=1; state=2’b00; Yme=1;
endendcase
endmodule
• falta de reset (síncrono e/ou assíncrono)• um só processo para próximo estado e saídas• todas as saídas são registadas• Yme não é saída Mealy• não é definido o estado inicial• falta o estado 2’b11
00 01
10
0X/1
01X/0
1
1
X1/0X0/1
XX/1
i1 i2/Yme
Ymo
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
48
Máquinas de estados - modelação em Verilog
• Modelo correcto
always @(state or i1 or i2)begin
case (state)2’b00: begin
nextstate=2’b00;Ymo=0;if (i1)begin
nextstate=2’b01; Yme=0;endelse
Yme=1;end
2’b01: beginYmo=1;if (i2)begin
nextstate=2’b00; Yme=0;endelse
beginnextstate=2’b10; Yme=1;
endend
2’b10: beginYmo=1; nextstate=2’b00; Yme=1; end
default: beginYmo=0; nextstate=2’b00; Yme=1;
endendcase
endendmodule
module FSM_bem(reset, clock, i1, i2, Yme, Ymo);
input reset, clock, i1, i2;output Yme, Ymo;reg Yme, Ymo;reg [1:0] state, nextstate;
always @(posedge clock)if (reset)state<=2’b00;
elsestate<=nextstate;
00 01
10
0X/1
01X/0
1
1
X1/0X0/1
XX/1
i1 i2/Yme
Ymo
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
49
Máquinas de estados - modelação em Verilog
• Separação da lógica do próximo estado das saídas
always @(state or i1 or i2)begincase (state)2’b00: if (i1)
nextstate=2’b01;elsenextstate=2’b00;
2’b01: beginif (i2)
nextstate=2’b00;else
nextstate=2’b10;end
2’b10: nextstate=2’b00;
default: nextstate=2’b00;endcase
endendmodule
always @(state or i1 or i2)begin
case (state)2’b00: begin
Ymo=0;if (i1)
Yme=0;else
Yme=1;end
2’b01: beginYmo=1;if (i2)
Yme=0;else
Yme=1;end
2’b10: beginYmo=1; Yme=1;
enddefault: begin
Ymo=0; Yme=1;end
endcaseendendmodule
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
50
Máquinas de estados - modelação em Verilog
• Combinando estado corrente e próximo estado
always @(posedge clock or negedge reset)beginif (!reset)state <= 2’b00;
elsecase (state)2’b00: if (i1)
state<=2’b01;else
state<=2’b00;2’b01: begin
if (i2)state<=2’b00;
else state<=2’b10;
end2’b10: begin
state<=2’b00;end
default: beginstate<=2’b00;
endendcase
endendmodule
modelando Ymo como saída síncrona:
always @(posedge clock or negedge reset)begin
if (!reset)begin
Ymo<=0;state <= 2’b00;
endelse
case (state)2’b00: if (i1)
beginYmo<=1;state<=2’b01;
endelsebegin
Ymo<=0;state<=2’b00;
end...
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
51
Síntese do datapath• S.D. - controlo e processamento de informação
– unidade de processamento (datapath)• processamento e comunicação de dados
– registos, ALUs, outros operadores dedicados (FUs), barramentos
– controlo• activa os elementos do datapath, define as operações a realizar
– FSMs, controladores microprogramados
• Control dominated– sistemas onde predominam as estruturas de controlo
• controlador de microondas, semáforos, microprocessador, ...
• Data flow dominated– sistemas onde predomina o datapath, controlo reduzido
• aplicações de DSP, unidades de cálculo dedicadas
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
52
Sistemas Digitais síncronos• Sistema síncrono
– simplicidade em separar o controlo do datapath– todos os registos têm o mesmo sinal de relógio– o datapath efectua operações de registo a registo
• transferências entre registos na transição de relógio
– em cada ciclo de relógio o controlador define:• que registos são carregados• agulhamento de barramentos e multiplexers• operações a realizar pelas unidades funcionais
+ * / sqrt and or
R
mux mux mux
R R
mux mux
clk
controlo
FUs
registos
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
53
Datapath síncrono• Lógica combinatória entre registos
freq. clock < 1 / max(Tdelay1,Tdelay2,Tdelay3)– frequência de relógio
– controlo do datapath também condiciona o desempenho
controlo datapathclock
Tdelay1 Tdelay2 Tdelay3
clock
saída assíncrona
saída síncrona
entrada síncrona
entrada assíncrona
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
54
Datapath síncrono• todos os registos têm o mesmo relógio
– elevado fanout: necessário buffers para distribuir o relógio
• problemas– clock skew: variação da fase do relógio em diferentes registos
• atrasos introduzidos pelas interligações, só conhecidos após routing• circuitos dedicados para distribuir relógio (p.ex. em FPGAs)
– carregamento condicional de registos (abilitação ou enable)• não usar gated clocks (depende da tecnologia de implementação)• flip-flops com controlo clock enable síncrono• necessário garantir tempos de hold e setup dos flip-flops
– tratamento de entradas assíncronas (p.ex. interrupções)• análise de metaestabilidade• sincronização com o relógio
– circuitos CMOS consomem energia (quase apenas) nas transições
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
55
Datapath síncrono - clock skew
• variação da fase do relógio em diferentes registos
atraso
R1 R2
clk clk1
clk
clk1
R1 b c
R2 b c
a
atraso
x
R1 R2
clk
clk
R1 b c
R2 a b
a
x
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
56
Datapath síncrono - clock skew• Motivado por assimetria do circuito de relógio
– características físicas das ligações (comprimento, RC)
– diferente fanout
– lógica combinatória no caminho do relógio
R1 R2
clk clk1
R1 R2
clk clk1
R3 R4R1
R1 R2
clk clk1ce gated clock
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
57
Datapath síncrono - clock skew
• Em FPGAs– as interligações programáveis introduzem atrasos importantes
• difícil (mas não impossível) equilibrar os atrasos de diferentes nets
– rede de interligações dedicadas para distribuir sinais de relógio• também servem para outros sinais com elevado fanout
– exemplo: na família XC4000E (consultar o databook…)• 4 buffers primários (BUFGP) e 4 buffers secundários (BUFGS)• um par de buffers em cada canto do die (TL, TR, BL e BR)• cada buffer pode alimentar as entradas clk de todos os FFs com skew mínimo• não utilizar um desses buffers para distribuir o relógio é FATAL!• no ambiente de síntese da XILINX (Foundation+Express)
– são identificados os sinais de relógio: sinais que alimentam entradas clk de FFs– é alocado um buffer global (BUFGP ou BUFGS) para cada um– não podem existir mais de 8 sinais de relógio diferentes
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
58
Datapath síncrono - gated clock• Carregamento condicional de um registo
– solução errada: usar um AND para deixar ou não passar o clock
ce.clk
clk
R1 b ?a
ce
R1 é carregado duas vezes !Só funciona se ce ocorrer antes de clk.Como é possível garantir?Se ce é produzido por uma máquinade estados síncrona com clk, ce é mudado sempre após clk.Problema adicional: o atraso
introduzido pela porta AND
R
clk ce.clkce
– clock enable síncrono
– flip-flops primitivos com controlo clock enable
– solução correcta
R
clkce
01
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
59
Datapath síncrono - gated clock
• Solução (mais) segura para um gated clock
clkclk
gclk1
gclk2
ce1
ce2controlo
gclk = ce.clk
clk
ce
clk
• portas NAND com atrasos idênticos• atrasos iguais de clk até cada NAND...• … e de cada NAND até aos buffers• garante clock skew mínimo
• sinais ce gerados na unidade de controlo• unidade de controlo síncrona com clk• em FPGA requer routing cuidado
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
60
• Outra solução segura: registar os sinais enable
Datapath síncrono - gated clock
clk
en1
en2
controlo
D Q
D Q gclk1
gclk2
ens1
ens2
gclk
clk
en
ens
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
61
Síntese do datapath - pipelining
• datapath síncrono (não-pipelined vs. pipelined)– não-pipelined: uma operação por ciclo de relógio: fclk oper/s
– pipelined: partir o circuito lógico e inserir registos
clk
di0 di1 di2 di3 di4
do0 do1 do2 do3 do4X
reg inreg out
Tdelay
di
Tdelay
clk
lógicacombinatória
reg
in
reg
out
do
di
Tpdelay max
clk
lógicacombinatória
reg
in
reg
out
do
reg1
reg0
clk
di0 di1 di2 di3 di4
d0 d1 d2 d3 d4X
reg inreg0
Tpdelay max
reg1reg out
d0 d1 d2 d3X
do0 do1 do2X
X
X X
Latência: 3 ciclos clk
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
62
Síntese do datapath - pipelining
• No circuito pipelined– Tpdelay max menor do que Tdelay
• Tpdelay max é o maior atraso de uma partição do circuito combinatório• define uma frequência de clk maior do que para o circuito combinatório
– 3xTpdelay max maior do que Tdelay
• para além da lógica combinatória há atrasos introduzidos pelos registos• um resultado demora 3 períodos de clk a aparecer na saída
– é consumido um dado e produzido um resultado em cada clk• aumento de desempenho para sequências de operações iguais• mas não compensa para realizar uma única operação.
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
63
Verificação do projecto• Importância da verificação (multi-million gate ASICs)
– consome 70% do esforço do projecto– N Engs para projecto RTL mas 2N para verificação– os testbenches representam até 80% do volume total de código– verificação está no caminho crítico de um projecto
• Reduzir o custo da verificação– explorar paralelismo– criar testbenches a níveis de abstracção elevados (>RTL)– minimizar o factor humano (a fonte de erros!)
• automatização do processo• introduzir redundância no processo (2 projectos independentes)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
64
Verificação funcional
Testbench
processo para demonstrar a correcção funcional do modelode um circuito a fabricar
estímulos saídas
DUVDesign Under
Verification
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
65
Verificação - factor humano
EspecificaçãoInterpretação
Codificação RTL
Verificação
Modelo RTL
Factor humano
um projectista
A verificação pode ser “viciada” por existir uma só interpretação
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
66
Verificação - redundância
Especificação
Interpretação A Codificação RTL
Verificação
Modelo RTL
Interpretação B
Projectista A
Projectista B
Codificação RTL e verificação realizadas por indivíduos diferentes
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
67
Prototipagem
• Verificação por prototipagem (DUV é hardware físico)– como construir um protótipo de um ASIC?
• componentes off-the-shelf (os velhinhos 74xxx...)• protótipo a que nível? funcional, RTL ou lógico?• sistemas baseados em FPGAs (oferecem actualmente milhões de gates)
– o testbench é hardware (fontes de sinal, analisadores lógicos...)– características eléctricas e dinâmicas são diferentes da tecnologia alvo
• o processo de validação tem conseguir “absorver” essas diferenças– funcionamento em tempo real (ou quase)– possibilita verificação com estímulos complexos de sistemas físicos
• disponíveis em tempo real, mas difíceis de modelar• exemplo: sistemas de controlo de processos físicos
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
68
Simulação• Verificação por simulação (DUV é um modelo informático)
– menor rapidez mas maior flexibilidade• observar o estado de qualquer nó ou componente• forçar sinais a estados desejados • parar e reiniciar a simulação em qualquer estado• controlar de forma precisa a temporização de eventos assíncronos
– verificação funcional realiza-se em diferentes estágios do projecto• RTL, pós-síntese, pós-layout (verificação temporal)
– diferentes modelos de atrasos • fornecidos nas bibliotecas que caracterizam a tecnologia alvo
– simulação de faltas• construção de conjuntos eficientes de vectores para teste
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
69
Verificação formal
• Verificação da equivalência (equivalence checking)
– verifica que dois modelos são funcionalmente equivalentes• compara dois netlists modificados automaticamente ou manualmente• compara um modelo RTL com o netlist resultante• compara dois modelos RTL
– pequenas alterações para melhorar o desempenho da síntese
• Verificação do modelo (model checking)
– verifica que o modelo satisfaz condições definidas na especificação• exemplos:
– todos os estados de uma FSM são atingidos?– não há estados isolados?– um interface não entra em deadlock?
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
70
Verificação funcional• Verifica a funcionalidade do projecto
– a tradução da especificação para o modelo RTL é manual• especificações são descrições informais em linguagens naturais• sujeita a interpretações incorrectas
– compara o modelo RTL com a especificação• pode mostrar que o projecto satisfaz a especificação mas não o pode provar!
• Outros objectivos...– verificar a independência do estado inicial dos elementos de memória– se é garantida insensibilidade a variações dos atrasos dos componentes– se não há contenções, oscilações, entradas ilegais ou estado suspensos– avaliar compromissos de custo e desempenho e de alterações ao projecto– produzir documentação
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
71
Simulação - problemas
• Como se constróem estímulos ?– não há procedimentos formais para gerar estímulos– processo heurístico, baseado na intuição e conhecimento do sistema– não é praticável a verificação exaustiva
• um circuito com 75 entradas ⇒ 275 testes (1.2x109anos@1µs/teste)
• Como se sabe se os resultados são correctos ?– só verifica a funcionalidade exercitada pelos estímulos
• Estímulos para verificação e para teste– verificação: detectar e diagnosticar erros de projecto
• não é possível enumerar todos os erros de projecto
– teste: detectar e diagnosticar defeitos de fabrico• defeitos de fabrico (faltas) são modelados como erros lógicos
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
72
Simulador compiled code• simulação compilada
– executa um modelo compilado do circuito• o circuito é traduzido em instruções executáveis por um processador• simulador oferece suporte para fornecer estímulos de simulação• orientada para verificação funcional, não suporta análise temporal• o comportamento de componentes é modelado por instruções máquina
ou subrotinas• adequado para simular o comportamento de sistemas síncronos
– exemplo (modelo estrutural):
MOV AL,AAND AL,BMOV Y,ALMOV AL,BAND AL,YNOT ALMOV Z,ALMOV F,AL
para cada transição de clk (código x86):
DQ
A
BF
Y
clk
Z
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
73
Simulador event-driven• simulação de eventos
– usa um modelo do circuito para gerar e propagar eventos• eventos nas entradas primárias são produzidos pelos estímulos• eventos nos restantes nós são propagados pela avaliação dos componentes
– um evento é uma mudança do estado de um sinal num tempo dado• os componentes que usam esse sinal são activados e avaliados• as mudanças resultantes das avaliações geram novos eventos• outros eventos: controlo do simulador, monitorização de sinais
– em Verilog: $finish, $display(...), $monitor(...)
– permite processar estímulos e sinais assíncronos• análise do comportamento com os atrasos dos componentes• avaliação do funcionamento com eventos não sincronizados (interrupções)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
74
Simulação event-driven - fluxograma
avançar tempode simulação
fim
não há eventosextrair eventos para este tempo
até ao primeiro evento pendente
actualiza sinaisactivos
propaga mudançasdos sinais
avalia componentesactivados
introduz os novoseventos na lista
actualiza o valor dos sinais modificadospelos eventos deste tempo
propaga o valor dos sinaisactivos até aos componentesque os usam e activa essescomponentes
a avaliação dos componentesactivados produz novos eventosem tempo futuro (atrasos dos componentes) ou no mesmo tempo
todos os eventos produzidos pelos estímulos já foram introduzidos na lista
início
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
75
Simulação - o valor lógico desconhecido
• Quando um circuito lógico é ligado,– memórias e flip-flops ficam com valores lógicos não definidos– é necessário prever um mecanismo de iniciação (reset)
• geralmente associado ao power-up• iniciar os conteúdos de elementos de memória
• Valor lógico desconhecido: u– representa o estado de sinais lógicos não iniciados resultantes de
• não iniciação de registos e memórias• indefinição do estado de entradas primárias do circuito a simular
– é processado juntamente com os valores lógicos 0 e 1• operadores lógicos são generalizados para tratar o valor lógico u
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
76
Simulação - o valor lógico desconhecido
• Tabelas de verdade para AND, OR e NOT
AND 0 1 u0 0 0 01 0 1 uu 0 u u
OR 0 1 u0 0 1 u1 1 1 1u u 1 u
NOT 0 1 u1 0 u
• Perda de informação propagando o valor lógico u
0
1
uu
u
u
u
desconhecidos, mas semprecom valores contrários
é sempre 1!
não, não é factorial...
não serve usar u e uuQ
Q
u
uu
1
desconhecido
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
77
Simulação - o valor lógico Z
• Modelação de buffers com saída tristate
I O
Ese E=1, O=Ise E=0, O=Z
• Um sinal com o nível lógico Z– pode ser forçado com 1 ou 0 (pull-up ou pull-down)– é sempre interpretado como u por uma entrada
Tabela de verdade:
I E 0 1 u0 Z 0 {0,Z}1 Z 1 {1,Z}u Z u {u,Z}
a
b
o a b 0 1 Z u0 0 u 0 u1 u 1 1 uZ 0 1 Z uu u u u u
Tabela de verdade de um barramento com 2 entradas
em que casos pode ocorrer contenção no barramento ?
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003José Carlos Alves
78
Simulação - modelos de atrasos
• atraso de transporte– um atraso na propagação do nível lógico
• atrasos de subida e de descida– diferentes atrasos para as transições 0-1 e 1-0
• atrasos ambíguos– mínimos e máximos para os atrasos 0-1 e 1-0
• atraso inercial– duração mínima de uma entrada para ser propagada para a saída
• setup time e hold time (em flip-flops)
– setup time: tempo mínimo para D estar estável antes de clock– hold time: tempo mínimo para D permanecer estável após clock