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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256801.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256801.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256801.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習筆記(56):Python實戰編程-Menu

立即學習:https://edu.csdn.net/course/play/19711/343119?utm_sourceblogtoedu 1.菜單menu: 1&#xff09;彈出式菜單&#xff0c;類似與電腦桌面右擊彈出的菜單成為彈出菜單&#xff1b; 2&#xff09;窗體式菜單&#xff1a;類似于word上面的菜單欄 2.窗體菜單創建的步驟…

SystemCenter2012SP1實踐(19)集成WSUS更新服務器2012

今天我們的任務是配置一臺WSUS&#xff08;Windows更新服務器&#xff09;&#xff0c;以方便后期通過"基線"與其組合&#xff0c;完成虛擬機的系統補丁升級。WSUS是Windows系統運維自動化的一個重要組成部分&#xff0c;通過它&#xff0c;能夠節省我們很多的運維時…

像元尺寸計算

像元尺寸 X 總像素大小 感光芯片尺寸&#xff08;圖像區域大小&#xff09;

win7右鍵點擊文件夾進入命令窗口方法

方法一&#xff1a;按住shift鍵&#xff0c;鼠標右擊&#xff0c;會出現"在此處打開命令窗口"&#xff1b;方法二&#xff1a;修改注冊表&#xff0c;為鼠標右鍵添加打開命令行功能&#xff1b;(1)將下列內容賦值到記事本中&#xff0c;并保存為.reg文件。Windows Re…

教你學會Linux/Unix下的vi文本編輯器

vi編輯器是Unix/Linux系統管理員必須學會使用的編輯器。看了不少關于vi的資料&#xff0c;終于得到這個總結。首先&#xff0c;記住vi編輯器的兩個模式&#xff1a;1、命令模式2、編輯模式。在一個UNIX/Linux的shell命令或者一個以斜杠&#xff08;/&#xff09;、問號&#xf…

C++函數返回引用的含義

引用的意思就是說返回變量的地址而非變量本身。這樣子函double數結束之后存儲返回值的內存單元不會被銷毀&#xff0c;保留了它的地址。 例如下面這個例子: int a1,b; ba; b; 這個例子里執行完之后a為1&#xff0c;而b為2。 但這個例子&#xff1a; int a1; int *b&#xff1b;…

LintCode: 3 Sum

C 把3個數求和&#xff0c;轉變為2個數求和 1. 把數組排序 2. 注意過濾重復值 3. 從前到后遍歷&#xff0c;游標i 4. 從后邊數中找start &#xff0b; end &#xff1d; -arr[i]的2 sum 5. start &#xff0b; end < -arr[i], start 6. start end > -arr[i], end-- 7. s…

$* $@ $# $? $$ $! $0 $_

特殊參數&#xff1a; [xiluhuavm-xiluhua][~]$ set one two three  #使用set命令設置位置參數[xiluhuavm-xiluhua][~]$ echo $*        #打印所有位置參數 one two three[xiluhuavm-xiluhua][~]$ echo $        #打印所有位置參數 one two three[xiluhuavm-…

最優化課堂筆記03:整數規劃

二、整數規劃問題的求解方法&#xff1a;&#xff08;重點&#xff1a;分枝定界法&#xff09; 1.割平面法 1&#xff09;基本思想 2&#xff09;求解步驟 2&#xff09;重點&#xff1a;分枝定界法&#xff08;極大化的問題&#xff09;考試不會分很多次枝&#xff0c;用圖解…

CodeIgniter 2.X 于 PHP5.6 兼容錯誤

本篇文章由&#xff1a;http://xinpure.com/codeigniter-2-x-to-php5-6-compatible-error/ CI 3.0 已兼容此問題 在代碼遷移的過程中&#xff0c;遇到了一個 PHP 版本兼容錯誤 A PHP Error was encounteredSeverity: NoticeMessage: Only variable references should be return…

自動駕駛汽車定位技術

一、高精度地圖 二、汽車定位技術 三、無線通信輔助汽車定位 四、視覺輔助汽車定位 五、自動駕駛高精度地圖與定位實踐

正整數分解為幾個連續自然數之和

題目&#xff1a;輸入一個正整數&#xff0c;若該數能用幾個連續正整數之和表示&#xff0c;則輸出所有可能的正整數序列。 一個正整數有可能可以被表示為n(n>2)個連續正整數之和&#xff0c;如&#xff1a; 1512345 15456 1578 有些數可以寫成連續N&#xff08;>1&#…

egret3D與2D混合開發,畫布尺寸不一致的問題

egret3d的GUI目前還沒有&#xff0c;在做3d游戲的時候沒有UI可用&#xff0c;只能使用egret2d的EUI組件庫&#xff0c;egret3d與egret2d混合開發&#xff0c;canvas3d的大小與位置與canvas2d并沒有重合&#xff0c;導致適配ui時總是錯位。在做手機屏幕適配的時候必須解決這種問…

最優化作業講解01:標準化線性規劃(LP)

1.1、錯誤點&#xff1a;求得了目標函數最優解&#xff0c;但是沒有將結果返回去最大值 2.4、錯誤點&#xff1a;x2變量的處理上&#xff0c;x2不是任意變量不可以按照任意變量來進行變換 x6 x2 5&#xff0c;且x6>0 2.9、 易錯點&#xff1a; 1&#xff09;基變量要滿足…

hdu1428(spfa與記憶化搜索)

漫步校園 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3508 Accepted Submission(s): 1066Problem DescriptionLL最近沉迷于AC不能自拔&#xff0c;每天寢室、機房兩點一線。由于長時間坐在電腦邊&#xff…

explicit關鍵字詳解(C++ )

一&#xff1a;首先, C中的explicit關鍵字只能用于修飾只有一個參數的類構造函數, 它的作用是表明該構造函數是顯示的, 而非隱式的, 跟它相對應的另一個關鍵字是implicit, 意思是隱藏的,類構造函數默認情況下即聲明為implicit(隱式). class CxString // 沒有使用explicit關鍵…

React Native 常見問題集合

在使用React Native時候&#xff0c;我記錄下比較常遇到的問題&#xff0c;分為以下幾類&#xff1a; 1. 調試問題 2. 寫法問題 3. 疑難問題 4. 奇怪問題 調試問題 1. 在react-native run-android運行后&#xff0c;真機上打開的空白頁面。 我測試機是紅米2A&#xff08;Androi…

算法:字符串消除問題的數學證明

問題&#xff1a; 給定一個字符串&#xff0c;僅由A、B、C3個字母組成。當出現連續兩個不同的字母時&#xff0c;你可以用另外一個字母替換它&#xff0c;如有AB或BA連續出現&#xff0c;你把它們替換為字母C&#xff1b;有AC或CA連續出現時&#xff0c;你可以把它們替換為字母…

學習筆記(57):Python實戰編程-Treeview

立即學習:https://edu.csdn.net/course/play/19711/343120?utm_sourceblogtoedu 1.樹狀結構Treeview:分為樹狀折疊式列表和列表顯示&#xff0c;是一種很重要數據列表展示的形式 2.樹狀列表建立步驟&#xff1a; 1&#xff09;創建一個樹狀列表&#xff1a;在這里可以設置顯示…

ios 常用操作-1

項目中可能會用到的一些技巧方法&#xff0c;做個記錄&#xff0c;已被不時之需。 一。程序在運行過程中不鎖屏&#xff1f; [UIApplication sharedApplication].idleTimerDisabledYES; 二。顯示被view 或 control遮蓋的背景內容。比如有時在不同的ios版本上 tableview cell上畫…