SV 之 關聯數組


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 << 1 ;

     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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM