日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

数据类型规则的放宽

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

數(shù)據(jù)類型規(guī)則的放寬

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

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); //持續(xù)賦值 comparator u1 (eq,a,b);//模塊實例化 endmodulemodule comparator(output logic eq,input [63:0] a,b ); always@(a,b)eq = (a == b); endmole

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

注意:變量不能被多個源驅(qū)動

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

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已經(jīng)賦了一個值look_ahead i1(carry,a,b);//實例化模塊驅(qū)動carry overflow_check i2(carry,a,b);//錯誤!對carry進行第二次驅(qū)動 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

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

有符號修飾和無符號修飾

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

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。