Giriş
İnternette ve bazı eğitim sınıflarında SDC formatında zamanlama kısıtlamalarının nasıl oluşturulacağı hakkında birden fazla, bazen çelişen veya eksik bilgi bulduktan sonra , EE topluluğundan karşılaştığım bazı genel saat üreten yapılarla ilgili yardım istemek istiyorum.
Bir ASIC veya FPGA üzerinde belirli bir işlevselliğin nasıl uygulanacağı konusunda farklılıklar olduğunu biliyorum (her ikisiyle de çalıştım), ancak belirli bir yapının zamanlamasını kısıtlamak için genel, doğru bir yol olması gerektiğini düşünüyorum . altında yatan teknoloji - lütfen bu konuda yanlış olup olmadığımı bana bildirin.
Ayrıca farklı sağlayıcıların uygulama ve zamanlama analizi için farklı araçlar arasında bazı farklılıklar vardır (bir SDC ayrıştırıcı kaynak kodu sunan Synopsys'e rağmen), ancak bunların temel olarak belgelerde aranabilecek bir sözdizimi sorunu olduğunu umuyorum.
Soru
Bu, yine daha büyük bir tasarımın parçası olan clkgen modülünün bir parçası olan aşağıdaki saat çoklayıcı yapısıyla ilgilidir :
İken ext_clk
girişi dışarıdan (bir giriş pimi üzerinden gelen) tasarımına üretilecek varsayılır, clk0
ve clk4
sinyaller de üretilir ve kullandığı clkgen (benim ilişkili bkz modülü dalgalanma saat soruyu detayları için) ve saat kısıtlamaları adlı ilişkilendirmiş baseclk
ve div4clk
, sırasıyla.
Soru, zamanlama analizörünün kısıtlamaları nasıl belirleyeceğidir.
- Farklı AND ve OR kapıları arasındaki gecikmeleri dikkate alarak
cpu_clk
kaynak saatlerinden (fast_clk
veyaslow_clk
veyaext_clk
) biri olabilen çoğullamalı bir saat gibi davranır . - Aynı zamanda tasarımın başka bir yerinde kullanılan kaynak saatler arasındaki yolları kesmiyor.
Bir yonga üstü saat çoklayıcısının en basit örneği sadece set_clock_groups
SDC bildirimini gerektiriyor gibi görünüyor :
set_clock_groups -logically_exclusive -group {baseclk} -group {div4clk} -group {ext_clk}
... verilen yapıda, bu, sadece iddia edildiğinde olacak şekilde yapılandırılmış olsa bile, tasarımda ( çıkış clk0
yoluyla fast_clk
) ve clk4
(üzerinden slow_clk
) hala kullanılmasından dolayı karmaşıktır .cpu_clk
ext_clk
use_ext
Açıklandığı gibi burada , set_clock_groups
yukarıdaki gibi komut aşağıdaki neden olur:
Bu komut, her gruptaki her saatten diğer her gruptaki her saat için set_false_path çağrılmasına eşdeğerdir veya bunun tersi de geçerlidir.
... diğer saatler hala başka yerlerde kullanıldığı için bu yanlış olur.
ek bilgi
use_clk0
, use_clk4
Ve use_ext
girişleri sadece bir tanesi herhangi bir zamanda yüksek bir şekilde oluşturulur. Bu, tüm use_*
girişler düşükse tüm saatleri durdurmak için kullanılabilirken , bu sorunun odağı bu yapının saat çoğullama özelliğidir.
X2, şematik olarak, örneğin (basit bir tampon) sadece otomatik yeri ve yol araçlar (örneğin, arasında olduğu gibi her yerde yer tampon genellikle serbest olma sorunu vurgulamak için bir yer tutucu olduğunu and_cpu_1/z
ve or_cpu1/in2
pimler). İdeal olarak, zamanlama kısıtlamaları bundan etkilenmemelidir.