【问题标题】:Checking for value already stored in associative array检查已存储在关联数组中的值
【发布时间】:2018-02-20 04:22:20
【问题描述】:

我想点击一个信号并进入一个关联数组。另外,我需要确保每次我点击一个值时,它应该不同于已经存储在关联数组中的值。

 logic [31:0] addr[int]; 

    eg.if addr[0]=1
          addr[1]=2
          addr[2]=3

如果下一个值再次是 1,2 或 3。我不应该将它分配给我的关联数组并转到下一次迭代。

是否可以使用关联数组或任何其他类型的数组来完成应该更方便。如果可能的话,请提供一些关于如何实现它的逻辑。

如果有什么不清楚的地方请告诉我。任何帮助都非常重要。

【问题讨论】:

    标签: associative-array system-verilog


    【解决方案1】:

    您想使用find() 数组定位器方法。而且由于您将按顺序索引顺序一次添加一个数组元素,因此您应该使用队列。

    logic [31:0] adds[$];
    
    
    if ( addr.find() with (item == value) == {} ) addr.push_back(value);
    

    【讨论】:

    • 感谢您的帮助,但我收到一个错误:无法在此操作中混合打包和解包类型。我从 haddr[31:0] 获取值,并且从您提供的解决方案中将 (item=value} 更改为 (item==value)。
    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多