0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

淺談寄存器被優(yōu)化的原因

sanyue7758 ? 來源:IC的世界 ? 2023-09-26 09:47 ? 次閱讀

在項目初期,在使用FPGA工具quartus或者vivado生成版本燒入開發(fā)板進行調(diào)試時(DC開啟優(yōu)化選項后同樣會優(yōu)化掉寄存器),我們有時會發(fā)現(xiàn)部分寄存器被優(yōu)化掉了,今天簡單聊聊被優(yōu)化的幾種情況。

1、寄存器被優(yōu)化的原因

目前鴿子發(fā)現(xiàn)寄存器被優(yōu)化的原因主要有兩種:

1)驅(qū)動寄存器的信號沒有驅(qū)動源

a. 至少有一個信號沒有驅(qū)動源,也可能是多個

2)寄存器負載是懸空的,包含如下場景

a. 寄存器的唯一負載時懸空

b. 寄存器的所有負載均懸空

部分場景下被優(yōu)化的問題很好排查,有些場景排查會比較麻煩,僅僅從信號連線上看都是正常的,無法通過肉眼快速發(fā)現(xiàn)問題,這時候需要去看綜合報告,找到問題的源頭。

2、案例--大量寄存器被優(yōu)化

如下圖所示,crm是復(fù)制產(chǎn)生時鐘復(fù)位的模塊,其中輸出clka/clka_rst_n給模塊a,其中輸出clkb/clkb_rst_n給模塊b。Soft_reset_n是clka_rst_n和clkb_rst_n的源頭之一。Soft_reset_n為0,則clka_rst_n/clkb_rst_n為0,處于復(fù)制狀態(tài)。Soft_reset_n是配置讀寫模塊CSR的一個可配置寄存器,其內(nèi)部偏移地址為0x60。

通過quartus/vivado查看網(wǎng)表結(jié)構(gòu)和資源利用率,我們發(fā)現(xiàn)模塊A和模塊B大量資源被優(yōu)化,不符合常理。經(jīng)過檢測發(fā)現(xiàn),所有信號連接均正常,沒有懸空,所有信號均存在負載。

經(jīng)過反復(fù)排查后發(fā)現(xiàn),CSR模塊被手動添加的Soft_reset_n寄存器地址分配在0x60,而CSR入口wr_addr[5:0]只有6bit,只能訪問0x40以內(nèi)的地址范圍,因此Soft_reset_n在實際網(wǎng)表中是不存在的,導(dǎo)致clka_rst_n/clkb_rst_n都沒有驅(qū)動源,因此模塊A和模塊B大量資源被優(yōu)化。

3、推薦檢查方法

在進行FPGA版本調(diào)試之前,首先進行spyglass lint檢查 或者檢查quartus/vivado產(chǎn)生的綜合報告,檢查是否存在如下warning:

信號沒有驅(qū)動

信號懸空

把這些warning確認完后再進行版本調(diào)試。

4、簡單的規(guī)律

大量模塊邏輯被優(yōu)化,重點看時鐘復(fù)位

少量模塊邏輯被優(yōu)化,重點看資源獨享的驅(qū)動信號

End

原審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21620

    瀏覽量

    601231
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119814
  • CSR
    CSR
    +關(guān)注

    關(guān)注

    3

    文章

    117

    瀏覽量

    69576
  • 優(yōu)化
    +關(guān)注

    關(guān)注

    0

    文章

    220

    瀏覽量

    23856
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    804

    瀏覽量

    66222

原文標題:啥?我的寄存器被被優(yōu)化掉了!

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    寄存器是什么?怎么操作寄存器點亮LED燈?

    寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發(fā)組成。在集成電路設(shè)計中,寄存器可分為電路內(nèi)部使用的寄存器和充當內(nèi)外部接口的寄存器這兩
    的頭像 發(fā)表于 07-21 16:59 ?3817次閱讀
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>點亮LED燈?

    聊聊寄存器優(yōu)化的2種情況

    在項目初期,在使用FPGA工具quartus或者vivado生成版本燒入開發(fā)板進行調(diào)試時(DC開啟優(yōu)化選項后同樣會優(yōu)化寄存器),我們有時會發(fā)現(xiàn)部分寄存器
    的頭像 發(fā)表于 09-08 15:09 ?2095次閱讀
    聊聊<b class='flag-5'>寄存器</b><b class='flag-5'>被</b><b class='flag-5'>優(yōu)化</b>的2種情況

    寄存器與移位寄存器

    寄存器與移位寄存器 寄存器是用來寄存數(shù)碼的邏輯部件,所以必須具備接收和寄存數(shù)碼的功能。任何一種觸發(fā)
    發(fā)表于 03-12 15:19 ?59次下載

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內(nèi)的組成部分。寄存器是有限存貯容量
    發(fā)表于 03-08 14:26 ?2.2w次閱讀

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思 數(shù)據(jù)寄存器數(shù)據(jù)寄存器包括累加AX、基址寄存器BX、計數(shù)
    發(fā)表于 03-08 14:38 ?1.2w次閱讀

    移位寄存器,移位寄存器是什么意思

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    發(fā)表于 03-08 14:50 ?1.7w次閱讀

    基于FPGA的可變長度移位寄存器優(yōu)化設(shè)計

    本文以最大可變長度為N、寬度為1bit的移位寄存器為模型,討論如何從結(jié)構(gòu)上優(yōu)化可變長度移位寄存器和有效的FPGA實現(xiàn)。至于寬度不為1bit的情況,可以此類推
    發(fā)表于 07-23 10:55 ?5385次閱讀
    基于FPGA的可變長度移位<b class='flag-5'>寄存器</b><b class='flag-5'>優(yōu)化</b>設(shè)計

    寄存器與移位寄存器

    寄存器與移位寄存器:介紹寄存器原理和移位寄存器的原理及實現(xiàn)。
    發(fā)表于 05-20 11:47 ?0次下載

    淺談ARM寄存器組織

    3.3 ARM寄存器組織 ARM處理有37個32位長的寄存器。 1個用作PC(Program Counter)。 1個用作CPSR(Current Program Status Register
    發(fā)表于 10-18 13:26 ?1次下載
    <b class='flag-5'>淺談</b>ARM<b class='flag-5'>寄存器</b>組織

    為什么寄存器比內(nèi)存快_原因是這個

    本文開始介紹了寄存器特點、分類以及寄存器的工作原理,其次介紹了內(nèi)存的容量、大小與選購方法,最后闡述了寄存器比內(nèi)存更快的原因。
    發(fā)表于 04-11 09:09 ?7009次閱讀
    為什么<b class='flag-5'>寄存器</b>比內(nèi)存快_<b class='flag-5'>原因</b>是這個

    寄存器的特性和四大種類

    寄存器是由觸發(fā)組成的,一個觸發(fā)是一個一位寄存器。多個觸發(fā)就可以組成一個多位的寄存器。由于
    的頭像 發(fā)表于 06-19 16:44 ?1.9w次閱讀
    <b class='flag-5'>寄存器</b>的特性和四大種類

    AD轉(zhuǎn)換寄存器設(shè)置

    AD轉(zhuǎn)換寄存器設(shè)置AD轉(zhuǎn)換寄存器設(shè)置AD轉(zhuǎn)換寄存器設(shè)置
    發(fā)表于 11-10 17:36 ?16次下載
    AD轉(zhuǎn)換<b class='flag-5'>寄存器</b>設(shè)置

    ARM通用寄存器及狀態(tài)寄存器詳解

    筆者來聊聊ARM通用寄存器以及狀態(tài)寄存器的認識與理解。
    的頭像 發(fā)表于 01-06 14:58 ?6849次閱讀

    簡述RAL寄存器模型基礎(chǔ)

    ,以及如何將寄存器模型集成到驗證環(huán)境中。篇幅原因,將在下一篇文章再給出寄存器模型的操作圖鑒(前后門訪問API),以及寄存器覆蓋率的收集。
    的頭像 發(fā)表于 02-14 16:55 ?2649次閱讀
    簡述RAL<b class='flag-5'>寄存器</b>模型基礎(chǔ)

    寄存器分為基本寄存器和什么兩種

    寄存器是計算機中用于存儲數(shù)據(jù)的高速存儲單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴展寄存器兩種類型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?1012次閱讀