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

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

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

3天內不再提示

數字硬件建模SystemVerilog-網絡

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-05-09 09:26 ? 次閱讀

數字硬件建模SystemVerilog(七)-網絡

System Verilog提供兩組通用的數據類型:網絡和變量(nets 和 variables)。網絡和變量同時具有類型和數據類型特性。類型表示信號為網絡或變量,數據類型表示網絡或變量的值系統,即2態或4態。為簡單起見,使用術語data type來表示信號的類型和數據類型。

軟件工具(如仿真器和綜合編譯器)使用數據類型來確定如何存儲數據和處理數據上的更改。數據類型影響操作,并在RTL建模中用于指示所需的硅行為。例如,數據類型用于確定加法器應基于整數還是基于浮點,以及應執行有符號算術還是無符號算術。

網絡類型

網絡用于將設計元素連接在一起,例如將一個模塊的輸出端口連接到另一個模塊的輸入端口。網絡在三個重要方面不同于變量:

  • 網絡沒有像變量一樣的臨時存儲,相反,網絡反映了網絡驅動器的當前值(電容性trireg網絡似乎存儲了一個值,但實際上代表了驅動網絡的電容器的行為),
  • 網絡可以計算多個驅動因素的結果值,其中變量只能有一個來源(如果對一個變量進行了多個程序賦值,則最后一個賦值是結果值,而不是解析所有賦值的結果)。
  • 網絡反映驅動器值(0、1、Z或X)和驅動器強度。

驅動器的強度級別以0~7的步長表示。每個級別由一個關鍵字表示。大多數建模構件的默認強度級別為“強”,即級別6。強度級別對于晶體管級建模很重要,但不用于RTL建模。強度的表示和使用超出了本文關于RTL建模的范圍。

可綜合網絡類型

通過同時指定類型和數據類型來聲明網絡。類型可以是表3-3和3-4中列出的任何關鍵字。數據類型必須是關鍵字logic,可以顯式指定或隱式推斷。

每個SystemVerilog網絡類型都有特定的語義規則,這些規則會影響多個驅動程序的解析方式。雖然所有網絡類型都表示硅行為,但并非所有網絡類型都可以用標準ASICFPGA技術表示。表3-3列出了ASIC和FPGA綜合編譯器支持的網絡類型。

表3-3:可綜合網絡類型
類型 代表
wire 使用CMOS行為解析多個驅動器的互連網絡
tri wire的同義詞在所有方面都相同,可用于強調預期具有三態值的網絡
Supply0 電源強度級別具有恒定邏輯0的互連網絡。可用于表示接地軌(GND、VSS)
Supply1 在電源強度級別具有恒定邏輯1的互連網絡。可用于表示供電軌(VCC、VDD)

不可綜合的網絡類型。

SystemVeriIog有幾種網絡類型,綜合編譯器并不普遍支持這些類型,如表3-4(第77頁)所示。

表3-4:一般不可綜合的網絡類型
類型 代表
uwire 不允許或不解析多個驅動程序的互連網絡
pull0 一種互連網絡,具有將下拉電阻器連接到網絡的特性
Pull1 一種互連網絡,具有將上拉電阻器連接到該網絡的特性
wand 一種互連網絡,通過對驅動值進行AND運算來解析多個驅動程序
triand wand的同義詞,在所有方面都相同;可用于強調預期具有三態值的網絡
wor 一種互連網絡,通過對驅動值進行OR來解析多個驅動程序
trior wor的同義詞,在所有方面都相同;可用于強調預期具有三態值的網絡
trireg 具有電容性的互連網絡;如果所有驅動器均為高阻抗,則電容反映最后解析的驅動值
筆記

某些RTL綜合編譯器可能支持一種或多種網絡類型。最佳實踐編碼風格是不使用這些類型,以確保RTL模型與任何綜合編譯器兼容。如果使用其中一種類型,設計工程師應檢查項目中使用的所有工具是否支持該類型。

CMOS工藝建模。

大多數ASIC和FPGA器件采用CMOS技術實現。CMOS互連的行為用線和三網類型表示。wire類型是最常用的網絡類型,也是隱式推斷網絡時的默認網絡類型。

單驅動和多驅動邏輯。

ASIC和FPGA設計中的大多數互連網絡將單個驅動器連接到一個或多個接收器。例外是共享總線,其中多個驅動程序連接到一個或多個接收器。例如,RAM設備具有雙向數據總線,用于將值寫入RAM和從RAM讀取值。ASIC和FPGA設備通常具有一定數量的雙向I/O焊盤,用于讀取和驅動值。

最佳做法準則3-7

當設計意圖是具有單個驅動器功能時,使用邏輯數據類型將設計組件連接在一起。僅當設計意圖是允許多個驅動器時,才使用wire or tri類型。

將互連聲明為邏輯將推斷一個變量而不是網絡類型。變量只允許單個源(驅動程序)。

盡管大多數互連網絡僅具有一個驅動器;可綜合的網絡類型(如wire)允許多個驅動程序。工程師在使用網絡類型時需要小心避免編碼錯誤。網絡列表中的簡單錯誤可能會導致同一網絡無意中連接到多個驅動程序。在編譯和優化過程中不會捕獲這種類型的錯誤。該錯誤會導致在仿真過程中檢測到功能性錯誤。下面幾個規則可以避免一些錯誤:

  • 使用變量而不是網絡連接設計塊。SystemVerilog還允許使用變量將設計元素連接在一起。變量不允許多個驅動源。如果同一變量意外連接到多個驅動程序,則會發生綜合錯誤。

  • 將輸入端口聲明為變量類型而不是網絡類型。默認情況下,輸入和輸入輸出端口推斷為網絡類型,特別是wire類型,除非網絡類型指定了不同的網絡類型。如果多個驅動程序連接到同一輸入端口(或者一個值從模塊內被反向驅動到輸入端口),這種網絡類型的推斷可能導致難以檢測的建模錯誤。這些建模錯誤在SystemVerilog中是合法的,因為網絡類型允許多個驅動程序。

通過將輸入端口顯式聲明為var logic類型,可以防止輸入端口的意外多個驅動程序。變量不允許多個驅動源。在編譯和詳細闡述設計模塊時,意外的多個驅動程序將被報告為編碼錯誤。

  • 使用uwire防止多個驅動程序。uwire網絡類型還可用于防止輸入端口的多個無意驅動源。uwire類型作為1364-2005 Verilog標準的一部分添加到SystemVerilog中,特別是為了使無意中的多個驅動程序成為編譯/布線錯誤。輸入端口可以明確聲明為uwire類型,或者可以將默認網絡類型更改為uwire。uwire類型不允許多個驅動程序。在編譯和詳細說明設計模塊時,意外的多個驅動程序將被報告為編碼錯誤。
筆記

在編寫本文時,大多數綜合編譯器和一些仿真器尚未添加對uwire類型的支持,盡管它自2005年以來一直是Verilog/SystemVerilog標準的一部分。當需要多驅動器網絡時,本書中的示例使用wire或tri類型。

網絡定義規則

通過指定網絡類型和可選數據類型來定義網絡。數據類型必須是4態logic數據類型,或從4態logic數據類型派生的用戶定義類型,如果未明確指定數據類型,則隱式推斷logic數據類型。

所有網絡類型的默認大小都是標量(1位)。可以使用與變量相同的語法將網絡顯式聲明為任何大小的向量。但是,只有變量向量聲明可以劃分為子字段。向量不能劃分為子字段。

一些可綜合的網絡聲明示例如下:

91b8cbc4-cf30-11ec-bce3-dac502259ad0.png

默認情況下,所有網絡類型都是無符號的。網絡可以用與變量相同的方式顯式聲明為有符號或無符號。

網絡位和部分選擇。可使用與變量向量相同的語法從向量中選擇任何特定位或位組。常量和變量位和部分選擇都可以在網絡上執行。

隱式聲明

未聲明的信號將在多個上下文中推斷網絡類型:

  • 模塊input, inout or output,未明確聲明類型或數據類型,或從以前的端口聲明繼承
  • 顯式聲明logic or reg數據類型或從以前的端口聲明繼承的模塊input or inout端口
  • 與模塊實例或接口實例的端口或基本實例的終端的連接
  • 連續賦值語句的左側

默認情況下,推斷的隱式網絡類型為網絡wire類型。隱式網絡的向量大小基于本地上下文。如果網絡是從模塊端口聲明推斷出來的,那么隱式網絡的向量大小將是端口的大小。如果從與模塊、接口或例化實例的連接推斷網絡,則將推斷標量網絡。如果從連續賦值的左側推斷標量網絡,則也會推斷標量網絡。示例3-1說明了幾個隱式網絡聲明。

示例3-1:創建隱式網絡的未聲明標識符示例
91d26d0e-cf30-11ec-bce3-dac502259ad0.png

上面還涉及到dot-name 和 dot-star的使用,這將在后面介紹。

更改默認的隱式網絡類型。可以使用編譯器指令:

'default_nettype

更改隱式網絡類型。每當推斷出隱式網絡時,在指令之后編譯的所有SystemVerilog代碼都將使用指定的網絡類型。'default_nettype必須在模塊或接口邊界之外指定。

示例3-2將隱式網絡類型定義為uwire(單驅動源)類型

示例3-2:更改隱式網絡的網絡類型
`default_nettypetri1//changedefaultforimplicitnets
//`default_nettypeuwire//changedefaultforimplicitnets
`begin_keywords"1800-2012"//useSystemVerilog-2012keywords
modulemixed_rtl_and_gate_adder
(inputa,//implicituwirenet,logicdatatype
inputlogicb,//implicituwirenet,logicdatatype
inputregci,//implicituwirenet,logicdatatype
outputsum,//implicituwirenet,logicdatatype
outputlogicco//implicitvariable,logicdatatype
);
timeunit1ns/1ns;

xorg1(n1,a,b);//undeclaredn1isimplicituwirenet
xorg2(sum,n1,ci);
andg3(n2,a,b);//undeclaredn2isimplicituwirenet

assignn3=n1&ci;//undeclaredn3isimplicituwirenet

always_combbegin
co=n2|n3;
end
endmodule:mixed_rtl_and_gate_adder
`end_keywords
`default_nettypewire//resetdefaultforimplicitnets

關閉隱式網絡聲明。

隱式網絡有優點也有缺點。大型、復雜的網絡表可能需要幾十個1位網絡來連接設計塊。顯式聲明這些多個網絡既繁瑣又耗時,顯式聲明大量互連網絡也可能需要大量的鍵入,并存在需要鍵入的錯誤風險。隱式網絡可以減少編寫網表模型所需的時間,并減少鍵入錯誤。

但是,隱式網絡的一個缺點是,與模塊、接口或例化實例的連接中拼寫錯誤的名稱不會被檢測為連接錯誤。不正確的名稱將推斷出一個隱式網絡,其結果是必須檢測、調試和糾正的功能性錯誤。另一個缺點是,從實例連接推斷出的網絡將是一個1位網絡,而不管該網絡連接到的端口大小如何。連接大小不匹配將導致警告消息,但仿真或綜合仍將繼續。端口大小不匹配還可能導致必須檢測和糾正的功能缺陷。

隱式net與顯式聲明net的優缺點是Verilog和SystemVerilog工程師經常爭論的話題。這實際上是用戶偏好的問題。這兩種編碼風格都很好地工作,并且兩種風格都有優點和缺點。

對于喜歡顯式聲明所有網絡的工程師或公司,SystemVerilog提供了一種禁用隱式網絡的方法。這就要求顯式聲明所有網絡,禁用隱式網絡是通過設置編譯器指令來完成的:

91ef9834-cf30-11ec-bce3-dac502259ad0.png

此編譯器指令必須在模塊外部設置,并對編譯到同一編譯單元的所有后續模塊保持有效,或者直到遇到另一個'default_nettype指令。

使用隱式網絡或禁用隱式網絡通常是個人偏好,有時也是公司內部的編碼準則。本書中的示例假設啟用了隱式網絡,默認隱式網絡類型為wire。

筆記

“default_nettype”指令可以影響多個文件。編譯器指令在編譯單元中是準全局的。當在同一編譯單元中編譯多個文件時,編譯器指令對遇到該指令之前編譯的任何文件沒有影響,但會影響遇到該指令之后編譯的所有文件。

最佳做法準則3-8

如果更改了默認網絡類型,請始終將’default_nettype”用作一對指令,第一個指令將默認設置為所需的網絡類型,第二個指令將默認設置回wire。

在任何更改默認值的模塊之后,將默認網絡類型設置回wire,將防止意外的副作用影響到其他預期默認wire的文件。

網絡分配和連接規則

給網絡賦值。網絡可以從兩種類型的源接收值:作為output or inout port端口的連接,以及作為連續賦值(assign語句)的左側。不能在程序賦值的左側使用網絡。

在整個仿真過程中對連續賦值進行求值,賦值右側的任何更改都會導致對右側表達式進行求值,并更新左側表達式。左側可以是變量或網絡。網絡的連續賦值可以是顯式的,也可以是隱式的。顯式連續賦值以關鍵字assign開始。

9208610c-cf30-11ec-bce3-dac502259ad0.png

隱式連續賦值結合了網絡聲明和對該網絡的賦值。組合中未使用assign關鍵字。

9225957e-cf30-11ec-bce3-dac502259ad0.png

注意不要混淆內嵌變量初始化和隱式連續賦值。

92441332-cf30-11ec-bce3-dac502259ad0.png

這兩個構造的語法可能看起來很相似,但行為卻截然不同。在線變量初始化是一次評估和賦值,在前面的示例中,如果a或b的值在以后的仿真中發生變化,則不會更新變量。隱式連續賦值,顧名思義,是在整個仿真過程中不斷求值的表達式。在前面的示例中,每次仿真期間a或b的值發生變化時,n1都會更新。

連接大小不匹配。網絡用于將設計塊連接在一起,例如將一個模塊的輸出端口連接到一個或多個其他模塊的輸入端口。通常,端口和互連網絡的向量寬度相同,但SystemVerilog允許向量大小不同。例如16位標量網絡可以將32位寬的輸出端口連接到8位寬的輸入端口。這種尺寸不匹配可能是設計錯誤,但在SystemVerilog中,只會生成警告。

SystemVerilog語言具有解決端口/連接不匹配的規則:

  • port的比特數少于連接到的網絡或變量-值的最左邊的比特被截斷,導致值的最重要比特丟失。
  • 一個端口的比特數大于連接到它的網絡或變量的比特數-網絡或變量的值保持擴展狀態,如果端口、網絡/變量中有一個無符號,則該值為零擴展。如果端口和網絡/變量都有符號,則該值為有符號。

仿真器和綜合編譯器將生成連接大小不匹配的警告消息。這些警告不容忽視!連接不匹配通常是需要糾正的設計錯誤。

審核編輯 :李倩


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

    關注

    53

    文章

    8255

    瀏覽量

    146490
  • 編譯器
    +關注

    關注

    1

    文章

    1634

    瀏覽量

    49157
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28395

原文標題:SystemVerilog(七)-網絡

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    常見的網絡硬件設備有哪些?國產網絡安全主板提供穩定的硬件支持

    隨著網絡技術的不斷進步,網絡安全問題日益嚴重,企業和個人對網絡安全的重視程度不斷加深,對于網絡安全硬件設備的要求也越來越高,
    的頭像 發表于 10-21 10:23 ?325次閱讀

    使用C2000 MCU對用于數字控制的雙向降壓/升壓轉換器進行建模

    電子發燒友網站提供《使用C2000 MCU對用于數字控制的雙向降壓/升壓轉換器進行建模.pdf》資料免費下載
    發表于 10-12 11:48 ?0次下載
    使用C2000 MCU對用于<b class='flag-5'>數字</b>控制的雙向降壓/升壓轉換器進行<b class='flag-5'>建模</b>

    電源分配網絡分析及電容器精確建模

    電子發燒友網站提供《電源分配網絡分析及電容器精確建模.pdf》資料免費下載
    發表于 09-20 11:31 ?0次下載

    分布式電源分配網絡建模及去耦設計研究

    電子發燒友網站提供《分布式電源分配網絡建模及去耦設計研究.pdf》資料免費下載
    發表于 09-19 17:42 ?0次下載

    matlab 神經網絡 數學建模數值分析

    matlab神經網絡 數學建模數值分析 精通的可以討論下
    發表于 09-18 15:14

    BP神經網絡預測模型的建模步驟

    BP(Backpropagation)神經網絡是一種多層前饋神經網絡,其核心思想是通過反向傳播算法來調整網絡中的權重和偏置,從而實現對輸入數據的預測或分類。BP神經網絡預測模型的
    的頭像 發表于 07-11 16:57 ?1573次閱讀

    bp神經網絡預測模型建模步驟

    介紹BP神經網絡預測模型的建模步驟。 數據預處理 數據預處理是構建BP神經網絡預測模型的第一步,主要包括以下幾個方面: 1.1 數據收集 首先需要收集足夠的數據,這些數據可以是歷史數據、實驗數據或模擬數據等。數據的質量和數量直接
    的頭像 發表于 07-11 10:52 ?529次閱讀

    如何使用神經網絡進行建模和預測

    神經網絡是一種強大的機器學習技術,可以用于建模和預測變量之間的關系。 神經網絡的基本概念 神經網絡是一種受人腦啟發的計算模型,由大量的節點(神經元)組成,這些節點通過權重連接在一起。每
    的頭像 發表于 07-03 10:23 ?771次閱讀

    神經網絡建模的適用范圍有哪些

    神經網絡是一種強大的機器學習技術,可以用于各種不同的應用。以下是一些神經網絡建模的適用范圍: 圖像識別和分類 神經網絡在圖像識別和分類方面具有顯著的優勢。它們可以用于識別和分類各種類型
    的頭像 發表于 07-02 11:40 ?646次閱讀

    數學建模神經網絡模型的優缺點有哪些

    數學建模神經網絡模型是一種基于人工神經網絡的數學建模方法,它通過模擬人腦神經元的連接和信息傳遞機制,對復雜系統進行建模和分析。神經
    的頭像 發表于 07-02 11:36 ?921次閱讀

    神經網絡在數學建模中的應用

    數學建模是一種利用數學方法和工具來描述和分析現實世界問題的過程。神經網絡是一種模擬人腦神經元結構和功能的計算模型,可以用于解決各種復雜問題。在數學建模中,神經網絡可以作為一種有效的工具
    的頭像 發表于 07-02 11:29 ?959次閱讀

    智慧城市電網的新選擇:訊維數字孿生可視化系統優化電力網絡

    在智慧城市電網建設中,訊維數字孿生可視化系統成為了一種新選擇,它能夠有效地優化電力網絡,提升智能電網的管理效率和運營質量。以下是該系統在優化電力網絡方面的具體體現: 數字
    的頭像 發表于 05-07 16:46 ?395次閱讀

    IEEE 1800-2023 SystemVerilog新版本正式發布了!

    2024年3月初,在美國硅谷舉辦的DVCon2024上,IEEE-SA和Accellera聯合宣布通過IEEE Get Program可以免費獲取IEEE 1800-2023 SystemVerilog語言參考手冊。
    的頭像 發表于 03-20 13:52 ?1762次閱讀

    在Vivado Synthesis中怎么使用SystemVerilog接口連接邏輯呢?

    SystemVerilog 接口的開發旨在讓設計中層級之間的連接變得更加輕松容易。 您可以把這類接口看作是多個模塊共有的引腳集合。
    的頭像 發表于 03-04 15:25 ?979次閱讀
    在Vivado Synthesis中怎么使用<b class='flag-5'>SystemVerilog</b>接口連接邏輯呢?

    網絡拓撲結構的隱患和網絡硬件的安全缺陷屬于

    網絡拓撲結構的隱患和網絡硬件的安全缺陷是當前網絡安全領域中的重要問題。隨著互聯網的不斷發展和普及,網絡拓撲結構和
    的頭像 發表于 01-31 14:54 ?1749次閱讀
    主站蜘蛛池模板: 精品三级三级三级三级三级| 美国激情ap毛片| 成人免费一区二区三区| 伊人天天操| 久久不射影院| 国模大胆一区二区三区| 欧美1| 天堂69亚洲精品中文字幕| 天天操天天干天天舔| 干美女在线视频| 久久人人精品| 美女视频黄.免费网址| 精品成人在线观看| 毛片毛片免费看| 国产色窝| 激情深爱五月| 成人久久网| 国产 日韩 欧美 高清| 亚洲午夜免费| 亚洲第一黄色网址| 一级特黄高清完整大片| 日韩欧美理论| 天天看天天爽| 天天射日日操| 国产在线观看午夜不卡| 国产亚洲片| 一区二区三区亚洲| www.欧美黄色| 4438x全国免费| 一道精品一区二区三区| 亚洲一区在线视频| 淫香色香| 亚洲国产成人久久| 五月情婷婷| 四虎影院视频| 色妇网| 日本黄在线| 女性一级全黄生活片在线播放| 国产亚洲一区二区精品| 天堂网www在线资源网| 免费a大片|