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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

systemverilog 起步

發布時間:2023/12/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 systemverilog 起步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉一篇Systemverilog的一個牛人總結:

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

1、合并數組和非合并數組

1)合并數組:

存儲方式是連續的,中間沒有閑置空間。

例如,32bit的寄存器,可以看成是4個8bit的數據,或者也可以看成是1個32bit的數據。

表示方法:

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

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

2)非合并數組:

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

?

2、二維數組和合并數組識別:

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

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

位寬在變量名前面,用于識別合并和非合并數組,位寬在后面,用于識別數組中元素個數。

?

3、非合并數組:

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

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

表示方法:

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

?

4、合并數組和非合并數組的選擇

(1)當需要以字節或字為單位對存儲單元操作。

(2)當需要等待數組中變化的,則必須使用合并數組。例如測試平臺需要通過存儲器數據的變化來喚醒,需要用到@,@只能用于標量或者合并數組。

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

? ? ? ? ?可以使用barry[0]作敏感信號。

?

5、動態數組

隨機事物不確定大小。

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

int dyn[];

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

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

?

6、隊列

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

?

7、關聯數組

當你需要建立一個超大容量的數組。關聯數組,存放稀疏矩陣中的值。

表示方法:

采用在方括號中放置數據類型的形式聲明:

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

?

8、常量:

1)Verilog 推薦使用文本宏。

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

缺點:當需要局部常量時,可能引起沖突。

2)Parameter

???作用范圍僅限于單個module

3)Systemverilog:

???參數可以在多個模塊里共同使用,可以用typedef 代替單調乏味的宏。

?

9、可以在for循環中定義變量,作用范圍僅在循環內部

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

array[i] =i;

?

10、任務、函數及void函數

1) 區別:

Verilog中task 和function最重要的區別是:task可以消耗時間而函數不能。函數中不能使用#100的延時或@的阻塞語句,也不能調用任務;

Systemverilog中函數可以調用任務,但只能在fork??joinnone生成的線程中。

2)使用:

???如果有一個不消耗時間的systemverilog任務,應該把它定義成void函數;這樣它可以被任何函數或任務調用。

??從最大靈活性角度考慮,所有用于調用的子程序都應該被定義成函數而非任務,以便被任何其它任務或函數調用。(因為定義成任務,函數調用任務很有限制)

?

11、 類靜態變量

作用:

1)類的靜態變量,可以被這個類的對象實例所共享。

當你想使用全局變量的時候,應該先想到創建一個類的靜態變量

靜態變量在聲明的時候初始化。

2)

類的每一個實例都需要從同一個對象獲取信息。

?

12、靜態方法

作用:

當靜態變量很多的時候,操作它們的代碼是一個很大的程序,可以用在類中創建一個靜態方法讀寫靜態變量,但是靜態方法不能讀寫非靜態變量。

l???????ref高級的參數類型

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

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

1)???????也可以不用ref進行數組參數傳遞,這時數組會被復制到堆棧區,代價很高。

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

3)???????Ref參數,用ref 傳遞變量;可以在任務里修改變量而且,修改結果對調用它的函數可見,相對于指針的功能。

?

轉載于:https://www.cnblogs.com/littleMa/p/4761974.html

總結

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

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