Verilog permite la definición de retrasos absolutos al modelar hardware, pero el sintetizador ASIC los eliminará. ¿Por qué hace esto?
Verilog permite la definición de retrasos absolutos al modelar hardware, pero el sintetizador ASIC los eliminará. ¿Por qué hace esto?
Es interesante que CS se utilice para hacer preguntas de CE. De todos modos, es una convención. Es imposible obtener demoras exactas combinando transistores y conductores en el silicio.
Los retrasos que especifique se utilizan para modelar los retrasos esperados, lo que vale para la simulación. En HW real tendrá demoras reales que dependerán de la demora de propagación en su circuito. En Verilog, usted describe la estructura de su circuito, que se implementará en términos de compuertas, cables y transistores, que se colocarán en el chip y se conectarán por cable. Dependiendo de la estructura resultante y del diseño del chip, su circuito tendrá su propia demora, no relacionada con lo que ha especificado para la simulación. En la simulación solo haces lo mejor que puedes suponer cuál podría ser ese retraso. Las herramientas de síntesis posterior y diseño posterior actualizarán sus cifras. Reimprimirá su banco de pruebas con netlist sincronizado para ver si todavía se comporta de la misma manera.
Supongo que hay algunos intentos de síntesis que pueden sintetizar sus tiempos. Pero es demasiado difícil y poco confiable porque Verilog está diseñado para describir la lógica de su circuito, implementado con transistores, cuya velocidad depende incluso de la temperatura . Al mismo tiempo, las herramientas actuales tienen dificultades incluso para sintetizar grandes diseños con tiempos ignorados. Sería demasiado pedirles que sinteticen sus tiempos.
Incluso es innecesario porque todos los diseños actuales siguen siendo síncronos. Lo único que se requiere de ellos es que el tiempo de propagación entre los registros es menor que el ciclo de reloj. No tiene sentido pedir hacer un segmento del camino de longitud específica, ni más ni menos. En algunos casos, cuando necesita interactuar con dispositivos externos, los retrasos pueden seguir siendo importantes y, creo, las herramientas ASIC tienen medios personalizados para mantener estos retrasos bajo control. Los FPGA, por ejemplo, tienen algunos gestores de fase en los pads IO.
Verilog se utiliza en dos contextos: simulación y síntesis. Usar el mismo constructo (retraso) para diferentes propósitos en cada contexto (en la simulación es una estimación del verdadero retraso, en síntesis sería un objetivo de tiempo) llevaría a los problemas.
Si desea controlar los retrasos durante la síntesis, los sintetizadores tienen la forma de establecer restricciones de tiempo que intentarán lograr, y las restricciones disponibles se adaptan más a la situación de síntesis que solo un retraso que usted sepa nunca será respetado exactamente. Una ventaja adicional es que puede tener una descripción de HDL y restricciones de uso adaptadas a la situación (un área baja pero lenta, un área alta pero rápida, por ejemplo, o usando diferentes procesos).
(Tenga en cuenta que incluso para la simulación, los retrasos de las puertas y los cables se suelen anotar a través de un proceso diferente, en mi experiencia, la construcción del retardo es útil sobre todo en bancos de pruebas).
Lea otras preguntas en las etiquetas computer-architecture