Documente Academic
Documente Profesional
Documente Cultură
VHDL
Los modelos se pueden simular para comprobar que se corresponden con la funcionalidad deseada
0 ns 10 ns 20 ns
A B S
O se pueden sintetizar para crear un circuito que funciona como el modelo
A B
Escuela Politcnica Superior
S
Univ. Autnoma de Madrid
Documentacin
Contratacin
Verificacin Funcional
Desarrollo de un testbench
Ventajas adicionales
Lenguaje estndar Independiente de la tecnologa y del fabricante
Portable, reusable til para desarrollo con FPGAs y con ASICs
Escuela Politcnica Superior
En 1987 el trabajo fue cedido al IEEE, y a partir de ese momento es un estndar abierto.
VHDL: Evolucin
1980: El departamento de defensa de los EEUU funda el proyecto para crear un HDL estndar dentro del programa VHSIC 1981: Woods Hole Workshop, reunin inicial entre el Gobierno, Universidades e Industria 1983: Se concedi a Intermetrics, IBM y Texas Instruments el contrato para desarrollar VHDL 1985: Versin 7.2 de dominio pblico. 1987: El IEEE lo ratifica como su estndar 1076 (VHDL-87) 1993: El lenguaje VHDL fue revisado y ampliado, pasando a ser estndar 1076 93 (VHDL-93) 2000,2002: Varias mejoras estandarizadas . 2008: ltima modificacin de VHDL (VHDL2008). Incorporacin de sub-estndares. Mejor soporte de verificacin y otras mejoras.
Univ. Autnoma de Madrid
La entidad y la arquitectura
Tipos de datos Los procesos Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico Estilos de diseo Verificacin con testbenches
VHDL
Entidad y arquitectura Una unidad hardware se visualiza como una caja negra
La interfaz de la caja negra est completamente definida. El interior est oculto, se define en otra unidad de diseo.
q[7:0] co
rst
q[7:0] co
d[7:0]
clk
Ports = Canales de Comunicacin Cada una de las posibles conexiones se denomina PORT y consta de: Un nombre, que debe ser nico dentro de la entidad. Modo: La direccin del flujo de datos: entrada, salida, bidireccional... Tipo: Los valores que puede tomar el puerto: '0, '1' o (Z), etc. dependen de lo que se denomina TIPO de seal. Los puertos son una clase especial de seales que adicionalmente al tipo de seal aade el modo (IN, OUT, etc.)
Univ. Autnoma de Madrid
10
11
LIBRARY ieee;
USE ieee.std_logic_1164.ALL; ENTITY mi_circuito IS PORT ( clk, rst: IN std_logic; d: IN std_logic_vector(7 DOWNTO 0); q: OUT std_logic_vector(7 DOWNTO 0); co: OUT std_logic); END mi_circuito;
MODO
d[7:0]
clk
Escuela Politcnica Superior
12
declaraciones de puertos
); END toto; ARCHITECTURE test OF toto IS BEGIN END test;
nombre de la entidad
nombre de la arquitectura
13
14
Tipos de datos
VHDL
Los procesos Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico Estilos de diseo Verificacin con testbenches
15
tipos
file
access
TIPO es la definicin de los valores posibles que puede tomar un objeto VHDL es un lenguaje fuertemente tipado:
A los objetos se les asigna siempre un tipo cuando se declaran Las asignaciones slo pueden hacerse entre objetos del mismo tipo Escalares: integer floating point enumerated physical Compuestos: array record Punteros: access Archivos: file
escalares
compuestos
enumerados
16
17
Tipo STD_LOGIC
Los valores 0 y 1 del tipo bit se quedan cortos para modelar todos los estados de una seal digital en la realidad El paquete IEEE.std_logic_1164 define el tipo std_logic, que representa todos los posibles estados de una seal real:
U X 0 1 Z W L H No inicializado, valor por defecto. Desconocido fuerte, salida con mltiples fuentes en corto Salida de una puerta con nivel lgico bajo Salida de una puerta con nivel lgico alto Alta Impedancia Desconocido dbil, terminacin de bus 0 dbil, resistencia de pull-down 1 dbil, resistencia de pull-up No importa, usado como comodn para sntesis
Lenguaje de Descripcin de Hardware VHDL
Univ. Autnoma de Madrid
18
19
<=
Univ. Autnoma de Madrid
20
21
:=
Univ. Autnoma de Madrid
22
Una manera rpida y eficiente de asignar valores a vectores son los aggregates:
a <= (0 => '0', 1 => c and d, others=> 'Z');
23
tmp <= "10100011"; tmp <= x"A3"; -- VHDL93 tmp(7) <= '1'; tmp(7
downto
4) <= "1010";
1 bit : comilla simple ('), STD_LOGIC mltiples bits: comilla doble ("), STD_LOGIC_VECTOR
24
25
Multiplicativos
* / rem mod
Relacionales
= /= < <= > >= igual distinto menor menor o igual mayor mayor o igual
Signo (unarios)
+,
Desplazamiento (bit_vector)
sll, srl sla, sra rol, ror
Miscelneos
abs valor absoluto ** exponenciacin
Escuela Politcnica Superior
26
Ms sobre operadores
No todos los operadores estn definidos para todos los tipos En particular, para los std_logic habr que obtenerlos de alguna librera como:
std_logic_signed std_logic_unsigned std_logic_arith
std_logic_vector( 3 downto 0); std_logic_vector( 3 downto 0); std_logic_vector( 7 downto 0); a <= "0011"; b <= "1010"; c <= a & b; -- c ="00111010"
Los operadores de desplazamiento bsicos slo funcionan con bit_vector. Es prctico usar concatenacin con std_logic.
Escuela Politcnica Superior
27
Las libreras signed y unsigned se deben emplear cuando se quiere que los std_logic_vector estn respectivamente en complemento a 2 o en binario natural
Aqu est el CONV_INTEGER
La librera arith es ms completa, y utiliza mayormente los tipos signed o unsigned (derivados de std_logic_vector)
Aqu est CONV_STD_LOGIC_VECTOR
28
Los procesos
VHDL
Circuitos combinacionales Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico Estilos de diseo Verificacin con testbenches
29
begin
-- Construcciones Concurrentes -- PROCESOS -- asignaciones -- instanciaciones -- El orden en el texto no importa -- ya que se ejecuta concurrentemente end UAM;
30
31
A B
La lista de sensibilidad tiene las seales A, B porque cualquier cambio en las entradas puede variar el estado de la puerta
process(A,B) begin if A='1' and B='1' then S <= '1'; else S <= '0'; end if; Se usa un if..then..else para describir la puerta end process;
32
33
Necesidad de la concurrencia
Cuando hay dependencias entre seales:
process(A,B,C) begin S <= A and B; Q <= S or C; end process;
A B C
S
Q
Por qu? No hay que olvidar que se trata de modelar circuitos reales, no virtuales, y las seales necesitan que transcurra el tiempo para tomar un valor:
34
La solucin de VHDL
VHDL (y en general, todos los HDLs) solucionan este problema dando soporte explcito a la concurrencia En VHDL, una arquitectura puede tener tantos procesos como queramos, y todos se ejecutan concurrentemente
architecture ... ... begin
process(...) ... end process; process(...) ... end process; end ...;
Escuela Politcnica Superior
35
A B C
S Q
process(C,S) begin if C='1' then Q <= '1'; else Q <= S; end if; end process; end uam;
36
Ejecucin de Procesos
Inicializacin
T=0 Inicializacin de drivers de todas las seales Ejecucin del cuerpo de todos los procesos
Normalmente se provocar cambios en seales Se suspenden todos los procesos
Simulacin
Si hay transacciones previstas para algunos drivers
Avanzar T Actualizar seales Reactivar los procesos sensibles a las seales que cambiaron Ejecutar el cuerpo de esos procesos
Normalmente se provocar ms cambios en seales
37
IF condicion_1 THEN ... secuencia de instrucciones 1 ... ELSIF condicion_2 THEN ... secuencia de instrucciones 2 ... ELSIF condicion_3 THEN ... secuencia de instrucciones 3 ... ELSE ... instrucciones por defecto ... END IF;
end example;
38
CASE expresion IS WHEN caso_1 => ... secuencia de instrucciones 1 ... WHEN caso_2 => ... secuencia de instrucciones 2 ... WHEN OTHERS => ... instrucciones por defecto ... END CASE;
alu : process (op1, op2, cmd) begin case cmd is when "00" => res <= op1 + op2; when "01" => res <= op1 op2; when "10" => res <= op1 and op2; when others => -- "11" res <= op1 or op2; end case; end process alu; end uam;
39
Ejemplo: Decodificador de 3 a 8
40
while (simulando = true) loop clk <= '0'; wait for 10 ns; clk <= '1'; wait for 10 ns; end loop; wait;
41
42
process(lista de seales) ... begin ... instrucciones secuenciales ... end process;
El proceso se dispara inmediatamente
Las instrucciones se ejecutan hasta que se llega al wait, y en ese punto se suspende el proceso
process ... begin ... instrucciones secuenciales ... wait... ... instrucciones secuenciales ... end process;
Lenguaje de Descripcin de Hardware VHDL
43
44
45
Las variables
A la hora de modelar un circuito nos puede venir bien tener un objeto cuyo valor se actualice inmediatamente
sin tener que esperar a que avance el tiempo, como en las seales
46
El problema de la actualizacin de la seal S tiene muy fcil solucin con una variable
architecture uam of ejemplo is ... begin process(A,B,C) variable S : std_logic; begin S := A and B; if C='1' then Q <= '1'; else Q <= S; end if; end process; end uam;
A B C
S
Q
47
Sintaxis
destino := fuente
representan almacenamiento local local (dentro del proceso) se actualizan inmediatamente
Utilidad
Visibilidad
Comportamiento
48
VHDL
Circuitos combinacionales
Circuitos secuenciales Mquinas de estados Triestados Diseo jerrquico Estilos de diseo Verificacin con testbenches
49
50
PROBLEMA
Pueden generarse por descuido latches no deseados, p.ej. cuando todas las opciones de una sentencia condicional no estn especificadas
51
A 00 01 10 11
S 1 1 0 don't care
La solucin es incorrecta, por no poner el caso "11" no significa "don't care", simplemente est guardando el valor anterior, est generando un latch
Escuela Politcnica Superior
52
53
Asignaciones concurrentes
Las asignaciones concurrentes son asignaciones de valores a seales, fuera de proceso, que permiten modelar de una manera muy compacta lgica combinacional
Funcionan como procesos (son procesos implcitos) y se ejecutan concurrentemente con el resto de procesos explcitos y asignaciones
54
Se pueden utilizar todos los operadores que queramos, tanto los predefinidos como los que utilicemos de las libreras.
55
Por su ejecucin en cascada es similar al IF..THEN..ELSE Pueden generarse problemas de memoria implcita si no se pone el ltimo else
Escuela Politcnica Superior
56
Por su ejecucin en paralelo (balanceada) es similar a un CASE Se pueden dar problemas de memoria implcita si no se pone el ltimo when others
Escuela Politcnica Superior
57
VHDL
Circuitos secuenciales
Mquinas de estados Triestados Diseo jerrquico Estilos de diseo Verificacin con testbenches
58
process (clk) begin if clk'event and clk='1' then q <= d; end if; si cambia el end process;
no hay else, queremos inferir memoria reloj y es ahora 1 ... hay un flanco de subida
59
CLK
No se deben poner puertas en el reloj, si se necesita deshabilitar la carga de un flip-flop utilizar la habilitacin de reloj
Escuela Politcnica Superior
60
Otro circuito fundamental. El reset debe estar en la lista de sensibilidad porque es asncrono, tiene efecto independientemente del reloj. En los circuitos secuenciales, la lista de sensibilidad debe estar compuesta como mucho por el reloj y el reset asncrono.
61
62
63
64
VHDL
Mquinas de estados
Triestados Diseo jerrquico Estilos de diseo Verificacin con testbenches
65
Lgica Comb.
EstFuturo registro
Estado
66
Entradas
Registros de estado
Lgica de salida
Salidas
67
Entradas
Registros de estado
Estado actual
Lgica de salida
Registros de salida
Salidas
68
FSM de Mealy
Las salidas cambian por un cambio de estado o por un cambio en el valor de las entradas
Hay que tener cuidado con los caminos combinacionales de la entrada a la salida: posibles violaciones de timing.
Registros de estado
Entradas
Lgica
Salidas
69
PWAIT
ACK 10
Declaracin de la Entidad:
LIBRARY ieee; USE ieee.std_logic_1164.ALL;
ENTITY maq IS PORT ( clock, reset: IN std_logic; req, pwait: IN std_logic; retry_out, ack_out: OUT std_logic); END maq;
Escuela Politcnica Superior
70
Entradas
Registros de estado
Esto es independiente del tipo de implementacin: Moore/Mealy, salidas registradas/combinacionales, esquema one-hot
Escuela Politcnica Superior
71
72
VHDL
Triestados
Diseo jerrquico Estilos de diseo Verificacin con testbenches
73
74
Inferencia de triestado
Cuando se quiere que un driver de una seal se quede en alta impedancia, se le asigna a la seal el valor 'Z'
Vale para el tipo std_logic y sus derivados
Igual que ocurre en la realidad, el estado de la seal lo fijar el driver que no est en alta impedancia
'0' ena
senal <= in1 WHEN ena='1' ELSE 'Z';
PROCESS(in1) BEGIN senal <= in2; END PROCESS;
in1
'Z'
senal = '0'
'0'
'0'
75
Inferencia de triestado
La funcin de resolucin usa esta tabla Ver PACKAGE std_logic_1164
76
77
Seales bidireccionales
En este caso la seal tiene drivers externos, fuera de la entidad
ENTITY bufoe IS PORT ( x: IN std_logic; oe: IN std_logic; y: INOUT std_logic; yfb: OUT std_logic); END bufoe;
oe x yfb y
ARCHITECTURE simple OF bufoe IS BEGIN y <= x WHEN oe='1' ELSE 'Z'; yfb <= y; END simple;
78
regout
8
pad
8
ENTITY ejbidir IS PORT ( clk,dir : IN std_logic; odata : IN std_logic_vector(7 downto 0); idata : OUT std_logic_vector(7 downto 0); pad : INOUT std_logic_vector(7 downto 0)); END ejbidir; ARCHITECTURE simple OF ejbidir IS SIGNAL regin,regout: std_logic_vector(7 downto 0); BEGIN pad <= regout WHEN dir='1' ELSE "ZZZZZZZZ"; regin <= pad; PROCESS(clk) BEGIN IF rising_edge(clk) THEN regout <= odata; idata <= regin; END IF; END PROCESS; END simple;
Univ. Autnoma de Madrid
clk
idata Q
8
regin
8 8
79
VHDL
Diseo jerrquico
Estilos de diseo Verificacin con testbenches
80
Diseo jerrquico
Los componentes bsicos se utilizan como elementos de otros ms grandes. Es fundamental para la reutilizacin de cdigo. Permite mezclar componentes creados con distintos mtodos de diseo:
Esquemticos VHDL, Verilog
a2.vhd
Genera diseos ms legibles y ms portables. Necesario para estrategias de diseo top-bottom o bottom-up.
Escuela Politcnica Superior
b.vhd
c.vhd
81
rbol de jerarquas
top.vhd
a.vhd
b.vhd
c.vhd
a1.vhd
a2.vhd
COMPONENTES INFERIORES
82
ARCHITECTURE jerarquica OF top IS signal s1,s2 : std_logic; COMPONENT a PORT ( entrada : IN std_logic; salida : OUT std_logic ); END COMPONENT; begin u1: a PORT MAP (entrada=>s1, salida=>s2); end jerarquica;
83
Declaracin de Componentes
Antes de poder usar un componente, se debe declarar
Especificar sus puertos (PORT) Especificar parmetros (GENERIC)
Una vez instanciado el componente, los puertos de la instancia se conectan a las seales del circuito usando PORT MAP Los parmetros se especifican usando GENERIC MAP La declaracin de los componentes tambin se puede hacer en un package
Para declarar el componente, slo habr que importar el package. Opcin interesante cuando se declaran varios componentes a modo de biblioteca y la declaracin de los componentes no aporta nada al lector del cdigo.
84
LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY mux2to1 IS PORT ( a, b, sel: IN std_logic; c: OUT std_logic); END mux2to1; ARCHITECTURE rtl OF mux2to1 IS BEGIN c <= (a AND NOT sel) OR (b AND sel); Declaracin END rtl;
ENTITY mux4to1 IS PORT ( i0, i1, i2, i3: IN std_logic; sel: IN std_logic_vector (1 downto 0); z: OUT std_logic); END mux4to1;
ARCHITECTURE structural OF mux4to1 IS COMPONENT mux2to1 PORT ( a, b, sel: IN std_logic; c: OUT std_logic); END COMPONENT; SIGNAL c1,c2 : std_logic;
Instanciacin
(a=>i0, b=>i1, sel=>sel(0), c=>c1); m1: mux2to1 PORT MAP (a=>i2, b=>i3, sel=>sel(0), c=>c2); m2: mux2to1 PORT MAP (a=>c1, b=>c2, sel=>sel(1), c=>z); END structural;
Univ. Autnoma de Madrid
85
ARCHITECTURE archmux2to1 OF mux2to1 IS BEGIN c <= (a AND NOT sel) OR (b AND sel); END archmux2to1; LIBRARY ieee; USE ieee.std_logic_1164.ALL; PACKAGE mymuxpkg IS COMPONENT mux2to1 PORT ( a, b, sel: IN std_logic; c: OUT std_logic); END COMPONENT; END mymuxpkg;
Escuela Politcnica Superior
86
ARCHITECTURE archtoplevel OF toplevel IS Asociacin por nombre SIGNAL i: std_logic_vector(2 DOWNTO 0); BEGIN m0: mux2to1 PORT MAP (a=>i(2), b=>r(0), sel=>s, c=>t(0)); m1: mux2to1 PORT MAP (c=>t(1), b=>r(1), a=>i(1), sel=>s); m2: mux2to1 PORT MAP (i(0), r(2), s, t(2)); i <= p AND NOT q; Asociacin posicional END archtoplevel;
(menos recomendable)
Escuela Politcnica Superior
87
88
VHDL
Estilos de diseo
Verificacin con testbenches
89
Estilos de arquitecturas
Arquitectura estructural
90
91
92
Tiene en cuenta el ciclo de reloj Independiente de la tecnologa Definicin del sistema en trminos de:
registros lgica combinacional
Escuela Politcnica Superior
93
PROCESO COMBINACIONAL process(a,b,sel) begin if sel='1' then y <= a; else y <= b; end if; end process;
- Todas las entradas deben estar en la lista de sensibilidad
94
Equivalente a un modelo que se podra crear en cualquier otro lenguaje de alto nivel, por ejemplo C. Slo es til para simulacin.
Escuela Politcnica Superior
95
Niveles de abstraccin
VHDL permite describir circuitos electrnicos a distintos niveles de abstraccin, de acuerdo con los estilos de descripcin comentados anteriormente Algortmico:
Un algoritmo puro consiste en un conjunto de instrucciones ejecutadas secuencialmente que realizan una tarea. No se detallan necesariamente relojes o retrasos. No sintetizable (o sintetizable en casos limitados).
RTL
Es la entrada para la sntesis. Las operaciones se realizan en un ciclo de reloj especfico. No se detallan retrasos.
Nivel de puerta
Es la salida de la sntesis. Netlist de puertas e instanciaciones de una librera tecnolgica. Se puede incluir informacin de retraso para cada puerta.
96
VHDL
97
Pasos de la simulacin
Archivos VHDL
Anlisis
libreras de trabajo
Elaboracin Simulacin
Escuela Politcnica Superior
98
Un testbench puede ser un cdigo VHDL que automatiza estas dos operaciones Los testbenches no se sintetizan
Se puede utilizar un VHDL algortmico Usualmente con algoritmos secuenciales
99
estmulos
diseo.vhd
resultados testbench.vhd
100
ARCHITECTURE
UUT: PORT PROCESS
Descripcin de la UUT
CONFIGURATION
Testbench
Escuela Politcnica Superior
101
Generando estmulos
Dar valores a las seales conectadas a las entradas de la UUT
En sntesis no tiene sentido el tiempo absoluto (tecnologa) En los testbenches controlamos el tiempo de generacin de los estmulos.
Asignacin concurrente
senal <= '1', '0' AFTER 20 ns, '1' AFTER 30 ns; senal <= WAIT FOR senal <= WAIT FOR senal <= '1'; 20 ns; '0'; 30 ns; '1';
Asignacin secuencial
Dentro de un proceso
102
Sintaxis
ASSERT condicion REPORT string SEVERITY nivel;
Tras REPORT se aade una cadena de texto, que se muestra si no se cumple la condicin SEVERITY puede tener cuatro niveles
NOTE WARNING ERROR (nivel por defecto si no se incluye SEVERITY) FAILURE
103
Se utiliza el atributo predefinido de VHDL 'image, que pasa de cualquier valor, de un tipo escalar, a una representacin en forma de string Generalmente se usa dentro de procesos (instruccin secuencial), pero tambin se puede usar como concurrente
Se chequea la condicin continuamente, y en el momento en que deja de cumplirse, se escribe el mensaje
104
ASSERT (resultado=esperado)
WAIT FOR
Escuela Politcnica Superior
105
Ejemplo de cdigo
ARCHITECTURE tb_arch OF dff_tb IS COMPONENT dff PORT (...) END COMPONENT; SIGNAL d, c, q : std_logic; BEGIN UUT : dff PORT MAP (d => d, c => c, q => q ); PROCESS BEGIN c <= '0'; d <= '0'; WAIT FOR 10 ns; c <= '1'; WAIT FOR 10 ns; ASSERT q=d REPORT "falla" SEVERITY FAILURE; END PROCESS;
END tb_arch;
Escuela Politcnica Superior Univ. Autnoma de Madrid
106
Ejemplo de cdigo
Se pueden dar valores dependiendo de los resultados
senal <= 00; WAIT FOR 10 ns; IF salida /= '0' THEN REPORT "Intento otra vez"; senal <= 01; ELSE REPORT "Ahora pruebo con bit uno"; senal <= 10; END IF; WAIT FOR 10 ns;
107
Procedimientos y funciones
VHDL permite definir procedimientos (subrutinas)
PROCEDURE nombre (clase parametro : dir tipo; ...) IS {declaraciones} BEGIN {instrucciones secuenciales} END PROCEDURE nombre;
Y la direccin:
IN, INOUT, OUT
Los procedimientos se pueden declarar en la arquitectura o en un proceso, y se llaman desde un proceso o concurrentemente. Existe otro tipo de subrutina que devuelve un valor, la funcin:
FUNCTION nombre (parametros...) RETURN tipo IS
108
Ejemplo de cdigo
ARCHITECTURE tb_arch OF dff_tb IS (...) PROCEDURE send_clock_edge(SIGNAL c : out std_logic) IS BEGIN c <= '0'; WAIT FOR 10 ns; c <= '1'; WAIT FOR 10 ns; END PROCEDURE send_clock_edge; BEGIN UUT : dff PORT MAP (d => d, c => c, q => q ); PROCESS BEGIN c <= '0'; d <= '0'; send_clock_edge(c); ASSERT q=d REPORT "falla" SEVERITY FAILURE; END PROCESS; END tb_arch;
Escuela Politcnica Superior
109
Acceso a archivos
La simulaciones pueden leer archivos, por ejemplo con vectores de entrada. Ejemplos:
Simulacin de un multiplicador que escribe los resultados en un archivo de texto Testbench para un microprocesador que lee un programa en ensamblador de un archivo, lo ensambla y lo ejecuta
110
Escribir
write(linea, resultado); writeline(archivo_resultados, linea);
111
Configuracin
Una configuracin es una unidad de diseo:
Que se usa para realizar asociaciones dentro de los modelos
Asociar entidad con arquitectura. En la instanciacin de un componente asociarlo a una entidad y su arquitectura.
112
Configuracin: Ejemplo
CONFIGURATION a_config OF Full_adder IS FOR structural FOR all: Half_adder USE ENTITY work.Half_adder(algorithmic); END FOR; FOR U2: or_gate USE ENTITY work.or_gate(behavioral); END FOR; END FOR; END a_config;Ejemplo del Suma
Ejemplo: Sumador
A B Carry_in
U0:
Half_adder
Temp_sum
U1: Half_adder Temp_carry_1 AB A B Carry_in AB Carry_out
Full_adder
U2
Carry_out
Univ. Autnoma de Madrid
113
2. Simulacin post-sntesis
114
Bitstream
Escuela Politcnica Superior
115
FUNCIONAL
POST-LAYOUT
116
Modelo post-layout
Una vez implementado el diseo, se crea un modelo post-layout del diseo en la FPGA mediante el comando netgen (integrado en los procesos ejecutados con el interfaz grfico de ISE)
xxx_timesim.vhd
El modelo usa la librera SIMPRIM Los tiempos se anotan en un archivo SDF separado
xxx_timesim.sdf
Toda la FPGA est modelada en estos dos archivos El simulador puede cargar (o no) el fichero SDF
Primera simulacin, rpida, ver si el comportamiento es correcto Segunda simulacin, detallada, ver si los tiempos se respetan
117
VHDL