SV---数组定位方法

时光毁灭记忆、已成空白 提交于 2020-01-14 02:31:38
//数组的定位方法,这些方法的返回值是一个队列
//方法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或者0with是条件这里结果应该是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

结果:
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!