码迷,mamicode.com
首页 > 编程语言 > 详细

systemverilog中的数组操作

时间:2018-07-14 13:08:43      阅读:2166      评论:0      收藏:0      [点我收藏+]

标签:system   nbsp   数组操作   bsp   int   def   mod   each   dex   

sv中的数组基本操作:

/*    
  Exercsise platform :     Questa Sim 10.1b
*/
class Array;
  int array[9:0] ;
  
  function new();
     for( int i = 0 ; i < 10 ; 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 < 10 ; i++ )begin
      $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
//   所有关于定长数组的操作都可以用在动态数组上


systemverilog中的数组操作

标签:system   nbsp   数组操作   bsp   int   def   mod   each   dex   

原文地址:http://blog.51cto.com/13824643/2142030

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!