Porting della mia risposta da SO . Il che si concentra sul perché non è pratico sintetizzare ritardi assoluti
Quando si sintetizzano alberi di clock, lo strumento di sintesi li bilancia aggiungendo ritardi in modo che tutti i nodi ricevano l'orologio contemporaneamente, quindi sembrerebbe che lo strumento di sintesi abbia la capacità di aggiungere ritardi.
Tuttavia, quando gli ASIC vengono prodotti, la velocità varia, ad un livello elevato può essere considerata lenta, tipica e veloce. In pratica ci sono centinaia di varianti di questi angoli in cui alcuni tipi di dispositivi nel silicio corrono veloci e altri rallentano.
Questi angoli del silicio hanno anche una temperatura nominale, il caso peggiore potrebbe essere + 140 ° C di silicio veloce e -40 ° C di silicio lento. La variazione del ritardo attraverso un buffer in questo caso potrebbe essere compresa tra 1 ns e 30 ns.
Per riportarlo a Verilog, se #10
fosse sintetizzabile, avresti effettivamente ottenuto 155 + -145 cioè da 10ns a 300ns, se hai progettato anche qualcosa #20
per far parte della stessa interfaccia o struttura di controllo avrà un intervallo da 20ns a 600ns . Pertanto, l'intera cosa non è realmente valida contro il tuo design. Non ottieni l'esatto #10
e#20
che sono stati specificati.
Gli alberi dell'orologio sono progettati in modo da limitare i ritardi massimo e minimo e in modo che tutti i nodi dell'albero dell'orologio vengano ridimensionati l'uno rispetto all'altro. Non viene mai data una regola così rigorosa che deve essere # 10ns in quanto ciò è fisicamente impossibile da garantire in un circuito combinatorio.