Definición

El lugar natural de definición de qué variables queremos aleatorizar y cómo es dentro de una clase de systemVerilog.

Veamos un primer ejemplo:

En este ejemplo sencillo indicamos :

  • En las líneas 2 , 3, 4 y 5 que las variables aleatorizables son addr y data.
  • En las líneas 6, 7 y 8 indicamos unas restricciones (expresiones) que debe de cumplir la aleatorización (digamos que estas expresiones tienen que ser ciertas. Fijémonos que estas restricciones pueden afectar únicamente a una variable o a varias de ellas de manera conjunta.

Veamos otro ejemplo en el cual en lugar de utilizar la palabra reservada “rand” utilizamos “randc

El “ramdom solver” iterará a través de todos los valores en un orden aleatorio, a continuación, reiniciará un nuevo ciclo con un orden diferente.

Podemos observar en el siguiente Laboratorio virtual el diferente comportamiento de usar rand y randc.

Tipos de restricción

Inside keyword

Puede tener una forma bastante simple, como la del siguiente ejemplo

Podría involucrar a varias variables aleatorizables

Implication keyword

Implication constraints:

  • Si modo es “little”, entonces “len” debe de ser <10
  • Si modo es “big”, entonces “len” debe de ser >100

Dist keyword

  • x puede tomar los valores 100, 200, 300 con probabilidad 1/8, 2/8, 5/8 (Pesos 1,2,5).
  • x no puede tomar ningún otro valor (Como 97, 262, etc.)

Por supuesto este tipo de restricción se puee combinar con la implicación

  • si “a” es verdadera entonces “b” se distribuye de acuerdo con la distribución indicada por dist

Solving order

Veamos el siguiente ejemplo:

  • primero los elementos en s se resolverán (aletaorizarán) desactivando todas las restricciones que incluyen un elemento que es diferente de s; luego s se toma como un valor fijo y d se resuelve después de activar de nuevo todas las restricciones

Veamos otro ejemplo:

  • primero c2 y c3 se desactivan (puesto que afectan a algunas variables diferentes a y b) , a y b se aleatorizan con sólo c1 activo. A continuación, c2 y c3 se reactivan; y se realiza la aleatorización de c calculando todas las combinaciones legales en función de los valores de a y b que se habían aleatorizado con anterioridad.

Veamos el funcionamiento en el siguiente laboratorio virtual