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

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

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

關(guān)于數(shù)字硬件建模SystemVerilog

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-09-01 08:50 ? 次閱讀

數(shù)字硬件建模SystemVerilog-邏輯運算符

經(jīng)過幾周的更新,SV核心部分用戶自定義類型和包內(nèi)容已更新完畢,接下來就是RTL表達式和運算符。

39b60faa-298e-11ed-ba43-dac502259ad0.png

邏輯運算符

邏輯運算符對其操作數(shù)求值,并返回一個值,該值指示求值結(jié)果是真還是假(true or false)。例如,運算a && b測試a和b是否都為真,如果兩個操作數(shù)都為真,則運算符返回真。否則,運算符返回false。

邏輯運算符返回值。SystemVerilog沒有內(nèi)置的true或false布爾值。相反,邏輯運算符的返回使用邏輯值1’b1(一個一位寬的邏輯l)表示真,1’b0表示假。邏輯運算符還可以返回1’bx,指示仿真無法確定實際邏輯門的評估結(jié)果是否為真或假的模糊條件。

判斷一個表達式是真是假。要確定操作數(shù)是真是假,SystemVerilog使用以下規(guī)則:

如果所有位均為0,則操作數(shù)為假

如果所有位均為1,則操作數(shù)為真

如果所有位均為X或Z,且沒有位為1,則操作數(shù)未知X

表5-1列出了RTL綜合編譯器普遍支持的邏輯運算符。

表5-11:RTL建模的邏輯運算符 39c6061c-298e-11ed-ba43-dac502259ad0.png

邏輯求反運算符通常被稱為“not運算符”,它是“not true”的縮寫。

邏輯運算符通過對每個操作數(shù)進行歸約OR來執(zhí)行其運算,從而產(chǎn)生一個1位結(jié)果。然后對該結(jié)果進行求值,以確定其為真還是假。對于not運算符,1位的結(jié)果首先被反轉(zhuǎn),然后求值為真或假。

表5-12和5-13顯示了這些邏輯運算符對幾個示例值的結(jié)果。

表5-12:邏輯AND and OR運算的示例結(jié)果 39e6f73c-298e-11ed-ba43-dac502259ad0.png 表5-13:邏輯求反運算的示例結(jié)果 3a1365d8-298e-11ed-ba43-dac502259ad0.png

邏輯求反運算符(!)和按位反轉(zhuǎn)運算符(~)之間的區(qū)別

練習題目《HDLBits: 在線學習 SystemVerilog(一)-Problem 2-6》Problem 4

應注意不要混淆邏輯求反運算符(?。┮约鞍次环崔D(zhuǎn)運算符(~)。求反運算符對其操作數(shù)執(zhí)行真/假求值,并返回表示真、假或未知結(jié)果的1位值。按位反轉(zhuǎn)運算符對操作數(shù)的每一位(補碼)執(zhí)行邏輯反轉(zhuǎn),并返回與操作數(shù)相同位寬的值。

在某些操作中,這些操作的結(jié)果恰好相同,但在其他操作中,它們返回的值非常不同。當運算符與決策語句一起被錯誤使用時,這種差異可能導致錯誤代碼??紤]下面的例子:

3a3ee672-298e-11ed-ba43-dac502259ad0.png

前面代碼片段的最后兩行之所以不同,是因為這兩個運算符的工作方式不同——邏輯求反運算符(?。┩ㄟ^將兩位相加或相減,對2位選擇執(zhí)行真/假計算,然后反轉(zhuǎn)1位結(jié)果,按位反轉(zhuǎn)運算符(~)只反轉(zhuǎn)2位選擇向量的每一位的值,并返回2位結(jié)果。if語句然后對2位向量進行真/假測試,該向量的計算結(jié)果為真,因為反轉(zhuǎn)后的值仍有一位設置為1。

最佳實踐指南5-1
使用按位反轉(zhuǎn)運算符反轉(zhuǎn)值的位,不要使用按位反轉(zhuǎn)運算符對邏輯求反運算符求反。相反,使用邏輯求反運算符來否定真/假測試的結(jié)果。不要使用邏輯求反運算符反轉(zhuǎn)值。
最佳實踐指南5-2
僅使用邏輯求反運算符求反來測試標量(1位)值,而不是 對向量執(zhí)行真/假測試。

如果向量的任何位為1,邏輯運算將返回true,這可能會導致在測試特定位時出現(xiàn)設計錯誤。計算向量值時,使用等式或關(guān)系運算符測試可接受的值。

示例5-7說明了一個小型RTL模型,該模型使用邏輯NOT、邏輯AND和邏輯OR運算符。該設計是一個邏輯比較器,如果兩個數(shù)據(jù)值中的任何一個在可配置的值范圍內(nèi),則設置一個flag。

示例5-7:使用邏輯運算符:當值在某個范圍內(nèi)時設置flag 3a67887a-298e-11ed-ba43-dac502259ad0.png

圖5-7顯示了示例5-7中的RTL模型綜合結(jié)果

圖5-7:示例5-7的綜合結(jié)果:邏輯運算符(范圍內(nèi)比較) 3a9d8e5c-298e-11ed-ba43-dac502259ad0.png

不可綜合的邏輯運算符

SV-2009增加了兩個額外的邏輯運算符,它們是蘊涵和等價運算符,在本文編寫時RTL綜合編譯器通常不支持這些運算符。表5-14列出了這兩個運算符的標記和描述。

表5-14:不可綜合邏輯運算符 3ad2c126-298e-11ed-ba43-dac502259ad0.png

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

    關(guān)注

    11

    文章

    3127

    瀏覽量

    65873
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    384

    瀏覽量

    59534
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1602

    瀏覽量

    48915

原文標題:SystemVerilog-邏輯運算符

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

收藏 人收藏

    評論

    相關(guān)推薦

    如何在SystemVerilog中為狀態(tài)機的命令序列的生成建模

     我們將展示如何在SystemVerilog中為狀態(tài)機的命令序列的生成建模,并且我們將看到它是如何實現(xiàn)更高效的建模,以及實現(xiàn)更好的測試生成。?
    發(fā)表于 01-01 06:05

    數(shù)字硬件建模SystemVerilog-歸約運算符

    介紹歸約運算符對單個操作數(shù)的所有位執(zhí)行運算,并返回標量(1位)結(jié)果。表5-9列出了歸約運算符。表5-9:RTL建模的歸約運算符歸約運算符包括一個NAND和一個NOR運算符,這是按位運算符所沒有
    發(fā)表于 10-20 15:03

    SystemVerilog硬件功能如何進行建模

    本文定義了通常用于描述使用SystemVerilog硬件功能進行建模的詳細級別的術(shù)語。
    的頭像 發(fā)表于 03-30 11:42 ?1577次閱讀

    數(shù)字硬件建模SystemVerilog-網(wǎng)絡

    每個SystemVerilog網(wǎng)絡類型都有特定的語義規(guī)則,這些規(guī)則會影響多個驅(qū)動程序的解析方式。雖然所有網(wǎng)絡類型都表示硅行為,但并非所有網(wǎng)絡類型都可以用標準ASIC和FPGA技術(shù)表示。表3-3列出了ASIC和FPGA綜合編譯器支持的網(wǎng)絡類型。
    的頭像 發(fā)表于 05-09 09:26 ?1916次閱讀

    數(shù)字硬件建模SystemVerilog-結(jié)構(gòu)體

    默認情況下,結(jié)構(gòu)體會被非壓縮的。這意味著結(jié)構(gòu)體的成員被視為獨立變量或常量,并以一個共同的名稱分組在一起。SystemVerilog沒有指定軟件工具應該如何存儲非壓縮結(jié)構(gòu)體的成員。不同的軟件工具具對于結(jié)構(gòu)體的存儲分布也是不同的。
    的頭像 發(fā)表于 06-30 09:54 ?924次閱讀

    關(guān)于數(shù)字硬件建模SystemVerilog聯(lián)合體

    聯(lián)合體是一個可以有多個數(shù)據(jù)類型表示的單個存儲元素,聯(lián)合體的聲明類似結(jié)構(gòu)體,但推斷出的硬件非常不同。
    的頭像 發(fā)表于 07-07 09:05 ?895次閱讀

    IEEE SystemVerilog標準:統(tǒng)一的硬件設計規(guī)范和驗證語言

    IEEE SystemVerilog標準:統(tǒng)一的硬件設計規(guī)范和驗證語言
    發(fā)表于 08-25 15:52 ?0次下載

    使用Verilog/SystemVerilog硬件描述語言練習數(shù)字硬件設計

    HDLBits 是一組小型電路設計習題集,使用 Verilog/SystemVerilog 硬件描述語言 (HDL) 練習數(shù)字硬件設計~
    的頭像 發(fā)表于 08-31 09:06 ?1521次閱讀

    數(shù)字硬件建模SystemVerilog-組合邏輯建模(1)連續(xù)賦值語句

    SystemVerilog有三種在可綜合RTL級別表示組合邏輯的方法:連續(xù)賦值語句、always程序塊和函數(shù)。接下來幾篇文章將探討每種編碼風格,并推薦最佳實踐編碼風格。
    的頭像 發(fā)表于 12-07 15:31 ?1338次閱讀

    FPGA學習-SystemVerilog語言簡介

    SystemVerilog是一種硬件描述和驗證語言(HDVL),它基于IEEE1364-2001 Verilog硬件描述語言(HDL),并對其進行了擴展,包括擴充了 C語言 數(shù)據(jù)類型、結(jié)構(gòu)、壓縮和非
    的頭像 發(fā)表于 12-08 10:35 ?1949次閱讀

    RTL和門級建模

    SystemVerilog能夠在許多不同的細節(jié)級別(稱為“抽象級別”)對數(shù)字邏輯進行建模。抽象意味著缺乏細節(jié)。數(shù)字模型越抽象,它所代表的硬件
    的頭像 發(fā)表于 02-09 14:20 ?945次閱讀
    RTL和門級<b class='flag-5'>建模</b>

    數(shù)字硬件建模SystemVerilog之Interface方法概述

    SystemVerilog Interface是modport的一種,但比簡單的輸入、輸出或輸入輸出端口的功能更多。
    的頭像 發(fā)表于 04-28 14:10 ?2257次閱讀
    <b class='flag-5'>數(shù)字</b><b class='flag-5'>硬件</b><b class='flag-5'>建模</b><b class='flag-5'>SystemVerilog</b>之Interface方法概述

    數(shù)字硬件建模SystemVerilog之Interface和modport介紹

    SystemVerilog Interface是modport的一種,但比簡單的輸入、輸出或輸入輸出端口的功能更多。
    的頭像 發(fā)表于 04-28 14:12 ?3362次閱讀
    <b class='flag-5'>數(shù)字</b><b class='flag-5'>硬件</b><b class='flag-5'>建模</b><b class='flag-5'>SystemVerilog</b>之Interface和modport介紹

    SystemVerilog的覆蓋率建模方式

    為了確保驗證的完備性,我們需要量化驗證目標。SystemVerilog提供了一套豐富的覆蓋率建模方式。
    的頭像 發(fā)表于 06-25 10:44 ?968次閱讀

    SystemVerilog硬件設計部分有哪些優(yōu)勢

    Language,硬件描述語言),而SystemVerilog則是HDVL(Hardware Design and Verification Language,硬件設計與驗證語言)。由此可見,
    的頭像 發(fā)表于 10-19 11:19 ?967次閱讀
    <b class='flag-5'>SystemVerilog</b>在<b class='flag-5'>硬件</b>設計部分有哪些優(yōu)勢