Aller au contenu

Property Specification Language

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 7 mars 2010 à 07:21 et modifiée en dernier par Rvcovarel (discuter | contributions) (Exemple en PSL). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

Le Property Specification Language (PSL) (en français : Langage de spécification par propriétés) est basé sur le langage Sugar d’IBM. Il a été approuvé par l’organisme Accellera en mai 2003, et par l’IEEE en septembre 2004.

C'est un langage formel qui permet de réaliser une spécification matérielle à l'aide de propriétés et d'assertions. Du fait de la haute précision mathématique du langage, l'opération de description retire toute ambiguïté à la spécification résultante. C'est un langage rapide à assimiler, basé sur une syntaxe relativement simple.

Son utilisation

Les assertions peuvent ensuite être interprétées par un moteur de simulation (vérification dynamique) ou un outil de vérification formelle (vérification statique) qui supporte le langage. Le PSL permet également de relever le nombre de mise à l'épreuve d'une propriété lors d'une simulation ou d'une analyse. Cela permet, en fin de phase de vérification, de justifier du taux de couverture réalisé.

Inclus dans le code VHDL

library ieee;
use ieee.std_logic_1164.all;
entity receiver is
 port (clk       : in  std_logic; 
          ()
          B       : in std_logic;
          C       : in std_logic);
end reciver;
architecture archi of reciver is
Begin
-- Commentaires VHDL
-- psl default clock is rose(clk);
-- psl assert always (A->next(B));
-- psl assert always A->E before B;
-- psl C_then_FC: assert always C|=>{F[->2];C}; 
    (VHDL)
end archi;

Exemple en PSL

Cette unité de verification (vunit) permet de vérifier sur front montant de CLK qu'on n'a jamais SCLK=0 quand CS_N=1:

vunit checker_spi(top)
  default clock : posedge(CLK);
  property p0 : never(!SCLK && CS_N);
  d0 : assert p0;

Cette unité de verification (vunit) permet de vérifier sur front montant de CLK qu'on a 8 coup d'horloge SCLK après le pasage à 0 de CS_N:

vunit checker_spi(top)
  default clock : posedge(CLK);
  sequence fe_CS_N : {CS_N;!CS_N};
  property p0 : always({fe_CS_N} |-> {SCLK;{!SCLK;SCLK}[*8]});
  d0 : assert p0;

Environnement de développement

Quelques fabricants proposent une version gratuite mais limitée de leurs outils.

Éditeur Produit Licence Synthétiseur Simulateur Remarques
Dolphin Integration SMASH[1] Propriétaire, gratuite Non Oui Simulateur SMASH Discovery gratuit

Notes et références