Vivado使用技巧(15):DRC設計規則檢查
在I/O和時鐘規劃之後,需要驗證設計以確保其滿足設計需求。Vivado提供了兩種驗證途徑:DRCs用來檢查設計違反規則情況;SSN分析用來估計轉換噪聲等級。本文將介紹DRCs,本系列第16篇介紹了SSN分析。
執行DRCs
DRCs可以說是管腳規劃中最嚴苛的一個步驟,DRCs會使用一套設計檢查項(通常稱作rule deck),來檢查當前設計是否違反這套規則。本文將以執行DRCs檢查I/O埠和時鐘邏輯為例。
開啟某一階段的設計,點選Tools->Report->Report DRC,或在Flow Navigator中直接點選Report DRC,彈出如下視窗:
Results name規定了顯示DRC結果的視窗名稱;Output file可以選中一個儲存DRC結果的檔案。Rule Decks中選擇用於DRCs的rule deck,一個rule deck便是一套設計規則。可以同時選擇多個rule deck,同一個規則也可以包含在多個rule deck中。
根據執行DRCs所處設計階段的不同(RTL設計、綜合後設計、實現後設計),可以選擇的Vivado提供的rule deck如下:
- default:Xilinx推薦的預設規則檢查;
- opt_checks:與邏輯優化相關的規則檢查;
- placer_checks:與佈局相關的規則檢查;
- router_checks:與佈線相關的規則檢查;
- bitstream_checks:與bit流生成相關的規則檢查;
- timing_checks:與時序約束相關的規則檢查;
- incr_eco_checks:與增量ECO設計修改的有效性相關的規則檢查;
- eco_checks:完成一個修改網表的ECO之後,與連通性和佈局相關的規則檢查。
選擇了rule deck之後,可以根據需要修改在Rules中使用的設計規則。執行DRCs的Tcl示例如下:
report_drc -ruledecks default -file C:/Data/DRC_rpt1.txt
如果不想使用Vivado提供的rule deck,可以建立一個使用者自定義的rule deck並新增到Rule Decks視窗中。該操作需要使用Tcl程式碼來完成,示例如下:
create_drc_ruledeck ruledeck_1
add_drc_checks -ruledeck ruledeck_1 [get_drc_checks {SYNTH-10 SYNTH-9 SYNTH-8 SYNTH-7 SYNTH-6 SYNTH-5 SYNTH-4}]
互動式DRCs
在I/O佈局過程中,Vivado IDE會執行一個基本的檢查以確保合理的引腳分配,但是隻有在實現後設計中的檢查才能確保最終引腳分配完全合法。管腳佈局時,互動式的I/O佈局例行檢查會報告常見的錯誤,這項功能可以在Package視窗或Device視窗的設定中通過Auto check I/O Placement核取方塊選擇是否開啟:
互動式DRCs的檢查規則如下:
- 阻止將高速收發器GTs的管腳賦值給噪聲敏感的管腳;
- 避免I/O標準違反設計規則;
- 確保I/O標準不會用於不支援它們的I/O Bank;
- 確保Bank沒有不相容的Vcc埠賦值;
- 確保需要Vref埠的Bank有可自由使用的Vref管腳;
- 確保全域性時鐘和區域性時鐘有合適的賦值;
- 確保差分I/O埠設定在合適的管腳上;
- 確保輸出管腳不會佈局在僅支援輸入的管腳上/
Vivado預設開啟互動式DRCs功能(互動式指的是使用者每執行操作後都執行相關檢查),Xilinx也推薦始終開啟這個功能。
檢視DRC違規資訊
如果找到了違規資訊,會開啟DRC視窗,如下所示:
違規資訊根據嚴重性分為4個等級,圖示顯示為不同的顏色:
- Advisory:提供設計過程中的普通狀態和反饋;
- Warning:約束和設定可能沒有按設計者意圖那樣實現,設計結果進行了一些優化;
- Critical warning:某些使用者輸入和約束將不會應用或沒有遵守最佳做法(必須解決此類問題,否則會在生成bit流過程中升級為error);
- Error:表明使設計結果不可用和沒有設計者干涉軟體無法自動解決的問題,會終止設計流程。
違規資訊所包含的內容一般比較長,可以單擊選中,在Violation Properties視窗中更方便地檢視資訊(如果屬性視窗沒有開啟,選中資訊右鍵選單中開啟):
Details資訊中給出了具體描述和解決方案,供設計者參考是否要修改設計。有的資訊會包含一些藍色連結,單擊可以在其它視窗中交叉探測到產生違規的物件。
報告Methodology
在Vivado 2016.1之後的版本中,將部分DRC檢查組合為一個新功能Report Methodology中,該功能執行一些簡化的規則檢查來驗證設計(比如邏輯對映),遵從UltraFast設計方法。開啟某一階段設計後,在Flow Navigator中點選此功能:
如果有設計違規會顯示在Methodology視窗,資訊檢視方式與DRC相同。最好的做法是在Elaborated Design階段就執行該功能,可以幫助設計者在早期發現設計問題,節約開發成本。
相關文章
- Vivado使用技巧(19):使用Vivado Simulator
- Vivado使用技巧(4):查詢功能詳解
- Vivado使用技巧(14):IO規劃方法詳解
- 改變遊戲規則的 API 設計審查的5個技巧遊戲API
- ACCESS 關於表設計中,驗證規則的使用技巧
- Vivado使用技巧(11):設定FPGA配置模式FPGA模式
- 新手入門:Linux使用技巧15則Linux
- Vivado使用技巧(27):RAM編寫技巧
- Vivado使用技巧(26):HDL編寫技巧
- Vivado使用技巧(17):建立IBIS模型模型
- Vivado使用技巧(6):Messages視窗管理
- Vivado使用技巧(29):約束功能概述
- Vivado使用技巧(20):Waveform功能詳解ORM
- Vivado使用技巧(18):模擬功能概述
- Vivado使用技巧(33):時序異常
- Vivado使用技巧(25):Block Synthesis技術BloC
- Vivado使用技巧(24):HDL/XDC中設定綜合屬性
- Vivado使用技巧(22):綜合策略與設定的選擇
- 接地設計基本規則
- Vivado使用技巧(9):COE檔案使用方法
- Vivado使用技巧(12):設定DCI與內部參考電壓
- Vivado使用技巧(3):Force Up-to-Date功能
- Vivado使用技巧(8):Core Container打包IP核AI
- Vivado使用技巧(34):路徑分割現象
- Vivado使用技巧(28):支援的Verilog語法
- 資料庫設計技巧14則資料庫
- Vivado使用技巧(5):屬性編輯器的使用
- Vivado使用技巧(30):使用時序約束嚮導
- SAP ATP可用性檢查中的可用性檢查規則的確定
- 如何使用SQL查詢檢視,Postico使用技巧分享~SQL
- vivado新增設計原始檔
- Vivado使用技巧(16):SSN轉換噪聲分析
- Vivado使用技巧(31):時鐘的約束方法
- Vivado使用技巧(23):綜合執行與OOC
- Vivado使用技巧(21):模擬中的Debug特性
- 程式碼靜態掃描規則——型別轉換檢查型別
- Vivado使用技巧(13):CSV檔案定義IO Ports
- Vivado使用技巧(32):IO延遲的約束方法