SystemVerilog配列
SystemVerilog 配列
SystemVerilog 配列は4種類。
- 静的配列
- 動的配列
- queue
- 連想配列
コード例
queueと連想配列使用例。byte型データのメモリ。
// mem.sv module mem; // Variables byte m[int unsigned]; // 連想配列 int unsigned q[$]; // queue // functions function void write(int unsigned addr, byte data); m[addr] = data; endfunction // flow initial begin for(int unsigned i=0; i<4; i++)begin write(4*i, i); q.push_back(4*i); end // for for(int unsigned i=0; i<q.size(); i++)begin $display("m[%02xh] = %02xh", q[i], m[q[i]]); end // for end // initial endmodule // 出力 # m[00h] = 00h # m[04h] = 01h # m[08h] = 02h # m[0ch] = 03h
補足
静的配列
int unsigned a[4];
動的配列
- int da[];
- da=new da[8];
queue
int q[$]; int val; int len; q.push_back(1); val = q.pop_front(); q.push_front(2); val = q.pop_back(); len = q.size();
連想配列
btye aa[int unsigned]; byte b; int len; aa[2]=8'h44; b=aa[2]; len = aa.num(); // 登録サイズ int key; key=2; if (aa.exists(key) ) begin $display("hello") end // 以下戻り値、0見つからない。1見つかった。keyrefは参照属性。 aa.first(keyref) aa.next(keyref) aa.last(keyref) aa.prev(keyref)
連想配列
module associative_array; //array declaration int a_array[*]; int index; initial begin //allocating array and assigning value to it repeat(3) begin a_array[index] = index*2; index=index+4; end //exists()-Associative array method if(a_array.exists(8)) $display("Index 8 exists in a_array"); else $display("Index 8 doesnt exists in a_array"); //last()-Associative array method a_array.last(index); $display("Last entry is a_array[%0d] = %0d",index,a_array[index]); //prev()-Associative array method a_array.prev(index); $display("entry is a_array[%0d] = %0d",index,a_array[index]); //next()-Associative array method a_array.next(index); $display("entry is a_array[%0d] = %0d",index,a_array[index]); end endmodule Simulator Output: Index 8 exists in a_array Last entry is a_array[8] = 16 entry is a_array[4] = 8 entry is a_array[8] = 16
参考
https://sites.google.com/site/playsystemverilog/array/associative_array?authuser=0
連想配列 Associative Arrayについては https://verificationguide.com/systemverilog/systemverilog-associative-array/