No es un estándar de la industria, sino una opinión personal: mi técnica es modelar el algoritmo con un paquete genérico, que puedo instanciar con un punto flotante o cualquier tipo de punto fijo que desee.
El algoritmo de punto flotante proviene de C o Fortran o lo que sea, después de reescribirlo como genérico, lo instalo con tipos de punto flotante y verifico que sus salidas coincidan con el original.
Luego puedo instanciar el mismo código con cualquier tamaño de punto fijo, y verificar que su precisión satisfaga mis necesidades, modificando los tipos de puntos fijos (agregando los de mayor resolución para resultados intermedios, etc.) según sea necesario .
La traducción al código VHDL suele ser trivial; adaptándolo aún más (por ejemplo, canalizarlo para la síntesis) un poco menos, pero en cada etapa tengo un modelo de punto fijo de alto nivel con precisión de bit como referencia, por lo que puedo rastrear cualquier desviación de eso.
Esto supone que tiene un idioma que admite muy bien los tipos de punto fijo y punto flotante, y permite paquetes y subprogramas genéricos (como las clases de plantilla en C ++).
Mi elección para esto (y el propósito más general, es decir, la programación que no es de hardware) es Ada-2005 o 2012.
Su facilidad para interactuar con C u otros idiomas facilita la reutilización de modelos de alto nivel, y su similitud con VHDL hace que la traducción a VHDL sea relativamente sencilla (aunque VHDL solo admite tipos de puntos fijos a través de bibliotecas). El soporte adecuado para puntos fijos es mucho menos doloroso que fingir utilizando tipos de enteros, incluso en un lenguaje que le permite definir enteros de cualquier tamaño que desee, en lugar del conjunto restringido disponible en C, etc.
Por lo que sé, el Sistema C apunta a proporcionar facilidades para permitir un enfoque similar, aunque a través de bibliotecas complementarias en lugar de inherentemente en el lenguaje. Tal vez alguien más comente sobre lo bien que funciona. No puedo, ya que nunca he tenido ocasión de usarlo.