Está en la página 1de 79

Contenido

I. Objetivo
II. Introduccin
III. Clasificacin de la Lgica Digital
IV. Diseo electrnico con Herramientas
CAD
V. Sintaxis del lenguaje VHDL
VI. Diseo con VHDL

2
Proporcionar una guia en las metodologas
para el diseo de circuitos digitales
utilizando el lenguaje VHDL

3
Introduccin
1. Qu es VHDL
2. VHDL y Diseo Digital
3. Metodologas de diseo
4. Niveles de abstraccin y diseo digital

5
Por qu surge VHDL ?
Necesidad de compartir informacin entre
integrantes y equipos de un proyecto
Necesidad de reutilizar mdulos que ya han
sido desarrollados, depurados y probados
Necesidad de tener un lenguaje portable a
diversos fabricantes
Tener un lenguaje estructurado para modelar,
simular y sintetizar circuitos digitales

6
Qu es VHDL
VHDL es un lenguaje de descripcin de
hardware estandarizado por la IEEE
(1076-93)
VHDL VHSIC Hardware Description
Language
VHSIC Very High Speed Integrated
Circuit

7
Otros lenguajes de descripcin Hardware

ABEL
CUPL
PALASM
Verilog (Cadence)
AHDL (Altera Hardware Description Language)
Handel-C (Celoxica)
System-C (Synopsys)

8
Ventajas de VHDL para el diseo digital

Estandar reconocido por fabricantes de


dispositivos digitales y herramientas
CAD
Ciclo de diseo, realizacin y
depuracin integrado
La mayor parte de los errores de diseo
se localizan durante la compilacin y
simulacin, evitando ciclos de
fabricacin-depuracin prolongados

9
Ventajas de VHDL para el diseo digital

VHDL es un lenguaje moderno, poderoso y


general
Permite la concepcin modular y jerrquica
de sistemas electrnicos
VHDL permite la descripcin y simulacin
de eventos concurrentes (paralelos)
Permite mezclar diferentes niveles de
abstraccin al describir un sistema digital

10
Metodologas de realizacin de un proyecto

Ascendente (Bottom-up)
Se comienza con componentes simples que se
van ensamblando y encapsulando en
componentes cada vez mas complejos hasta
llegar al sistema

Descendente (Top-down)
Se especifica y prueba el sistema con
herramientas de alto nivel de abstraccin y
posteriormente se van definiendo e
implementando los niveles de inferiores hasta
llegar a nivel componente

11
Espacio de diseo
Tiempo

Superficie Costo

Se busca un balance entre tiempo de diseo,


superficie de silicio ocupada, y costo total
12
Pirmide de abstraccin
Aplicacin
Compilador/
Interprete
software Sist. Operativo
hardware Microprocesador
ALU, Memoria
Registros, sumadores
Compuertas digitales
Transistores MOS
Fsica de Semiconductores
13
< 10 pg.
> 100 pg. Especs
+ docs aplicables Requisitos y
Especificaciones
1.000-2.000 lneas
de cdigo HDL
(modelo +Banco Funciones E/S
Pruebas) y Restricciones

> 10.000 lneas de


Arquitectura Nivel
cdigo HDL (Modelo
Transf. Registros
+ BancoPruebas)
> 100.000 comp.
> 100-200.000 vect. Diseo lgico
de verific. y prueba compuertas

Niveles
> 1.000.000 Trts Elctrico
> 500.000 bits Bits (disp. prog. FPGA)
10.000.000 rect. Geomtrico (Cls)

Pirmide de complejidad y niveles de abstraccin


de las distintas fases del diseo hardware
14
Clasificacin de la lgica digital
1. Evolucin de la tecnologa digital
2. SPLD
3. CPLD
4. FPGA
5. ASIC
6. VLSI y circuitos programables

16
Clasificacin de la lgica digital

Logic

Standard
Logic ASIC

Programmable
Logic Devices
Gate Cell-Based Full Custom
(PLDs) Arrays ICs ICs

SPLDs
(PALs) CPLDs FPGAs

17
SPLD Simple Programmable Logic Device

PAL Programmable Array of Logic


PLA Programmable Logic Array
PLD - Programmable Logic Device

Arreglos AND-OR programables con


salidas directas o a registros (flip-flops)
Pueden contener el equivalente de 10 a
100 circuitos TTL en un solo chip

18
PLD Arreglo AND-OR
Global 3 Global 2 or 4
Clocks Tri-State
Macrocell 1 I/O

AND Product-
Array Term
Allocator
36

From
FastCONNECT

Macrocell 18 I/O
To
FastCONNECT

19
CPLD -Complex Programmable Logic Device

Contiene varios elementos reconfigurables


tipo PLA interconectados por una matriz de
switcheo
Equivale de 4 a 64 PLAs
Circuitos de 1000 a 10000 compuertas en
un solo chip
Tiempos de retardo de pin a pin fijos del
orden de ns.

20
CPLD - Complex Programmable Logic Device
3
In-System
JTAG Programming Controller
JTAG Port Controller

I/O Function
Block 1

I/O
Function
I/O Block 2
I/O
Blocks FastCONNECT
I/O Switch Matrix

Global Function
Block 3
Clocks 3
Global
Set/Reset 1
Function
Global Block 4
Tri-States
2 or 4

21
FPGA-Field Programmable Gate Array

Arreglo bidimensional de mdulos digitales


reprogramables con interconexiones
programables
Capacidad de 5000 a 10 millones de
compuertas en un solo chip
Tiempos de retardo dependientes de la
arquitectura
Sustituyen a ASIC de mediano tamao
Buena relacin costo/rendimiento para
producciones relativamente pequeas
22
FPGA - Field Programmable Gate Array
Alta densidad -> 1M Compuertas eq.
Configurable
LUT basadas en SRAM para lgica
Logic Blocks (CLBs) digital o memoria RAM doble puerto
C1 C2 C3 C4

H1 DIN S/R EC
Estructura similar a un ASIC

S/R

G4
Control
Buses de interconexin 3-estados
DIN
G
G3

SD

G2 Func.
F'
G' D Q
Reconfigurable mltiples veces
Gen. H'

G1
EC
RD
1

H G'
Y
Func. H'
S/R

F4 Gen. Control Slew


Rate
Control
Passive
Pull-Up,
Pull-Down
Vcc

F3 F DIN
Func. SD
F2 Gen.
F'
G' D Q
D Q
Output
Buffer
Pad

F1 H'

Input
EC Buffer
Q D
RD Delay
1
H'
F'
X
K
I/O Blocks
(IOBs)
Programmable
Interconnect

23
23
CLB de un FPGA (Xilinx)
C1 C2 C3 C4

H1 DIN S/R EC
S/R
Control

G4 DIN
SD
G3 G F'
G' D Q YQ
G2 Func. H'
Gen.
G1 EC
RD
1

H G'
H'
Y
Func S/R

.Gen.
Control

F4
F3 F DIN
SD
Func. F'
D Q XQ
F2 Gen. G'
H'
F1
EC
RD
1
H'
F'
X
K

24
IOB de un FPGA (Xilinx)

25
Unidad de interconexiones (Xilinx)

CLB CLB

Switch Switch
Matrix Matrix

CLB CLB

26
Interior del FPGA
Programmable Interconnect Points, PIPs (White)
Switch Routed Wires (Blue)
Matrix

Direct
Interconnect
(Green)

CLB
(Red)

Long Lines
(Purple)
27
Porgramacin de FPGAs 27
ASIC - Application Specific Integrated Circuit

ASIC Circuitos integrados para propsito


especfico
Requiere fabricacin
Costeable para grandes volmenes
Ciclo de diseo largo
Posibilidad de integrar partes analgicas y
digitales
Mayor frecuencia de operacin que los FPGAs
28
VLSI y Lgica Programable
El uso de FPGA permite el diseo de sistemas tan
complejos como microprocesadores o sistemas en un solo
chip
El costo de desarrollo es relativamente bajo
No se depende de una fbrica de CI
Ciclo de diseo con FPGA corto, el diseo se puede portar
a un ASIC si la demanda lo requiere
Los FPGAs estn sustituyendo a los arreglos de
compuertas y a algunos ASIC debido a sus ventajas
Potencial grande de desarrollo tecnolgico en Mxico con
los FPGAs

29
Plataforma de desarrollo con FPGA
Computadora PC

Herramienta CAD
(Active, Foundation)

Tarjetas de desarrollo
(xess.com)

Tarjetas PCI
(alphadata.co.uk)

Sistemas Multimdulos
y sistemas dedicados

30
Flujo de diseo
Especificacin del diseo esquemtico,
VHDL, y/o Verilog. Hay varios fabricantes
1 de herramientas como Synopsys, Aldec
(Xilinx Foundation), Mentor, Cadence,
Viewlogic, y otros

Implementacin Despus de la sntesis


digital se realiza el posicionamiento y
2 ruteado en el dispositivo FPGA. Se pueden
hacer simulaciones post-sntesis para
asegurar el funcionamiento del diseo
M1 Technology

Programacin se programa el
dispositivo FPGA y se valida el diseo 3
Se puede reprogramar tantas veces
como sea necesario para depurar
XC4000 XC4000 XC4000

31
Principales fabricantes de FPGAs

Xilinx (FPGA de 10K hasta 10 M compuertas)


www.xilinx.com

Altera (FPGA y CPLD)


www.altera.com

Actel (FPGA de microfusibles)


www.actel.com

Triscend (SoC = Microprocesador + FPGA)


www. Triscend.com

32
IV. Diseo Electrnico con
Herramientas CAD
1. Evolucin de herramientas
2. Flujo de diseo y compilacin con VHDL

3. Flujo de diseo de Xilinx para simulacin VHDL y


sntesis FPGA

34
1. Evolucin de herramientas

Diseo tradicional ascendente (bottom-up) basado en


esquemticos
Diseo con herramientas EDA (Electronic Design
Assistent) similar a otras herramientas de alto nivel
usadas en software
Manejo de proyectos, archivos VHDL, bibliotecas,
esquemticos, etc.
Simulacin funcional VHDL, sntesis digital, simulacin
post-sntesis, ruteado en FPGA, simulacin con retardos
asociados al dispositivo.

35
Sntesis digital
A partir de una descripcin VHDL, el
compilador obtiene una descripcin de
compuertas del circuito
La herramienta de ruteo adapta la
descripcin de compuertas a los recursos
particulares del FPGA
Se pueden realizar simulaciones antes de
la programacin fsica para comprobar que
el circuito conserva la funcionalidad
original

36
2. Flujo de diseo y compilacin VHDL
VHDL
Description

Synopsys VHDL
compiler
VHDL
Driver Synopsys Design
compiler

VHDL Gate-
Level Description

VHDL Simulator VHDL


Simulator

Simulation Compare Simulation


Output Output Output
37
3. Flujo de diseo de Xilinx para
simulacin VHDL y sntesis FPGA
DSP COREGen
VHDL
& LogiBLOX
Verilog
Module Generator Behavioral Simulation Models
H
XNF D
.VEI
.NGO L
.VHI
VHDL Timing S
VHDL Verilog Requirements
HDL Editor I
Verilog M
State Diagram .V U
Editor .VHD Express L
A
Schematic EDIF T
Capture XNF I
O
Gate Level EDIF/XNF .UCF .XNF Reports
N
Simulator

Foundation Design Entry Tools

Xilinx Implementation Tools


Reports

BIT VHDL
EDIF SDF
JDEC Verilog

38
Flujo de diseo de Xilinx

Translate Map Place & Route Configure

39
V. Sintaxis de VHDL
1. Componentes bsicos de VHDL
2. Elementos primitivos
3. Declaraciones secuenciales
4. Seales y asignacin de seales
5. Declaraciones concurrentes

41
1. Componentes bsicos de VHDL

Biblioteca (Library)
Paquete (Package)
Entidad (Entity)
Arquitectura (Architecture)
Configuracin

42
1. Componentes bsicos de VHDL

Unidades de diseo Biblioteca

Entity Entity
Architecture Architecture
Configuration Configuration
Package Compilador VHDL Package

43
Modelo VHDL
Todo modelo se
Modelo VHDL
especifica por una
Entidad ENTIDAD o interfaz
del componente
Arquitectura modelado
ARQUITECTURA o
descripcin del
comportamiento de
un componente

Entorno

44
Entidad (Entity)
Define un nuevo componente, sus interconexiones de E/S
y las declaraciones relacionadas.
La definicin de una entidad no incluye la arquitectura del
componente, y se puede utilizar sin conocerla.
Sintaxis:

entity name is Requerido


[generics][ports] Opcional
[declarations {constants, types, signals}] Opcional
[begin statements] No usado
generalmente
end [name]; Requerido (nombre
opcional)

45
Entidad (Entity)
Una entidad especifca las conexiones externas de un
componente
entity COMPARA is Nombre del puerto, direccin
port (A, B: in bit; y tipo de datos
C: out bit);
end COMPARA;

bit
A bit
COMPARA C
B bit

46
Declaracin de Puertos
Define la interface del objeto con el
mundo exterior
La declaracin incluye
Nombre-Algn identificador que no sea una
palabra reservada
Modo-In, Out, Inout, Buffer
Tipo de dato-Algn tipo de los predefinidos
Ejemplo:
entity test is
port (name: mode data_type);
end test;
47
a3
b3
a2
b2 F
a1
b1
a0
b0

entity circuito is
port (a3, b3, a2, b2, a1, b1, a0, b0: in bit;
F: out bit);
end circuito;

48
a3
b3
a2
b2 F
a1
b1
a0
b0

entity circuito is
port (a, b: in bit_vector (3 downto 0);
F: out bit);
end circuito;

49
Arquitectura (Architecture)
Especifica el comportamiento del componente, sus
interconexiones y componentes internos. Tiene que
compilarse para hacerlo funcional. La arquitectura puede
ser modelada con diferentes niveles de abstraccin.
Las arquitecturas en VHDL se categorizan dependiendo
del estilo en:
Funcional (Behavioral). Define un proceso descrito
secuencialmente
Flujo de datos (Dataflow). Incluye estructura y
comportamiento
Estructural (Structural). Define interconexiones y
componentes

50
Una entidad puede tener varias arquitecturas, solo una esta
activa.
Entity
xyz

Architecture Architecture Architecture


a of xyz b of xyz c of xyz
La sintxis es:
architecture name of entity_name is
[declarations]
begin
concurrent_statements
end [name];

Por convencin, una arquitectura puede llamarse behavioral, dataflow,


o structural
51
Arquitectura funcional (Behavioral)

Ejemplo:

architecture ARQ1 of COMPARA is


begin
process (A,B)
begin
if (A=B) then
C <= '1' after 1 ns;
else
C <= '0' after 2 ns;
end if;
end process;
end ARQ1;

52
Arquitectura Flujo de Datos (Dataflow)

Ejemplo:
architecture ARQ2 of COMPARA is
begin
C <= not (A xor B) after 1 ns;
end ARQ2;

Otro ejemplo:
entity XR2 is
generic (m: time := 1.0 ns); -- Tiempo de retardo
port (X,Y: in bit; Z: out bit);
end XR2;

architecture DATAFLOW of XR2 is


begin
Z <= X xor Y after m; -- Retardo genrico
end DATAFLOW;

53
Arquitectura Estructural (Structural)
Ejemplo:
entity COMPARA is -- Entidad
port (A,B: in bit; C: out bit);
end COMPARA
architecture STRUCT of COMPARA is
signal I: bit; -- Declaracin de componentes
component XR2 port (x,y: in bit; z: out bit); end component;
component INV port (x: in bit; z: out bit); end component;
begin
U0: XR2 port map (A,B,I); -- Componentes
U1: INV port map (I,C); -- utilizados
end STRUCT;

U0 U1
A x I x INV z C
XR2 z
B y
54
Jerarqua de diseo
entity ALU is
port ( opcode:
CPU end ALU;

architecture first of ALU is


ALU component COMPARA
port (a,b:in bit; c:out bit);
COMPARA end component;
XR2 INV
begin
U0: COMPARA
port map (s,d,q);

end first;

55
2. Elementos primitivos
VHDL es un lenguaje fuertemente
declarativo

Los primitivos estndares a partir de los


cuales se construyen los diseos en VHDL
son:

Escalares, cadenas de caracteres


Nombres (identificadores)
Objetos - declaraciones
Expresiones

56
Escalares y cadenas de caracteres

Tipos escalares Cadenas


character string
bit bit_vector
std_logic std_logic_vector
boolean
real
integer
time

57
Character String
'A' "error en sincronia -- Cadena de dimensin 18
'b'
"z" -- Cadena de dimensin 1
x'
'' string'("10")
'''
Bit Bit_vector
'0 "0101_1001"
'1 x"00AF"
bit'('1') bit_vector'("101")

58
Lgica estndar IEEE
Std_Logic
U no inicializado
X forzando valor desconocido
0 forzando 0
1 forzando 1
Z alta impedancia - tres estados
W valor debil desconocido
L 0 dbil
H 1 dbil
- sin importancia (dont care)

Std_Logic_Vector
101Z"
"UUUUU"
signed'("1011") -- Menos 5
59
Boolean Real
-2.0
true
+3.76
false
45.0
TRUE -1.0E + 38
FALSE VHDL define por lo menos seis digitos
decimales de precisin.
El rango de los nmeros reales es de
-1.0E-38 a 1.0E+38

Tiempo (valor fsico) Integer


10 ns +1
120 us 682
3.4 ns -139
+239_485
Unidades: 16#00AE
El rango de los nmeros enteros es
fs,ps,ns,us,ms,sec,min,hr
de -2,147,483,647 a +2,147,483,647
60
Restriccin de rangos
La sintxis es:
range index_constraint

index_constraint
{low_val to high_val | high_val downto low_val}

Ejemplo:
entity COMPARA_DIGITO is
port (B,A: in integer range 0 to 9 := 0; Restriccin del rango
C: out boolean);
end COMPARA_DIGITO;

Algunas declaraciones como las variables y las seales permiten un rango


de restriccin como parte de la declaracin (i.e., [constraint]).
Algunas declaraciones de vectores permiten una restriccin del ndice.
61
Declaracin de constantes
Sintxis:

Escalar: constant name: type := expression;


Vectorial: constant name: array_type[(index_constraint)] := expression;

Ejemplos:

constant Vdd: REAL := -3.3;


constant CICLO: TIME := 200 ns;
constant PI: REAL := 3.14;
constant OCHO: INTEGER := 3 + 5;
constant OCHO: BIT_VECTOR := "1000"; -- Longitud 4
constant OCHO: std_logic_vector (8 to 11) := "1000";

62
Declaracin de seales
Sintxis:
Escalar: signal name(s):=type [range_contraint][:=expression];
Vectorial: signal name(s):
array_type[index_constraint][:=expression];
Entidad: port (name(s): direction type
[range_constraint][:=expression]);

Las seales pueden declararse en una entidad, en una arquitectura o en un


paquete. Si se quiere inicialiar una seal hay que indicar un valor en
[:=expression]. Por ejemplo: signal S: BIT:='1';
De otra manera, el valor es inicializado al valor ms bajo del tipo de variable
definido.
Ejemplos:
signal count: integer range 1 to 50; -- Valor inicial sera 1
signal GROUND: BIT:='0';
signal YS_BUS std_logic_vector (7 downto 0);
port (B,A: in integer range 0 to 9);
signal bogus: bit_vector; -- Errnea, no hay dimensin
63
Declaracin de variables
Sintxis:
Escalar: variable name(s):=type
[range_contraint][:=expression];
Vectorial: variable name(s):
array_type[index_constraint][:=expression];
Una variable puede tener un rango. Tambin se le puede dar un valor inicial
incluyendo un valor o una expresin en [:=expression].
Por ejemplo: variable COUNT: INTEGER range 0 to 99 := 0;
El valor inicial de COUNT es 0 y solo puede asignarsele valores de 0 a 99.
El valor inicial, es el mas bajo valor del rango del tipo definido.

Ejemplos:
variable INDEX:INTEGER range 1 to 50;
variable CYCLE_TIME:TIME range 10 ns to 50 ns := 10ns;
variable MEMORY:BIT_VECTOR (0 to 7); -- Restriccin del rango
variable x,y: INTEGER; -- valor inicial -2,147,483,647

64
Conversin de tipos
Ejemplos:
integer (4.0) tipo entero
real (5) tipo real
integer * time tipo tiempo
nanos + picos tipo tiempo
nanos/picos tipo entero

Expresiones
Operadores por orden de precedencia (del ms bajo al ms alto)
Operadores lgicos and, or, nand
Operadores relacionales nor, xor, =, /=, <, <=, >, >=
Operador de concatenacin &
Operadores aritmticos +, -, *, /, mod, rem, **, abs
Operador lgico not

65
Mayor
Precedencia de operadores
** ABS NOT
* / MOD REM
+ (signo) - (signo)

+ - &
= /= < <= > <=

AND OR NAND NOR XOR XNOR

Menor

La precedencia de operadores se encuentran ordenados de mayor (arriba) a


menor (abajo), los operadores que se encuentran en la misma fila tienen la
misma precedencia y sern evaluados siguiendo el orden de izquierda a derecha.

66
3.. Declaraciones secuenciales
Declaracin de procesos
Asignacin de variables
Asignacin secuencial de seales

IF
CASE
LOOP
NEXT
EXIT
WAIT
ASSERT
Subprogramas (funciones y procedimientos)
Functions
Procedures

67
Declaracin de procesos

MUX & 2 REGISTER


Selector (Low)

bus a 7
bus b 2
bus c 5

MUX & 7 REGISTER


Selector (High)

68
Entity low_high is
port (a, b, c: in integer);
end low_high;
architecture behavior of low_high is
begin
L: process
variable low: integer := 0;
begin
wait on a, b, c;
if a < b then low := a; else low := b; end if;
if c < low then low := c; end if;
end process;
H: process
variable high: integer := 0;
begin
wait on a, b, c;
if a > b then high := a; else high := b; end if;
if c > high then high := c; end if;
end process;
end behavior;
69
Declaracin de procesos
Sintxis:

[label:]
process [(sensitivity_list)]
[subprogram]
[type]
[constant]
[variable]
[other declarations]
begin
sequential_statements
end process [label];

70
Asignacin de variables
Sintxis:

target := expression;

Ejemplos:
ix := 'a'; Caracter
a := 2.7; Asignacin de un valor real

Asignacin secuencial de seales


Sintxis:
target <= [expression][after delay];

71
IF
Sintxis:
if condition then sequential_statements
{elsif condition then sequential_statements}
[else sequential_statements]
end if;
Ejemplos:

if ... then if ... then


if ... then s1; s2; sn; s1; s2; s3;
s1; s2; sn; else elsif ...
end if; s1; s2; sn; then
end if; s1; s2; ...
sn;
elsif ...
then
s1; s2; sn;
else
s1; s2; sn;
end if; 72
CASE
Sintxis:
case expresion is
when choices-1 => sequence_of_statements
.
.
when choices-n => sequence_of_statements
end case;
Opciones para utilizar el comando Case:
case expression is
when value => s1; s2; ... sn; => significa "then"
when val1 | val2 | valn => s1; s2; ... sn; | significa "or"
when val1 to val2 => s1; s2; ... sn; rango
...
when others => s1; s2; ... sn; "others" valor default
end case;
Ejemplo:
La variable bitindex (de tipo bit), es convertida a una variable ix entera.
case bitindex is
when '0' => ix := 0;
when '1' => ix := 1;
end case;

73
LOOP
Sintxis:
[label:][while condition | for loop_specification] loop
sequential_statements
end loop [label];
El comando Loop es un declaracin secuencial en un proceso.
Puede tener una etiqueta que es util en ciclos interlazados. Hay
dos tipos de ciclos LOOP: el ciclo FOR-LOOP y el ciclo WHILE-
LOOP.

Ejemplos:
L: for i in 1 to 10 loop
s1; s2; ... sn;
end loop;
i:=1;
M: while (i<11) loop
s1; s2; ... sn;
i := i+1;
end loop;

74
NEXT
Sintxis:

next [label][when condition];

El comando Next detiene la ejecucin de un ciclo y


brinca a la siguiente iteracin.
Ejemplo:

For i := 0 to max_limit Loop


if (a(i) = 0) then Next;
end if;
q(i) := a(i);
end loop;

75
NEXT y WHILE
Cuando hay varios ciclos interlazados se puede dar
una etiqueta a cada uno de ellos. El comando Next
puede hacer referencia a un ciclo en particular.

Por ejemplo:

L1: While i<10 Loop


L2: While j<20 Loop
.
.
Next L2 when i=j;
.
.
End Loop L2;
End Loop L1;

76
EXIT
El comando Exit completa la ejecucin de un ciclo Loop. La
terminacin del ciclo puede ser condicional si se incluye una
condicin.

Sintxis:
exit [label][when condition]

Exit termina la ejecucin de una iteracin Loop.

Por ejemplo:

For i in 0 to max Loop


If (a(i) = 0)) then exit; end if;
q(i) := a(i);
end Loop;

77
WAIT
Sintxis:

wait [on signal_names]


[until conditional_expression]
[for time_expression]

Ejemplos:

Wait on a,b;

78
ASSERT
Sintxis:
assert condition [report string_expression][severity
expression];

Assert escribe mensajes de texto durante una simulacin. Hay


cuatro niveles de severidad: FAILURE, ERROR, WARNING,
NOTE. El comando Assert es til para checar la
temporizacin, condiciones fuera de rango, etc.

Ejemplo:

Assert (x>3) -- Imprime si la condicin es falsa


Report "violacin de condicin"
severity warning;

79

También podría gustarte