Portando minha resposta do SO . Que enfoca por que é impraticável sintetizar atrasos absolutos
Ao sintetizar árvores de relógio, a ferramenta de síntese os equilibra adicionando atrasos, para que todos os nós recebam o relógio ao mesmo tempo, de modo que parece que a ferramenta de síntese tem a capacidade de adicionar atrasos.
No entanto, quando os ASICs são fabricados, há uma variação na velocidade; em um nível alto, isso pode ser visto como Lento, Típico e Rápido. Na prática, existem centenas de variações desses cantos em que certos tipos de dispositivos no silício correm rápido e outros lentos.
Esses cantos do silício também têm classificação de temperatura, o pior caso pode ser + 140C silício rápido e -40C silício lento. A variação do atraso através de um buffer neste caso pode ser de 1ns para dizer 30ns.
Para trazer isso de volta ao Verilog, se #10
fosse sintetizável, você obteria 155 + -145, ou seja, 10ns a 300ns, se você também projetou algo #20
para fazer parte da mesma interface ou estrutura de controle, ele terá um intervalo de 20ns a 600ns . Portanto, a coisa toda não é realmente válida em relação ao seu design. Você não entende exatamente#10
e #20
que foram especificados.
As árvores de relógio são projetadas de forma a limitar os atrasos máximos e mínimos e, assim, todos os nós na árvore de relógio escalam um em relação ao outro. Eles nunca recebem uma regra tão estrita que deve ser o número 10ns, pois isso é fisicamente impossível de garantir em um circuito combinatório.