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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

verilog中数组的定义_systemverilog中的数组操作

發布時間:2025/4/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 verilog中数组的定义_systemverilog中的数组操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sv中的數組基本操作:/*

Exercsise?platform?:?????Questa?Sim?10.1b

*/

class?Array;

int?array[9:0]?;

function?new();

for(?int?i?=?0?;?i?

array[i]?=?i?;

/*

array?=?'{'{1,2,3},'{5{5}},default:0};

無法使用這種基本的賦值方式,可能是編譯器的版本過低了

*/

endfunction:new

function?void?print();

foreach(array[i])?begin

$display("?array[%d]?=?%d?",i,array[i]);

end

for?(?int?i?=?0?;?i?

$write("?**?");

end

$display();

endfunction:print

function?void?funcs();

int?pos[$]?;

//???縮減操作?xor?,?or?,?and?,??xnor??,?sum?,?product?等

$display("the?sum?is?%d?",array.sum());

$display("the?and?is?%d?",array.and());

$display("the??or?is?%d?",array.or()?);

$display("the?xor?is?%d?",array.xor());

$display("the?product?is?%d?",array.product());

//???索引操作:取得相應的所需要的數組原素位置

$display("?max?value?is?%d?",array.max()[0]);

$display("?min?value?is?%d?",array.min()[0]);

array?=?array.unique();

print();???????//??在類中時,調用自己類的函數,可以直接調用。這點與cpp相同

pos?=?array.find?with?(?item?==?7?)?;

//??find?有多種變體:?find_first???find_last??find_first_index???find_last_index

$display("?pos?:?%d???value:?%d?",pos[0],array[pos[0]]);

//??排序操作:?sort?,??rsort??,?reverse?,?shuffle?,

//?其中?sort?,rsort??可以與with相結合,根據with后的條件排序

array.shuffle();

$display("shuffled:");

print();

array.sort();

$display("Sorted:");

print();

array.rsort();

$display("Resorted:");

print();

array.reverse();

$display("Reversed:");

print();

endfunction:funcs

endclass:Array

module?top;

Array?array;

int?arr[]?;?????//???動態數組的聲明

initial?begin

//??initial?process

array=new();

array.print();

array.funcs();

arr?=?new[20];???//???分配內存大小

foreach(arr[i])?$display("?arr[%2d]?=?%d?",i,arr[i]);

$display("***************");

arr.delete();

end

endmodule

//???所有關于定長數組的操作都可以用在動態數組上

仿真結果:#?**?Note:?(vsim-3812)?Design?is?being?optimized...

#

#?Loading?sv_std.std

#?Loading?work.array_sv_unit(fast)

#?Loading?work.top(fast)

>>>run

#??array[??????????9]?=???????????9

#??array[??????????8]?=???????????8

#??array[??????????7]?=???????????7

#??array[??????????6]?=???????????6

#??array[??????????5]?=???????????5

#??array[??????????4]?=???????????4

#??array[??????????3]?=???????????3

#??array[??????????2]?=???????????2

#??array[??????????1]?=???????????1

#??array[??????????0]?=???????????0

#??**??**??**??**??**??**??**??**??**??**

#?the?sum?is??????????45

#?the?and?is???????????0

#?the??or?is??????????15

#?the?xor?is???????????1

#?the?product?is???????????0

#??max?value?is???????????9

#??min?value?is???????????0

#??array[??????????9]?=???????????0

#??array[??????????8]?=???????????1

#??array[??????????7]?=???????????2

#??array[??????????6]?=???????????3

#??array[??????????5]?=???????????4

#??array[??????????4]?=???????????5

#??array[??????????3]?=???????????6

#??array[??????????2]?=???????????7

#??array[??????????1]?=???????????8

#??array[??????????0]?=???????????9

#??**??**??**??**??**??**??**??**??**??**

#??pos?:???????????7???value:???????????2

#?shuffled:

#??array[??????????9]?=???????????2

#??array[??????????8]?=???????????8

#??array[??????????7]?=???????????0

#??array[??????????6]?=???????????4

#??array[??????????5]?=???????????7

#??array[??????????4]?=???????????1

#??array[??????????3]?=???????????9

#??array[??????????2]?=???????????5

#??array[??????????1]?=???????????6

#??array[??????????0]?=???????????3

#??**??**??**??**??**??**??**??**??**??**

#?Sorted:

#??array[??????????9]?=???????????0

#??array[??????????8]?=???????????1

#??array[??????????7]?=???????????2

#??array[??????????6]?=???????????3

#??array[??????????5]?=???????????4

#??array[??????????4]?=???????????5

#??array[??????????3]?=???????????6

#??array[??????????2]?=???????????7

#??array[??????????1]?=???????????8

#??array[??????????0]?=???????????9

#??**??**??**??**??**??**??**??**??**??**

#?Resorted:

#??array[??????????9]?=???????????9

#??array[??????????8]?=???????????8

#??array[??????????7]?=???????????7

#??array[??????????6]?=???????????6

#??array[??????????5]?=???????????5

#??array[??????????4]?=???????????4

#??array[??????????3]?=???????????3

#??array[??????????2]?=???????????2

#??array[??????????1]?=???????????1

#??array[??????????0]?=???????????0

#??**??**??**??**??**??**??**??**??**??**

#?Reversed:

#??array[??????????9]?=???????????0

#??array[??????????8]?=???????????1

#??array[??????????7]?=???????????2

#??array[??????????6]?=???????????3

#??array[??????????5]?=???????????4

#??array[??????????4]?=???????????5

#??array[??????????3]?=???????????6

#??array[??????????2]?=???????????7

#??array[??????????1]?=???????????8

#??array[??????????0]?=???????????9

#??**??**??**??**??**??**??**??**??**??**

#??arr[?0]?=???????????0

#??arr[?1]?=???????????0

#??arr[?2]?=???????????0

#??arr[?3]?=???????????0

#??arr[?4]?=???????????0

#??arr[?5]?=???????????0

#??arr[?6]?=???????????0

#??arr[?7]?=???????????0

#??arr[?8]?=???????????0

#??arr[?9]?=???????????0

#??arr[10]?=???????????0

#??arr[11]?=???????????0

#??arr[12]?=???????????0

#??arr[13]?=???????????0

#??arr[14]?=???????????0

#??arr[15]?=???????????0

#??arr[16]?=???????????0

#??arr[17]?=???????????0

#??arr[18]?=???????????0

#??arr[19]?=???????????0

#?***************

關聯數組:

此數組適用于進行存儲量較大時的情況,存儲方式不是線性的直接存儲,而是使用樹或者hash的結構,節省空間module?coarr;

bit[63:0]??rom[bit[63:0]]?;???//?構建關聯數組

bit[63:0]??idx?;?????//??相對應的索引

function?automatic?void?print(bit[63:0]?pos,?ref?bit[63:0]?rom[bit[63:0]]);

$display("?rom[%d]?=?%d?",pos,rom[pos]);

endfunction:print

initial?begin

idx?=?1?;

repeat(64)?begin????????//??對關聯數組初始化,但實際上只存儲了64個值

rom[idx]?=?idx?;

idx?=?idx?<

end

if(?rom.first(idx))?begin?????//??找到第一個索引的位置

print(idx,rom);

while(?rom.next(idx)?)?print(idx,rom);????//???找到之后的索引的位置

end

end

endmodule:coarr

仿真結果:#??rom[????????????1]?=????????????????????1

#??rom[???????????2]?=????????????????????2

#??rom[??????????4]?=????????????????????4

#??rom[???????????8]?=????????????????????8

#??rom[??????????16]?=???????????????????16

#??rom[??????????32]?=???????????????????32

#??rom[??????????64]?=???????????????????64

#??rom[??????????128]?=??????????????????128

#??rom[?????????256]?=??????????????????256

#??rom[??????????512]?=??????????????????512

#??rom[?????????1024]?=?????????????????1024

#??rom[?????????2048]?=?????????????????2048

#??rom[?????????4096]?=?????????????????4096

#??rom[?????????8192]?=?????????????????8192

#??rom[????????16384]?=????????????????16384

#??rom[????????32768]?=????????????????32768

#??rom[?????????65536]?=????????????????65536

#??rom[????????131072]?=???????????????131072

#??rom[????????262144]?=???????????????262144

#??rom[????????524288]?=???????????????524288

#??rom[???????1048576]?=??????????????1048576

#??rom[???????2097152]?=??????????????2097152

#??rom[???????4194304]?=??????????????4194304

#??rom[???????8388608]?=??????????????8388608

#??rom[???????16777216]?=?????????????16777216

#??rom[???????33554432]?=?????????????33554432

#??rom[???????67108864]?=?????????????67108864

#??rom[??????134217728]?=????????????134217728

#??rom[??????268435456]?=????????????268435456

#??rom[??????536870912]?=????????????536870912

#??rom[??????1073741824]?=???????????1073741824

#??rom[??????2147483648]?=???????????2147483648

#??rom[??????4294967296]?=???????????4294967296

#??rom[??????8589934592]?=???????????8589934592

#??rom[?????17179869184]?=??????????17179869184

#??rom[?????34359738368]?=??????????34359738368

#??rom[?????68719476736]?=??????????68719476736

#??rom[?????137438953472]?=?????????137438953472

#??rom[?????274877906944]?=?????????274877906944

#??rom[?????549755813888]?=?????????549755813888

#??rom[?????1099511627776]?=????????1099511627776

#??rom[????2199023255552]?=????????2199023255552

#??rom[????4398046511104]?=????????4398046511104

#??rom[?????8796093022208]?=????????8796093022208

#??rom[????17592186044416]?=???????17592186044416

#??rom[????35184372088832]?=???????35184372088832

#??rom[????70368744177664]?=???????70368744177664

#??rom[????140737488355328]?=??????140737488355328

#??rom[???281474976710656]?=??????281474976710656

#??rom[???562949953421312]?=??????562949953421312

#??rom[???1125899906842624]?=?????1125899906842624

#??rom[???2251799813685248]?=?????2251799813685248

#??rom[???4503599627370496]?=?????4503599627370496

#??rom[???9007199254740992]?=?????9007199254740992

#??rom[??18014398509481984]?=????18014398509481984

#??rom[??36028797018963968]?=????36028797018963968

#??rom[??72057594037927936]?=????72057594037927936

#??rom[??144115188075855872]?=???144115188075855872

#??rom[??288230376151711744]?=???288230376151711744

#??rom[??576460752303423488]?=???576460752303423488

#??rom[?1152921504606846976]?=??1152921504606846976

#??rom[?2305843009213693952]?=??2305843009213693952

#??rom[?4611686018427387904]?=??4611686018427387904

#??rom[?9223372036854775808]?=??9223372036854775808

總結

以上是生活随笔為你收集整理的verilog中数组的定义_systemverilog中的数组操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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