Precisión funcional y temporal de un modelo RTL

A veces estoy realmente confundido por el uso abusivo de la jerga en los artículos y libros de diseño de EDA/VLSI. Sin definiciones precisas, depende del lector hacer una interpretación que a veces es muy ambigua e incorrecta.

Como,

  1. ¿Cuál es la diferencia entre la precisión de Pin y la precisión de Bit?

    ¿Se aplica la precisión de pin a las interfaces de comunicación y la precisión de bit a los cálculos? ¿No se pueden usar indistintamente?

  2. ¿Es correcto decir que un modelo RTL tiene

    - Functional accuracy == Pin/Bit-accurate
    - Timing accuracy == cycle-accurate ??
    

    Lo que significa que un modelo RTL cuando se simula produce resultados precisos en todos y cada uno de los ciclos de reloj. Me he encontrado con artículos en los que el autor dice que los modelos precisos de bits y ciclos simulan más rápido que los modelos RTL , lo que sugiere que las simulaciones de modelos relativamente RTL son lentas porque son más precisas en términos de precisión funcional y de tiempo.

¿ Alguien puede explicar cómo (usando VHDL o código Verilog) ?

El enlace a uno o dos artículos específicos sería útil. Sin contexto, yo también tengo algunas dificultades para interpretar la "precisión del pin".

Respuestas (1)

Los términos van cambiando con el tiempo, pero hay que empezar a mirar las definiciones adoptadas por el grupo de estandarización de SystemC TLM2.0. El trabajo condujo a la definición de dos estilos de codificación:

  • Tiempo libre (desacoplamiento temporal, solo detalles de tiempo suficientes para iniciar el sistema operativo y ejecutar sistemas de varios núcleos)
  • Tiempo aproximado (ciclo aproximado, conteo de ciclos preciso, suficientes detalles para la exploración arquitectónica)

1) La precisión del pin está en el nivel de interfaz que es la parte de comunicación del modelo. El modelado de nivel de transacción oculta los pines mediante el uso de llamadas a funciones entre diferentes procesos. Las funciones se implementan a nivel de canal o se proporcionan mediante mecanismos de exportación. Siempre que su banco de pruebas/modelo no tenga el propósito de comunicarse con RTL listo para síntesis con pines reales, TLM suele ser suficiente y más rápido en términos de tiempo de simulación. La precisión de bit es cómo se representan sus datos dentro de sus procesos de computación. Es la precisión de sus diferentes rutas de datos, ya sean operaciones ALU, operaciones DSP, representaciones de píxeles, ... etc. En systemC, por ejemplo, si no está muy preocupado por el formato de sus datos, también puede usar incorporado Tipos de datos C++ como int para acelerar el tiempo de simulación. Pero si desea investigar los datos desde la perspectiva del ancho de bits, el truncamiento, la saturación, etc., entonces debe usar los tipos de datos integrados systemC y definir su propio tamaño de los vectores. Inconveniente: tiempo de simulación más lento. Ahora, puede ver que ambos conceptos no están necesariamente correlacionados, ya que, por ejemplo, puede estar en una situación en la que desea que su modelo de cálculo sea preciso en el formato de datos (precisión de bits) mientras que le importa menos cómo lo envía/produce. para otros procesos y terminan usando funciones TLM (sin precisión de pin), y viceversa.

2) Para un modelo RTL, la precisión funcional no significa necesariamente precisión de bits. (Acordamos que la precisión del pin está fuera del juego aquí). Puede garantizar la corrección de la funcionalidad sin utilizar un ancho de bits definido en su modelo. Si está modelando un multiplicador, puede escribir C=A*B en su modelo y el resultado se calcula mediante un software de simulación y se compara con el resultado de su quizás multiplicador RTL canalizado. La función/resultado sigue siendo correcto siempre que use suficientes bits en su modelo, pero no tiene que ser exactamente igual. Ahora, para la precisión de tiempo, imagine que tiene una interfaz SPI que lee datos muestreados de un ADC cada 40 ns. En su RTL, usará un reloj, un contador, una condición para verificar que el contador alcanzó suficientes ciclos para hacer 40 ns y luego iniciar la operación de lectura. Puede hacer lo mismo en su modelo con una sola declaración de espera sin siquiera usar un reloj. Ahora, su modelo no es preciso para el ciclo, pero es preciso para el tiempo :)

Gracias por una respuesta tan agradable y detallada. Soy un poco consciente sobre TLM de que la computación y la comunicación son preocupaciones ortogonales. Así que entiendo tu respuesta a la primera pregunta. Pero estoy un poco confundido acerca de la respuesta a la segunda pregunta. Según tengo entendido, el código escrito en VHDL o verilog califica para llamarse RTL si es preciso en bits, preciso en pines, preciso en ciclos.
Un artículo en línea eetimes.com/document.asp?doc_id=1216014 afirma: "Los modelos con precisión de bit y ciclo simulan entre 30 y 100 veces más rápido que los modelos RTL que se han usado tradicionalmente para la verificación de circuitos integrados". - ¿Compara claramente RTL con el modelo de ciclo + precisión de bits como si estos dos modelos fueran diferentes? Quiero saber qué hace que la simulación RTL sea lenta en el ciclo wrt + modelo preciso y en qué se diferencian.
El siguiente documento carbondesignsystems.com/… ofrece tres definiciones de precisión de ciclo, una de las cuales es precisión en el recuento de ciclos.