projecto de sistemas digitaisaja/psdi_200607-2s/slides/slides... · 2007-03-13 · – asic, fpga,...

58
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 José Carlos Alves 1 Projecto de Sistemas Digitais (EEC0055) Mestrado Integrado em Engenharia Electrotécnica e de Computadores 4º ano, 2º semestre António José Araújo ([email protected]) Hélio Sousa Mendonça ([email protected]) http://www.fe.up.pt/~aja/PSDI_200607-2S FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 José Carlos Alves 2 Projecto de Sistemas Digitais Tecnologias digitais cada vez mais importantes vastas áreas de aplicação evolução tecnológica exponencial (lei de Moore) tamanho, consumo, rapidez custo continua a descer (um PC custa 1000€!) Um sistema (electrónico) digital deve ser… (numa perspectiva industrial) bom: satisfazer a funcionalidade com fidelidade e fiabilidade barato: custo mais baixo possível, sem comprometer a qualidade Projectar um SD –“if it wasn’t hard they wouldn’t call it hardware”, J.F. Wakerly ferramentas computacionais ajudam “the little gray cellsmas não substituem

Upload: others

Post on 19-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

1

Projecto de Sistemas Digitais(EEC0055)

Mestrado Integrado em Engenharia Electrotécnica e de Computadores

4º ano, 2º semestre

António José Araújo([email protected])

Hélio Sousa Mendonça([email protected])

http://www.fe.up.pt/~aja/PSDI_200607-2S

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

2

Projecto de Sistemas Digitais• Tecnologias digitais cada vez mais importantes

– vastas áreas de aplicação– evolução tecnológica exponencial (lei de Moore)

• tamanho, consumo, rapidez– custo continua a descer (um PC custa 1000€!)

• Um sistema (electrónico) digital deve ser…(numa perspectiva industrial)

– bom: satisfazer a funcionalidade com fidelidade e fiabilidade– barato: custo mais baixo possível, sem comprometer a

qualidade

• Projectar um SD– “if it wasn’t hard they wouldn’t call it hardware”, J.F. Wakerly

– ferramentas computacionais ajudam “the little gray cells”mas não substituem

Page 2: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

3

Fluxo de projecto (típico)

Ideia

sistema (abstracto)

circuito (RTL – lógico)

mapeamento tecnológico

validação

validação fabrico

teste/dev/null

DQ

DQ

um controlador de intensidade luminoas para ligar e desligar luzes de casa sempre que anguementra ou sai da casota do cao que se chama bobi e tem tambem um gato que se chama tareco1 - receptor2 - um cpu para calcular a luz3 - interface de potência

inte

rfac

e

processador

memória

validação

IC

always @(posedge clock or posedge reset)begincase(state)

start: begin if ( enable) ready <= 1;else ready <= 0;state <= waitfor;end

endcaseend

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

4

Concepção• Ideia

– clarificar e estruturar a ideia, definir especificações• um produto é muito mais do que o sistema digital• por vezes um projecto é iniciado com especificações incompletas

• Exequibilidade– boas ideias podem não ser praticáveis

• custo ou risco elevado• tecnologia não acessível, não dominada ou não adequada• tempo de desenvolvimento demasiado longo

• Implementação– Parte do projecto pode ser independente da tecnologia alvo...– ...mas deve ser decidida o mais cedo possível no ciclo de projecto

Page 3: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

5

Aspectos tecnológicos• Que tecnologia?

– ASIC, FPGA, componentes off-the-shelf?

• Particionamento arquitectural– um sistema pode não “caber” num único componente

• tamanho, número de terminais, tecnologia de fabrico• divisão da funcionalidade (por exemplo analógico vs. digital)• selecção dos componentes e da tecnologia de montagem

memória

interface

co-proc

CPU

I/O proc

funcionalidaderapidezdisponibilidadenúmero de pinosencapsulamentofabricante(s)

PCBCOBMCMwire-wrap

ASIC

RAMmP

LSI

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

6

Tecnologias disponíveis(para implementar sistemas digitais)

• ASIC (CMOS)– Centenas de MHz, baixo consumo, custos fixos elevados– Densidades: 250K gates/mm2 (90nm), 320K (65nm)

• FPGA– Centenas de MHz, consumo elevado, sem custos fixos– Reconfiguráveis!– 10.000.000 gates (equivalentes…) num único chip

• Microcontroladores/microprocessadores– Baixo custo, baixo desempenho, programáveis– Muitas configurações com variados periféricos

• Exemplos: os PIC da Microchip, muitos derivados do 8051

• Circuitos discretos– Circuitos “off-the-shelf”, funcões específicas (ASICs)– Circuitos integrados digitais para SSI e MSI (série 74…)

Page 4: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

7

Justifica-se um ASIC/FPGA?

• Alguns dos aspectos a ter em conta– rapidez (MHz, MIPS, MFLOPS)– consumo de energia– tamanho físico– custo (das ferramentas, prototipagem e produção)– complexidade do projecto– Flexibilidade (evoluções futuras?)– fiabilidade– testabilidade– dissipação térmica– compatibilidade electromagnética– resistência mecânica

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

8

Ferramentas computacionais• CAD/CAE (Computer Aided Design/Computer Aided Engineering)

– fundamentais para projectar em tempo útil circuitos complexos– Muitos problemas são NP-hard

• Ferramentas CAD/CAE

– trabalham com representações electrónicas de SDs (modelos)– exemplos de ferramentas CAD/CAE

• captura esquemática (mais do que desenhar o circuito lógico...)• síntese (layout, lógica, RTL, alto nível)• desenho físico (layout), verificação de regras geométricas• simulação lógica (verificação funcional)• análise temporal• simulação eléctrica • modelação e simulação de faltas• geração de vectores de teste• análise térmica• edição de texto (documentação e não só!)

Page 5: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

9

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 (frequentemente) tratados por humanos– modelos estruturais (esquemáticos)

• detalham a estrutura do circuito, interligando “componentes”– modelos comportamentais (HDLs, state charts, tabelas, BDDs)

• descrevem apenas o comportamento do sistema

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

10

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ógicoRTL

sistema

níveis

de ab

strac

ção

Page 6: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

11

Especificação de um SD• Tradicionalmente…

– captura esquemática (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, restrições para implementação• captura a estrutura (física) do circuito• transformado de forma optimizada para uma tecnologia alvo

– tabelas de verdade, expressões booleanas (comportamental)• conveniente para blocos de lógica combinacional ou FSMs

– minimização lógica– codificação de estados

• representação textual, tradução automática para um circuito lógico• independente do meio de implementação

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

12

Especificação de um SD• 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– portabilidade e facilidade de manutenção e documentação

• redução do ciclo de projecto– permite explorar melhor o espaço de soluções

– comparando com a programação de computadores...

código máquinaassemblyC, C++

layoutportas lógicasHDLs

nível deabstracção crescente

Page 7: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

13

Projecto estruturado• Hierarquia e modularidade

– conceitos semelhantes aos empregues em programação estruturada– objectivos:

• estruturação do projecto• permitir a reutilização de módulos• facilitar a verificação do projecto• simplificar a produção da documentação (geralmente esquecida!)

– “quanta” hierarquia ?• critérios principais:

– funcionalidade e granularidade (complexidade dos módulos)

• uma diferença importante da hierarquia em software:– não significa reduzir a complexidade do hardware– geralmente “desaparece” em algum estágio da implementação

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

14

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 existirem)– validar com simulação esses circuitos– 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 usa-se uma mistura de top-down e bottom-up

manual

automático

Page 8: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

15

Validação do projecto• Simulação funcional

– verificação funcional da especificação • realizada a diferentes níveis de abstracção (sistema ou RTL)• 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 mais comuns• especificações incompletas, ligações erradas ou nomes trocados• uso incorrecto de ferramentas de síntese automática• má organização das várias versões de um projecto • os computadores não erram, os humanos sim…• são humanos que criam as ferramentas de software!

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

16

Validação do projecto• Análise temporal

– circuitos lógicos introduzem atrasos• a simulação dá resultados correctos considerando os atrasos ?• qual o desempenho ?• o que limita o desempenho ? Como se pode melhorar ?

– 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 – só são conhecidos após a implementação ao nível físico

Page 9: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

17

Implementação

• Síntese lógica– Tradução automática de descrições abstractas (textuais)– Resultado é um netlist que interliga blocos primitivos

• Portas lógicas, flip-flops, buffers, RAMs,…• Cada bloco tem uma representação física determinada

• Place&Route– Colocação física desses blocos numa área determinada

• Minimizar a área, maximizar as relações de proximidade– Construir as interligações definidas no netlist

• Satisfazer restrições temporais, minimizar a área– Sinais de relógio devem ser tratados à parte

• Ferramentas e processos dedicados para sinais desse tipo

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

18

Teste• Teste do sistema fabricado

– testar para quê?• minimizar (→ 0%) o número de sistemas 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

– saídas diferentes na presença ou ausência da falta– ferramentas para ATPG - Automatic Test Pattern Generation

– 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, norma IEEE 1149.1)

Page 10: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

19

Linguagens de descrição de hardware• Modelação de um circuito (digital)

– descrições comportamentais permitem nível elevado de abstracção– metodologia top-down: ferramentas de síntese automática– representação textual: portabilidade, edição e documentação– a favor do esquemático: “uma figura diz mais do que mil palavras”

• um esquema captura melhor a ideia estrutural• ferramentas gráficas front-end produzem descrições em HDLs

– editores de esquemático: netlist em HDL (estrutural, gate-level ou RTL)– editores de diagramas de estados: descrições sintetizáveis

– duas perspectivas na construção de um modelo• descrever o seu funcionamento apenas para simulação• construir uma descrição sintetizável ($monitor(…) não é sintetizável!)

– um modelo sintetizável deve descrever “bem” o seu funcionamento– subsets das linguagens e regras de modelação dependem das ferramentas

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

20

Verilog vs. 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 e submetidos em Verilog.– ‘95: Verilog é revisto e adoptado como o standard IEEE 1364

Page 11: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

21

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 primitivas

de bibliotecas de ASICs e FPGAs

• tipos de dados– VHDL suporta tipos de dados abstractos criados pelo utilizador– em Verilog os tipos são muito simples e mais próximos do hw (wire e reg)

• aprendizagem– VHDL é fortemente tipada, menos intuitiva, mais verbosa (baseada em

ADA)– Verilog é mais simples e menos verbosa (baseada em C)

• parametrização– VHDL tem construções para parametrizar número de bits, replicar

estruturas e configurar modelos– Verilog suporta apenas modelos com parâmetros, instanciação com

redefinição de parâmetros

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

22

VHDL-Verilog (comportamental)

library IEEE;use IEEE.STD_Logic_1164.all;entity MUX_2_1 isport(S1,A1,B1,S2,A2,B2,S3,A3,B3:in std_logic;

Y1,Y2,Y3:out std_logic);end entity MUX_2_1;

architecture COND_DATA_FLOW of MUX_2_1 isbeginY1 <= A1 when S1=‘1’ else B1;TWO_2_1_MUXES:process(S2,A2,B2,S3,A3,B3)begin

Y2<=B2;if (S2=‘1’) then

Y2<=A2;endif;if (S3=‘1’) then

Y3<=A3;else

Y3<=B3;endif;

end process TWO_2_1_MUXESend architecture COND_DATA_FLOW;

module MUX_2_1(S1,A1,B1,Y1,S2,A2,B2,Y2,S3,A3,B3,Y3);

input S1,A1,B1,S2,A2,B2,S3,A3,B3;output Y1,Y2,Y3;reg Y2,Y3;

assign Y1=S1?A1:B1;

always@(S2 or A2 or B2 or S3 or A3 or B3)begin

Y2=B2;if (S2)

Y2=A2;if (S3)

Y3=A3;else

Y3=B3;end

endmodule

VHDL Verilog

Page 12: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

23

VHDL-Verilog (estrutural)

library IEEE;use IEEE.STD_Logic_1164.all;

entity HALF_ADDER isport(a,b:in std_logic;

sum,carry:out std_logic);end entity HALF_ADDER;

architecture STRUCT of HALF_ADDER is

component xor2port(a,b:in std_logic; c:out std_logic);

end component;

component and2port(a,b:in std_logic; c:out std_logic);

end component;

beginX1: xor2 port map(a=>a,b=>b,c=>sum);A1: and2 port map(a=>a,b=>b,c=>carry);

end STRUCT;

module HALF_ADDER(a,b,sum,carry);input a,b;output sum,carry;

xor X1(sum,a,b);and A1(carry,a,b);

endmodule

VHDL Verilog

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

24

Modelação em HDL• Modelo sintetizável vs. modelo não sintetizável

– ferramentas de síntese automática inferem uma estrutura• o modelo (comportamental ou estrutural) vai ser hardware• regras, restrições e recomendações das ferramentas de síntese

– como é interpretado e traduzida a descrição em HDL– simulação e implementação devem concordar– construções específicas da tecnologia de implementação

– modelos não sintetizáveis• não são traduzidos para hardware• definem estímulos para simulação; monitorização de sinais• modelam o comportamento de outros circuitos só para simulação

– circuito de relógio– memórias ou CPUs– circuitos de interface (por exemplo conversores A/D ou D/A)

Page 13: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

25

Modelação em HDLsrecomendaçõ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 muito grandes!

• Problemas de optimização são NP-completos

• 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 : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

26

Verilog HDL (Hardware Description Language)

• Linguagem de descrição de hardware (digital)– Suporta modelação em diferentes níveis de abstracção– criada para modelação e simulação de circuitos digitais– actualmente usada como fonte para ferramentas de síntese– modelos estruturais e modelos comportamentais– não é uma linguagem de programação!

• Unidade básica de um modelo em Verilog:– module: um sub-circuito definido por:

• interface (entradas e saídas)

• implementação (modelo do circuito digital)

preset

clear

q

qbar

q

qbar

preset

clear

Page 14: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

27

Verilog - introdução• Modelo estrutural de uma latch SR com portas NAND:

module ffnand(preset,clear,q,qbar);input preset, clear;output q, qbar;

nand #1 nand1(q, qbar, preset),nand2(qbar, q, clear);

endmodule

interface

implementação

q

qbar

preset

clear

instância

atraso

• Circuito:saída entradas

primitiva

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

28

Verilog - introdução• Simulação do módulo ffnand

`timescale 1ns/100ps

module top_ffnand;wire q, qb;reg pre, clr;

ffnand ffnand1(pre,clr,q,qb);

initialbegin

$monitor($time, “ preset=%b, clear=%b, q=%b, qbar=%b”,pre, clr, q, qb);

#10 pre=0; clr=1;#10 pre=1;#10 clr=0;#10 clr=1;#10 $finish;

end

endmodule

fios

estímulosde simulação

monitorde sinais

instância

registos

espera 10ns

escala temporal

Page 15: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

29

Verilog - introdução• Modelo completo para simulação (testbench)

– reunião dos módulos ffnand e top_ffnand

• Resultados da simulação– produzidos pela função $monitor(...)(system task)

• sempre que algum dos sinais declarados muda de estado

– análise das formas de onda de sinais relevantes

0 preset=x clear=x q=x qbar=x10 preset=0 clear=1 q=x qbar=x11 preset=0 clear=1 q=1 qbar=x12 preset=0 clear=1 q=1 qbar=020 preset=1 clear=1 q=1 qbar=030 preset=1 clear=0 q=1 qbar=031 preset=1 clear=0 q=1 qbar=132 preset=1 clear=0 q=0 qbar=140 preset=1 clear=1 q=0 qbar=1

valor lógicodesconhecido

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

30

Verilog - introdução

• Um contador de 4 bits (counter)– estruturação em 3 módulos: c16, Dff e clockgen– clockgen produz o sinal de relógio– contador c16 usa instâncias do módulo Dff (flip-flops tipo D)– hierarquia do modelo:

clockgenc16

Dff Dff Dff Dff

counter

Page 16: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

31

Verilog - introdução

• Modelo do contador c16module c16(value, clock, fifteen, ten);input clock;output [3:0] value;output fifteen, ten;

Dff D1(value[0], clock, ~value[0]),D2(value[1], clock, value[1] ^ value[0]),D3(value[2], clock, value[2] ^ &value[1:0]),D4(value[3], clock, value[3] ^ &value[2:0]);

assign fifteen = &value;assign ten = value[3] & ~value[2] & value[1] & ~value[0];

endmodule

vector de bits

operadores

saída ten vale 1 quando value = 1010

saídas de 1 bit

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

32

Verilog - introdução

• Modelo (comportamental) do Dff

module Dff(q, clock, d);input clock, d;output q;reg q;

initialq = 0;

always@ (negedge clock)#10 q = d;

endmodule

q é reg porque “segura” um valor

no início da simulação (t=0)

sempre que clock

Page 17: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

33

Verilog - introdução• Gerador de relógio (clockgen)

module clockgen(clock);output clock;reg clock;

initial#5 clock = 1;

always#50 clock = ~clock;

endmodule

para sempre...

sinal clock gerado:

t=050 505

unidades de tempo reais: ‘timescale 1ns/100ps

unidade de atraso

arredondamentodos cálculos

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

34

Verilog - introdução

• O circuito completo (módulo counter)

module counter;wire [3:0] count;wire clock, ten, fifteen;

c16 contador( count, clock, fifteen, ten);clockgen clock( clock );

initial$monitor($time, “ Clk=%b, Count=%d, is_10=%b, is_15=%b”,

clock, count, ten, fifteen);

endmodule

Page 18: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

35

Testbench

circuitoa

fabricar

geraçãode

estímulos

análisede

respostas

modelo sintetizável(vai ser um circuito digital)

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

registos de textowaveformsficheiros...

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

36

Verilog• Modelo de um full-adder (estrutural gate-level)

`timescale 1ns/100psmodule full_adder(a, b, cin, s, co);

input a, b, cin;output s, co; // resultado e carry-outwire t1, t2, t3;

xor #3 xor_1( s, a, b, cin );

and #2 and_1( t1, a, b ),and_2( t2, a, cin),

and_3( t3, b, cin);

or #(2,3) or_1( co, t1, t2, t3);

endmodule

interface

implementação

instância

saída

entradasprimitivaslógicas

atraso de propagação: tpLH=2 unidades de tempo; tpHL=3 unidades

fios

comentárioatraso de 3

unidades de tempo

Page 19: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

37

declaração do interface• um módulo pode não ter interface

– em módulos usados para teste de outros - testbenchesmodule myadder_testbench; // sem entradas nem saídas

• declaração de portos de interface:– portos unidireccionais:

input [7:0] din_a, din_b; // din_a, din_b são entradas de 8 bits// onde o MSB é din_a[7] e o LSB é din_a[0]

input clock, reset; // clock, reset são entradas de 1 bitoutput [0:8] res; // result é uma saída de 9 bits, onde o

// MSB é res[0] e o LSB é res[8]

– portos bidireccionais:inout [7:0] databus; // databus é um sinal bidireccional de 8 bits:

// pode forçar um nível lógico ou receber um// sinal do exterior

• todos os sinais declarados como portos de entrada/saída são do tipo wire (fio)– fios (wires) apenas “propagam” valores lógicos entre uma origem e um destino– as saídas que “seguram” valores lógicos devem ser declaradas como sinais do tipo reg

• valores lógicos: 1, 0, x (desconhecido) e z (estado de alta impedância)

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

38

declaração de sinais• sinais do tipo wire representam fios ou barramentos (vários bits)

– servem para transportar um valor lógico desde uma origem que o produz– um identificador não declarado é considerado um wire de 1 bit

wire en_clock, sel_reg; // fios simples (um bit)

wire [15:0] opr_a, opr_b; // dois barramentos de 16 bits

• sinais do tipo reg representam “registos” (um ou mais bits)– seguram valores lógicos

reg clock, reset; // registos de 1 bit

reg [7:0] Ra, Rb; // registos de 8 bits

reg [15:0] regfile[0:31]; // vector de 32 registos com 16 bits cada

• campos de vectores de bitsRb; // todo o registo Rb de 8 bits

opr_a[15:8]; // os 8 bits mais significativos de opr_a

Rb[3]; // o bit 3 do registo Rb

regfile[6]; // o elemento no endereço 6 do vector regfile;

Page 20: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

39

primitivas lógicas

• primitivas lógicas implícitas na linguagem Verilog– representam “componentes” que implementam funções lógicas elementares

• realizam operações entre sinais de 1 ou mais bits

– portas lógicas: and, nand, or, nor, xor, xnor (1º sinal é saída, restantes são entradas)

and and_1(o1, x1, x2), and_2(o2, x3, x4, x5, x6, en);

– buffers e inversores: buf, not (último sinal é a entrada e os restantes são saídas)

not inv_1(nclkout, nclkout1, nclkout2, clkin);

buf mybuffer(a, b, c, d, busout);

– buffers de 3 estados: bufif1, bufif0

bufif0 tristate_1(out, in, control);

– inversores com saída de 3 estados: notif1, notif0

notif0 my_not(not_in, in, control);

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

40

tempos de propagação(não suportados em modelos sintetizáveis)

• na instanciação de primitivas são especificados com o operador #and #3 and_1(o1, x1, x2, x3; // tp = 3 unidades de tempo

and #(3,5) and_2(out2, a, b); // tplh=3, tphl=5

bufif1 #(3,2,5) buf_1(out, in, en) // tplh=3, tphl=2, tpHiZ=5

• para cada tempo podem ser especificados valores min, typ e maxand #(3:4:5) myand(out2, a, b); // tpmin=3, tptyp=4, tpmax=5

bufif1 #(1:2:3,2:3:4,3:4:6) buf_1(out, in, en) // atrasos min:typ:max

• o valor da unidade de tempo é definido pela directiva `timescale`timescale 1ns/100ps // uma unidade=1ns; precisão de simulação=0.1ns

Page 21: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

41

Verilog – modelos estruturais

• um somador de 4 bits– usando instâncias do 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(.cin(cy[2]),.a(a[3]),.b(b[3]),.s(s[3]),.co(cout));

endmodule

a e b sãoentradas de4 bits

s é umasaída de4 bits

nome do componente

nomes das instâncias

sinais ligadospor posição

sinais ligadospor nome

cy é umbus de 3 bits

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

42

verificação funcional

• um testbench instancia o módulo four_bit_adder.

`timescale 1ns/100psmodule 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; #30b=12; #30 cin=1; #30a=4'b1110; b=4'b0110; #30 $stop;

endendmodule

o circuito a testar

monitor de sinais

estímulos de

simulação

registos (seguram valores)

fios (propagam valores)

controlo do simulador (pára)

espera 30 unidades de tempo (30ns)

módulo sem interface (testbench)

quando o simulador inicia...

Page 22: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

43

resultados da simulação (formas de onda)

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

44

resultados da simulação (texto)

Page 23: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

45

verificação funcional• Verificação exaustiva do somador de 4 bits

• e se fosse de 32 bits ? (com 1ns por vector seriam necessários 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; $display(“Verificacao com carry-in = %b”, cin);for(a=0;a<15;a=a+1) for(b=0;b<15;b=b+1) #40;

cin = 1; $display(“Verificacao com carry-in = %b”, cin);for(a=0;a<15;a=a+1) for(b=0;b<15;b=b+1) #40;

$display(“Fim da simulação”); $stop;endendmodule

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

46

constantes

• por omissão: decimal, 32 bits em complemento para dois– são truncadas se forem atribuídas a sinais com menos bits (a partir do LSB):

• pode-se (deve-se) definir o número de bits e a base de representação:

reg [3:0] a;...initialbegina = 28; // 28=11100 -> a fica com 1100=1210

...end

nº de bits

5’d10; // a constante decimal 10 com 5 bits10’b1010_0011_11; // constante com 10 bits, em binário16’h1E_C6; // 16 bits em em hexadecimal

base de representaçãovalor (pode-se usar o separador “_” entre dígitos)

Page 24: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

47

Verilog system tasks

• algumas funções internas do simulador (system tasks)– $monitor()

• imprime um registo de texto formatado quando um sinal muda de estado

• a sintaxe é semelhante à função printf() da linguagem C• num projecto só pode existir activo um monitor de sinais

– $time• devolve o tempo actual do simulador (um inteiro)

– $display()• quando invocado imprime um registo de texto formatado

– $stop• interrompe a simulação mas pode ser retomada (breakpoint)

– $finish• termina a execução do simulador (só em alguns simuladores...)

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

48

modelos comportamentais• Um modelo comportamental é formado por:

– um ou mais processos que operam concorrentemente• assign: blocos combinacionais• always: blocos combinacionais, sequenciais ou síncronos

• Modelo de um full-adder (combinacional)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 )begin

cout = (a & b) | (a & cin) | (b & cin);endendmodule

modela blocoscombinacionais

sempre que...

o sinal s estáligado à expressão

operadoreslógicos

Page 25: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

49

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, s;reg [5:0] ta, tb, ts; // “registos” temps.

always @( a or b or cin or ta or tb or ts )begin

ta = { 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

somador

extrair os resultados

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

50

operadores (semelhantes aos da linguagem C)

aritméticos + - * / % 2 operandos são estendidos com zeros

lógicos ! negação lógica 1 zero é falso, não-zero é verdadeiro&& E lógico 2 retorna 1-verdadeiro ou 0-falso|| OU lógico 2

relacionais > < >= <= 2 operandos considerados unsigned

igualdade == != 2 comparam apenas zeros e uns=== !== 2 comparam também os valores z e x

bitwise ~ & | ^ 2 operandos são estendidos com zeros

shift >> << 2 desloca bits e preenche sempre com zeros

concatenação { } N {3’b101,1’b0,3’b111}=7’b1010111

replicação {{ }} N {N{A}} replica N vezes o valor A

condicional ? : 3 igual à expressão condicional de C

operador #opr observações

Page 26: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

51

modelação de blocos combinacionais• assign sinal = expressao;

– Liga permanentemente sinal ao resultado da expressao:

• always @(a or b or c or ...) begin ... end

– sempre que um sinal da lista muda de estado avalia o bloco:

opa

aIRb

atraso de transporte (não pode ser usado em modelos sintetizáveis)

always @(a or IR or b)

begin

if ( IR[7:4] & 4’b1010 )

opa = { a<<7, (a+b) };

else

opa = { a<<7, (a-b) };

end

assign #10 opa = { a<<7, ( IR[7:4] & 4’b1010 ? (a+b) : (a-b) ) };

lista de sensibilidades

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

52

latches em blocos combinacionais• Num modelo de um circuito combinacional

– as saídas devem ter um valor atribuído para todas as condições das entradas

– se essa condição não for satisfeita são criadas latches transparentes– a ocorrência de latches num bloco que se pretendia combinacional

é geralmente FATAL (a ver mais tarde)

always @(a or b or sel)

begin

if ( sel )

y = a;

else

y = b;

end

always @(a or b or sel)

begin

if ( sel )

y = a;

end

um multiplexer 2÷1uma latch transparente

Page 27: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

53

construçõ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 é don’t care)

(z e x são don’t care)

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 : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

54

ciclos(utilização restrita em modelos sintetizáveis)

for(start;end_expr;update)statement;

forever statement;

for(i=0;i<8;i=i+1)x[i] = x[i+1]

repeat(fixed_loop_count)statement;

repeat(10)begina[i]=a[i+1];i=i+1;

end;

forever #10 clock = ~clock;

while(i<8)begin...end

while(condition)statement;

Page 28: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

55

modelação de circuitos síncronos• acumulador de 8 bits

module acc(clk, reset, a, reg_sum);input clk, reset;input [7:0] a;output [7:0] reg_sum;reg [7:0] reg_sum;

always @( negedge clk )if ( reset )

reg_sum <= 8’d0;else

reg_sum <= a + reg_sum;endmodule

processosíncrono com clk sempre que clk

reg_sum “segura” um valor lógico

reg_suma

D Q

clk0

reset

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

56

contador up/downmodule 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)beginif ( reset )

dout <= 0 elsebegin

if ( enable )if ( down )

dout <= dout – 1;else

dout <= dout + 1;end

endendmodule

processo síncronocom o flanco ascendentede clk e reset assíncrono

processo combinacional

a avaliação do sinal de resettem de ocorrer no início do bloco begin...end

Page 29: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

57

testbench para o contador up/down`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);

initialbegindown = 0; reset = 0; enable = 1;#2 reset = 1; // apply reset#6 reset = 0; // release reset#300 // count up 300nsenable = 0; #40 // disable counterdown = 1; #100 // count downenable = 1; #300 // enable counter, wait 300ns$stop; // stop simulation

end

initial clk = 1’b0;always #5 clk = ~clk; // 10ns clock period

endmodule

estímulos

instância do contador

sinal derelógio

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

58

atribuições blocking/nonblocking

• Atribuições procedimentais – avaliadas em sequência

• Atribuições non-blocking – avaliadas em paralelo

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 30: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

59

atribuições blocking/nonblocking

• Quando usar a=b ou a<=b ?– em processos combinacionais podem-se usar os dois tipos– em processos síncronos deve-se usar apenas non-blocking

• evita a ocorrência de race conditions que podem “encravar” o simulador

always @(posedge clk)begin...if ( dataready )rdy = 1;

...end

always @(posedge clk)begin...if ( rdy )beginreg = datain;ack = 1;

endend

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

60

blocos sequenciais e paralelos

begin // sequencialx = k;#10 y = a + b;#5 z = y * x;

end

beginx = k;fork#10 y = a + b;#5 z = y * x;

joinend

avaliadas em paralelo

inicia bloco paralelo

termina bloco paralelo

x

y

z

10 5

x

y

z

10

5

Page 31: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

61

parametrização

• módulos com parâmetros

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 : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

62

Modelação de máquinas de estados

• FSM (Finite State Machine)– sequência determinada de estados, síncronizado com relógio– estrutura geral

saída

próximoestado

registo deestado

entradassaídas (Mealy)

reset(assíncrono)

reset(síncrono)

clock

saídas (Moore)

saídas (Moore)

saída

Page 32: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

63

Modelação de máquinas de estados

• Codificação de estados (feita “à mão”)– atribuição de padrões de bits a cada estado– o tipo de codificação influencia

• dimensão do registo de estado• complexidade dos circuitos lógicos combinacionais

– codificações mais usadas• sequencial

– 0000 0001 0010 0011 0100 … 1101 1110 1111

• código Gray– 0000 0001 0011 0010 0110 … 1011 1001 1000

• código Johnson– 00000000 00000001 00000011 00000111 00001111 … 11100000

11000000

• one-hot– 0000000000000001 0000000000000010 0000000000000100 ...

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

64

Máquinas de estados - Mealy e Moore

• Mealy– as saídas dependem do estado corrente e das entradas– o valor das saídas é associado às transições entre estados

• Moore– as saídas dependem apenas do estado corrente– o valor das saídas é associado aos estados

A B

C

i1/s1

i2/s2

D E

F

s3s3

s4

i1

i3

condição de transição de estado

i3

i4

valores dassaídas

Page 33: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

65

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/Ymei1/Yme

Ymo

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 : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

66

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;

endendmodule

00 01

10

0X/1

01X/0

1

1

X1/0X0/1

XX/1

i1 i2/Yme

Ymo

Onde estão os erros ?

Page 34: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

67

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;

endendmodule

00 01

10

0X/1

01X/0

1

1

X1/0X0/1

XX/1

i1 i2/Yme

Ymo

• falta de reset (síncrono e/ou assíncrono)• todas as saídas são registadas• Yme não é saída Mealy• não é definido o estado inicial• falta o estado 2’b11

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

68

Máquinas de estados - modelação em Verilog

• Modelo correcto

00 01

10

0X/1

01X/0

1

1

X1/0X0/1

XX/1

i1 i2/Yme

Ymo

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;

enddefault: begin

Ymo=0; nextstate=2’b00; Yme=1;end

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;else

state<=nextstate;

Memória de estadoLógica de geraçãodo próximo estado

e das saídas

Page 35: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

69

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;

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

endendmodule

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

70

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;else

case (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;

endendendmodule

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 36: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

71

Síntese de Sistemas Digitais

comportamentalestrutural

físicoplacas, 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 detransistoresdispositivológico

RTLsistema

níveis

de a

bstra

cção

alto nível (behavioral)

lógica

RTL

circuito

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

72

Problemas de síntese

• Síntese estrutural– do domínio comportamental para o domínio estrutural– dependente da tecnologia, não define a realização física– sujeita a restrições como área, desempenho, potência,…

• Síntese física– transformação do domínio estrutural para o domínio físico:

• dispositivo: produção dos desenhos das máscaras de células (layout)• célula: colocação de células e interligações (place & route)• RTL: organização física de módulos (floorplanning)• sistema: particionamento em componentes, PCBs, MCMs

Page 37: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

73

Síntese RTL• origem

– descrição comportamental ao nível RTL (ou lógico)• variáveis (registos)• operações entre variáveis (aritméticas, lógicas, deslocamento de bits)• decisões (if-then-else, case)• transferências entre registos síncronas com sinais de relógio

– restrições de implementação• frequência mínima do sinal de relógio• espaço ocupado: número e tipo de células (FPGAs) ou área física (ASICs)

• destino – um modelo estrutural ao nível lógico

• antes do mapeamento tecnológico: portas lógicas, flip-flops, latches• após a optimização para a tecnologia alvo: rede de células disponíveis

da tecnologia

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

74

Síntese RTL

• Como é traduzido o código?– cada módulo é sintetizado para uma tecnologia genérica

• pode ser realizada alguma optimização lógica nesta fase – o circuito é posteriormente optimizado para a tecnologia alvo

• são usadas apenas células que existam na biblioteca alvo• optimização da utilização dessas células (área ou rapidez)• pode ser mantida a hierarquia ou ser “planificado” num só nível

– as construções Verilog são traduzidas em circuitos padrão:• if-then-else – multiplexers 2÷1• case-endcase – multiplexers “grandes” (ou lógica random)• always @(posedge clk ... ) – circuitos síncronos com clk• assign ou always @(a or ... ) – circuitos combinacionais• operadores aritméticos e lógicos – circuitos combinacionais

Page 38: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

75

Síntese RTL – estilo de codificação

• O “estilo” de codificação afecta o resultado– Dependente da ferramenta de síntese (ler os manuais!)

• as ferramentas têm directivas que “guiam” o processo de síntese

– Estrutura de circuitos combinacionais gerados por expressões• depende da associação de operadores:

• a*(b+c+d+e)• a*((b+c)+(d+e))• a*(b+c)+a*(d+e)

– Codificação de FSMs• codificação de estados é feita explicitamente pelo projectista

– a codificação adoptada afecta muito a qualidade do resultado

• obtêm-se melhores resultados dividindo uma FSM em vários blocos– próximo estado, saídas, timers, ...

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

76

Modelos RTL sintetizáveis(regras genéricas suportadas pelas ferramentas de síntese)

– 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• inteiros sem sinal, dimensão dos resultados depende dos operandos• são criados circuitos combinacionais que os implementam• podem ou não ser partilhados para diferentes operações do mesmo tipo

Page 39: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

77

Construção de modelos sintetizáveis

– always - duas formas• always @(posedge ...): os sinais tipo reg são traduzidos para FFs tipo D

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;elseout = b;

end

out é uma latch out é uma função combinacional de sel, a e b

lista de sensibilidadesalways @(a or sel)beginif (sel)

out = a;end

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

78

Construção de modelos sintetizáveis

– inferência de latches em circuitos combinacionais com construçõesalways - 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• 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 não: só avalia o bloco quando algum sinal muda de estado• um modelo pode simular mal mas o circuito resultante funcionar bem!

Page 40: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

79

Construção de modelos sintetizáveis

– 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;

elseout = 1’bz;

endmodule

assign out = en ? in : 1’bz;

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

80

Construção de modelos sintetizáveis– 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

Page 41: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

81

Verificação do projecto

• Verificação funcional– processo para demonstrar a correcção funcional de um modelo

• que estímulos para garantir que o modelo está funcionalmente correcto?

• Importância da verificação (multi-million gate…)– consome tipicamente 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 e a reutilização dos processos– criar testbenches a níveis de abstracção elevados (>RTL, eg. Matlab)– minimizar o factor humano (que é a verdadeira fonte de erros!)

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

82

Verificação de um modelo

Testbench

DUVDesign Under

Verification

estímulos saídas

Page 42: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

83

O “factor humano” na verificação

EspecificaçãoInterpretação

Codificação RTL

Verificação

Modelo RTL

Factor humano

O mesmo projectista

A verificação não é feita contra a especificação originalO processo pode ser “viciado” se apenas existir uma só interpretaçãoÉ (mais ou menos…) normal as especificações conterem ambiguidades

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

84

Como reduzir o factor humano?• Automatização

– Criar procedimentos que verifiquem o projecto automaticamente (!)• quem faz esses procedimentos?

• Redundância– dois projectistas: um projecta o sistema e o outro verifica– cada um tem uma interpretação da especificação

Especificação

Interpretação A Codificação RTL

Verificação

Modelo RTL

Interpretação B

Projectista A

Projectista B

Page 43: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

85

Processos de verificação• Verificação formal

– usa processos formais para provar características de um modelo• verificação da equivalência entre modelos (equivalence checking)• verificação que um modelo satisfaz condições (model checking)

• Verificação funcional– pretende provar que o modelo RTL satisfaz a especificação

• pode-se mostrar que é satisfeita a funcionalidade ensaiada• mas é impossível provar que é satisfeita a especificação (informal...)

• Geração de testbenches– geram estímulos para verificar certas propriedades do modelo

• por exemplo, tentar violar uma propriedade

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

86

Verificação da equivalência(equivalence checking)

• Verifica se dois modelos RTL/estruturais são equivalentes– verifica dois netlists após algum pós-processamento automático (ou manual)

• por exemplo, inserção da cadeia de scan (para construir a infraestrutura de teste)

– verifica se o netlist produzido pela síntese é equivalente ao modelo RTL• o modelo pode estar mal codificado, as ferramentas de síntese podem ter bugs

– permite verificar se um modelo RTL representa um netlist já existente

síntese / modificação manual

Verificaçãoda equivalência

RTL/netlistRTL/netlist

Page 44: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

87

Verificação do modelo(model checking)

• Verifica se o modelo satisfaz condições/afirmações– as condições a verificar são sujeitas a interpretação

• exemplo de condições:– todos os estados de uma FSM são atingidos? não ocorre deadlock?– um interface responde correctamente sob condições dadas?

– problema: identificar na especificação que condições verificar...

codificação RTL

Verificaçãodo modelo

RTLespecificação

interpretação

condiçõesafirmações

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

88

Verificação funcional• Verifica se o modelo realiza a funcionalidade especificada

– a tradução da especificação para o código RTL é feita por humanos• é um processo manual “naturalmente” sujeito a erros

– especificações são (geralmente) representadas em linguagens informais• com ambiguidades, sujeitas a diferentes interpretações

– apenas se garante a correcção da funcionalidade ensaiada

codificação RTL

Verificação funcional

RTLespecificação

Page 45: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

89

Geração de testbench• geração automática de estímulos para simulação

– com base em medidas de cobertura de código (code coverage)• que construções do código RTL são ensaiadas para um conjunto de estímulos?• que estímulos são necessários para activar e verificar parte do código?

– é o projectista que deve verificar os resultados da simulação– os estímulos produzidos não verificam a funcionalidade do projecto

cobertura do código

geração de testbench

testbenchRTL métricas

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

90

Prototipagem• Verificação por prototipagem (o DUV é hardware físico)

– como construir um protótipo de um ASIC?• componentes off-the-shelf

• que nível de equivalência? 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 de 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

Page 46: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

91

Simulação• Verificação por simulação (DUV é um modelo informático)

– menor rapidez mas maior flexibilidade do que prototipagem• 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 (gate-level), 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 de estímulos para detectar defeitos• estimulam o circuito para “ver” o efeito de defeitos nas saídas

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

92

Simulação - problemas

• Como se constroem 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

• circuito com 75 entradas ⇒ 275 testes (1.2x103anos@1us/teste)

• Como se sabe se os resultados são correctos ?– só verifica a funcionalidade exercitada pelos estímulos– o modelo simulado é uma aproximação

• 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

Page 47: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

93

Simulação compiled code

• executa um modelo compilado do circuito– o circuito é traduzido em instruções de um processador

– apenas para verificação funcional; não suporta análise temporal– o comportamento de componentes é modelado por subrotinas– adequado para simular o comportamento de sistemas síncronos

– permite realizar simulações cycle based (resposta para cada ciclo de clk)

MOV AL,AAND AL,BMOV Y,ALMOV AL,BAND AL,YMOV AH,ALNOT ALMOV Z,AHMOV F,AL

para cada transição de clk (código x86):

DQ

A

BF

Y

clk

DQ

Z

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

94

Simulação cycle based• simulação de sistemas exclusivamente síncronos

– só interessa conhecer o estado das entradas D dos FFs– todas as funções combinacionais são traduzidas em equações

lógicas– apenas são simuladas as transferências entre registos

• sincronizadas com um único flanco do relógio

– simuladores cycle based não suportam• qualquer informação temporal associada ao circuito

– É assumido que são satisfeitos todos os requisitos temporais dos FFs

• entradas assíncronas• latches• circuitos com múltiplos domínios de relógio

– análise temporal realizada com ferramentas de análise estática• que também só se podem aplicar a circuitos síncronos

Page 48: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

95

Simulação event-driven

• simulação de eventos– 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 dessas avaliações geram novos 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 gerados pela avaliação dos componentes

– 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

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

96

Simulação event-driven

avançar tempode simulação

fim

não há eventosextrair eventos para este tempo

até ao próximo 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 49: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

97

Simulação event-driveninitialbegina=2; b=3; c=1;#25 c=2;

end

always @(a or b or c)begin#5 z=a+8;#10 y=b+c;#4 k=z+y;

end

c=1b=3a=2

t=0 t=5

z=a+8

t=15

y=b+c

t=19

k=z+y

t

c=xb=xa=x

eventos agendados e extraídos por ordem

t=40

y=b+c

t=25

c=2

initialbegin

a=2; b=3; #10a=4; b=6; #10a=6; b=8; #10 $stop;

end

always @(a or b)begin

a=a+bend

O que acontece neste caso?

lista de eventos

Δ

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

98

co-simulação

• cooperação de dois simuladores num só ambiente– simuladores cycle based e event driven

• um simula as partes síncronas, outro as partes não síncronas• ganho de rapidez em relação a um simulador (só) event driven• percorrem o eixo dos tempos (de simulação) em simultâneo

– simuladores de Verilog e VHDL (ou outras linguagens)• um simulador para cada linguagem num ambiente integrado• permitem simular modelos mistos (DUV em Verilog, testbench em VHDL)

• simuladores mixed-language– VHDL e Verilog traduzidas para um código intermédio (object code)– um só simulador simula esse modelo intermédio

Page 50: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

99

Simulaçãointerpretação do 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)

• em circuitos “reais” está geralmente associado ao power-up

• Valor lógico desconhecido: u (em Verilog é representado por x)

– 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• resultantes de contenções em barramentos

– é 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 : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

100

Simulaçãointerpretação do 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 serve usar u e uuQ

Q

QQ

u

uu

1

desconhecido

Page 51: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

101

Simulaçãoo valor lógico Z

• Modelação de buffers com saída de alta impedância

I O

E

• 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 : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

102

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

Page 52: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

103

Estratégias de verificação

• Que abordagens de verificação?– qual o nível de granulosidade dos elementos a verificar?– há ou não acesso e conhecimento da implementação interna?

• Como são verificadas as respostas?– análise visual de formas de onda não é (geralmente) praticável– comparação de dados armazenados em ficheiros

• Produzidos off-line por processos de confiança (nível mais elevado)

– incluir no próprio testbench o processo de verificação das saídas• “executando esta sequência de instruções sei que no instante t=134ns

R1 deve ter 35, R5 deve ter 4, ..., o PC deve ficar com A7B4,… senão ocorreu um erro” mas qual, onde e porquê?

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

104

Estratégias de verificação

• Verificação aleatória– não significa “atirar” aleatoriamente zeros e uns para as entradas!– aplicados estímulos que realizem aleatoriamente operações bem

definidas e realistas na operação do sistema• sequências de transacções num barramento com dados aleatórios

– possibilita a ocorrência de situações não previstas– devem ser contempladas as estatísticas de operações e dados– problema: como se podem prever as respostas?

• analisando as respostas off-line• comparando com respostas de modelos mais abstractos já validados• comparando com respostas de modelos em simulação

Page 53: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

105

Planeamento da verificação• identificar as propriedades que interessa verificar

– a partir da especificação do sistema a projectar– os projectistas podem também sugerir verificações– definir a que nível deve ser verificada cada propriedade

• em modelos comportamentais de componentes em desenvolvimento?– verificar a funcionalidade contra a especificação

• num modelo estrutural com componentes já validados?– verificar “apenas” as interconexões entre esses componentes

• definir testes para verificar cada propriedade– exemplo: para validar o modelo de um filtro digital:

• resposta ao impulso unitário (calcular FFT - resposta em frequência)• resposta com degraus positivos e negativos, sinusóides com comp. DC

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

106

Planeamento da verificação• agrupar testes com requisitos semelhantes

– um único teste pode verificar todas as operações de uma ALU– um teste deve verificar o funcionamento de um CPU...– ...e outro teste deve verificar o funcionamento da memória cache

• verificações podem necessitar de novos recursos– design-for-verification: instrumentar modelos para facilitar o

processo de verificação (+ controlabilidade/observabilidade)• permitir “carregar” contadores longos (como validar um RTC?)• incluir mecanismos para inserção automática de “erros”• gerar estímulos em função das respostas do modelo

• construir testbenches para cada grupo de testes– uma equipa de verificação responsável por um grupo de testes– exige cooperação com as outras equipas de verificação e projecto

Page 54: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

107

Veriloggeração de sinais periódicos

reg clkparameter CYCLE=10;

initial clk = 1’b0;

alwaysbegin#(CYCLE/2); clk = ~clk;end

`timescale 1ns/1nsreg clkparameter CYCLE=15;alwaysbegin#(CYCLE/2.0); clk = 1’b0;#(CYCLE/2.0); clk = 1’b1;end

`timescale 1ns/100psreg clkparameter CYCLE=15;alwaysbegin#(CYCLE/2.0); clk = 1’b0;#(CYCLE/2.0); clk = 1’b1;end

Diferenças?

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

108

Sincronização de estímulos• geração de sinais (des)sincronizados

– problema: ocorrência de condições de competição (race conditions)

– solução: não usar flancos sobrepostos! E num circuito “real” ?

initial // apply resetbeginrst = 1’b0; #200rst = 1’b1; #200rst = 1’b0;

end

alwaysbegin#50 clk = 1’b0;#50 clk = 1’b1;end

clk

rst

possibilidade de competição entre clk e resetO que acontece se reset for síncrono com o negedge de clk ?

Page 55: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

109

Sincronização de estímulos

initial // apply resetbegin // for 2 clocksrst <= 1’b0; clk <= 1’b0;repeat (2) #50 clk <= ~clk;

rst <= 1’b1;repeat (4) #50 clk <= ~clk;

rst <= 1’b0;

forever #50 clk <= ~clk;end

clk

rst

não ocorre competiçãoreset muda ao mesmo tempo que clk;quando clk troca, rst ainda tem o estado anterior (atribuições non-blocking)

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

110

Entrada de dados de ficheiro

• leitura de dados de um ficheiro de texto para um vectormem é um vector de registos, por exemplo: reg [15:0] mem[0:127]filename é o nome do ficheiro de texto que contém os dadosos dados são em ASCII, representando números em binário ou hexadecimalpodem ser incluídos comentários; posições não lidas ficam com ‘xxxx’

$readmemb( “filename”, mem, start_index, end_index); // binário

$readmemh( “filename”, mem, start_index, end_index); // hex

//ficheiro de dados em binario@00 // endereço 0x00 (zero, em hexadecimal)0000_0000_0000_0001 // dado, o caracter ‘_’ é um separador0000_0000_0000_1000@10 // os dados seguintes sao colocados a partir do endereço 0x100000000000001011

//ficheiro de dados em hexadecimal@00 // endereço 0x00 (zero, em hexadecimal)00_01 // dado, o caracter ‘_’ é um separador0AFE@10 // os dados seguintes sao colocados a partir do endereço 0x10FF_0B

Page 56: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

111

Saída de dados para ficheiros de texto• $fopen, $fclose, $fmonitor, $fwrite, $fdisplay

integer HI, HQ; // File handlers

initial // open output filesbeginHI = $fopen(“dout_I.dat”);HQ = $fopen(“dout_Q.dat”);// simulate ... close files$fclose(HI); $fclose(HQ);

end

initial$fmonitor(fh,...); // $monitor para ficheiro

always @(posedge clock)begin$fdisplay( HI, “%d”, HI); // inclui newline$fwrite( HQ, “%d\n”, HQ); // nao inclui newline

end

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

112

Monitorização de valores

• nomes hierárquicos – operador . (ponto)task dump_regfile; // dump CPU registersinteger i;beginfor(i=0;i<8;i=i+1)$display(“R%d=%d (%h)”, i, mycpu.regfile_1.regs[i],

mycpu.regfile_1.regs[i] )end

initialbegin// apply reset and check initial state$display(“Ctrl unit initial state: %b”, mycpu.ctrl_1.state);

end

sinal da instância ctrl_1 dentro de mycpu

reg [4:0] state;

ctrl_1mycpu

Page 57: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

113

Geração de números aleatórios• geração de estímulos aleatórios (valor ou tempo)

$random(seed); // inicia o gerador de números aleatóriosx = $random; // retorna um inteiro aleatório (32 bits)x = $random / 32’h0fff_ffff; // inteiro entre [0..15]

• especificação de atrasos não constantes: #( expressão )integer x;reg [15:0] y;reg [7:0] cmd;x = $random / 32’h00ff_ffff; y = $random / 32’h0fff_fffa;cmd = $random / 32’h3fff_ffff;for(i=0; i<MAXLOOP; i=i+1)begin#(x) apply_initcommand;#(x*y/3) send_command( cmd, data);

end

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

114

tasks• Sub-rotinas em Verilog

– Interesse particular para a construção de testbenches– Podem conter atrasos, chamadas a outras tasks

task writecommand;input [15:0] data; // data to writeinput [1:0] address; // address of output portbegin

din = {4'b0010, 2’b00, address}; // compose and write command

load = 1; #10 load = 0; #10 // ld for 1 clockdin = data[15:8]; // send MS byteload = 1; #10 load = 0; #20 // ld for 2 clocksdin = data[7:0]; // send LS byteload = 1; #10 load = 0; #30 load = 0;

endendtask

initialbegin…writecommand(16'h39A6, 2'b00 );

Page 58: Projecto de Sistemas Digitaisaja/PSDI_200607-2S/slides/slides... · 2007-03-13 · – ASIC, FPGA, componentes off-the-shelf? • Particionamento arquitectural – um sistema pode

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

115

Verilog PLI• PLI – Programming Language Interface

– Ligação do simulador de Verilog a programas em C– Acesso aos dados da simulação (escrita e leitura)– Construção de tasks específicas para tarefas de “alto nível”

• Link for ModelSim– Toolbox do MatLab para simulação conjunta MatLab-Modelsim

Tutorial em: http://www.asic-world.com/verilog/pli.html

FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves

116

Co-simulação MatLab-ModelSim

http://www.mathworks.com/products/modelsim/description1.html