Xilinx ISE de critical path in tespiti

Başlatan yamak, 23 Mart 2012, 03:53:14

yamak

Arkadaşlar fğga ile yaptığımız tasarımda critical path deki kapı gecikmesini xilinx ise de öğrenebileceğimiz bir yer var mı?Design summary de static timing diye bi sekme var orada :
Data Path Delay:      19.529ns (Levels of Logic = 12) diye bişey yazıyo buradaki 19.529ns; tasarımımdaki en uzun yoldaki kapı gecikmesi mi oluyo?Bir de (Levels of Logic = 12) 'den kastedilen şey nedir?

pic365

Eğer devrede timing tutmamışsa "Static Timing"e tıklayınca timing raporunda (twx) slack'in en kötü olduğu yeri açıyor. Timing tutmuşsa raporun en üst kısmını açıyor. "Timing Constraints"e tıklarsan özet sonuçları görebilirsin. Zaten o sayfadaki linkler yine timing raporuna yönlendirecek.

"Data Path Delay" slack'in en kötü olduğu yerdeki kapı gecikmesi. Fakat slack hesaplanırken bu delay'in yanında "clock path skew" gibi veriler de hesaba katılıyor. Raporda dikkat edersen slack'in yanında basit bir formül vermişler.

Slack (setup path):     0.Xns (requirement - (data path - clock path skew + uncertainty))

"Levels of Logic" path'in kaç LUT'tan geçtiğini gösteriyormuş. Aşağıdaki linkte küçük bir açıklama var.

http://www.xilinx.com/itp/xilinx10/isehelp/pta_p_period_path.htm

yamak

Hocam "timing tutmammışssa" ne anlama geliyo. Bir de bu clock path skew tam olarak nedir? Kötü bişey olduğunu biliyorum da biraz daha açabilir misiniz?
Benim tasarımda şöyle birşey yazıyo
Slack (setup path):     0.471ns (requirement - (data path - clock path skew + uncertainty))
   Source:                 CPU/Inst_Fetch/PC/q_3_1 (FF)
   Destination:          CPU/Data_Path/reg_file/array_reg_2_27 (FF)
   Requirement:          20.000ns
   Data Path Delay:      19.529ns (Levels of Logic = 12)
   Clock Path Skew:      0.000ns
   Source Clock:           clk_BUFGP rising at 0.000ns
   Destination Clock:    clk_BUFGP rising at 20.000ns
   Clock Uncertainty:    0.000ns

Şimdi hocam bu durumda benim critichal path im deki gecikme=0.471*(20-(19.529-0+0)) mı oluyo. Bir de buradaki 0.471 ne oluyo

pic365

Formül şöyle olacak: slack = requirement - (data path - clock path skew + uncertainty)

Requirement: Clock periyodu = 20.000 ns
Data Path: Kapı gecikmesi = 19.529 ns
Clock Path Skew: Clock'un kaynak register ile hedef register arasındaki gecikmesi.
Uncertainty: Clock'un ideale kıyasla hatalı gelebileceği süre. Örneğin periyodumuz 20 ns ama bu periyot gerçekte 19.8 ns ile 20.2 arasında salınabilir. Bu durumda uncertainty 20.2-19.8'den 0.4 ns olur sanırım.

Bu formül sonucunda çıkan fark (yani slack) hedef periyot ile gerçeklenebilen periyot arasındaki fark oluyor. Slack pozitif ise "timing" tutmuş demektir, negatifse tutmamıştır. Gösterdiğin path'deki kapı gecikmesi "Data Path Delay"de yazdığı gibi 19.529 ns. Clock'un varyasyonunu hesaba katınca sonuç 20 ns'nin 0.471 ns altında çıkıyor. Yani devren o path'de bir sonraki clock darbesi gelmeden önce işini bitirmiş oluyor.

Clock Skew yukarıda dediğim gibi clock'un gecikmesi. Daha açık söylemek gerekirse clock'un hedef register'a kaynak register'dan ne kadar daha geç gittiğini gösteriyor. Timing açısından skew olumsuz değil olumlu bir gecikmedir. Çünkü clock hedef register'a geç gittiği için path'in işini bitirmesi için daha fazla zamanı oluyor. Skew formülde görüleceği üzere slack'e pozitif katkı yapıyor zaten.

yamak

#4
Tamam hocam çok teşekkür ederim. Ben de 0.471 i çarpım durumunda olan bi katsayı sanmıştım. :)