sv队列和动态数组的区别_systemverilog学习(4)动态数组
本節(jié)主要內(nèi)容:動(dòng)態(tài)數(shù)組,隊(duì)列,聯(lián)合數(shù)組,數(shù)組基本操作,結(jié)構(gòu)體類型,枚舉類型
一:動(dòng)態(tài)數(shù)組
1:基礎(chǔ)
在run-time才知道元素個(gè)數(shù),在compile-time不知道
可以在仿真的時(shí)候再確定元素個(gè)數(shù)
2:表示
data_type name_of_dynamic_array[];
name_of_ dynamic_array = new[number of elements];
實(shí)例:int dyn[]; dyn = new[5];dyn.delete();
3:可將固定數(shù)組賦值給動(dòng)態(tài)數(shù)組,要求是元素個(gè)數(shù)相同
二:隊(duì)列(先進(jìn)先出)
1:基礎(chǔ)知識
可插入,刪除,sort,search,push,pop,add,remove;可將固定數(shù)組或者動(dòng)態(tài)數(shù)組賦給隊(duì)列
2:表示
data_type queue_name[$] = {..} //隊(duì)列賦值時(shí)大括號前面不加單引號
實(shí)例:int b[$] = {3,4}; //{3,4}
b.insert(1,1); ? //{3,1,4} 在第一個(gè)元素后面添加1
b.delete(1);? //{3,4} 刪除元素1
b.push_front(6) ; //{6,3,4}
j = b.pop.back;? //{6,3}, j = 4
三:聯(lián)合數(shù)組
1:基礎(chǔ)知識
充分利用內(nèi)存里的離散空間,不連續(xù)空間;
索引值可以為整型,字符型,一維數(shù)組
2:表示
data_type associative_array_name[*/string]
3:示例
在內(nèi)存中的存儲
說明:標(biāo)準(zhǔn)數(shù)組存儲時(shí),所有的存儲器都用到了;聯(lián)合數(shù)組使用內(nèi)存時(shí),稀疏。
4:操作
遍歷(foreach),first,next,prev,delete,exits
四:數(shù)組的操作
1:算術(shù)運(yùn)算
sum,product,and,or and xor
例如下面是sum舉例:
說明:on.sum返回on的位數(shù),即一位,即值1(5個(gè)1相加取一位);將on.sum賦給位寬為8bit的summ,則返回值5。
2:sort,rsort(反過來排序),reverse,shuffle(打亂排序),find_first,find_first_with_index,unique(得到元素不重復(fù)的數(shù)組)
//find_index with (item > 3); //元素大于3的索引值
3:sum的擴(kuò)展用法
//d.sum(x) with ((x>7)*x); //9*9+8*8
五:總結(jié)
Fixed Arrays: 在compile time時(shí)知道size;連續(xù)內(nèi)存存放,支持多維
Dynamic Arrays:run time時(shí)得到size;連續(xù)內(nèi)存;
Queues Arrays:FIFO/Stack
Associative Arrays:離散數(shù)據(jù)內(nèi)存,索引可以為數(shù)字或者字符串;用于hash
六:結(jié)構(gòu)體
將變量放在一起,比如總線協(xié)議放在結(jié)構(gòu)體里;默認(rèn)是unpacked存放
1:示例
使用:Instruction_Word.address = 24'hF00000;
2:packed存放(加入packed關(guān)鍵字)
第一個(gè)數(shù)據(jù)放在內(nèi)存的左側(cè)。
七:枚舉類型
1:表示
enum {red,green.blue} RGB? //red = 0,green = 1,blue = 2
2:枚舉值類型
**顯式指定枚舉值 enum{one = 1, five = 5, ten = 10} state;
**部分顯式指定值
3:枚舉指定類型
enum bit {false,true} Boolean;
enum logic [1:0] {WAITE,LOAD,READY} state;
enum logic [1:0] {
WAITE=3'b001,
LOAD=3'b010,
READY=3'b100} state;? //error;因?yàn)槊杜e類型是兩位,賦值超過兩位
emum logic {on = 1'b1,OFF=1'bz} out;
總結(jié)
以上是生活随笔為你收集整理的sv队列和动态数组的区别_systemverilog学习(4)动态数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中set和dict类型_py
- 下一篇: python用电预测_Python中利用