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

歡迎訪問 生活随笔!

生活随笔

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

systemverilog 起步

發(fā)布時(shí)間:2023/12/13 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 systemverilog 起步 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)一篇Systemverilog的一個(gè)牛人總結(jié):

http://blog.sina.com.cn/s/blog_5e9b181a010188re.html

1、合并數(shù)組和非合并數(shù)組

1)合并數(shù)組:

存儲(chǔ)方式是連續(xù)的,中間沒有閑置空間。

例如,32bit的寄存器,可以看成是4個(gè)8bit的數(shù)據(jù),或者也可以看成是1個(gè)32bit的數(shù)據(jù)。

表示方法:

數(shù)組大小和位,必須在變量名前指定,數(shù)組大小必須是【msb:lsb】

Bit[3:0] [7:0] bytes???;

2)非合并數(shù)組:

Bit [7:0] bytes?[0:3]???;或者 Bit [7:0] bytes?[4]???;

?

2、二維數(shù)組和合并數(shù)組識(shí)別:

合并數(shù)組:??bit [3:0] [7:0] arrys;???大小在變量名前面放得,且降序

二維數(shù)組:??int arrays[0:7] [0:3] ;??大小在變量名后面放得,可降序可升序

位寬在變量名前面,用于識(shí)別合并和非合并數(shù)組,位寬在后面,用于識(shí)別數(shù)組中元素個(gè)數(shù)。

?

3、非合并數(shù)組:

一般仿真器存放數(shù)組元素時(shí)使用32bit的字邊界,byte、shortint、int都放在一個(gè)字中。

非合并數(shù)組:字的地位存放變量,高位不用。

表示方法:

?Bit???[7:0] bytes;?

?

4、合并數(shù)組和非合并數(shù)組的選擇

(1)當(dāng)需要以字節(jié)或字為單位對(duì)存儲(chǔ)單元操作。

(2)當(dāng)需要等待數(shù)組中變化的,則必須使用合并數(shù)組。例如測(cè)試平臺(tái)需要通過存儲(chǔ)器數(shù)據(jù)的變化來喚醒,需要用到@,@只能用于標(biāo)量或者合并數(shù)組。

? ? ? ? ?Bit[3:0] [7:0] barray[3]??; 表示合并數(shù)組,合并數(shù)組中有3個(gè)元素,每個(gè)元素時(shí)8bit,4個(gè)元素可以組成合并數(shù)組

? ? ? ? ?可以使用barry[0]作敏感信號(hào)。

?

5、動(dòng)態(tài)數(shù)組

隨機(jī)事物不確定大小。

使用方法:數(shù)組在開始是空的,同時(shí)使用new[]來分配空間,在new[n]指定元素的個(gè)數(shù)。

int dyn[];

???Dyn = new[5];?????//分配5個(gè)元素空間

? ?Dyn.delete() ;?????//釋放空間

?

6、隊(duì)列

在隊(duì)列中增加或刪除元素比較方便。

?

7、關(guān)聯(lián)數(shù)組

當(dāng)你需要建立一個(gè)超大容量的數(shù)組。關(guān)聯(lián)數(shù)組,存放稀疏矩陣中的值。

表示方法:

采用在方括號(hào)中放置數(shù)據(jù)類型的形式聲明:

Bit[63:0] assoc[bit[63:0]];

?

8、常量:

1)Verilog 推薦使用文本宏。

好處:全局作用范圍,且可以用于位段或類型定義

缺點(diǎn):當(dāng)需要局部常量時(shí),可能引起沖突。

2)Parameter

???作用范圍僅限于單個(gè)module

3)Systemverilog:

???參數(shù)可以在多個(gè)模塊里共同使用,可以用typedef 代替單調(diào)乏味的宏。

?

9、可以在for循環(huán)中定義變量,作用范圍僅在循環(huán)內(nèi)部

for(int i=0;i<10;i++)

array[i] =i;

?

10、任務(wù)、函數(shù)及void函數(shù)

1) 區(qū)別:

Verilog中task 和function最重要的區(qū)別是:task可以消耗時(shí)間而函數(shù)不能。函數(shù)中不能使用#100的延時(shí)或@的阻塞語句,也不能調(diào)用任務(wù);

Systemverilog中函數(shù)可以調(diào)用任務(wù),但只能在fork??joinnone生成的線程中。

2)使用:

???如果有一個(gè)不消耗時(shí)間的systemverilog任務(wù),應(yīng)該把它定義成void函數(shù);這樣它可以被任何函數(shù)或任務(wù)調(diào)用。

??從最大靈活性角度考慮,所有用于調(diào)用的子程序都應(yīng)該被定義成函數(shù)而非任務(wù),以便被任何其它任務(wù)或函數(shù)調(diào)用。(因?yàn)槎x成任務(wù),函數(shù)調(diào)用任務(wù)很有限制)

?

11、 類靜態(tài)變量

作用:

1)類的靜態(tài)變量,可以被這個(gè)類的對(duì)象實(shí)例所共享。

當(dāng)你想使用全局變量的時(shí)候,應(yīng)該先想到創(chuàng)建一個(gè)類的靜態(tài)變量

靜態(tài)變量在聲明的時(shí)候初始化。

2)

類的每一個(gè)實(shí)例都需要從同一個(gè)對(duì)象獲取信息。

?

12、靜態(tài)方法

作用:

當(dāng)靜態(tài)變量很多的時(shí)候,操作它們的代碼是一個(gè)很大的程序,可以用在類中創(chuàng)建一個(gè)靜態(tài)方法讀寫靜態(tài)變量,但是靜態(tài)方法不能讀寫非靜態(tài)變量。

l???????ref高級(jí)的參數(shù)類型

Ref 參數(shù)傳遞為引用而不是復(fù)制。Ref比 input 、output、inout更好用。

Function void print_checksum(const ref bit [31:0] a[ ]);

1)???????也可以不用ref進(jìn)行數(shù)組參數(shù)傳遞,這時(shí)數(shù)組會(huì)被復(fù)制到堆棧區(qū),代價(jià)很高。

2)???????用帶ref 進(jìn)行數(shù)組參數(shù)傳遞,僅僅是引用,不需要復(fù)制;向子程序傳遞數(shù)組時(shí),應(yīng)盡量使用ref以獲得最佳性能,如果不希望子程序改變數(shù)組的值,可以使用const ref。

3)???????Ref參數(shù),用ref 傳遞變量;可以在任務(wù)里修改變量而且,修改結(jié)果對(duì)調(diào)用它的函數(shù)可見,相對(duì)于指針的功能。

?

轉(zhuǎn)載于:https://www.cnblogs.com/littleMa/p/4761974.html

總結(jié)

以上是生活随笔為你收集整理的systemverilog 起步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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