2 如何使用後端工具算法
本章節主要說明Xilinx的一些後端工具能爲咱們作什麼,在什麼狀況下咱們考慮使用這些工具。至於這些工具具體如何使用,能夠看Xilinx提供的相關文件。後端
2.1 佈局佈線工具
佈局佈線是幹什麼的,我不用多說。我只想講講幾個值得注意的問題:佈局
2.1.1 設計前期(設計方案階段)對關鍵電路的處理性能
一個設計可否成功,關鍵是在設計方案階段相關問題是否考慮完善,其中 一個很是重要的工做是肯定關鍵路徑(或者關鍵模塊 關鍵算法等)可否在芯片中實現,其實現的結果如何(如速度是否知足 面積是否太大等)。spa
所以,咱們要求你們在作方案時,要對全部的可能的關鍵路徑(或關鍵部分)心中有數,設計
並且必定要在正式開始編代碼以前,要將這一部分的「評估代碼」 完成,並通過佈局佈線的檢驗,以考察其可實現性,從而對設計方案的風險有一個肯定的認識。資源
2.1.2 佈局佈線策略,兼談如何作第一次佈局佈線it
一個設計想要成功完成佈局佈線,必需知足:class
1. 設計規模在芯片容量限制以內
2. 線資源等資源不能超過芯片現有資源
3. 時序要知足要求
據我觀察,在進行佈局佈線時,絕大部分設計者作法是:設定時鐘約束及必要的管腳約
束,選定器件,而後開始佈局佈線。這種作法在小規模設計時,通常能夠過。不過,當面對大型設計時,卻每每行不通,浪費設計時間。在這種狀況下,比較好的作法是:
1.第一次佈線時,不加任何約束,或者放鬆時鐘約束。
這麼作的目的是:確保我所選的器件是符合容量要求的;並快速提供一個參考結果。目前,咱們常常遇到佈線幾十個小時,仍然沒有結果的狀況。由於沒有結果,咱們也就沒法利用相關的工具進行分析,只能乾等;同時,也不知道這麼長時間沒結果,是佈線布不通呢,仍是資源不夠用。結果,白白浪費時間。
2.在第一次佈線結果分析基礎上,適當增長約束條件,如時鐘約束。注意,時鐘約束要根據上一次分析結果肯定是否一步到位。
約束條件若是設置很差,十分浪費時間,尤爲是對規模龐大的設計。所以,咱們的約束要恰當好處,即能發現關鍵路徑(不知足約束條件),又能較快的布出一個結果來。
3.若是佈線結果仍不滿意,則應當努力找到儘量多的「放鬆」約束(TIG,Multi-Cycle-Path等),同時,根據實際狀況,決定是否要進行設計修改。能夠嘗試「設計技巧」章節裏提到的各類手段。
須要注意的是:約束文件(如ucf)只是一種微調做用,若要從根本上解決延時問題,應多從設計自己考慮。當時序實現與要求差異很大時,是不能依靠約束來解決問題。
2.1.3 正確看待map以後的資源佔用報告
在使用Virtex系列進行FPGA設計時,常常發現map報告,說資源利用率已經到達100% 然而,真實狀況確實如此嗎?未必!
咱們知道,slice內部包含LUT, Regsiter和快速進位鏈及其它快速性能電路。其中,對資源佔用影響最深的應當是LUT和Register。 所以。咱們在看報告時,應當看LUT佔用了多少,Register佔用了多少,固然,也應當看Block RAM佔用多少,時鐘資源佔用多少。這些東西,纔是咱們下決策時要考慮的因素。
所以,咱們在估計一個設計是否能被某個器件裝下時,不能籠統地只看Slice使用情況。
2.2 FPGA Editor的做用
必定要看「版圖 」,瞭解咱們的電路是如何實現的,如資源是否共享,特殊結構(如進位鏈等)是否利用等。
請注意,咱們如今得出的經驗只是基於現有的器件和設計手段,未來狀況發生變化時,本文提到的一些所謂技巧可能要失靈,效果反而會更遭。所以,經過FPGA Editor查看電路實現形式,以確保「這就是我所想要的」同時還可檢驗之前的經驗是否還管用。
一個比較好的習慣:在正式編寫代碼以前,對於本身不能肯定的東西,先寫一個「評估代碼」經綜合,佈局佈線,再經過FPGA Editor看一看該電路是否就是本身想要的。
在設計前期 FPGA Editor對關鍵路徑論證很是有幫助。
2.3 FloorPlanner的做用
FloorPlanner主要是用來人工place設計各部分在芯片中的位置,最終造成位置約束(ucf或mfp格式)文件,以指導Place and Route。它便可一個module一個module的place,也可一個LUT一個LUT的place; 便可將設計所有place,也可部分place。
一般狀況下,咱們能夠用它來手工place關鍵路徑,以壓縮線延時。偶爾,能夠嘗試手工place一個關鍵模塊或者整個設計,不過,會常常遇到狀況反而變得更糟糕的現象。
2.4 TimingAnalyzer的做用
TimingAnalyzer是一個靜態時序分析工具。實際上,在佈局佈線過程當中,佈局佈線工具已經根據約束文件進行時序分析工做了,並將一些基本的分析結果保存下來,供用戶使用。
不過,佈局佈線工具只能根據約束文件進行時序分析,不夠靈活。當咱們想看一看其它路徑時序狀況,或者瞭解更多的未知足約束條件的其它路徑信息時,可經過TimingAnalyzer進行。
因爲佈局佈線工具的時序分析報告內容比較簡單,當咱們想了解更多的信息時,例如分析到底有哪些路徑不知足某一約束條件,這些路徑的特色是什麼等,這時用TimingAnalyzer就比較方便。
在設計前期對關鍵電路進行預分析 以及設計後期對關鍵路徑分析時 常常會用到TimingAnalyzer。