使用Timequest 筆者對Altera較熟悉,這裡以quartus ii中的timequest作為講解。 Timequest分析時序的核心,也就是在於延遲因數的計算。那麼建立約束文件,去告訴timequest,哪個地方有什麼樣的約束,該怎麼進行約束。 之所以要建立相關網表的概念,是因為我們在利用
使用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
//=======================================================================