¿Cómo sintetizar mejor un circuito sistólico en FPGA?

Estoy desarrollando un circuito sistólico parametrizado en VHDL, utilizando genéricos. Exhibe regularidad en 2 dimensiones.

Estoy a punto de sintetizarlo en Xilinx FPGA. Sospecho que vale la pena informar al sintetizador lógico sobre esta regularidad, para lograr un mejor rendimiento en términos de área final.

Cómo puedo hacer esto ?

Ya descubrí la opción "mantener jerarquía" en Xilinx ISE, pero no está claro si funcionará.

Debe habilitar las optimizaciones posteriores a la síntesis: por ejemplo, optimizar a través de la jerarquía.
bien, voy a intentar eso. ¿Eso significa que debo olvidar la idea de tener mi circuito colocado y enrutado como lo pensé originalmente? Sospecho que el sintetizador pierde información importante (regularidad del circuito) que simplificaría sus optimizaciones (a nivel físico, P&R).
¿Qué tamaño tiene un elemento de cálculo (CE)? Si es pequeño, también puedes intentar usar rel. restricciones de colocación. Creo que la mejor manera es deshabilitar mantener la jerarquía y habilitar la mayoría de las opciones. opciones => alto tiempo de compilación. Un factor limitante en los diseños sistólicos no es el consumo de recursos de LUT y registros, es el recurso de enrutamiento. Entonces, incluso si conoce la cantidad de LUT y registros por CE, que caben en una matriz MxN, en su mayoría faltan suficientes cables. Además, puede verificar que cada CE tenga solo unos pocos conjuntos de control diferentes (reloj/habilitación/reinicio configurado por segmento) => mayor índice de utilización de segmento.

Respuestas (2)

De manera cruda, podría planificar el FPGA y dividirlo en secciones regulares, luego usar asignaciones para mover instancias específicas de la jerarquía a cada bloque. Sin embargo , esto probablemente le dará una puntuación de tiempo peor que darle total libertad al planificador, ya que impone un retraso de enrutamiento mínimo entre bloques que la colocación libre eliminaría al acercarlos.

Puede ahorrar algo en los tiempos de ejecución del placer/enrutador, pero si están tratando de evitar estas distancias artificiales, es posible que no sea una victoria general. Lo dejaría en manos de las herramientas hasta que tenga un diseño que funcione.

Si su circuito está hecho de lógica simple, será difícil restringir realmente el diseño para que encaje en la matriz de la FPGA. Probablemente debería dejar que las herramientas del proveedor de FPGA hagan el trabajo. Si tuviera que hacer un ASIC, realmente podría diseñar una celda y luego copiarla/pegarla sobre la superficie, con FPGA, tiene que lidiar con el hecho de que no son tan regulares como parecen.

Si usa recursos fijos como bloques de memoria o multiplicadores, se pueden restringir más fácilmente (usando restricciones "LOC"), la lógica restante se organizará alrededor de ellos...

Consulte Xilinx "CGD": Guía de restricciones