使用Timequest
筆者對Altera較熟悉,這里以quartus ii中的timequest作為講解。
Timequest分析時序的核心,也就是在於延遲因數的計算。那么建立約束文件,去告訴timequest,哪個地方有什么樣的約束,該怎么進行約束。
之所以要建立相關網表的概念,是因為我們在利用quartus ii 中的timequest 時,大致的流程是:建立網表----建立SDC文件----更新網表;
2.1 SDC網表
SDC網表包括:端口(port),引腳(pin),單元(cell),網(net),下圖可以解釋各個部分的概念。
那么接下來我們要使用timequest,同使用signaltap ii一樣,在使用之前先建立一個SDC文件,文件名可以任意取,建議和模塊名一樣吧。然后另存為你所命名的名字。
2.2 建立 timing netlist
然后 在使用timequest之前,先要編譯一下源文件,建立好適配文件才可以,請注意!!!
然后點擊timequest按鈕進入到timequest中,如下面所示,
上述三個命令是比較重要的命令,第一個是創建網表,開始布線,建立硬模型,第二個是讀SDC文件,第三個是更新網表,每當有所改動,需要更新一次。
圖16.5 適配情況
上面的post-map,是沒有經過優化的,更接近與原型。
關於是適配較好的情況還是適配較差的情況,這個根據設計去設定,一般最差情況能夠通過,那么較好的情況也一定能夠通過。
一般按照圖16.5就夠用了。這也是雙擊產生的結果。當然也可以自己手動去設定,那就是
即可。
2.3 建立 SDC文件
注意上述的clock name是和全局時鍾網絡的名字是一致的,targets這里選擇你所設定的全局時鍾網絡。
選擇get_ports,點擊list按鈕,選擇時鍾信號。要約束其他信號方法一樣。
建立完約束之后,開始讀取SDC文件,關於讀取SDC有兩種方法,(1)可以在setting中進行設置,如下圖所示。
(2)也可以在timequest中進行文件的讀取,在timequest界面下點擊constraints----read sdc file 即可,如下圖所示。
2.4 更新網表別列出時序圖
更新網表文件。然后雙擊,就可以看到我們的約束內容
在此信號上,點擊右鍵,就可以report timing,圖16.6是報告時序的界面,第一個從源時鍾到目的時鍾,這個見圖16.7,都會把與之相關聯的寄存器節點牽扯進來。
圖16.6 操作界面
對於上圖中的from clock和 to clock ,只要給定一個參數即可,就會把與之時鍾相關連的牽扯進來。
同時也需要注意,這里的路徑數目,如果節點數比較多,那么需要改動這里的路徑數目,去分析各路徑數目之間的關系。或者也可以雙擊下圖所示的命令,
不過此方法只能實現1000個路徑的分析,如果想要更改,還需手動去更改TCL腳本文件,
將1000改成比較大的數,以便完成更多的路徑分析。
圖 16.7 寄存器相關節點圖
在這里可以去查看建立和保持余量是否符合要求,如下圖16.8所示。
圖16.8 余量查看
那么timequest的目的是告訴硬件,讓你對某個信號加以約束,對於給定的不同的網表形式,所給的余量也是不同的,最壞情況比給最好情況給定的余量較多。Fmax,最高頻率,此頻率大小是評估走線最長情況的時鍾,也是延遲最大的走線,所能夠達到的最大頻率,一般希望Fmax越大越好。
//=======================================================================
更多詳細的資料下載可以登錄筆者百度網盤:
網址:http://pan.baidu.com/s/1bnwLaqF
密碼:fgtb
//=======================================================================