日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据类型规则的放宽

發布時間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据类型规则的放宽 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據類型規則的放寬

SystemVreilog放寬了使用變量的限制
SystemVreilog放寬了變量的使用規則,大大簡化了模型中數據類型的使用。在SystemVreilog中共,任何數據類型的變量都可以通過下列方式賦值,但只能采用其中的一種方式。
(1)在任意的initial或always的過程中賦值
(2)在單個always_comb,always_ff或always_latch過程塊中賦值
(3)通過單個的持續賦值語句賦值
(4)通過單個模塊或原語的output/inout端口驅動賦值
大部分信號可以聲明為logic或bit
這些變量使用規則的放寬允許模型中的大部分信號聲明為一個變量類型,如bit或logic。不用事先確定信號使用的上下文,模型由系統級轉換到RTL級或門級也不用改變信號的數據類型

module compare(output logic lt,eq,gt,input logic [63:0] a,b); always@(a,b)if(a < b) lt = 1'b1; //過程賦值else lt = 1'b0;assign gt = (a>b); //持續賦值 comparator u1 (eq,a,b);//模塊實例化 endmodulemodule comparator(output logic eq,input [63:0] a,b ); always@(a,b)eq = (a == b); endmole

對變量使用的限制可以防止設計錯誤

注意:變量不能被多個源驅動

SystemVreilog使用變量的約束
在SystemVreilog中下列使用是錯誤的:多個輸出端口驅動一個變量,或者對一個變量進行多次持續賦值,或者對一個變量同時使用過程賦值和持續賦值。
對變量的這些 限制是因為變量沒有內置決斷函數,當多個器件驅動同一輸出時,無法得到最終值。

module add_and_increment(output logic [63:0] sum,output logic carry,input logic [63:0] a,b ); always@(a,b)sum = a + b;//sum的過程賦值assign sum = sum + 1; //錯誤!sum已經賦了一個值look_ahead i1(carry,a,b);//實例化模塊驅動carry overflow_check i2(carry,a,b);//錯誤!對carry進行第二次驅動 endmoudlemodule look_ahead (output wire carry,input logic[63:0]a,b); ... endmodulemodule overflow_check (output wire carry,input logic[63:0]a,b); ... endmodule

單驅動邏輯使用變量,多驅動邏輯使用線網
SystemVreilog對于變量不能有多個驅動源的限制避免了設計錯誤。如果設計中的一個信號只有源,那么可以使用變量,就可以使用過程賦值、持續賦值、模塊或原語的一個輸出/輸入端口。如果不小心使一個信號連接了兩個驅動則會報錯,因為一個變量只能有一個源。
SystemVreilog允許一個變量在多個always過程塊中賦值,雖然著也是一種多驅動形式,但是一些新的過程塊:always_comb,always_latch和always_ff。也限制了一個變量只能在一個過程塊中賦值。
只有net數據類型可以有多個驅動,如多次持續賦值,和/或多個模塊或者原語實例化輸出端口的連接。因此,設計中可以被多個器件驅動的信號,如數據總線或者地址總線應該被聲明為Verilog的net數據類型,如wire。即可用于輸入,又可用輸出的雙向端口也應該被聲明為net數據類型。
通過持續賦值或模塊輸出給自動變量賦值也是非法的。只用靜態變量可以被持續賦值或連接到輸出端口。之所以需要靜態變量是為了能持續賦值,變量需要在整個仿真過程中都存在。自動變量則不會存在于整個仿真運行時間。

有符號修飾和無符號修飾

Verilog-2001有符號和無符號類型 允許將任何數據類型聲明為有符號數,缺省的數據類型為無符號數reg [63:0] u;//無符號64位變量 reg signed [63:0] s ;//有符號64位變量

SystemVreilog增加了缺省為有符號的數據類型。這些數據類型包括:byte、shortint、int和longint。SystemVreilog使用insigned關鍵字可以將這些有符號的數據類型定義為無符號的。

int s_int ;//有符號32位變量 int unsiged u_int; //無符號32位變量

總結

以上是生活随笔為你收集整理的数据类型规则的放宽的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。