上一篇 / 下一篇 2011-04-06 12:32:34/ 個人分類:經驗集錦
今天看到一個問題如下:
在生成位流文件的時候,顯示的警告如下:
Clock net u8/dout_not 0001 is sourced by a combinatorial pin.This is not good design practice.Use the CE pin to control the loading of data into the flip-flop.
回復:
報告的warning和這個模塊看起來沒關系,至少從你貼的代碼沒看出來問題。但是報告的warning你的確需要關注,你用了gating clock,你是不是將這個模塊的dout在外面用作時鐘了?如果是的話,設計是不建議這樣用的。
最好不要用運算之后的信號來做一個模塊的輸入時鐘,因為信號的時鐘要求非常高的質量,對于duty-cycle, jitter, skew都有非常高的要求。但是組合邏輯生成的時鐘可能會有毛刺等等對于時鐘是非常致命的東西。
除非你非常有把握,否則不建議這樣的設計方法。
這就是這個警告的意思。
評:對于ASIC設計來說,gating-clock可以通過特定的單元或者綜合工具,由工藝庫提供商或者綜合器來保證gating-clock的正確性。在RTL代碼級設計中,盡量不要使用gating-clock來控制時鐘。使用控制時鐘的方法非常危險,因為這個非常難以通過后端約束來解決組合邏輯產生的glitch,這些時鐘的glitch會使設計功能變得雜亂無章,無法跟蹤,導致仿真和綜合后結果不能match。
當然,我覺得ASIC設計后端place&route可以人工干預,以此來控制產生的clock的質量。FPGA實現(xiàn)就沒有這么好的命運了,大多數(shù)的FPGA是經過工具自動布局布線完成,而且FPGA設計因為其靈活性,經常有非常多次數(shù)的設計交替(不像ASIC,芯片做一次后端,制造出來了,ASIC設計就結束了)。所以,每次FPGA自動布局布線都可能會將產生的clock布線結果不一樣,那么clock質量就不一樣,這樣設計的后端會非常難做,產生的bit流文件也非常難在FPGA上debug(調試)。
最后,需要指出的是,不是不能在FPGA內用gating clock,不同的FPGA廠商有其自己的gating clock或者時鐘生成器的方法。需要詳細參考其data-sheet。避免問題的產生。