El lenguaje de especificación de propiedades ( PSL ) es una lógica temporal que extiende la lógica temporal lineal con una gama de operadores para facilitar la expresión y mejorar su capacidad expresiva. PSL utiliza ampliamente expresiones regulares y simplificaciones sintácticas. Se emplea con frecuencia en la industria del diseño y la verificación de hardware, donde se utilizan herramientas de verificación formal (como la comprobación de modelos ) y/o herramientas de simulación lógica para demostrar o refutar la validez de una fórmula PSL determinada en un diseño específico.
El lenguaje PSL fue desarrollado inicialmente por Accellera para especificar propiedades o afirmaciones sobre diseños de hardware. Desde septiembre de 2004, la estandarización del lenguaje se ha llevado a cabo en el grupo de trabajo IEEE 1850. En septiembre de 2005, se anunció el estándar IEEE 1850 para el lenguaje de especificación de propiedades (PSL).
Sintaxis y semántica
PSL puede expresar que si ocurre un escenario ahora, entonces otro escenario debería ocurrir algún tiempo después. Por ejemplo, la propiedad "una solicitud siempre debería ser concedida eventualmente " se puede expresar mediante la fórmula PSL:
siempre (solicitud -> ¡finalmente! concesión) La propiedad "cada solicitud que es seguida inmediatamente por una señal de acuse de recibo , debe ser seguida por una transferencia de datos completa , donde una transferencia de datos completa es una secuencia que comienza con la señal de inicio y termina con la señal de fin , en la que se mantiene ocupado mientras tanto" puede expresarse mediante la fórmula PSL:
(verdadero[*]; solicitud; confirmación) |=> (inicio; ocupado[*]; fin) En la figura de la derecha se muestra un trazado que satisface esta fórmula.

(verdadero[*]; solicitud; confirmación) |=> (inicio; ocupado[*]; fin) Los operadores temporales de PSL se pueden clasificar a grandes rasgos en operadores de estilo LTL y operadores de estilo de expresiones regulares . Muchos operadores de PSL vienen en dos versiones: una versión fuerte, indicada por un sufijo de signo de exclamación ( ! ), y una versión débil. La versión fuerte establece requisitos de eventualidad (es decir, requiere que algo se cumpla en el futuro), mientras que la versión débil no. Se utiliza un sufijo de guion bajo ( _ ) para diferenciar los requisitos inclusivos de los no inclusivos . Los sufijos _a y _e se utilizan para denotar requisitos universales (todos) frente a requisitos existenciales (existe). Las ventanas de tiempo exactas se denotan por [n] y las flexibles por [m..n] .
Operadores al estilo SERE
El operador PSL más utilizado es el operador de "implicación de sufijo" (también conocido como operador de "activadores"), que se denota por |=> . Su operando izquierdo es una expresión regular PSL y su operando derecho es cualquier fórmula PSL (ya sea en estilo LTL o en estilo de expresión regular). La semántica de r |=> p es que en cada instante i tal que la secuencia de instantes hasta i coincide con la expresión regular r, la ruta desde i+1 debe satisfacer la propiedad p. Esto se ejemplifica en las figuras de la derecha.



Las expresiones regulares de PSL tienen los operadores comunes para concatenación ( ; ), cierre de Kleene ( * ) y unión ( | ), así como el operador para fusión ( : ), intersección ( && ) y una versión más débil ( & ), y muchas variaciones para conteo consecutivo [*n] y conteo no consecutivo, por ejemplo [=n] y [->n] .
El operador de disparo se presenta en varias variantes, que se muestran en la tabla a continuación.
Aquí , s y t son expresiones regulares PSL, y p es una fórmula PSL.
En la tabla siguiente se muestran los operadores de concatenación, fusión, unión, intersección y sus variaciones.
Aquí , s y t son expresiones regulares PSL.
Los operadores para repeticiones consecutivas se muestran en la tabla a continuación.
Aquí s es una expresión regular PSL.
Los operadores para repeticiones no consecutivas se muestran en la tabla a continuación.
Aquí b es cualquier expresión booleana de PSL.
Operadores de tipo LTL
A continuación se muestra una muestra de algunos operadores de PSL de estilo LTL (carga parcial).
Aquí p y q son cualquier fórmula PSL.
Operador de muestreo
A veces es conveniente cambiar la definición del siguiente punto temporal , por ejemplo, en diseños con múltiples relojes o cuando se desea un mayor nivel de abstracción. El operador de muestreo (también conocido como operador de reloj ), denotado @ , se utiliza para este propósito. La fórmula p @ c, donde p es una fórmula PSL y c una expresión booleana PSL, se cumple en una ruta dada si p en esa ruta se proyecta sobre los ciclos en los que se cumple c , como se ejemplifica en las figuras de la derecha.

La primera propiedad establece que "cada solicitud que sea seguida inmediatamente por una señal de acuse de recibo , debe ir seguida de una transferencia de datos completa , donde una transferencia de datos completa es una secuencia que comienza con la señal de inicio y termina con la señal de fin , en la que los datos deben permanecer al menos 8 veces:
(verdadero[*]; solicitud; confirmación) |=> (inicio; datos[=8]; fin) Pero a veces se desea considerar solo los casos en los que las señales anteriores ocurren en un ciclo donde clk está alto. Esto se muestra en la segunda figura en la que, aunque la fórmula
((true[*]; req; ack) |=> (start; data[*3]; end)) @ clk usa data[*3] y [*n] es repetición consecutiva, el rastro coincidente tiene 3 puntos de tiempo no consecutivos donde data se mantiene, pero cuando se consideran solo los puntos de tiempo donde clk se mantiene, los puntos de tiempo donde data se mantiene se vuelven consecutivos.

La semántica de las fórmulas con @ anidado es un tanto sutil. Para más información, consulte [2].
Operadores de aborto
PSL dispone de varios operadores para gestionar rutas truncadas (rutas finitas que pueden corresponder a un prefijo del cálculo). Las rutas truncadas se producen en la verificación de modelos acotados, debido a reinicios y en muchos otros escenarios. Los operadores de aborto especifican cómo deben gestionarse las eventualidades cuando una ruta se ha truncado. Se basan en la semántica de truncamiento propuesta en [1].
Aquí, p es cualquier fórmula PSL y b es cualquier expresión booleana PSL.
Poder expresivo
PSL engloba la lógica temporal LTL y extiende su poder expresivo al de los lenguajes omega-regulares . El aumento en el poder expresivo, en comparación con el de LTL, que posee el poder expresivo de las expresiones ω-regulares sin estrella, puede atribuirse a la implicación de sufijo , también conocida como operador de activación , denotada "|->". La fórmula r |-> f, donde r es una expresión regular y f es una fórmula de lógica temporal, se cumple en un cálculo w si cualquier prefijo de w que coincida con r tiene una continuación que satisface f . Otros operadores no LTL de PSL son el operador @ , para especificar diseños con múltiples relojes, los operadores de aborto , para manejar reinicios de hardware, y las variables locales para mayor concisión.
Capas
PSL se define en 4 capas: la capa booleana , la capa temporal , la capa de modelado y la capa de verificación .
- La capa booleana se utiliza para describir el estado actual del diseño y se formula utilizando uno de los lenguajes de descripción de hardware (HDL) mencionados anteriormente.
- La capa temporal consta de los operadores temporales utilizados para describir escenarios que se extienden a lo largo del tiempo (posiblemente durante un número ilimitado de unidades de tiempo).
- La capa de modelado se puede utilizar para describir máquinas de estados auxiliares de manera procedimental.
- La capa de verificación consta de directivas para una herramienta de verificación (por ejemplo, para afirmar que una propiedad determinada es correcta o para asumir que un conjunto determinado de propiedades es correcto al verificar otro conjunto de propiedades).
Compatibilidad de idiomas
El lenguaje de especificación de propiedades se puede utilizar con varios lenguajes de diseño de sistemas electrónicos (HDL), tales como:
- VHDL (IEEE 1076)
- Verilog (IEEE 1364)
- SystemVerilog (IEEE 1800)
- SystemC (IEEE 1666) por Open SystemC Initiative (OSCI) .
Cuando se utiliza PSL junto con uno de los lenguajes de descripción de hardware (HDL) mencionados anteriormente, su capa booleana utiliza los operadores del HDL correspondiente.
Referencias
- 1850-2005 – Norma IEEE para el lenguaje de especificación de propiedades (PSL) . 2005. doi : 10.1109/IEEESTD.2005.97780 . ISBN 0-7381-4780-X.
- 1850-2010 – Norma IEEE para el lenguaje de especificación de propiedades (PSL) . 2010. doi : 10.1109/IEEESTD.2010.5446004 . ISBN 978-0-7381-6255-3.
- Eisner, Cindy; Fisman, Dana ; Havlicek, John; Lustig, Yoad; McIsaac, Anthony; Van Campenhout, David (2003). "Razonamiento con lógica temporal en rutas truncadas" (PDF) . Verificación asistida por computadora . Notas de clase en ciencias de la computación. Vol. 2725. pág. 27. doi : 10.1007/978-3-540-45069-6_3 . ISBN 978-3-540-40524-5.
- Eisner, Cindy; Fisman, Dana ; Havlicek, John; McIsaac, Anthony; Van Campenhout, David (2003). "La definición de un operador de reloj temporal" (PDF) . Autómatas, lenguajes y programación . Notas de clase en informática. Vol. 2719. pág. 857. doi : 10.1007/3-540-45061-0_67 . ISBN 978-3-540-40493-4.
Enlaces externos
- Grupo de trabajo IEEE 1850
- Anuncio del IEEE, septiembre de 2005
- Accellera
- Guía para diseñadores sobre PSL
Libros sobre PSL
- Uso de PSL/Sugar para la verificación formal y dinámica, 2.ª edición, Ben Cohen, Ajeetha Kumari, Srinivasan Venkataramanan
- Introducción práctica al PSL , Cindy Eisner y Dana Fisman
- Lenguajes de verificación de hardware
- lenguajes de especificación formal
- Estándares IEEE DASC
- Normas IEC