FPGA Rendimiento de enrutamiento

2

Estoy tratando de aprender más sobre el rendimiento de diferentes rutas en mi diseño utilizando Xilinx ISE. Descubrí cómo mover la lógica cambiando qué CLB / Slice contiene qué parte del uso del archivo de Restricción de Usuario. ¿Hay alguna manera de manipular el enrutamiento? ¿O, al menos, en algún lugar puedo obtener una descripción de texto de las rutas de enrutamiento?

Más detalles: He implementado una compuerta AND simple en un spartan3E_100 y me he movido alrededor de las IOB y la LUT que contiene la lógica. Cada vez que lo hago, miro en el editor de FPGA y la ruta elegida es completamente diferente. Estoy seguro de que averigua lo óptimo, pero lo que me gustaría hacer es modificar el enrutamiento y luego ver cómo cambia el rendimiento. ¿Es eso posible? En segundo lugar, ¿hay alguna forma de obtener una descripción de texto del enrutamiento similar a la información proporcionada en el archivo UCF / PCF?

    
pregunta nhoughto

2 respuestas

3

El control 'práctico' explícito de la ruta parece una buena idea, pero no lo es.

Recuerda los días en que los programadores de ensambladores podrían exprimir un poco más el rendimiento de un algoritmo mediante el uso de un código de ensamblaje manual en lugar de un compilador. Hay tanta complejidad que puedes pensar a tu manera. A medida que el objetivo se vuelve más complejo, las tablas de predicción de bifurcaciones, los núcleos múltiples, los procesos de ejecución profunda, el microtrabado, se vuelven poco prácticos. Estoy escribiendo aquí como alguien que escribió el código de ensamblaje para una TI C6000 DSP, 8 unidades de ejecución y una tubería de 5 profundos para cargar / guardar memoria, ¡una pesadilla!

Sólo los entusiastas entusiastas escriben ensambladores en estos días, las personas que quieren hacer el trabajo aprenden a restringir y ayudar al compilador.

De todos modos, el enrutamiento implica múltiples tipos de recursos (líneas largas, medias líneas, directamente a través de un mux, líneas locales adyacentes, por mencionar solo algunas), múltiples restricciones de tiempo (solo algunas de las cuales son críticas) y un lote de ambos.

La conclusión es que si está colocando un solo pestillo D, probablemente pueda ver su camino alrededor del enrutamiento. Si está haciendo algo de un tamaño que valga la pena, entonces no quiere, y no puede ser, conducir el enrutamiento directamente. Lo que desea hacer es restringir y ayudar al optimizador de enrutamiento. ¿Cómo?

Comprende tus restricciones de tiempo. Comprende cuáles son críticos y cuáles no. No se limite en exceso por razones de seguridad, el enrutador ya está teniendo en cuenta el proceso del peor de los casos con el peor de los casos de temperatura y voltaje, por eso las tablas de tiempo son tan complicadas. Si sobre-restringe, el enrutador luchará más. Solo restringir fuertemente las líneas críticas.

Utilice el diseño de planta, aquí es donde puede intervenir con un poco de experiencia humana de “Puedo ver lo que quiero”. El placer no siempre lo hace bien. Si el enrutador falla, vea lo que ha hecho el placer y, si es necesario, mueva algunos bloques desde posiciones "estúpidas" para una ubicación más sensata. Luego deje que el enrutador vuelva a funcionar. Iterice ese ciclo, pero deje que el enrutador haga lo suyo.

    
respondido por el Neil_UK
1

En su mayoría, todos los algoritmos son heurísticos y no deterministas. Usted da una restricción en el solucionador de problemas, por ejemplo, Frecuencia mínima, y la herramienta encontrará una asignación, ubicación y enrutamiento para su problema. Hay muchos parámetros que se pueden cambiar, por lo que no hay un algoritmo fácil para probar todas las combinaciones / posibilidades ...

Dar restricciones adicionales como ubicaciones de IOB hace que la "búsqueda" sea más compleja para que el tiempo de ejecución aumente, mientras que en algunos casos puede ayudar a establecer un buen punto de inicio de algoritmo. Pero en la mayoría de los casos, los diseños restringidos no son buenos.

Tal vez el formato del lenguaje de diseño Xilinx (XDL) contenga información de enrutamiento, pero normalmente, esta información se considera secreta para el proveedor.

Lectura adicional:

respondido por el Paebbels

Lea otras preguntas en las etiquetas