問題描述
編譯完某程序后,出現時序問題。
時序問題是FPGA中比較難的一個方面,老實講,我自己都沒有把握說能百分百掌握。
時序問題跟代碼風格本身、資源使用情況等都有關系,代碼本身占很大部分,比較復雜的邏輯由于代碼沒寫好,導致最終出現時序問題的情況比比皆是,這就需要多積累多練習,后續我還會持續分享時序方面自己的心得。
今天我要分享的是時序約束中通配符*的使用。
在編譯完出現時序問題后,分析時序報告,準備使用set_false_path進行約束。
這里要特別注意,set_false_path就是讓vivado不去分析有問題的地方,所以使用set_false_path的地方一定不能影響功能,或者已經在程序中處理,但因為跨時鐘的原因報錯,否則,濫用set_false_path將會掩蓋真正的時序問題,使得出問題時更加難以分析。
解決方法
在用set_false_path約束時,極少用到時鐘域到時鐘域,那樣也會掩蓋時序問題,一般使用點到點的約束,如:
set_false_path -from [xxx] -to [xxx[2]]
其中xxx[2]中的2就代表了這個信號的第二bit,如果經過分析,這個信號的所有位bit都不影響,則可對整個信號進行set_false_path,為簡化寫法,可以使用通配符*,如:
set_false_path -from [xxx] -to [xxx[*]]
就代表了到這個信號的所有位bit都被set_false_path。
總結
通配符的使用可以簡化約束代碼。
只要是跟時序約束相關的,必須慎之又慎。
-
FPGA
+關注
關注
1629文章
21754瀏覽量
604225 -
代碼
+關注
關注
30文章
4801瀏覽量
68733 -
時序約束
+關注
關注
1文章
115瀏覽量
13432
原文標題:時序約束中通配符的使用
文章出處:【微信號:FPGA通信小白成長之路,微信公眾號:FPGA通信小白成長之路】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論