Treinamento em Projeto de Sistemas Digitais -...
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