Sunteți pe pagina 1din 13

Circuitos Integrados y Microelectrónica

Simulación de circuitos
descritos en VHDL

Autores:
Celia López
Luis Entrena
Mario García
Enrique San Millán
Marta Portela
Almudena Lindoso

Circuitos Integrados y Microelectrónica

Indice

1 Validación funcional de circuitos digitales

2 Simulación de circuitos digitales

3 Generación de bancos de prueba

4 Herramientas comerciales

5 Bibliografía

1
Circuitos Integrados y Microelectrónica

Validación funcional

Comprobación de la funcionalidad del diseño


de acuerdo a las especificaciones

Una vez descrito el diseño ¿cómo podemos estar


seguros de que funciona de acuerdo a las
especificaciones?

Circuitos Integrados y Microelectrónica

Validación funcional: Elementos necesarios

estímulos
A
B
-------…--..- 
C
.-..-……--- 
D
E
0100 1101 1000
..----.-.--… 
---..-.-.--.- 
diseño
Nivel de A E comprobación
B S
abstracción
C F
Automática
D

2
Circuitos Integrados y Microelectrónica

Validación funcional: Elementos necesarios

diseño estímulos
entity TB is
entity RS232 is end RS232;
port( architecture BEH of TB is
A: in std_logic; …
…. begin

end RS232; end BEH;

Para síntesis VHDL Para simulación


Subconjunto Todo

Circuitos Integrados y Microelectrónica

Niveles de validación funcional

Visual/manual

-------…--..- 
A
.-..-……--- 

B
C
estímulos ..----.-.--…

D 0100 1101 1000
E

---..-.-.--.-

diseño
comprobación

3
Circuitos Integrados y Microelectrónica

Niveles de validación funcional

Automática unidireccional

comprobación

estímulos 
-------…--..-
.-..-……---


..----.-.--…
---..-.-.--.-
diseño

emulación

Automática bidireccional

Circuitos Integrados y Microelectrónica

Validación funcional con VHDL

Lenguaje concebido para simulación y especificación

Posibilidad de comprobación automática e interactiva

Modelado de alto nivel de interfaces externas

Mecanismos de escritura/lectura de ficheros

Especificaciones de tiempos y retardos

4
Circuitos Integrados y Microelectrónica

Simulación de circuitos digitales

Ejecución de un modelo hardware Diseño


Computadora

Procesamiento
Funcionamiento
secuencial de
concurrente
tareas

A E
Paralelismo de S Dependencias
B
procesos entre bloques
C F
D

Circuitos Integrados y Microelectrónica

Simulación de circuitos digitales

Procesos VHDL Ejecución concurrente

Valor de Señales

Ejecución secuencial P1 P2 P3

Valor de Señales

Kernel

10

5
Circuitos Integrados y Microelectrónica

Simulación de circuitos digitales

Procesos VHDL Ejecución concurrente

PROCESS(a,b) PROCESS
BEGIN BEGIN
IF a= ‘0’ THEN r <= s AND t;
s <= b; WAIT FOR 10 ns;
ELSE r <= s AND u;
Ejecución secuencial s<= NOT(b); WAIT ON s;
END IF; END PROCESS;
END PROCESS;

Tiempo: 10ns
Evento en ‘a’ Evento en ‘b’ Evento en ‘s’

Kernel
11

Circuitos Integrados y Microelectrónica

Simulación de circuitos digitales


after A <= B after 20 ns;
Procesos VHDL

wait
Sentencias secuenciales wait on A; señales

wait for 10 ns; tiempo


TYPE time IS RANGE implementation_defined
UNITS
fs wait until C1; condiciones
ps = 1000fs;
ns = 1000ps;
us = 1000ns; wait ;
ms = 1000us;
sec = 1000ms;
min = 60sec;
hor = 60min;
END UNITS;
Paquete STANDARD

12

6
Circuitos Integrados y Microelectrónica

Banco de pruebas

estímulos
¿Todas las
Lo más completo posible combinaciones?

Traducción
Mayor nivel de abstracción posible automática

Evitar
Comprobación lo más exhaustiva posible factores
externos

13

Circuitos Integrados y Microelectrónica

Reglas básicas del Banco de pruebas

Inicialización asíncrona de todo el sistema

Todos los modos de operación / Estados de las FSMs

Lectura y Escritura de todos los registros Reflejo en


las salidas

Todos los modos de operación de los buses

Cobertura de código

14

7
Circuitos Integrados y Microelectrónica

Partes básicas del Banco de pruebas


ENTITY tb is
entidad vacía
END tb;
ARCHITECTURE mixed OF tb is
COMPONENT design IS
PORT( componente
exterior …);
END COMPONENT;
especificación

Comprobación
FOR D: design
Estímulos

USE entity WORK.design(beh)


SIGNAL s1 : std_logic;
Diseño … E/S y más
BEGIN
D: design mapeo
PORT MAP(
ENTITY design is
PORT(
…);
…); …
END design; estímulos
-- ESTIMULOS !!!
ARCHITECTURE beh OF design is -- COMPROBACIONES !!!
SIGNAL S1a : std_logic;
… END mixed; comprobaciones
BEGIN

END beh;

15

Circuitos Integrados y Microelectrónica

Generación de estímulos: Relojes


ENTITY tb is
END tb; estímulos
Simples
ARCHITECTURE mixed OF tb is
SIGNAL reloj: std_logic := ‘0’; Periódicos
CONSTANT semi_periodo : natural := 20;
BEGIN
… reloj
-- ESTIMULOS !!!
reloj <= NOT(reloj) after semi_periodo ns;
END mixed;
PROCESS
BEGIN reloj
reloj <= ‘0’;
WAIT FOR semi_periodo
semi_periodo_L
ns;
ns;
reloj <= ‘1’;
WAIT FOR semi_periodo
semi_periodo_H
ns;
ns;
END PROCESS;

16

8
Circuitos Integrados y Microelectrónica

Generación de estímulos: Reset


ENTITY tb is
END tb; estímulos
Simples
ARCHITECTURE mixed OF tb is
SIGNAL reset: std_logic; No periódicos
CONSTANT reset_on : natural := 1000;
BEGIN
… reset
-- ESTIMULOS !!!
PROCESS
BEGIN
reset <= ‘0’;
WAIT FOR 150 ns;
reset <= ‘1’;
WAIT FOR reset_on ns;
reset <= ‘0’;
WAIT;
END PROCESS;
END mixed;

17

Circuitos Integrados y Microelectrónica

Generación de estímulos: Enable


ENTITY tb is
END tb; estímulos
Simples
ARCHITECTURE mixed OF tb is
SIGNAL enable: std_logic; repetitivas
BEGIN

-- ESTIMULOS !!! enable
PROCESS
BEGIN
enable <= ‘0’;
WAIT FOR 150 ns;
enable <= ‘1’;
WAIT FOR 100 ns;
enable <= ‘0’;
END PROCESS;
END mixed;

18

9
Circuitos Integrados y Microelectrónica

Generación de estímulos: Datos entrada


ENTITY tb is
END tb; estímulos
Complejas
ARCHITECTURE mixed OF tb is
SIGNAL count: integer range 0 to 3 := 0; contadores
BEGIN

-- ESTIMULOS !!!
PROCESS
BEGIN count
IF count = 3 THEN 0 1 2 3
count = 0;
ELSE
count <= count + 1;
END IF;
WAIT FOR 150 ns;
END PROCESS;
END mixed;

19

Circuitos Integrados y Microelectrónica

Generación de estímulos: Memorias



ARCHITECTURE mixed OF tb is estímulos
TYPE TableType is array (natural range <>) of
std_logic_vector(3 downto 0); Complejas
SIGNAL ValueTable: TableType (0 to 20)
:= (“0011”, “0110”, “0111”, tablas
“1011”, “1110”, “1111”,
“1001”, “0111”, “0101”,
“1010”, “0111”, “0011”,
“0000”, “1110”, “0110”,
“0100”, “0001”, “0101”,
“0010”, “0100”);
BEGIN
PROCESS(Index)
BEGIN
Value <= ValueTable(Index);
END PROCESS;
END mixed;

20

10
Circuitos Integrados y Microelectrónica

Comprobación en el banco de pruebas


ENTITY tb is
comprobación
END tb;
assert
ARCHITECTURE mixed OF tb is
-- Cuenta de 0 a 10
SIGNAL s1 : std_logic_vector(3 downto 0); condición

false
BEGIN
-- COMPROBACIONES !!! report
-- Comprueba que s1 no ha superado su valor sup.
texto
ASSERT CONV_INTEGER(s1) < 11
REPORT “Overflow in Count” severity
SEVERITY warning;
-- Comprueba que no violamos el tiempo de Hold NOTE
ASSERT (Now – LastEvent) >= HoldTime
REPORT “Hold time violation” WARNING
SEVERITY warning; ERROR
END mixed; Detienen la simulación
FAILURE

Paquete STANDARD
21

Circuitos Integrados y Microelectrónica

Interacción con el exterior


Ficheros de entrada y salida

• Un tipo FILE define un tipo de datos contenidos en un fichero


• Una declaración de FILE define un identificador para un fichero y lo
asocia a un fichero físico
• Los objetos de tipo fichero no pueden recibir asignaciones, pero
pueden ser leidos y escritos a través de subprogramas especiales:
– Procedimiento READ (tipo_fichero, dato)
– Procedimiento WRITE (tipo_fichero, dato)
– Función ENDFILE (tipo_fichero)
• El paquete TEXTIO, disponible en todos los entornos VHDL, define
tipos, procedimientos y funciones para lectura y escritura de ficheros
ASCII

22

11
Circuitos Integrados y Microelectrónica

Ficheros E/S. Lectura de estímulos


ARCHITECTURE mixed OF tb is
-- Declaración de fichero. Tipo TEXT estímulos
FILE input_file: TEXT IS IN “input.dat”;
BEGIN comprobación
-- ESTIMULOS !!! E/S
PROCESS
VARIABLE val1 : char;
VARIABLE val2 : integer;
VARIABLE linea: LINE;
BEGIN
IF not(ENDFILE(input_file)) THEN
-- Para leer una línea de texto
READLINE (input_file, linea);
-- El dato leído se interpreta como un char
READ (linea, val1);
-- El dato leído se interpreta como un integer
READ (linea, val2);
END IF;
Dato_Input <= Val2;
WAIT FOR 100 ns;
END PROCESS;
END mixed;

23

Circuitos Integrados y Microelectrónica

Ficheros E/S. Escritura de resultados


estímulos
ARCHITECTURE mixed OF tb is
-- Declaración de fichero comprobación
FILE output_file: TEXT IS OUT “output.dat”; E/S
BEGIN
-- ESTIMULOS !!!
PROCESS(Dato)
VARIABLE linea: LINE;
BEGIN
-- Para escribir una línea
WRITE (linea, Dato);
WRITELINE (output_file, linea);
WAIT FOR 100 ns;
END PROCESS;
END mixed;

24

12
Circuitos Integrados y Microelectrónica

Herramientas comerciales
ASIC
FPGA
Mentor Graphics
ModelSim Simulación
Síntesis
Synopsys Place&Route
VCS Design
Compiler
Layout
Fabricantes
Cadence FPGA
ALTERA  Quartus II

XILINX  ISE

ACTEL  Libero

25

13

S-ar putea să vă placă și