Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos,...

39
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003 José 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 Porto Departamento 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/2003 José 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/mm 2 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”

Transcript of Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos,...

Page 1: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre 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”

Page 2: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 3: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 4: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 5: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 6: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 7: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 8: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 9: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 10: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 11: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 12: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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)

Page 13: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 14: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 15: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 16: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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)

Page 17: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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;

Page 18: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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;

Page 19: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 20: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 21: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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;

Page 22: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 23: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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?

Page 24: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 25: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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...

Page 26: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 27: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre 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

Page 28: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 29: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 30: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 31: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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.

Page 32: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 33: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 34: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 35: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 36: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 37: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

Page 38: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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

QQ

u

uu

1

desconhecido

Page 39: Sistemas Digitais - web.fe.up.ptaja/PCSD2004_05/slidesPCSD-parte1.pdf · portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos

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