在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

縮短Vivado編譯時間之審視時序約束描述

FPGA技術驛站 ? 來源:FPGA技術驛站 ? 2023-02-23 09:03 ? 次閱讀

在描述時序約束時,一個重要的原則是確保約束簡潔高效。簡潔高效意味著約束只針對指定的對象,即約束對應的對象的個數(通常這些對象由命令get_pins、get_cells、get_nets、get_ports或get_clocks獲?。┍M可能少,少的同時還要足夠的精確,能夠安全地覆蓋到期望的時序路徑。

既不會出現遺漏某些對象也不會出現包含了不期望的對象,兩者都會造成工具無法對相關路徑按照指定要求進行時序分析,從而造成設計“偽收斂”。這通常會出現在使用-from、-to或-through等選項的約束中,例如:

set_clock_groups,set_false_path

set_max_delay,set_multicycle_path

等時序例外約束。

Vivado提供了一些方法用于分析時序例外約束的有效性,其中之一就是用命令report_exceptions生成時序例外報告。這里我們首先介紹一下這個命令的使用方法。 report_exceptions -scope_override

選項-scope_override可用于查看是否存在作用于某個子模塊的約束(約束的作用域僅限于該子模塊)被頂層約束部分或者全部覆蓋。注意這里僅限于子模塊約束與頂層模塊約束之間的覆蓋情況,而不會報告不同子模塊之間的約束覆蓋情況。借助此選項查看IP的約束是否被用戶約束所覆蓋將變得非常容易。如下圖所示,我們可以在生成報告的Status列發現IP約束被用戶約束覆蓋。

99ebad40-b30d-11ed-bfe3-dac502259ad0.png9a02bd00-b30d-11ed-bfe3-dac502259ad0.png

report_exceptions -coverage

選項-coverage可查看約束的覆蓋率,其描述形式是時序例外約束所施加的路徑的起點或終點的pin個數與-from/-through/-to選項所獲得的pin的個數的百分比。我們看一個例子,如下圖所示報告。其中的紅色方框可以看到這里使用的是set_max_delay,-from是通過get_cells獲得的,因為只有1個cell且時序路徑的起點是觸發器的時鐘端口,所以From的覆蓋率就是100%(觸發器只有1個時鐘端口)。

-to也是通過get_cells獲取,獲取到1個cell,這個cell也是觸發器,其數據端口是該約束對應的時序路徑的終點。但實際上,觸發器除了數據端口之外,還有時鐘使能端口/復位端口,所以To的覆蓋率就是1/3也就是這里的33.33%。顯然,覆蓋率越高表明我們描述得越精確。

9a2bd988-b30d-11ed-bfe3-dac502259ad0.png

report_exceptions -ignored

選項-ignored可報告出設計中被完全覆蓋的約束(Totallyoverridden),需要注意的是不會報告部分被覆蓋的約束(PartiallyOverridden)。下圖中可以看到set_multicycle_path被set_max_delay所覆蓋。 9a5a1a28-b30d-11ed-bfe3-dac502259ad0.png ? 9a795a00-b30d-11ed-bfe3-dac502259ad0.png

report_exceptions -ignored_objects

選項-ignored_objects可報告出被忽略的起點或終點。之所以被忽略是因為這些路徑不存在,例如下圖中觸發器的D端口恒接地,這樣在使用set_false_path -to時,-to的值如果是通過get_pins獲取到該觸發器的D端口, 那么這條路徑的終點就會被工具忽略,從而這條約束也就無效。

9a8e606c-b30d-11ed-bfe3-dac502259ad0.png

從編譯時間的角度看,描述約束時越精確越好。一個事實是在網表中pin的個數通常是cell個數的幾倍甚至幾十倍,因此直接搜索pins會比較耗時,Xilinx推薦的方法是利用cell和pin的關系,先找到cell再找到對應的pin,例如:需要對下圖所示的兩個觸發器對應的時序路徑進行FalsePath約束,采用了三種方式。顯然,方案1和方案2會覆蓋到不期望的路徑,方案3最為精確,耗時也較少。

9aaa02e0-b30d-11ed-bfe3-dac502259ad0.png9ac93480-b30d-11ed-bfe3-dac502259ad0.png

尤其是當get_pins命令使用了通配符時,先get_cells再get_pins更為高效,如下圖所示方式。

9af1e6a0-b30d-11ed-bfe3-dac502259ad0.png

另外,在約束中避免使用all_registers,該命令會返回設計中的所有觸發器。如果確需用all_registers,那么可通過選項-clock限定作用域,或者用get_clocks取代,如下圖所示。 9b1faae0-b30d-11ed-bfe3-dac502259ad0.png

時序約束的描述順序對編譯時間也有很大影響。當時序約束被加載到內存時,時序引擎會對每條約束進行驗證。對于可能存在問題的約束,時序引擎會打印出相關的信息。一些約束可能會導致部分時序數據庫無效,還有一些約束可能需要更新時序數據庫以便正常運行。

例如,MMCM自動生成的時鐘若頻率或相位發生了改變,那么用到這個時鐘的相關約束就需要更新。交織的時序約束以及影響到時序數據庫的約束會對編譯時間產生較大影響。如下表格顯示了會對時序數據庫產生影響的一些Tcl命令。

9b457914-b30d-11ed-bfe3-dac502259ad0.png

其中最為耗時的描述方式是同時使用了set_disable_timing和all_fanin或all_fanout,如下圖所示。

9b6c51ba-b30d-11ed-bfe3-dac502259ad0.png

根據上述表格,從編譯時間的角度來看,最優的約束描述順序是:

(1)set_disable_timing,

set_case_analysis,

set_external_delay

(2)影響時序數據庫的約束如create_clock

(3)不需要更新時序數據庫的約束,例如

set_max_delay 我們看一個案例,如下圖所示:代碼第3至第10行為原始約束順序,這里將set_disable_timing和set_case_analysis放在了create_clock之后。

代碼第14行至第20行為推薦的約束順序,可以看到先描述set_disable_timing,之后是set_case_analysis,然后才是create_clock,同時將set_max_delay放在了最后。

9b853518-b30d-11ed-bfe3-dac502259ad0.png








審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • TCL
    TCL
    +關注

    關注

    10

    文章

    1732

    瀏覽量

    88704
  • 觸發器
    +關注

    關注

    14

    文章

    2000

    瀏覽量

    61225
  • PIN
    PIN
    +關注

    關注

    1

    文章

    305

    瀏覽量

    24342
  • Vivado
    +關注

    關注

    19

    文章

    813

    瀏覽量

    66675

原文標題:縮短Vivado編譯時間(6):審視時序約束

文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何縮短Vivado的運行時間

    Vivado Implementation階段,有時是有必要分析一下什么原因導致運行時間(runtime)過長,從而找到一些方法來縮短運行時間
    的頭像 發表于 05-29 14:37 ?1.4w次閱讀
    如何<b class='flag-5'>縮短</b><b class='flag-5'>Vivado</b>的運行<b class='flag-5'>時間</b>

    詳細解析vivado約束時序路徑分析問題

    時序不滿足約束,會導致以下問題: 編譯時間長的令人絕望 運行結果靠運氣時對時錯 導致時序問題的成因及其發生的概率如下表: 由上表可見,造成
    的頭像 發表于 11-29 10:34 ?8749次閱讀

    VIVADO時序約束及STA基礎

    時序約束的目的就是告訴工具當前的時序狀態,以讓工具盡量優化時序并給出詳細的分析報告。一般在行為仿真后、綜合前即創建基本的時序
    的頭像 發表于 03-11 14:39 ?9803次閱讀

    FPGA主時鐘約束詳解 Vivado添加時序約束方法

    在FPGA設計中,時序約束的設置對于電路性能和可靠性都至關重要。在上一篇的文章中,已經詳細介紹了FPGA時序約束的基礎知識。
    發表于 06-06 18:27 ?1.1w次閱讀
    FPGA主時鐘<b class='flag-5'>約束</b>詳解 <b class='flag-5'>Vivado</b>添加<b class='flag-5'>時序</b><b class='flag-5'>約束</b>方法

    FPGA時序約束衍生時鐘約束和時鐘分組約束

    在FPGA設計中,時序約束對于電路性能和可靠性非常重要。在上一篇的文章中,已經詳細介紹了FPGA時序約束的主時鐘約束。
    發表于 06-12 17:29 ?2789次閱讀

    FPGA時序約束建立時間和保持時間

    FPGA中時序約束是設計的關鍵點之一,準確的時鐘約束有利于代碼功能的完整呈現。進行時序約束,讓軟件布局布線后的電路能夠滿足使用的要求。
    發表于 08-14 17:49 ?1480次閱讀
    FPGA<b class='flag-5'>時序</b><b class='flag-5'>約束</b><b class='flag-5'>之</b>建立<b class='flag-5'>時間</b>和保持<b class='flag-5'>時間</b>

    時序約束資料包

    、Vivado基本操作流程2、時序基本概念3、時序基本約束和流程4、Baselining時序約束
    發表于 08-01 16:45

    時序約束資料包】培訓課程Timing VIVADO

    維持嗎? 1、Vivado基本操作流程 2、時序基本概念 3、時序基本約束和流程 4、Baselining時序
    發表于 08-06 15:08 ?547次閱讀

    講述增量編譯方法,提高Vivado編譯效率

    當RTL代碼修改較少時,使用增量編譯功能可以提高工程的編譯速度,Incremental Compile增量編譯Vivado提供的一項高階功能。目的旨在當設計微小的改變時,重用綜合和布
    的頭像 發表于 01-22 17:27 ?1w次閱讀
    講述增量<b class='flag-5'>編譯</b>方法,提高<b class='flag-5'>Vivado</b><b class='flag-5'>編譯</b>效率

    FPGA時序約束的建立和保持時間方法

    首先來看什么是時序約束,泛泛來說,就是我們告訴軟件(Vivado、ISE等)從哪個pin輸入信號,輸入信號要延遲多長時間,時鐘周期是多少,讓軟件PAR(Place and Route)
    的頭像 發表于 01-28 17:34 ?3811次閱讀
    FPGA<b class='flag-5'>時序</b><b class='flag-5'>約束</b>的建立和保持<b class='flag-5'>時間</b>方法

    Vivado進行時序約束的兩種方式

    上面我們講的都是xdc文件的方式進行時序約束,Vivado中還提供了兩種圖形界面的方式,幫我們進行時序約束
    的頭像 發表于 03-08 17:17 ?2w次閱讀
    <b class='flag-5'>Vivado</b>進行<b class='flag-5'>時序</b><b class='flag-5'>約束</b>的兩種方式

    如何在Vivado中添加時序約束

    前面幾篇文章已經詳細介紹了FPGA時序約束基礎知識以及常用的時序約束命令,相信大家已經基本掌握了時序約束
    的頭像 發表于 06-23 17:44 ?2424次閱讀
    如何在<b class='flag-5'>Vivado</b>中添加<b class='flag-5'>時序</b><b class='flag-5'>約束</b>

    如何在Vivado中添加時序約束呢?

    今天介紹一下,如何在Vivado中添加時序約束,Vivado添加約束的方法有3種:xdc文件、時序
    的頭像 發表于 06-26 15:21 ?4237次閱讀
    如何在<b class='flag-5'>Vivado</b>中添加<b class='flag-5'>時序</b><b class='flag-5'>約束</b>呢?

    Vivado綜合階段什么約束生效?

    Vivado綜合默認是timing driven模式,除了IO管腳等物理約束,建議添加必要的時序約束,有利于綜合邏輯的優化,同時綜合后的design里面可以評估
    的頭像 發表于 07-03 09:03 ?720次閱讀

    淺談Vivado編譯時間

    隨著FPGA規模的增大,設計復雜度的增加,Vivado編譯時間成為一個不可回避的話題。尤其是一些基于SSI芯片的設計,如VU9P/VU13P/VU19P等,布局布線時間更是顯著增加。當
    的頭像 發表于 09-18 10:43 ?1076次閱讀
    淺談<b class='flag-5'>Vivado</b><b class='flag-5'>編譯</b><b class='flag-5'>時間</b>
    主站蜘蛛池模板: 国产美女久久久久| 在线观看免费视频一区| 天天摸夜夜摸爽爽狠狠婷婷97| 五月激情站| 亚洲国产成人久久99精品| 国产欧美乱码在线看| 农村妇女色又黄一级毛片卡| 免费黄色国产视频| 狠狠色狠色综合曰曰| 艹久久| 天天做天天爱天天一爽一毛片 | 国产手机看片| 粉嫩尤物在线456| 99pao强力打造免费高清色| 亚洲 [12p]| 一级做a爱片特黄在线观看免费看| 欧美极品另类xxx| 天天爽夜夜爽一区二区三区| 天天看天天做| 国内自拍2021| 在线一区二区观看| 在线免费观看视频你懂的| 欧美亚洲h在线一区二区| 中文字幕有码在线视频| 特级毛片aaa免费版| 免费高清一级欧美片在线观看| 生活片毛片| 色资源窝窝全色| 美女黄页免费| 在线资源站| 久久dvd| 高清成年美女xx免费网站黄| tube日本xxxx69| 一级a爰片久久毛片| 欧美精品啪啪| 成人a毛片在线看免费全部播放| 好大好硬好长好爽a网站| 亚洲午夜在线视频| 2021久久天天躁狠狠躁夜夜| 狠狠色噜噜狠狠狠狠97老肥女| 日本不卡一区二区三区视频|