使用TimeQuest时序分析器
?本文由本人原創翻譯于ALTERA的官網上Educational_Materials->Digital_Logic->Tutorials->Timing_Analysis_Tutorials下一篇名為Using?TimeQuest Timing Analyzer的文章,個人覺得ALTERA官網上很多教程都很不錯,有機會可以鍛煉下專業英語水平,隨便也可以把這些不錯的教程和大家分享。原文檔包含在下面的附件中,有興趣的可以查看。
?TimeQuest Timing Analyzer的文章,個人覺得ALTERA官網上很多教程都很不錯,有機會可以鍛煉下專業英語水平,隨便也可以把這些不錯的教程和大家分享。原文檔包含在下面的附件中,有興趣的可以查看。
attachment download
?
一、介紹
? ? ? ? 本文將介紹TimeQuest Timing Analyzer的基本功能,并演示了怎樣使用TimeQuest建立時序約束和獲取實現電路的時序信息。
內容:
?????? 介紹時序分析概念
?????? 設置Quartus II使用TimeQuest
?????? 使用TimeQuest
?????? 建立時序約束
?
二、背景
? ? ? ? 時序分析是一個分析邏輯電路的延時從而決定電路是否能滿足可靠運行條件的過程。這些條件包括但不僅僅是,如電路的最大時鐘頻率fmax。一個關于最大時鐘頻率fmax的計算的簡單例子如圖1所示。
圖1 時序分析示例
?
?????? 在這個例子中,左邊的4個寄存器驅動由與門組成的組合電路,組合電路的輸出再被處于右邊的寄存器所儲存。為了得到正確的結果,時鐘頻率受到該電路最長延時路徑的限制。我們假設每個寄存器clock-to-Q時延和建立時間都是1ns,每個與門的延時是1ns,則在該電路中最大的時鐘頻率可以這樣計算:
?????? 計算fmax是一個時序分析器的基本功能,時序分析器可以用來引導CAD工具完成邏輯電路的實現。例如,圖1中展示了使用2輸入與門來實現一個4輸入邏輯功能。如果沒有任何時序要求,圖中所示的電路實現方法是可以接受的。但是,如果一個使用者需要電路能夠運行在250MHz的時鐘頻率下,上述的實現方法就顯得不恰當了。通過設置最大時鐘頻率這項時序約束,有可能會指導CAD工具去嘗試新的方法來實現該電路,從而滿足時序要求。CAD工具可能會如圖2所示來實現該電路,新的電路fmax達到250MHz,滿足了時序約束。
圖2 同一功能電路不通的電路結構
?
?????? 在本文中,我們將演示如何獲得時序信息以及怎樣使用TimeQuest時序分析器來進行時序約束。
?????? 要點:本例電路中僅僅含有一個時鐘信號,當電路中含有多時鐘信號時,時序分析器的初始行為會有稍許不同,這里建議使用下面的例子來進行之后的TimeQuest的使用練習。關于多時鐘信號,我們將在第六小結詳細討論。
?
三、設計實例
? ? ? ? 我們使用一個輸入為3個8位的加法器來作為例子。加法器的輸入A、B和C分別通過一級輸入寄存器reg_A、reg_B和reg_C,這3個寄存器的輸出作為加法器的輸入,然后加法器的運算結果保存在寄存器reg_sum中,寄存器reg_sum的輸出直接驅動輸出口sum。加法器的原理圖如圖3所示。
圖3 例中加法器原理圖
?
?????? 加法器的Verilog代碼如圖4所示。注意到代碼中的注釋“synthesis keep”,這個注釋插入到代碼中,用來命令Quartus II軟件在最后的電路實現中保留指定的節點和該節點的名稱。這樣做可以允許我們以保留的節點作為參考。
圖4 示例中加法器Verilog代碼
?
?????? 在Quartus II中建立新工程,輸入示例中給出的Verilog代碼。
?
四、設置Quartus II使用TimeQuest
? ? ? ? 當Quartus II工程第一次建立時默認的時序分析器是使用經典時序分析器Classic TimingAnalyzer。要使用TimeQuest,有必要更改工程設置。通過選擇菜單Assignments->Settings來打開一個工程設置窗口,然后在窗口左邊分類中選擇Timing Analysis Settings。在Timing Analysis Settings中我們可以選擇使用Classic或者TimeQuest時序分析器。單擊Use TimeQuest Timing Anlyer選項前的單選按鈕lai告訴Quartus II軟件使用TimeQuest進行時序分析,如圖5所示,最后單擊OK。
圖5 使用TimeQuest作為時序分析器
?
?????? 編譯工程,查看時序分析結果。當工程進行全編譯后,可以在編譯報告中查看這些時序分析結果。在本文中,我們將使用TimeQuest圖形用戶界面來查看時序分析結果。
?
五、使用TimeQuest
? ? ? ? 選擇菜單Tools->TimeQuest Timing Analyer來啟動TimeQuest。TimeQuest啟動后的界面如圖6所示。
圖6 TimeQuest界面
5.1 TimeQuest圖形用戶界面
?????? TimeQuest窗口由幾個部分組成,包括頂端的主菜單,左上的報告面板report pane,左側的任務面板task pane,右邊的查看面板view pane還有底部的控制面板console。主菜單用來和TimeQuest進行交互和輸入命令。報告面板包含使用TimeQuest生成的所有時序報告。任務面板含有用來執行獲得時序報告的一系列命令動作。查看面板用來顯示開打的報告窗口,TimeQuest剛打開時,查看面板里含有TimeQuest用戶界面的簡要說明。底部的控制窗口可以給予我們通過指令來使用TimeQuest。
?????? 我們重點關注兩個面板:任務面板和報告面板,如圖7所示。任務面板提供了獲得一個設計的時序信息的一系列命令動作,這些命令動作包括建立時序網表creating a timing netlist,讀取時序約束文件reading a timing constraints file,執行時序分析performing timing analysis,生成報告generating reports和保存時序約束文件saving a timing constraints file。報告面板包含了設計的詳細時序信息,這些報告使用任務面板的命令動作來生成。
?????? 為了展示如何使用時序分析器,在本例中,我們通過一系列基本的步驟來獲得時序信息。首先,雙擊任務面板中的Create Timing Netlist命令來生成時序網表,該網表用來進行時序分析。然后雙擊Read SDC File來告訴分析器讀取一個Synopsys Design Contraints(SDC)文件并應用該約束文件來進行時序分析。設定約束可以讓分析器知道設計電路中的哪些部分滿足了時序要求哪些沒有滿足時序要求從而可能運行不正確。如果沒有進行約束則軟件會自動默認進行1GHz的時鐘信號約束。最后,雙擊Update Timing Netlist命令來使用指定的約束來查看電路中哪些路徑沒有滿足時序約束。一旦時序網表得到更新,就可以生成時序報告了。
圖7 TimeQuest任務和報告面板
?
5.2 時序分析報告
?????? 雙擊報告面板中需要生成的報告名稱來生成時序報告。例如,雙擊Setup Summary報告,將顯示如圖8所示的查看面板內容。
圖8 Setup Summary
?
?????? Setup Summary報告顯示了每個時鐘域的時序摘要。Setup Summary報告中的參數有slack和total negative slack(TNS),兩者結合在一起可以了解到我們的設計在每個時鐘域滿足了多少setup約束。在這個例子中,設計電路沒有達到默認的1GHz頻率約束,因為電路中最長的路徑延時比1GHz時鐘周期還要大2.497ns(從slack這一列可以看出)。我們可以獲取更詳細的時序信息,右鍵所給時鐘所在行然后選擇右鍵菜單中的選項Report Timing。如圖9所示。
圖9 彈出菜單選擇更查看更詳細的時序報告
?
?????? 選擇Report Timing后打開的新窗口如圖10所示。在這個窗口中有若干區域用來指定需要生成報告的數據。第一個區域是Clock區域,在這個區域中,我們可以指定需要報告的路徑的類別。更精確的說就是指定發出數據的時鐘信號到鎖存數據的時鐘信號。例如,在To clock和From clock選項中選擇名稱為clock的信號。這樣做將讓分析器僅報告寄存器到寄存器路徑。
圖10 時序報告生成窗口
?
?????? 第二個區域是目標區域targets field。目標區域更明確得指定設計電路中需要報告的特定路徑。我們可以在From和To字段中選擇我們感興趣的路徑的起始點和結束點。另外,我們也可以查看經過特定節點的路徑。在這個例子中,我們使From、To和Through這些地方留著空白不填,這樣分析器就會報告所有的指定時鐘路徑。
?????? 接下來的兩個區域是Analysis type和Paths區域。Analysis type區域用來指定分析的時序類型,比如說建立時間(setup)、保持時間(hold)、恢復時間(recovery)和移除時間(removal)。這些不同的時序分析類型都反映了設計電路中不同的時序特征。例如,建立時間分析可以看出在給定的時鐘約束下,數據到達寄存器的時間是否足夠早以至于寄存器有足夠的時間可以把數據正確的鎖存在寄存器中。Paths區域可以指定最多報告的路徑數量和包含在報告中的路徑最大允許的slack。在我們的例子中,選擇分析類型為Setup并選擇最多報告10條路徑,時序分析器將生成一份建立時間分析報告和顯示10條最大的負的slack路徑(違反時序約束的路徑)。
?????? 下一個設置區域output可以指定輸出的格式和報告的詳細程度。報告可以顯示在查看窗口或者文件中。在本例子中,我們采用默認的選項,即Detail level選擇Path only 并輸出在查看窗口中。窗口默認名字Setup:clock,該名字標識了報告的類型,在報告面板中我們也可以看到以該名字命名的報告。
?????? 最后一個區域是Tcl command區域。該區域顯示了用來生成所需報告的可執行命令。我們通常不需要編輯這個區域。單擊Report Timing按鈕可以生成報告,報告內容如圖11所示。
圖11 所給定的寄存器到寄存器路徑的詳細建立時間信息
?
?????? 圖11所示的時序報告由3個部分組成。報告的頂部的部分包含了含有時序信息的路徑列表。其中一列叫做slack顯示了信號達到目的寄存器所需要的不同時間的差額,也就是系統時鐘周期和信號實際達到時間的余量。如果slack的值為負,說明該路徑違反了我們的時序約束。在本例子中,期望的時鐘周期是1ns,一些路徑的延時超過了所要求數據到達時間2.497ns。單擊列表中的一條路徑,在查看面板的另外兩個部分中可以查看關于這條路徑的更詳細的時序分析信息。
?????? 查看面板的兩外兩個部分由圖表所組成。這些圖表顯示了路徑摘要、統計數值、數據路徑和波形圖。左手邊的部分默認顯示波形圖,波形圖可以直觀的解釋時序違規是怎樣發生的。右手邊的部分顯示了路徑所經過的元件和該元件的延時。
?????? 波形圖是理解一個電路的時序分析的有力工具。它包括指定路徑的數據延時和時鐘到達源寄存器和目的寄存器的延時。初看一眼,時序分析波形圖對熟悉的人來說非常直觀,但對一些陌生的人可能就不會這樣。這是因為顯示的時序信息與輸入信號出現在FPGA設備的輸入引腳的時間有關。例如,第一行顯示的時鐘信號出現在設備的引腳上,稍后它傳遞到源寄存器的時鐘輸入引腳。在圖12中我們展示了如何理解圖11的波形圖的信息。
圖12 理解指定寄存器到寄存器路徑的建立時間信息
?
?????? 圖中前3個波形顯示了時鐘信號從源寄存器到達目的寄存器所要求的約束時間是1ns。發動時鐘沿和鎖存時鐘沿在圖中用粗線表示。接下來的兩個波形顯示了同一時鐘信號達到源寄存器和目的寄存器的時間,即發動時鐘沿和鎖存時鐘沿的有效時刻。這兩個波形顯示了源寄存器發動數據和目的寄存器鎖存數據的時間。
?????? Data Arrival和Data Delay兩個波形顯示了信號從源寄存器傳播到目的寄存器的時間。注意到數據延時Data Delay是從寄存器的發動時鐘時刻Launch Clock開始計算的。倒數第2個波形叫做Data Required,該波形指示了數據被正確鎖存在目的寄存器中所要求的最大到達時間,這個時間已經把最后一行顯示的寄存器建立時間(uTsu)計算在內了。
?????? 從該波形圖中我們可以看到數據到達目的寄存器的時間滯后于時序約束的所需達到時間,因此,時序約束沒有滿足。一個負的傾斜值(slack)用來顯示時序違規。相反,正的slack則表示滿足時序約束。
?
5.3 在設計中建立時序約束
?????? TimeQuest可以通過Constraints菜單在你的設計的下一次編譯中應用指定的時序約束。指定時鐘約束,可以通過選擇菜單Constraint->Create Clock,將打開如圖13所示的窗口。
圖13 TimeQuest建立時鐘約束窗口
?
?????? 在這個窗口中,可以設定需要約束的時鐘信號。首先,在Clock name輸入框中為約束的時鐘信號起個名字,在本例中和電路的時鐘信號名字相同,都為clock。然后,在接下來的Period輸入框中設定約束的時鐘周期為4ns。接下來的Waveform edges區域中的Rising何Falling輸入框用來定義時鐘信號從0變到1和從1變到0的時刻。讓這些區域留著空白可以定義時鐘的上升沿時刻為0,下降沿的時刻是時鐘周期的一半。最后,在Targets區域中選擇信號clock,表示以上的時序約束應用于電路中名稱為clock的時鐘信號。完成后單擊Run按鈕來應用這些約束并雙擊Write SDC File命令保存約束文件到名為example.sdc的約束文件,如圖14所示。
圖14 保存時序約束文件
?
?????? 一旦保存了約束文件,就可以在Quartus II編譯的過程中告訴軟件使用該約束文件。如圖15所示,我們可以在TimeQuest timing analyzer settings窗口中添加需要使用的約束文件。添加了約束文件后,重新編譯工程,然后按照之前的步驟打開setup summary報告,這時,我們會發現時序約束已經達到要求。
圖15 添加約束文件到Quartus II工程中
?
6.包含有多時鐘信號的設計
?????? TimeQuest能夠分析含有多時鐘信號的電路,包括設計者在電路中使用多個不同時鐘,或者自動的支持比如SignalTap II邏輯分析儀或者JTAG接口的時鐘信號。讀者需要做這樣的設計時需要注意TimeQuest的使用可能會與上述的演示不同。設計中使用多個時鐘信號,在執行時序分析之前記得給每個時鐘信號作以約束。這樣做才可能使時序分析器產生于上面延時的相同的報告。
?
7.結論
?????? 本文展示了TimeQuest時序分析器的基本使用方法。在本例的簡單電路中,我們進行了時序分析的說明,并在電路中進行了基本的時序約束。在更大更復雜的設計中,TimeQuest提供更為強大的功能保證電路得以正確的約束。
總結
以上是生活随笔為你收集整理的使用TimeQuest时序分析器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Quartus II Timeques
- 下一篇: MFC中的DC,CDC和HDC