【SV 基础】queue 的一些用法

简介: 【SV 基础】queue 的一些用法

常用


queue.push_back(val);
queue.push_front(val);
val = queue.pop_back();
val = queue.pop_front();
queue.size();               // 获取 queue 的 size
queue.delete(idx);          // 删除指定 index 的元素
queue.delete();             // 删除 queue 中所有元素
queue.insert(index, val);   // 插入元素



不常用


数组支持的用法,也可以用在 queue 上。

queue = queue.shuffle();    // queue 内元素随机乱序
queue = queue.unique();     // 删除 queue 中的重复元素
queue.min();                // 获取最小值
queue.max();                // 获取最大值
queue.reverse();            // 前后逆序
queue.sort();               // 从小大排序
queue.rsort();              // 从大到小排序
queue.sum();                // queue 内元素求和
queue.and();
queue.or();
queue.xor();
queue.product();




queue 内查找


queue = queue.find(x) with (x==val);   // 查找值为 val 的元素,x 不用提前声明
queue = queue.find(x) with (x!==val);  // 删除 queue 中值为 val 的元素


除了 find,还有 find_index、find_first、find_first_index、find_last、find_last_index 等用法。




在 queue 内外随机选择

std::randomize(val) with {val inside queue};                       // 在 queue 中取随机值
std::randomize(val) with {val inside {queue1, queue2};};           // 在两个 queue 中取随机值
std::randomize(val) with {!(val inside queue);};                   // 在 queue 之外取随机值



参考


  1. SystemVerilog IEEE Std 1800-2017


  1. systemverilog queue 的使用,如何判断元素是否存在


  1. SystemVerilog中队列和数组的随机化


  1. SystemVerilog队列及数组方法


目录
相关文章
|
存储 缓存 虚拟化
PCIe地址转换服务(ATS)详解
PCIe地址转换服务(ATS)详解
3991 1
PCIe地址转换服务(ATS)详解
|
缓存 Linux
PCIe地址转换服务(ATS)详解2
PCIe地址转换服务(ATS)详解
3353 0
PCIe地址转换服务(ATS)详解2
|
网络协议
伪头部校验
伪头部校验
1359 6
|
前端开发 Python
【前端验证】通用型顺序比对的uvm scoreboard组件编写
【前端验证】通用型顺序比对的uvm scoreboard组件编写
742 0
|
测试技术 芯片 开发者
芯片验证 | UVM的phase机制
芯片验证 | UVM的phase机制
1383 0
|
测试技术 Shell Windows
SV学习笔记(二)
SV学习笔记(二)
1074 0
|
Java 关系型数据库 测试技术
SV学习笔记(四)
SV学习笔记(四)
1320 0
|
消息中间件 存储 安全
SV学习笔记(六)
SV学习笔记(六)
688 0
【AXI】解读AXI协议中的burst突发传输机制
【AXI】解读AXI协议中的burst突发传输机制
【AXI】解读AXI协议中的burst突发传输机制