Visualizadores de Netlist no Quartus II

Olá pessoal,

Neste post explicarei um pouco sobre as funcionalidades dos visualizadores de Netlist disponíveis no software Quartus II.

Os visualizadores são RTL (Register Transfer Level) Viewer, State Machine Viewer e Technology Map Viewer onde eles permitem visualizar em forma de esquemático seu projeto após a primeira Analysis & Elaboration para projetos que utilizam Verilog (.v), VHDL (.vhd), Text Design Files (.tdf) ou Block Design Files (.bdf). Para projetos extensos, complexos ou trabalhar em um projeto desenvolvido por outras pessoas, essas ferramentas são muitos úteis para compreender o projeto como todo.

RTL Viewer e Technology Map Viewer fornecem uma lista hierarquíca do projeto e links para uma vista esquemática onde são exibidos os componentes dos elementos do projeto. A lista de hierarquia expande enquanto você navega através da visão esquemática com as opções Back (Voltar) e Forward (Avançar) em cada parte do seu projeto.

Abaixo segue um código em VHDL de projeto que consiste em um Registrador de entrada serial e saída paralela.

-- Inclusão de Bibliotecas
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

-- Entidade
entity RTL_Viewer is
port ( 
 iCLOCK : in std_logic; -- Clock de 27MHz 
 iRESET : in std_logic; -- Reset do circuito
 iENTRADA : in std_logic; -- Entrada de Dados
 oSAIDAS : out std_logic_vector(3 downto 0) -- Saída de Dados
); 
end RTL_Viewer;

-- Arquitetura
architecture Behavior of RTL_Viewer is

-- Signals
signal sSAIDAS : std_logic_vector (3 downto 0);

begin

-- Processos
Processo_Principal: 
process (iCLOCK, iRESET)
begin
 
  if iRESET = '1' then
    oSAIDAS <= (others => '0');

  elsif rising_edge (iCLOCK)then
    sSAIDAS (0) <= iENTRADA;
    sSAIDAS (1) <= sSAIDAS (0);
    sSAIDAS (2) <= sSAIDAS (1);
    sSAIDAS (3) <= sSAIDAS (2);

  end if;
 
oSAIDAS <= sSAIDAS;

end process;

end Behavior;

Para criar um projeto no Quartus II veja o post aqui. Para compilar o projeto devemos ir em “Processing => Start Compilation” ou “Crtl + L“, ou então fazer somente a Analysis & Elaboration.

Figura01
Figura 01: Compilando o Projeto.

Após compilar o projeto podemos verificar o RTL Viewer do projeto em “Tools => Netlist Viewer => RTL Viewer“.

Figura02
Figura 02: Visualizando o RTL Viewer.

Visualizando o resultado.

Figura03
Figura 03: Resultado RTL Viewer.

Após o resultado, podemos observar as entradas e as saídas utilizando o Flip-Flop tipo D (Data) do projeto em VHDL.

A seguir podemos visualizar o Technology Map Viewer em “Tools => Netlist Viewer ” obtendo uma visão mais ampla do circuito combinacional.

Figura04
Figura 04: Resultado Technology Map Viewer.

Esta visualização podemos verificar a entrada serial e saída paralela com clareza. Outra característica importante quando clicamos por exemplo na entrada iRESET verificamos em linha vermelha sua utilização no circuito.

Figura05
Figura 05: Entrada iRESET.

Imaginamos se o projeto estiverem componentes adicionados ao Topo de Hierarquia. A seguir possui um código onde estão sendo adicionados dois componentes sendo um de uma porta AND e o outro uma porta XOR.

-- Inclusão de Bibliotecas
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

-- Entidade
entity RTL_Viewer is
port ( 
 -- Entrada de Dados
 iENTRADA_A : in std_logic; 
 iENTRADA_B : in std_logic; 
 
 -- Entrada de Dados 
 oSAIDA_AND : out std_logic;
 oSAIDA_XOR : out std_logic
); 
end RTL_Viewer;

-- Arquitetura
architecture Behavior of RTL_Viewer is

-- Signals
signal sENTRADA_A : std_logic;
signal sENTRADA_B : std_logic;
signal sSAIDA_AND : std_logic;
signal sSAIDA_XOR : std_logic;

-- Componentes
-- Porta and
component PORTA_AND is
port( 
 iENTRADA_A : in std_logic; -- Entrada de Dado A
 iENTRADA_B : in std_logic; -- Entrada de Dado B
 oSAIDA : out std_logic -- Saída de Dados
 );
end component;

-- Porta xor
component PORTA_XOR is
port( 
 iENTRADA_A : in std_logic; -- Entrada de Dado A
 iENTRADA_B : in std_logic; -- Entrada de Dado B
 oSAIDA : out std_logic -- Saída de Dados
 );
end component;

begin

-- Instanciamento dos componentes
logic_and: PORTA_AND port map(
 iENTRADA_A => sENTRADA_A,
 iENTRADA_B => sENTRADA_B,
 oSAIDA => sSAIDA_AND
);

logic_xor: PORTA_XOR port map(
 iENTRADA_A => sENTRADA_A,
 iENTRADA_B => sENTRADA_B,
 oSAIDA => sSAIDA_XOR
);

--Atribuiçoes de Sinais
sENTRADA_A <= iENTRADA_A;
sENTRADA_B <= iENTRADA_B;
oSAIDA_AND <= sSAIDA_AND;
oSAIDA_XOR <= sSAIDA_XOR;

end Behavior;

Na entidade do projeto possui duas entradas (iENTRADA_A e iENTRADA_B) onde cada uma delas estão conectadas nas entradas A e B das portas lógicas AND e XOR e duas saídas (oSAIDA_AND e oSAIDA_XOR) onde elas estão conectadas nas saídas das portas lógicas.

Após compilar o projeto podemos verificar o RTL Viewer do projeto como demonstra a figura a seguir:

Figura06
Figura 06: Análise RTL Viewer.

Após a análise do RTL Viewer podemos verificar os dois componentes sendo instanciados no projeto. Ao clicar duas vezes em cada uma delas são exibidos seus componentes internos de acordo com as figuras 7 e 8:

Figura07
Figura 07: PORTA_XOR.
Figura08
Figura 08: PORTA_AND.

E a seguir o Technology Map Viewer do projeto sendo semelhante ao RTL Viewer.

Figura09
Figura 09: Technology Map Viewer.

Estas poderosas ferramentas fornecem os resultados iniciais e totalmente mapeadas durante a síntese, depuração, otimização e/ou restrições de processos de entrada.

Deixo aqui uma documentação da Altera sobre o assunto com explicações de como usar os Visualizadores de Netlist (Netlist Viewers).

Até mais!

 

Anúncios

3 comentários sobre “Visualizadores de Netlist no Quartus II

  1. Pingback: Processador Nios II – Desenvolvimento: Parte III | AGE TECHNOLOGY

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s