衡阳派盒市场营销有限公司

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

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

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

Verilog編碼中位寬不匹配的危害是什么?

ruikundianzi ? 來源:IP與SoC設(shè)計 ? 2023-09-19 10:14 ? 次閱讀

1、位寬不匹配

Verilog編碼中,常見的位寬不匹配錯誤,有賦值左右位寬不匹配(<=,=),比較位寬(>,<,>=,<=)不匹配,計算位寬(+,-)不匹配

位寬不匹配會導致綜合產(chǎn)生的網(wǎng)表與個人預期差異較大,導致功能不正確。VCS仿真能及時發(fā)現(xiàn)問題,但VCS仿真存在部分場景沒有覆蓋的問題,因此僅僅通過VCS仿真不容易發(fā)現(xiàn)問題。通過spyglass lint檢測可以發(fā)現(xiàn)所有位寬不匹配的情況。

2、位寬不匹配的危害

下文以比較位寬不匹配為例,講解位寬不匹配的危害。

注意:

1)在條件判斷中(if語句),不建議使用加減后結(jié)果直接進行比較,禁止進行加減運算后與位寬不匹配的數(shù)據(jù)/變量進行比較。

2)拼接符號中“{}”,不允許使用加減乘除等運算,綜合類軟件無法正確判斷數(shù)據(jù)運算結(jié)果位寬。數(shù)字運算必須先通過wire指定位寬,然后通過assign得到運算結(jié)果

錯誤案例1

如下代碼,代碼本意是:當cnt0與cnt1之和大于8的時候,count加1。

錯誤代碼中:

比較數(shù)據(jù)是4’h8,此時綜合完成后的網(wǎng)表中,會將cnt0與cnt1之和截位成4bit,再與4’h8比較,如果cnt0與cnt1之和為5’h10000,在此會截位為4’h0000,反而小于4’h8,與預期功能不符

正確代碼&推薦代碼中:

先定義:wire [4:0] cnt_add ; 指定cnt_add位寬為5bit,然后assign cnt_add = (cnt0+cnt1) ;最后與5’h8比較,因為通過wire指定了位寬,所以對于各類綜合軟件而言都不會發(fā)生截位,不會發(fā)生錯誤。

正確代碼&不推薦中

直接將4’h8修改為5’h8,也避免了cnt0+cnt1累加截位,但是spyglass lint會報warning,

不推薦。

reg  [3:0]   cnt0  ;
reg  [3:0]   cnt1  ;
reg  [4:0]   count ;
reg          ov_nc ;


//-------------case 1-----------------
//wrongcode錯誤代碼
always @ (posedge clk or negedge rst_n) 
    if(!rst_n)begin
    count     <= 5'b0 ;
    end 
    else if((cnt0+cnt1)>4'h8) //should be 5'h8
    begin
       {ov_nc, count} <= count +1'b1;
    end 
    
//right  ,but not recommended
always @ (posedge clk or negedge rst_n) 
    if(!rst_n)begin
    count     <= 5'b0 ;
    end 
    else if((cnt0+cnt1)>5'h8) //should be 5'h8
    begin
       {ov_nc, count} <= count +1'b1;


//right code and recommended  正確且推薦
wire [4:0] cnt_add ;
assign  cnt_add  = (cnt0+cnt1) ;


always @ (posedge clk or negedge rst_n) 
    if(!rst_n)begin
    count     <= 5'b0 ;
    end 
    else if(cnt_add >5'h8) // (cnt0+cnt1) is 5 bits
    begin
         {ov_nc, count} <= count +1'b1;
    end 
    
?錯誤案例2

NOTE: 拼接符號中“{}”,不允許使用加減乘除等運算,綜合類軟件無法正確判斷數(shù)據(jù)運算結(jié)果位寬。數(shù)字運算必須先通過wire指定位寬,然后通過assign得到運算結(jié)果。

錯誤代碼中:

{1'b0,(cnt0+cnt1)} ,在if語句()拼接符號中,綜合軟件無法識別 (cnt0+cnt1)應(yīng)該是多少bit,(cnt0+cnt1)可能會是5bit,也可能是4bit。

正確代碼&推薦代碼中

通過 wire [4:0] cnt_add ; assign cnt_add = (cnt0+cnt1) ; 指定了(cnt0+cnt1)之和為5bit,利用拼接符指定{1'b0,cnt_add}為6bit,然后與6bit的cnt2比較。

正確代碼&不推薦中

通過 wire [4:0] cnt_add ; assign cnt_add = (cnt0+cnt1) ; 指定了(cnt0+cnt1)之和為5bit,但是直接與6bit的cnt2比較,各類綜合軟件也會正確識別位寬,不會發(fā)生截位,但是spyglass lint會報warning,雖然功能正確,但是不推薦。

//-------------case 2-----------------//
 reg  [3:0]   cnt0  ;
 reg  [3:0]   cnt1  ;
 reg  [5:0]   cnt2  ;
 
 //wrong code
 always @ (posedge clk or negedge rst_n) 
    if(!rst_n)begin
    count     <= 5'b0 ;
    end 
    else if({1'b0,(cnt0+cnt1)}

編輯:黃飛

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

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110400
  • VCS
    VCS
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    9648

原文標題:錯誤案例:位寬不匹配錯誤

文章出處:【微信號:IP與SoC設(shè)計,微信公眾號:IP與SoC設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FIR compiler 7.2 數(shù)據(jù)輸入問題

    AD采集為14,但是在FIR IP核中將輸入設(shè)置為14,IP核數(shù)據(jù)輸入端依然為16。在之后的仿真階段會報
    發(fā)表于 09-07 10:32

    從設(shè)備讀取的idcode與bsdl文件的idcode匹配該怎么辦?

    我遇到了這個問題。信息:iMPACT:583 - '1':從設(shè)備讀取的idcode與bsdl的idcode匹配File.INFO:iMPACT:1578 - '1':設(shè)備IDCODE
    發(fā)表于 08-08 08:58

    帶字庫LCD12864寫數(shù)據(jù)時類型匹配

    現(xiàn)有帶字庫LCD12864(控制器ST7920)一塊,暫時只需實現(xiàn)往DDRAM寫數(shù)據(jù)來顯示漢字。根據(jù)技術(shù)手冊,對DDRAM的發(fā)數(shù)據(jù)操作是一次發(fā)一個字型(兩個字節(jié))的,但是12864數(shù)據(jù)口是8
    發(fā)表于 11-11 09:00

    怎么實現(xiàn)RocketIOTM GTP在串行高速接口中的設(shè)計?

    本文在對Virtex-5 RocketIOTM GTP進行了解的基礎(chǔ)上,針對串行高速接口開發(fā)匹配的問題,提出了一種
    發(fā)表于 05-28 06:21

    Verilog 變量的數(shù)值類型

    Verilog 變量的數(shù)值類型Verilog變量每個位(bit)的數(shù)值類型有四種,分別為1,0,Z,X。其中1,0比較明確就是高、低電
    發(fā)表于 08-04 09:42

    在SpinalHDL里有沒有什么好的方式實現(xiàn)一個接口轉(zhuǎn)換呢

    整數(shù)倍時進行數(shù)據(jù)填充(默認為false,但如果位不能整除則要設(shè)置為true)。其內(nèi)部設(shè)計實現(xiàn)思路并不難,匹配時輸入輸出直接相連,
    發(fā)表于 07-27 14:52

    嵌入式的計算

    ,然后將在擴大1即可。 有符號數(shù)的表示為最高位為符號,表示數(shù)值大小,所以計算完絕對值
    發(fā)表于 03-02 19:52

    JPEG2000平面編碼的存儲優(yōu)化方案設(shè)計

    本文通過對JPEG2000平面編碼器的存儲方案進行了分析,設(shè)計了一個高效的存儲結(jié)構(gòu)以及相應(yīng)的控制電路,設(shè)計采用verilog[4]語言描述。
    發(fā)表于 08-16 11:28 ?1561次閱讀
    JPEG2000<b class='flag-5'>中</b><b class='flag-5'>位</b>平面<b class='flag-5'>編碼</b>的存儲優(yōu)化方案設(shè)計

    verilog實現(xiàn)的RS204—188編碼

    這是verilog實現(xiàn)的RS204—188編碼,附帶測試文件
    發(fā)表于 01-20 18:24 ?28次下載

    華為的verilog編碼規(guī)范

    華為的verilog編碼規(guī)范
    發(fā)表于 11-01 08:41 ?41次下載
    華為的<b class='flag-5'>verilog</b><b class='flag-5'>編碼</b>規(guī)范

    Verilog設(shè)計如何匹配變量的

      在FPGA設(shè)計,我們經(jīng)常需要用寄存器來寄存某些“數(shù)量類”的變量,比如FIFO的深度啦、或者計數(shù)器的最大值啦;又或者輸入輸出信號也需要將用parameter參數(shù)化以便更好的調(diào)用等。
    的頭像 發(fā)表于 02-16 16:21 ?6925次閱讀
    <b class='flag-5'>Verilog</b>設(shè)計<b class='flag-5'>中</b>如何<b class='flag-5'>匹配</b>變量的<b class='flag-5'>位</b><b class='flag-5'>寬</b>

    淺談IC設(shè)計匹配危害

    在IC設(shè)計,硬復位用于配置寄存器和配置信號的跨時鐘模塊。即一個配置信號cfg_mac_mode是由硬復位驅(qū)動的,如果要同步到其他時鐘域,跨時鐘模塊需要使用硬復位,而不能使用軟復位。
    發(fā)表于 07-15 11:53 ?2602次閱讀

    Verilog編碼風格的建議

    良好的編碼風格,有助于代碼的閱讀、調(diào)試和修改。雖然 Verilog 代碼可以在保證語法正確的前提下任意編寫,但是潦草的編碼風格往往是一錘子買賣。
    的頭像 發(fā)表于 06-01 16:27 ?760次閱讀
    <b class='flag-5'>Verilog</b><b class='flag-5'>編碼</b>風格的建議

    二十進制編碼器及Verilog HDL描述 Verilog HDL程序的基本結(jié)構(gòu)及特點

    節(jié)通過硬件描述語言Verilog HDL對二十進制編碼器的描述,介紹Verilog HDL程序的基本結(jié)構(gòu)及特點。
    的頭像 發(fā)表于 08-28 09:54 ?3094次閱讀
    二十進制<b class='flag-5'>編碼</b>器及<b class='flag-5'>Verilog</b> HDL描述 <b class='flag-5'>Verilog</b> HDL程序的基本結(jié)構(gòu)及特點

    Verilog表達式的確定規(guī)則

    很多時候,Verilog中表達式的都是被隱式確定的,即使你自己設(shè)計了,它也是根據(jù)規(guī)則先確定位
    的頭像 發(fā)表于 10-22 15:41 ?631次閱讀
    <b class='flag-5'>Verilog</b>表達式的<b class='flag-5'>位</b><b class='flag-5'>寬</b>確定規(guī)則
    明升备用网站| 百家乐官网智能分析软| 百家乐官网真人赌场娱乐网规则| 百家乐娱乐皇冠世界杯| 百家乐缩水| 百家乐官网园会员注册| 百家乐网站新全讯网| 德州扑克牌型| 网上百家乐官网真的假| 如何打百家乐的玩法技巧和规则 | 百家乐赌博合作| tt线上娱乐城| 百家乐算牌皇冠网| 大发888备用网址| 永利百家乐官网的玩法技巧和规则| 老虎机的规律| 百家乐官网群号| 利来百家乐娱乐| 澳门百家乐官网走势图| 聚龍社百家乐的玩法技巧和规则 | 百家乐系统足球博彩通| 足球博彩| 百家乐类游戏平台| 威廉希尔| 澳门百家乐下路写法| 莱阳市| 三亚百家乐官网的玩法技巧和规则| 大发888娱乐游戏外挂| 百家乐官网这样赢保单分析 | 百家乐官网的玩法技巧和规则 | 百家乐官网桌布呢布| bet365备用主页器| 为什么百家乐官网玩家越来越多选择网上百家乐官网 | 破解百家乐官网公式| 大发888娱乐城首页| 德晋百家乐官网的玩法技巧和规则| 大发888 备用6222.co| 百家乐官网平注法规则| 澳门赌场| 百家乐破解版| 百家乐官网扎金花斗地主|