天堂一区_新91在线_在线免费观看污污视频_99热只有精品在线观看_人人看黄色_www.97色.com

您的位置:教育>正文

Foreach对Associative Array的constraint约束问题记录分享

来源:验证芯发现2023-08-21 18:11:30

systemverilogconstraint中的foreach可以对数组进行遍历和约束,常用于普通数组,队列或者动态数组。而当对associative array(联合数组/字典)应用foreach时,遇到一些问题,记录分享如下。

联合数组含有key和value两个元素,在这里key的类型以int和string为例,value元素以int和int[$]队列为例。

[int/string] [int] Associative Array


(相关资料图)

实践的demo代码如下:

classtest;randbit[3:0]rd_dict[int];randbit[3:0]rd_dict_fix[int];randbit[3:0]rd_dict_str[string];constraintc_rand{rd_dict.size==7;foreach(rd_dict[i]){rd_dict[i]<13;}foreach(rd_dict_fix[i])rd_dict_fix[i]==13;foreach(rd_dict_str[i])rd_dict_str[i]==14;}functionnew();rd_dict_fix[9]=0;rd_dict_str["A"]=0;endfunction

rd_dict没有进行初始化,使用constraint的size进行约束联合数组key的个数和value取值约束

rd_dict_fix在new函数中进行初始化,包含一个int key元素,在constraint中对value进行约束

rd_dict_str在new函数进行初始化,包含一个string key元素,在constraint中对value进行约束

添加适当的测试打印代买,可以得到如下的仿真结果:

可以看出,普通的联合数组,如果没有初始化key元素,可以在constraint中使用size约束key的个数,但key是顺序递增的,0~size-1。

如果初始化了key元素,无论是int还是string类型的key,使用foreach时,可以对已初始化的key对应的value进行约束。

int/string->int[$] Associative Array

联合数组的value是int队列时,demo代码如下:

classtest;randbit[3:0]rd_dict[int][$];randbit[3:0]rd_dict_fix[int][$];randbit[3:0]rd_dict_str[string][$];constraintc_rand{rd_dict.size==7;foreach(rd_dict[i]){rd_dict[i].size==3;foreach(rd_dict[i][j]){rd_dict[i][j]<13;}}foreach(rd_dict_fix[i]){rd_dict_fix[i].size==4;foreach(rd_dict_fix[i][j])rd_dict_fix[i][j]==13;}foreach(rd_dict_str[i]){rd_dict_str[i].size==4;foreach(rd_dict_str[i][j])rd_dict_str[i][j]==14;}}functionnew();rd_dict_fix[9]="{};rd_dict_str["A"]="{};endfunction

rd_dict的key是int类型,value是int[$]队列类型的value,size和value值都进行了约束。

rd_dict_fix类型和rd_dict相同,区别在于new函数中进行key初始化,仅包含一个key。

rd_dict_str的key类型是string类型,其他和rd_dict_fix相同。

不出意外,上述的code编译出错:

...Expressionofthistypecannotbeusedtoindexthearray...

错误在于key是string类型,value是int[$]队列的字典,constraint中不能使用foreach操作。

将上述string->int[$]的constraint注释后,编译可以通过,在仿真时会出错:

Theconstraintsolverfailedwhenaccessinganullarrayrd_dict[0].Pleasemakesurearrayrd_dict[0]isallocatedproperly.

由于rd_dict[int][$]并没有在new函数中进行初始化,即使在constraint中使用了size约束大小,也没有达到预期的效果,这点和[int/string] [int] Associative Array例子中不同。

上述问题解决后,可得到最后的仿真结果:

从上述的结果来看,如果联合数组的value是队列时,则需要先进行key的初始化,才可在constraint中进行对value队列的约束。key是string类型时,似乎没办法使用foreach进行约束。

审核编辑:刘清

相关内容

主站蜘蛛池模板: 欧美成人午夜视频在线观看 | 国产精品99久久免费观看 | 极品美女久久久久久久久久久 | 亚瑟国产精品久久 | 久久久久久久久国产 | 美女网站一区二区三区 | 亚州少妇无套内射激情视频 | 一本一道波多野结衣av黑人 | 精品久久久久久中文字幕 | 久久人人爽人人爽人人片av麻烦 | 欧美日韩精品福利在线观看 | 四虎影院.com| 岛国一级毛片 | 一区二区三区国产亚洲网站 | 欧美精品一区二区三区久久 | 国产99视频精品免费视频7 | 6080伦理久久精品亚洲 | 一级片免费观看视频 | 青青青免费网站在线观看 | 99久久精品国产一区二区蜜芽 | 妲己丰满人熟妇大尺度人体艺 | 爆爽久久久一区二区又大又黄又嫩 | 日本视频免费高清一本18 | 一区二区在线免费视频 | 国产成人亚洲精品狼色在线 | 欧美日韩在线精品成人综合网 | 国产精品a免费一区久久电影 | 午夜精品一区二区三区免费视频 | 久久综合九色欧美综合狠狠 | 欧美日韩一区二区综合在线视频 | 久久国产精品高清一区二区三区 | 熟妇丰满多毛的大隂户 | 看一级毛片国产一级毛片 | 日本一级毛片中文字幕 | 成人6969www色| 一本一本久久aa综合精品 | 亚洲av色香蕉一区二区三区老师 | 日本特级黄色大片 | 免费午夜网站 | 国产在线拍揄自揄拍无码 | 99久久国产综合精品女同图片 |