華爲FPGA設計高級技巧Xilinx篇---讀書筆記之二如何使用後端工具

2 如何使用後端工具算法

      本章節主要說明Xilinx的一些後端工具能爲咱們作什麼,在什麼狀況下咱們考慮使用這些工具。至於這些工具具體如何使用,能夠看Xilinx提供的相關文件。後端

2.1 佈局佈線工具

      佈局佈線是幹什麼的,我不用多說。我只想講講幾個值得注意的問題:佈局

2.1.1 設計前期(設計方案階段)對關鍵電路的處理性能

      一個設計可否成功,關鍵是在設計方案階段相關問題是否考慮完善,其中 一個很是重要的工做是肯定關鍵路徑(或者關鍵模塊 關鍵算法等)可否在芯片中實現,其實現的結果如何(如速度是否知足 面積是否太大等)spa

      所以,咱們要求你們在作方案時,要對全部的可能的關鍵路徑(或關鍵部分)心中有數,設計

      並且必定要在正式開始編代碼以前,要將這一部分的「評估代碼」 完成,並通過佈局佈線的檢驗,以考察其可實現性,從而對設計方案的風險有一個肯定的認識。資源

2.1.2 佈局佈線策略,兼談如何作第一次佈局佈線it

      一個設計想要成功完成佈局佈線,必需知足:class

      1. 設計規模在芯片容量限制以內

      2. 線資源等資源不能超過芯片現有資源

      3. 時序要知足要求

      據我觀察,在進行佈局佈線時,絕大部分設計者作法是:設定時鐘約束及必要的管腳約

束,選定器件,而後開始佈局佈線。這種作法在小規模設計時,通常能夠過。不過,當面對大型設計時,卻每每行不通,浪費設計時間。在這種狀況下,比較好的作法是:

      1.第一次佈線時,不加任何約束,或者放鬆時鐘約束。

      這麼作的目的是:確保我所選的器件是符合容量要求的;並快速提供一個參考結果。目前,咱們常常遇到佈線幾十個小時,仍然沒有結果的狀況。由於沒有結果,咱們也就沒法利用相關的工具進行分析,只能乾等;同時,也不知道這麼長時間沒結果,是佈線布不通呢,仍是資源不夠用。結果,白白浪費時間。

      2.在第一次佈線結果分析基礎上,適當增長約束條件,如時鐘約束。注意,時鐘約束要根據上一次分析結果肯定是否一步到位。

      約束條件若是設置很差,十分浪費時間,尤爲是對規模龐大的設計。所以,咱們的約束要恰當好處,即能發現關鍵路徑(不知足約束條件),又能較快的布出一個結果來。

      3.若是佈線結果仍不滿意,則應當努力找到儘量多的「放鬆」約束(TIGMulti-Cycle-Path等),同時,根據實際狀況,決定是否要進行設計修改。能夠嘗試「設計技巧」章節裏提到的各類手段。

      須要注意的是:約束文件(如ucf)只是一種微調做用,若要從根本上解決延時問題,應多從設計自己考慮。當時序實現與要求差異很大時,是不能依靠約束來解決問題。

2.1.3 正確看待map以後的資源佔用報告

      在使用Virtex系列進行FPGA設計時,常常發現map報告,說資源利用率已經到達100% 然而,真實狀況確實如此嗎?未必!

      咱們知道,slice內部包含LUT, Regsiter和快速進位鏈及其它快速性能電路。其中,對資源佔用影響最深的應當是LUTRegister。 所以。咱們在看報告時,應當看LUT佔用了多少,Register佔用了多少,固然,也應當看Block RAM佔用多少,時鐘資源佔用多少。這些東西,纔是咱們下決策時要考慮的因素。

      所以,咱們在估計一個設計是否能被某個器件裝下時,不能籠統地只看Slice使用情況。

2.2 FPGA Editor的做用

      必定要看「版圖 」,瞭解咱們的電路是如何實現的,如資源是否共享,特殊結構(如進位鏈等)是否利用等。

      請注意,咱們如今得出的經驗只是基於現有的器件和設計手段,未來狀況發生變化時,本文提到的一些所謂技巧可能要失靈,效果反而會更遭。所以,經過FPGA Editor查看電路實現形式,以確保「這就是我所想要的」同時還可檢驗之前的經驗是否還管用。

      一個比較好的習慣:在正式編寫代碼以前,對於本身不能肯定的東西,先寫一個「評估代碼」經綜合,佈局佈線,再經過FPGA Editor看一看該電路是否就是本身想要的。

      在設計前期 FPGA Editor對關鍵路徑論證很是有幫助。

2.3 FloorPlanner的做用

      FloorPlanner主要是用來人工place設計各部分在芯片中的位置,最終造成位置約束(ucfmfp格式)文件,以指導Place and Route。它便可一個module一個moduleplace,也可一個LUT一個LUTplace; 便可將設計所有place,也可部分place

      一般狀況下,咱們能夠用它來手工place關鍵路徑,以壓縮線延時。偶爾,能夠嘗試手工place一個關鍵模塊或者整個設計,不過,會常常遇到狀況反而變得更糟糕的現象。

2.4 TimingAnalyzer的做用

      TimingAnalyzer是一個靜態時序分析工具。實際上,在佈局佈線過程當中,佈局佈線工具已經根據約束文件進行時序分析工做了,並將一些基本的分析結果保存下來,供用戶使用。

      不過,佈局佈線工具只能根據約束文件進行時序分析,不夠靈活。當咱們想看一看其它路徑時序狀況,或者瞭解更多的未知足約束條件的其它路徑信息時,可經過TimingAnalyzer進行。

      因爲佈局佈線工具的時序分析報告內容比較簡單,當咱們想了解更多的信息時,例如分析到底有哪些路徑不知足某一約束條件,這些路徑的特色是什麼等,這時用TimingAnalyzer就比較方便。

      在設計前期對關鍵電路進行預分析 以及設計後期對關鍵路徑分析時 常常會用到TimingAnalyzer。

相關文章
相關標籤/搜索