Buscar un rango específico del simulador para el tipo físico definido por el usuario

3

Quiero averiguar el rango máximo para los tipos físicos definidos por el usuario, como los siguientes:

type resistance is range 0 to 1_000_000
units
  Ohm;
  kOhm = 1000 Ohm;
  MOhm = 1000 kOhm;
end units resistance;

(consulte también enlace ).

La documentación para tipos físicos (VHDL LRM secciones 3.1.3 y 3.1.2) dice que el rango es de tipo entero, por lo que podría escribir range integer'low to integer'high que es el mismo que range -2_147_483_648 to 2_147_483_647 . Sin embargo, mi simulador parece usar aritmética de 64 bits aquí, y range -40_000_000_000_000 to 40_000_000_000_000 también funciona, al igual que range -2**62 to 2**62 (mientras que 2**63 no lo hace).

¿Existe una forma canónica de averiguar el rango compatible con el simulador? Si no, ¿cómo pondría el 2**62 empíricamente encontrado en una constante (para la externalización de dicho código específico del simulador)? Una constante entera no lo cortará :)

    
pregunta cmarqu

1 respuesta

2

La referencia de lenguaje VHDL (LRM) dicta que se deben admitir tipos enteros definidos por el usuario de al menos 32 bits. Si usa algo más grande que eso, está escribiendo un código que no se garantiza que funcione en otros simuladores.

Recomendaría contra usar rangos más grandes de los que se garantiza que sean compatibles.

    
respondido por el Philippe

Lea otras preguntas en las etiquetas