Treinamento em Projeto de Sistemas Digitais
Projetando Sistemas
Digitais com
SystemVerilog
Edna 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 RTL
Treinamento 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
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
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
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
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
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 porta
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 porta Tutorial - 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
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
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
Simulando Sistemas Digitais
• DUT: Device Under Test Tutorial - Simulação Top DUT TestbenchSimulando Sistemas Digitais
Tutorial - Simulação
Top
DUT
Especificando Hierarquia
Especificando Hierarquia
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
Um Testbench para o Mux
Tutorial - Simulação
Gerador
Um Testbench para o Mux
Tutorial - Simulação
Gerador
Um testbench mais
inteligente
Tutorial - Simulação Como saber se a especificação está correta?Um testbench mais
inteligente
Tutorial - Simulação
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 DigitaisCircuitos 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 DigitaisExemplo Testbench Básico
Adicionador 1 bit Adicionador 4 bits
Treinamento em Projeto de Sistemas Digitais
Exemplo Testbench Básico
testbench
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
Tipos de Dados - Principais
Treinamento em Projeto de Sistemas Digitais
• Para a definição de vetores de bits procedemos das formas apresentadas abaixo.
– Vetor unidimensional
logic [msb: lsb] nome_vetor;
– Vetor bidimensional
logic [msb: lsb] nome_vetor [minimo :máximo];
– Vetor tridimensional
logic [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:
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
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ídasFlip-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 concorrente Modelo Flip-flop: loop contínuo – mudanças nos sinais após @
Especificando um Registrador
• Registrador: – Concatenação de vários flip-flops Entradas e saídas de 8 bits Tamanho parametriza do InstanciaçãoMá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
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
Máquina de Estados Finitos FSM
Modelo de
Implementação
FSM em SystemVerilog
Modelo de
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. =
b c
Modelando FSM como Diagramas de
Estado
Reset 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
Modelando FSM como Diagramas de
Estado
Saídas dependem do estado Saídas dependem do estado e da entradaModelando FSM como Diagramas de
Estado
Estados simbólicos e entrada e saída como
variáveis
Modelando FSM como Diagramas de
Estado
Mudança do estado Mudança da saída ~zMudança do estado Mudança da saída Calculo do próximo estado
Modelando FSM como Diagramas de
Estado
Projetando um sistema digital
• Estrutura: controle + processamento
4 2 4 4 Z N ALU L1 L3 L2 A B C F L1 L2 L3
Projeto: Implementação Multi-ciclo
Shift left 2 PC M u x 0 1 Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Instruction [15– 11] M u x 0 1 M u x 0 1 4 Instruction [15– 0] Sign extend 32 16 Instruction [25– 21] Instruction [20– 16] Instruction [15– 0] Instruction register ALU control ALU result 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] M u x 0 2 Jump address [31-0] Instruction [25– 0] 26 28 Shift left 2 PC [31-28] 1 1 M u x 0 3 2 M u x 0 1 ALUOut Memory MemData Write data AddressProjeto
• 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
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 Z N O EQ LT GT 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
Unidade de Busca...
Mem Read Mem Write MorD IRWrite Unidade ControleResumo
• Circuitos sequenciais – Armazenamento do estado • Elementos Sequenciais – dFF – Clock e reset – Registrador Infra-estrutura HardwareResumo
• 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