Usando el ajuste de registro para canalizar un módulo

2

Por lo que he leído, entiendo que las herramientas de síntesis modernas son capaces de volver a sincronizar los registros donde los registros se mueven entre la lógica combinacional para cumplir con las restricciones de tiempo.

Por ejemplo, en tu HDL describirías comb -> reg1 -> reg2 -> reg3 y las herramientas moverían esos registros para obtener comb1 -> reg1 -> comb2 -> reg2 -> comb3 -> reg3 .

¿Cuándo se canalizaría manualmente una lógica de canalización en lugar de depender del registro de la sincronización?

    
pregunta dave

3 respuestas

2

Bueno, hay al menos dos escenarios en los que optaría por volver a programar manualmente:

  1. Donde sé que hay una geometría óptima específica, por ejemplo, un árbol lógico, y no quiero que el sintetizador haga esto solo ya que podría hacer una elección subóptima.

  2. Los tiempos de ejecución de la síntesis pueden ser largos. Es posible que prefiera tomar estas decisiones solo en lugar de dejar que la herramienta las tome, donde es posible que tenga que verificar lo que hizo y posiblemente volver a ejecutar la síntesis.

respondido por el Claudio Avi Chami
2

Para los módulos RTL que son principalmente lógica de control (por ejemplo, controlador DMA), la implementación del registro manual es la mejor opción. Para los módulos RTL que son principalmente la lógica de ruta de datos (por ejemplo, el filtro), el reajuste de los registros de la herramienta sintetizadora es la mejor opción.

Según ambos, en mi experiencia, la razón es por menos errores y facilidad de depuración. La determinación de la causa raíz del error en una simulación HDL de la lógica de ruta de datos implementada para el reajuste de registros (no regs mid-filter) es mucho más fácil cuando el resultado de la lógica combinacional de cómputo / algoritmo no tiene registros entre su entrada y salida. Para la lógica de control, que depende en gran medida de las actualizaciones de ciclo a ciclo de las variables (regs), lo contrario es cierto.

    
respondido por el BHook
0

La canalización se realiza generalmente para reducir la ruta crítica (la ruta que tiene el mayor retraso y que determina la frecuencia de operación máxima) del circuito y también para aumentar el rendimiento del diseño.

Entonces, al diseñar la RTL, debemos tener una idea (más o menos exacta) acerca de qué rutas del circuito van a demorar más. Sobre esta base, colocamos algunos registros o algunos otros elementos de almacenamiento en los lugares apropiados (dentro de la parte combinatoria) para reducir esta ruta crítica. Durante la síntesis, la herramienta optimizará las posiciones de los registros basándose en los valores reales de retardo de las puertas sin afectar la funcionalidad del circuito.

El número de registros que coloca determina el número de etapas canalizadas en su circuito. Por lo tanto, inicialmente decida un cierto número de etapas y sintetícela para verificar si el diseño cumple con las especificaciones. Si el diseño no cumple con el cronograma y desea un circuito más rápido independientemente de la potencia y el consumo de área, a continuación, aumente el número de etapas de la tubería.

    
respondido por el Naveen

Lea otras preguntas en las etiquetas