Test à partir d'un modèle

Exercice 1 : test d'un alternateur

MODULE ALTERNATING(b)
ASSIGN
  init(b) := FALSE;
  next(b) := !b;
  

Télécharger le programme alternating. Tester que l'état initial est conforme au modèle. À l'aide du model-checker NuSMV, déterminer une séquence d'entrée permettant de placer le programme dans l'état b=TRUE. Appliquer cette séquence au programme, puis tester que le programme exécute la bonne instruction depuis l'état b=TRUE. Faire de même avec l'état b=FALSE.

Exercice 2 : test d'un modèle avec entrée/sortie

MODULE ABS(i,o)
INVAR
  o = (i >= 0 ? i : -i);
  

Télécharger le programme abs. Proposer des cas de test en vous basant sur le code du module ABS. Tester le programme abs en reproduisant la démarche précédente.

Exercice 3 : Test d'un modèle avec entrée/sortie et mémoire

MODULE RISING_EDGE(clk,edge)
VAR
  clk_prev : boolean;
ASSIGN
  init(clk_prev) := FALSE;
  next(clk_prev) := clk;
INVAR
  edge = !clk_prev & clk;
  

Télécharger le programme rising_edge. Proposer des cas de test en vous basant sur le module ci-dessus. Tester le programme rising_egde en reproduisant la démarche précédente.