2. Fundamentos
2.2. Elementos de la verificaci´ on funcional moderna
2.2.4. Aserciones
Desde el punto de vista del software, una aserci´on es una expresi´on l´ogica que, si su evaluaci´on resulta falsa, es una situaci´on de error. En particular, se utilizan para describir situaciones que no deben suceder. Dentro de un HDL, una aserci´on es una
Cap´ıtulo 2. Fundamentos 35
(a) OVM (b) UVM
Cap´ıtulo 2. Fundamentos 36
Figura 2.4: Estructura de un entorno basado en Teal & Truss
sentencia condicional que eval´ua comportamientos espec´ıficos. Dentro de la verifica- ci´on funcional, una aserci´on es una especificaci´on ejecutable de los requerimientos del dise˜no. En particular se pretende que esa especificaci´on siempre se cumpla. La verificaci´on funcional se basa en cuatro pilares fundamentales:
Chequeo autom´atico de aserciones: Un conjunto de reglas predefinidas se em- bebe dentro del c´odigo RTL. As´ı como las herramientas de linting analizan la sint´axis y sem´antica del c´odigo, el chequeo autom´atico de aserciones sintetiza el dise˜no y utiliza m´etodos formales para analizar las estructuras internas del dise˜no. El chequeo autom´atico de aserciones puede reconocer errores de sincro- nizaci´on de clocks, estructuras de buses y m´aquinas de estados finitos. Estas funcionalidades son dif´ıciles de verificar solamente con la simulaci´on. Dado que las reglas de aserciones forman parte de un conjunto predefinido, el proceso puede ser automatizado completamente. El chequeo autom´atico se adecua pa- ra la verificaci´on a nivel de bloque antes que el c´odigo RTL sea evaluado. Su uso tambi´en es adecuado luego de la integraci´on a nivel de chip. Por otro lado, no son adecuadas para chequear estilos de c´odigo o chequeo de sint´axis. Verificaci´on formal est´atica: Los dise˜nadores agregan las aserciones dentro de su c´odigo. Mediante la verificaci´on formal, el dise˜nador puede obtener inme- diatamente realimentaci´on sobre sus suposiciones. El an´alsis es est´atico, por
Cap´ıtulo 2. Fundamentos 37
lo tanto necesita un ´unico estado inicial. Generalmente el estado after reset es suficiente. La verificaci´on formal utiliza t´ecnicas matem´aticas para probar aserciones verdaderas (seg´un un conjunto de suposiciones) o aserciones falsas (descubriendo contra-ejemplos). Una Prueba significa que la verificaci´on formal est´atica ha explorado exhaustivamente todos los comportamientos posibles con respecto a la aserci´on y esta no ha podido ser violada. Las ventajas que posee la verificaci´on formal est´atica son: el an´alisis exhaustivo de ciertas ´areas del dise˜no y la independencia de un entorno de verificaci´on. En general, la verifica- ci´on formal est´atica es aplicable en la depuraci´on de esquemas de arbitraci´on, interconexionados, l´ogicas complejas y dise˜no de memorias.
Simulaci´on con aserciones: Las aserciones especificadas por el usuario son si- muladas junto al DUV y al entorno de verificaci´on. Durante la simulaci´on, las aserciones monitorean pasivamente las se˜nales en las interfaces y dentro del dise˜no. Una caracter´ıstica interesante es que al detectarse una violaci´on, no re- sulta necesario esperar que el error se propague a la salidas para ser detectado. Las aserciones son utilizadas para recolectar informaci´on de cobertura e infor- maci´on estad´ıstica para luego poder evaluar que proporci´on de la funcionalidad ha sido ejercitada como se explicar´a m´as adelante. Entre las ventajas en la uti- lizaci´on de esta metodolog´ıa se puede destacar la adaptaci´on transparente al entrono de simulaci´on y la mejora en la observabilidad del entorno de verifi- caci´on. La aserciones dentro de la simulaci´on son las herramientas adecuadas para probar interfaces est´andar y buses. Adem´as, pueden utilizarse aserciones para asegurar la cobertura de puntos de verificaci´on cr´ıticos o bien para el guiado en la generaci´on de entradas en un test aleatorio, tal como se muestra m´as adelante. Por otro lado, las aserciones no son adecuadas para realizar co- bertura de c´odigo o de m´aquinas de estado. En ese caso, las herramientas de simulaci´on proveen esta informaci´on de manera m´as eficiente.
Verificaci´on formal din´amica: A diferencia de la verificaci´on formal est´atica, ´esta se ejecuta en paralelo con la simulaci´on. La verificaci´on formal hace uso del conocimiento encapsulado en los vectores de simulaci´on para explorar po- sibles violaciones. En el caso de detectarse una violaci´on, el contraejemplo que ha descubierto dicha violaci´on es utilizado como parte del estimulo. Si bien
Cap´ıtulo 2. Fundamentos 38
la verificaci´on formal din´amica no es exhaustiva, puede ser aplicada a gran- des dise˜nos. Esta metodolog´ıa complementa a la verificaci´on realizada en la simulaci´on y resulta ideal para encontrar casos extremos dif´ıciles ocultos. A partir de estos pilares surgen diversas metodolog´ıas y herramientas que resultan indispensables en la verificaci´on funcional moderna. En la secci´on 2.3 se describe brevemente su historia y el papel que juegan las aserciones en la verificaci´on funcional moderna.