精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

assign和signed的聯合背刺事件

冬至子 ? 來源:芯時代青年 ? 作者:尼德蘭的喵 ? 2023-12-04 11:33 ? 次閱讀

沒想到啊沒想到啊,有一天會被濃眉大眼的assign背刺!想當年在always消失術里,在X態分析里,在xprop平替策略里,把assign捧的這么高,優點說了800多項,然后今天一仿真出bug了?!

還有有符號數和無符號數,我都吹出去了已經大成大成了,這還能出錯?!

萬事皆有可能,于是就出現了這個事。

事情的根源簡化完就是下面這個語法,當sel為0時輸出i_a高位補零的右移結果(相當于視i_a為無符號數),sel為1時輸出i_a高位補符號位的輸出結果相當于視i_a為有符號數):

//test
wire [31:0]i_a = 32'hff00_0000;
wire       sel = 1'b1;


wire [31:0]en0     = (sel == 1'b0) ? i_a > >> 8 : 
                                     $signed(i_a) > >> 8;

wire [31:0]en1_mid = $signed(i_a) > >> 8;
wire [31:0]en1     = (sel == 1'b0) ? i_a > >> 8 : en1_mid;

好,大家先看著這en0和en1的值。

en0和en1的值分別是啥呢?

圖片

en0 = 32'h00ff_0000;

en1 = 32'hffff_0000;

問題出在哪呢?前面咱們總結過:有符號數和無符號數運算,結果為無符號數。這句話不太嚴謹,應該完善為:有符號數和無符號數運算,所有的運算數會被視為無符號數,結果為無符號數。

因為en0運算公式中,有符號數和無符號數混合運算了,有符號數和無符號數混合時會自動將所有的變量視為無符號數進行運算,而這個混合運算很難發現:

wire [31:0]en0     = (sel == 1'b0) ? i_a > >> 8 : $signed(i_a) > >> 8;

對,i_a >>> 8是個無符號數的運算!/(ㄒoㄒ)/~~所以帶著signed(i_a) >>> 8也變成了無符號數的運算。所以說如果把signed(i_a) >>> 8單提出來先算好,再參與選擇邏輯就是預期的結果了。

那么最后一個小問題,選擇邏輯參與不參與這個有符號數和無符號數的爭端呢?不參與,比如代碼改成這樣:

wire [31:0]en0     = (sel == 1'b0) ? $signed(i_a > >> 8) : $signed(i_a) > >> 8;

我把前面的運算結果通過$signed擴了一下,然后再仿真:

圖片

這說明了兩個問題:

1.選擇邏輯沒有參與到有符號數和無符號數的判定中;

2.判定時signed(i_a) >>> 8,看的是同一級別的其他運算項的符號屬性,比如此時他看的是signed(...);

再改一下就又回去了:

wire [31:0]en0     = (sel == 1'b0) ? $signed(i_a > >> 8) + 1'b1 : $signed(i_a) > >> 8;

圖片

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

    關注

    14

    文章

    1016

    瀏覽量

    83635
收藏 人收藏

    評論

    相關推薦

    ALLEGRO畫銅皮時可否自動ASSIGN NET

    在ALLEGRO中畫SHAPE時需要再ASSIGN給它NET,這樣感覺不太方便,而且ASSIGN NET需要在右鍵選項很下面,感覺效率很低。不知ALLEGRO中可否做到象PROTEL 那樣,畫銅皮到器件上時,能自動附上網絡屬性呢?這樣我就可以省很多時間了咯。
    發表于 03-31 06:52

    typedef volatile signed short什么意思

    typedef volatile signed short什么意思,求求
    發表于 07-18 11:58

    wire 和 assign的 區別 ---求助

    regrst_nr2;wirelocked; (1)wire sysrst_nr0= rst_nr2 & locked; (2)assign sysrst_nr0= rst_nr2 & locked;上面 兩個賦值 一樣嗎,有區別嗎
    發表于 02-20 10:59

    資料下載:HDL中的unsigned與signed

    unsigned與signed:想必大家在C語言是經常用到,可不知HDL語言中的unsigned與signed是否常用羅!其含義與C語言中的意思無異,區別主要是取值范圍。unsigned
    發表于 07-02 07:59

    HDL語言中的unsigned與signed的主要區別是什么

    unsigned是什么意思?signed是什么意思?HDL語言中的unsigned與signed的主要區別是什么?
    發表于 09-24 07:02

    -靠-巴倫測試電路圖

    -靠-巴倫測試電路圖 用背靠背的方法來得到巴倫插入損耗的特性值圖7 是
    發表于 07-23 11:43 ?2875次閱讀
    <b class='flag-5'>背</b>-靠-<b class='flag-5'>背</b>巴倫測試電路圖

    什么是DLP投?和液晶投有何區別?

    什么是DLP投?和液晶投有何區別? 相信曾在一段時間里,你耳邊經常聽到、媒體上經??吹?投電視"一詞,或許你正在每天都在使用它。
    發表于 02-06 11:48 ?3193次閱讀

    投電視,投電視工作原理是什么?

    投電視,投電視工作原理是什么? 一、何為投電視  顧名思義,"投"就是背后投影的電視機。一種假借投影和反射原理,
    發表于 03-24 11:59 ?1.6w次閱讀

    舌診圖像點和瘀點的識別與提取

    計算機舌診系統中,點和瘀血點是重要的舌象?;诎唿c檢測、支持向量機( SVM)和K均值聚類算法,提出了對舌診圖像中點和瘀點的識別及提取方法。首先利用SimpleBlobDetector斑點
    發表于 11-20 11:34 ?4次下載
    舌診圖像點<b class='flag-5'>刺</b>和瘀點的識別與提取

    投電視歷史_投電視的應用領域

    本文首先闡述了投電視的歷史。其次介紹了投電視的優勢,最后介紹了投電視的應用領域。
    發表于 09-14 16:55 ?3114次閱讀

    投電視的安裝方法_投電視的保養維護

    本文主要闡述了投電視的安裝方法及投電視的保養維護。
    發表于 09-15 16:49 ?2934次閱讀

    專業游戲手機”iQOO Neo5開始首次發售

    iQOO正式推出了搭載“雙芯”的“新生代性能旗艦”iQOO Neo5手機,堪稱“專業游戲手機”。這款手機已開始首次發售。
    的頭像 發表于 03-22 10:19 ?2200次閱讀

    miniLED芯片晶工藝對錫膏需要什么條件?

    miniLED顯示器的制造,今天錫膏廠家來聊一聊miniLED芯片晶工藝對錫膏需要什么條件?如何理解晶工藝?晶工藝是在miniLED制造過程中所用到的其中一種工藝,
    的頭像 發表于 03-03 16:50 ?854次閱讀
    miniLED芯片<b class='flag-5'>刺</b>晶工藝對錫膏需要什么條件?

    Grok即將上線!馬斯克據此成為“數據封建王”?

    馬斯克Open AI,即將成為“數據封建主”?
    的頭像 發表于 12-12 10:18 ?578次閱讀
    Grok即將上線!馬斯克據此成為“數據封建王”?

    assign語句和always語句的用法

    Assign語句和Always語句是在硬件描述語言(HDL)中常用的兩種語句,用于對數字電路建模和設計。Assign語句用于連續賦值,而Always語句用于時序邏輯建模。本文將詳細探討這兩種語句
    的頭像 發表于 02-22 16:24 ?2295次閱讀