Funciones predefinidas

  • $rose(a): “a” es uno y  fue cero en el pasado ciclo de reloj
  • $fell(a): ): “a” es cero y  fue uno en el pasado ciclo de reloj
  • $stable(a): “a” mantiene el mismo valor que en el ciclo pasado
  • $past(a): el valor que tenia “a” en el pasado ciclo
  • $past(a,7): el valor que tenia “a” hace 7 ciclos

a001011110100001100
$rose(a) 001010000100001000
$fell(a)?00100001010000010
$stable(a)?10001110001110101
$past(a)?00101111010000110
$past(a,2)??0010111101000011

Ejemplo1

Queremos chequear que “grant” pasa a uno tres ciclos después de que “request” se active. Si lo hacemos mediante:

g:0000000111
r:0000111111
c:0123456789
  • la aserción se anulará inmediatamente en 0,1,2,3 porque la condición de habilitación no coincide
  • la condición de habilitación coincide a 4, 5, 6, 7…
  • El chequeo que se inicia en ciclo 4, es correcto en el 7
  • Todos los demás intentos (5, 6, 7, …) fallan

Por tanto para hacerla correctamente vamos a utilizar una función predefinida que solo sea cierta cuando la señal a pasado de 0 a 1

g:0000000111
r:0000111111
c:0123456789
  • la aserción se anulará inmediatamente en 0,1,2,3,5,6,7 porque la condición de habilitación no coincide
  • la condición de habilitación coincide en 4
  • El chequeo que se inicia en ciclo 4, es correcto en el 7
  • Sin fallo