Treinamento em Projeto de Sistemas Digitais -...

Post on 15-Oct-2019

3 views 0 download

Transcript of Treinamento em Projeto de Sistemas Digitais -...

Treinamento em Projeto de

Sistemas Digitais

Projetando Sistemas

Digitais com

SystemVerilogEdna Barros

Grupo de Engenharia da Computação

Centro de Informática -UFPE

Treinamento em Projeto de

Sistemas Digitais

Agenda

• RTL Design

• Simulando circuitos digitais

• Descrevendo Testbenches

• Módulos parametrizados

• Especificando Portas

• Modelando Circuitos Combinacionais

• Circuitos sequenciais

• Máquinas de estado

– Modelos esquemático e RTLTreinamento em Projeto de

Sistemas Digitais

Tutorial - Simulação

RTL Design

• Sistemas digitais possuem milhões de

portas lógicas e transistores

– Necessidade de ferramentas EDA (Electronic

Design Automation)

– Especificação em linguagem específica (HDL

– Hardware Description Language)

– Nível de abstração – RTL (Register Transfer

Level)

• Circuitos combinacionais

• Registradores

• Máquinas de estado (controle)

Fluxo de Projeto

Tutorial - Simulação

• Nível de abstração –

RTL (Register

Transfer Level)

• Circuitos

combinacionais

• Registradores

• Máquinas de

estado (controle)

Simulador

Tutorial - Simulação

• Programa que prediz o comportamento de

um sistema físico em função do tempo

– Previsão climática: simulador do

comportamento do clima

– Modelagem em função do tempo de um

sistema digital

Simulador

Tutorial - Simulação

• SystemVerilog

– Linguagem que modela um sistema digital

• Por exemplo: portas lógicas conectadas

• Simulador que executa o comportamento

do sistema modelado em SystemVerilog

– Como os valores das saídas variam em

função dos valores das entradas no tempo

– Permite verificar se o modelo do sistema

digital implementa a função desejada

SystemVerilog

• Permite modelar um sistema digital

considerando:

– Modelo da interconexão

– Modelo de tempo

– Modelo da funcionalidade

• Modelagem em vários

níveis de abstração

Tutorial - Simulação

Nível Portas Lógicas – Gate Level

• Module: bloco básico

– Nome

– Interface

– Estrutura interna: conjunto de portas lógicas conectadas

Tutorial - Simulação

Nível Portas Lógicas – Gate Level

– Portas lógicas: blocos básicos da linguagem

– Conexão por fios• Tipo lógico: 0, 1, X. Z (desconectado)

– Retardo (delay) das portas

Tutorial - Simulação

Delay = 2

unidades de

tempo

Nível Portas Lógicas – Gate Level

– Retardo (delay) das portas• Delay default

• Diferentes unidades podem ser definidas

Simulação do Modelo

• Como simular um modelo?

• Modelo:

– Conexão de componentes (pode ser em qualquer ordem)

– Execução do comportamento de cada componente como função

das entradas

Tutorial - Simulação

Execução do Modelo

• Cada módulo é executável

• Simulador executa os módulos que tiveram

os valores em suas portas de entrada

alterados

• A alteração na saída

é propagada para outros

módulos que estão

interconectados

considerando o

retardo da portaTutorial - Simulação

Execução do Modelo

• Cada módulo é executável

• Simulador executa os módulos que tiveram

os valores em suas portas de entrada

alterados

• A alteração na saída

é propagada para outros

módulos que estão

interconectados

considerando o

retardo da portaTutorial - Simulação

Execução em

qualquer ordem

Como Verificar se o projeto está correto?

• Modelo do circuito digital

– Composto de vários módulos

• Gerador de sinais para as entradas

• Visualizador dos sinais nas saídas

Tutorial - Simulação

Simulando Sistemas Digitais

• Testbench: módulos que vão gerar sinais

de entrada para simular um módulo em

desenvolvimento e monitorar os sinais de

saída do módulo

Tutorial - Simulação

Simulando Sistemas Digitais

• Testbench: módulos que vão gerar sinais

de entrada para simular um módulo em

desenvolvimento e monitora os sinais de

saída do módulo

Tutorial - Simulação

Simulando Sistemas Digitais

• DUT:

Device

Under Test

Tutorial - Simulação

Top

DUT

Testbench

Simulando Sistemas Digitais

Tutorial - Simulação

Top

DUT

Testbench

Especificando Hierarquia

Tutorial - Simulação

Especificando Hierarquia

Tutorial - Simulação

Mapeamento

de Portas

Treinamento em Projeto de

Sistemas Digitais

.....

Mapeamento

de Portas

Treinamento em Projeto de

Sistemas Digitais

.....

Um Testbench para o Mux

• Como gerar estímulos de forma

automática e exaustiva?

Tutorial - Simulação

Gerador

de estímulos

Um Testbench para o Mux

Tutorial - Simulação

Gerador

de estímulos

Um Testbench para o Mux

Tutorial - Simulação

Gerador

de estímulos

Um testbench mais

inteligente

Tutorial - Simulação

Como saber se a

especificação está

correta?

Um testbench mais

inteligente

Tutorial - Simulação

Compara com valor de referência

Resumo• Foram apresentados os principais conceitos de

simulação baseada em eventos

• Tempo e ação concorrente

– Modelagem do tempo de simulação

– Modelagem de componentes que são ativados

concorrentemente

• Módulos, Instanciação e Hierarquia

– Modelos de partes (componentes de hardware)

– Projeto Bottom-Up

• Modelos estruturais e Procedurais

– Estrutura: interconexão de componentes

– Procedural: Comportamento do Testbench

Projetando Circuitos

Combinacionais

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Lógica combinacional:

–Saída: função booleana das

entradas

• F: I -> O

• Retardo de propagação: tempo para o

valor da saída ficar estável em função

de mudança nos valores de entrada.

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Especificação em SystemVerilog

Always_comb Assign

comportamemto

comportamento

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Especificação em SystemVerilog

Assign múltiplas saídas

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Especificação em SystemVerilog

Hierarquia

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Porque o circuito abaixo não é

combinacional?

A saída não está especificada

para todas as entradas

Necessidade

de latchs para

guardar o

valor

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Formalizando....

• always_comb statement

– always_comb sum=b+c

– always_comb begin

sum=b+c;

dif = b-c;

end

• Executa repetidas vezes enquanto valores

mudam

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Formalizando....

• assign statement

– assign sum=b+c

– assign sum=b+c, dif = b-c;

• Cada expressão (lado direito) é avaliada

continuamente

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

• assign f = (a & b) | (b & c) | (a & c)

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

Concatenação

Constante com tam.

Pré definido

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

Valores default

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

Facilitando comparação

Treinamento em Projeto de

Sistemas Digitais

Especificando Testbenches

• Papel do testbench:

– Modelar ambiente

– Depurar o projeto

• Não é sintetizável

• Visualização dos sinais

– $ monitor

– S display

– $ strobe

Treinamento em Projeto de

Sistemas Digitais

Especificando Testbenches

Treinamento em Projeto de

Sistemas Digitais

Especificando Testbenches

Treinamento em Projeto de

Sistemas Digitais

Exemplo Testbench Básico

Instancia do DUV

testbench

Resultado

Treinamento em Projeto de

Sistemas Digitais

Exemplo Testbench Básico

Adicionador 1 bit

Adicionador 4 bits

Treinamento em Projeto de

Sistemas Digitais

Exemplo Testbench Básico

testbenchTreinamento em Projeto de

Sistemas Digitais

Tipos de Dados - Principais

Treinamento em Projeto de

Sistemas Digitais

Tipos de Dados - Principais

Treinamento em Projeto de

Sistemas Digitais

Tipos de Dados - Principais

Treinamento em Projeto de

Sistemas Digitais

• Para a definição de vetores de bitsprocedemos das formas apresentadasabaixo.

– Vetor unidimensionallogic [msb: lsb] nome_vetor;

– Vetor bidimensionallogic [msb: lsb] nome_vetor [minimo :máximo];

– Vetor tridimensionallogic [msb:lsb] [máximo:mínimo] nome_vetor[mínimo: máximo]

Vetores de Logics

Treinamento em Projeto de

Sistemas Digitais

• Maneira de usar constantes de forma

controlada

Enumeration

Treinamento em Projeto de

Sistemas Digitais

• Maneira de usar constantes de forma

controlada

Enumeration

Treinamento em Projeto de

Sistemas Digitais

Resumo

• Especificação RTL e Simulação de

Sistemas Digitais

• Modelando Circuitos Combinacionais

– Assign

– Always_comb

• Construtores procedurais

• Tipos de Dados

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Formalizando....

• always_comb statement

– always_comb sum=b+c

– always_comb begin

sum=b+c;

dif = b-c;

end

• Executa repetidas vezes enquanto valores

mudam

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Formalizando....

• assign statement

– assign sum=b+c

– assign sum=b+c, dif = b-c;

• Cada expressão (lado direito) é avaliada

continuamente

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

• assign f = (a & b) | (b & c) | (a & c)

Treinamento em Projeto de

Sistemas Digitais

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

Concatenação

Constante com tam.

Pré definido

Treinamento em Projeto de

Sistemas Digitais

Projetando Circuitos

Sequenciais

Circuitos Sequenciais

• O que é um elemento

sequencial?

–Um flip flop

–Um latch

• São usados para armazenar

informação do Sistema:

–O estado do Sistema

Circuitos Sequenciais

• Como especificar elementos

sequenciais em uma descrição

RTL?

• Elementos sequenciais não são

especificados Explicitamente

• Eles são inferidos a partir de

como é feita a sua especificação

Circuitos Sequenciais

• Circuitos sequenciais juntamente com

circuitos combinacionais permitem a

implementação de uma máquina de

estados FSM

– Sinais de sincronização

• Clock

• Reset

– Estados

– Entradas e saídas

Flip-Flop tipo D

• Flip-flop tipo D

– Armazenam 1 bit

– Copia a entrada na transição positiva do clock

– Reseta a saída na transição negativa do reset

Especificando um Flip-Flop

• Flip-flops que são edge-triggered

– Informado pelo uso do simbolo @ com a

palavra posedge ou negedge

• Efeito:

– Todas as varíaveis que estão no lado

esquerdo da atribuíção com “<=” serão

implementadas com Flip-flops trigados

na transição do clock ou reset.

– Reset é assíncrono

– <= atribuição

concorrenteModelo Flip-flop:

loop contínuo –

mudanças nos

sinais após @

Especificando um Registrador

• Registrador:

– Concatenação

de vários flip-

flopsEntradas e

saídas de 8

bits

Tamanho

parametriza

do

Instanciação

Máquina de Estados Finitos FSM

• Definidas formalmente como um conjunto de

estados, reset e clock.

• Conjunto de combinações das entradas.

– Não necessariamente todas as 2n são possíveis

devido aos don’t-cares

• Combinações das saídas

– Não necessariamente todas as 2n serão possíveis

• Função do próximo estado (δ) e função da saída

(λ) são combinacionais

• Clock

• Sinal reset

Máquina de Estados Finitos FSM

Modelo de Computação:

iniciando no estado de

reset, uma transição

positiva do clock causa o

Sistema mudar para

outro (ou mesmo)

estado como definido

pela função δ

Máquina de Estados Finitos FSM

Modelo de

ImplementaçãoEstado

FSM em SystemVerilog

Modelo de

Implementação

FSM em SystemVerilog

Always_ff

Always_comb ou

assign

FSM em SystemVerilog

Atribuições

concorrentes

FSM em SystemVerilog

Comportamento

similar

FSM em SystemVerilog

Atribuições

concorrentes

Atribuições não

concorrentes

<= vs. =

bc

Modelando FSM como Diagramas de

EstadoReset state. One state is always

labeled as the reset state using an

"R" and an arrow

pointing to the reset state.

State name. A unique and

meaningful name is given to each

state. The actual state

assignment is normally only shown

in the SystemVerilog model.

Transition expression. An Boolean

expression is shown by an arc that

represents the next state if the

expression is TRUE.

Modelando FSM como Diagramas de

Estado

Saídas dependem do

estado

Saídas dependem do

estado e da entrada

Modelando FSM como Diagramas de

Estado

Estados simbólicos e

entrada e saída como

variáveis

~z

Modelando FSM como Diagramas de

Estado

Mudança do

estado

Mudança da

saída

~z

Mudança do

estado

Mudança da

saída

Calculo do próximo

estado

Modelando FSM como Diagramas de

Estado

~z

Projetando um sistema digital

• Estrutura: controle + processamento

4

2

4

4

Z

NALU

L1

L3

L2

A B

C

F

L1

L2

L3

Projeto: Implementação Multi-ciclo

Shift

left 2

PC

Mux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Sign

extend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instruction

register

ALU

control

ALUresult

ALU

Zero

Memory

data

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Projeto

• Projetar CPU que implementa repertório de uma CPU similar ao MIPS

• Dados módulos em Verilog para cada componente da Unidade de processamento (ALU, Banco de Registradores, PC, Memória, etc...)

• Projetar unidade de processamento pela interligação dos módulos

• Projetar unidade de controle

Compondo a Unidade de

Processamento:

f operação descrição flags afetados

000 S = A Z,N

001 S = A+B Soma Z,N,O

010 S = A-B Subtração Z,N,O

011 S = A and B And lógico Z

100 S = A xor B Ou exclusivo Z

101 S = not A Complemento a 1Z

110 S = inc A Incremento Z, N, O

111 S = A comp B Comparação EQ,GT,LT

A B

S

ZN

OEQLTGT

ALU

32 32

32

ALU: Unidade Lógico-Aritmética

Compondo a Unidade de

Processamento....

• Permitir que a saída da ALU seja deslocada– Registrador de deslocamento

• Load e shift síncronos (descida)

• Clear assíncrono

• Deslocamentos (n vezes):

– Esquerda

» Entrada: 0

– Direita (lógico e aritmético)

» Entrada: 0 ou MSB (Bit mais significativo)

– Rotação (direita ou esquerda):

» Entrada: LSB, MSB

» Saída: MSB, LSB (Bit Menos Significativo)

Unidade de Busca...Mem

Read

Mem

WriteMorD IRWrite

Unidade

Controle

Resumo

• Circuitos sequenciais

– Armazenamento do estado

• Elementos Sequenciais

– dFF

– Clock e reset

– Registrador

Infra-estrutura Hardware

Resumo

• Conceitos de Máquinas de Estados

• Modelando FSM usando SystemVerilog

• Atribuições concorrentes

• Modelando Diagramas de Estados em

System Verilog

– FSMs explícitas

• Algumas otimizações

Infra-estrutura Hardware