//数组的定位方法,这些方法的返回值是一个队列
//方法unique返回的是数组中具有唯一值得队列,即会删去重复值
//min max unique
//补充一个问题:$display的使用应该是必须在initial模块中
//使用index函数,返回的是元素的位
//里面使用的索引变量item并不一定要是item,x,m,k等都可以(但是要先声明,再使用)
module test;
int f[6] ='{1,6,2,6,8,6};
int d[] = '{9,1,8,3,4,4};
int q[$] = {1,3,5,7};
int tq[$],i;
int count=0,total;
initial begin
tq = q.max;
$display("q.max= %p",tq);//最大值
tq = d.min();
$display("d.min = %p",tq);//最小值
//这里的tq是队列,提示是未打包,不能使用%d的格式打印,要用%p;
tq = f.unique();//删除重复元素
$display("f.unique:");
$display(tq);
//找出大于3的元素
tq = d.find with(item>3);
$display("d.item>3:");
$display(tq);
//等效代码
tq.delete();//先清空
foreach (d[i])
if(d[i]>3)
tq.push_back(d[i]);
$display("d.item>3:");
$display(tq);
tq = d.find_index with (item > 3);//在d中找>3的元素,index是索引
$display("d.find.index>3:");
$display(tq);
tq = d.find_first with (item > 3);//第一个大于3的元素,输出该元素的值
$display("d.first.item>3:");
$display(tq);
tq = d.find_first_index with (item == 8);//从第一个开始索引找等于8 的元素,返回该位的位,不是该位的值
$display("d.first.index=8:");
$display(tq);
tq = d.find_last with (item == 4);//最后一个等于4的元素,返回的是元素值
$display("d.last.item=4:");
$display(tq);
tq = d.find_last_index with (item == 4);//最后一个元素是否等于4,返回元素的位,如果不相等,返回空
$display("d.last.index.item=4:");
$display(tq);
$display;
$display(d);
//下面这些我用modelsim没有得到结果,书上是这样的
/*
count=d.sum with(item>7);//with返回1或者0,with是条件这里结果应该是2,(8,9)
total=d.sum with((item>7)*item);//这里结果应该是 8+9=17
count=d.sum with(item<8);//这里结果应该是 (1,3,4,4),结果为4
total=d.sum with(item<8?item:0);//这里结果应该是 1+3+4+4 = 12
count=d.sum with(item==4);//这里结果应该是2(4,4)
*/
end
endmodule
结果:
来源:CSDN
作者:寐语者
链接:https://blog.csdn.net/Lethethelove/article/details/103892459