Este tipo de diseño es bastante raro, pero estás en el camino correcto. Para realizar el trabajo de tipo línea de retardo, probablemente deba forzar la creación de instancias de los recursos que ha mencionado, y la ubicación; de lo contrario, es posible que los resultados no sean los mismos en todas las ejecuciones de herramientas. Luego tiene el problema de que los resultados no serán consistentes en todas las partes y dependerán de la temperatura.
Los únicos ejemplos que he visto están en el libro de cocina de Altera para crear generadores de números aleatorios (captando el ruido de fondo / disparo) usando cadenas de inversores back to back, uno por LUT. Consulte las páginas 102 del libro de cocina y el archivo random/chain_delay_race.v
en su archivo zip. Para esta aplicación, la variación de la parte / temperatura no importa y el punto de inyección en las cadenas se cambia durante la operación para forzar que ocurran peligros.
Como mencionó, deberá encontrar las celdas en la biblioteca de macros del proveedor. Al tomar la biblioteca de piezas a la que se vinculó, ¿por qué no usar primitivas INV
y INV1
? Estos parecen mucho más simples de cablear que ARI1
. Para la simulación, tendrá una biblioteca de simulación proporcionada por el proveedor en algún lugar del directorio de herramientas. Deberá agregar la búsqueda de las rutas y agregarlas a la lista de importación de su simulador (no está familiarizado con las herramientas de Microsemi, lo siento). Por lo general, los encuentro usando grep -r [primitive] ~/tools/../
o similar en el directorio de herramientas: - /
A veces, una buena manera de encontrar ejemplos de ejemplificaciones de primitivos es sintetizar algo de alto nivel en Verilog / vhdl y luego mirar las listas de redes generadas para ver cómo se hace.
Si su aplicación necesita un retardo fijo en una señal de entrada, ¿notó las primitivas de retardo incorporadas? ¿Veo que las almohadillas de E / S tienen un atributo INPUT_DELAY, por lo que quizás podría modificar esto para ahorrar recursos?