systemverilog支持链表吗?

vix*_*xos 1 verilog linked-list system-verilog

我尝试在systemverilog中实现一个循环的双向链表类(带有一个单一的标记节点).列表本身似乎按预期工作但最终崩溃模拟器(破坏堆栈?)

这让我想知道这是否是语言根本不支持的(在分配方面)?SV确实有一个"队列"结构,可以以相同的方式工作(在访问和插入时间可能更有效).

有任何想法吗?

Mar*_*rty 6

SystemVerilog确实有一个队列构造.它们被声明有点像数组,但使用$符号:

int myqueue[$];   // $ indicates a queue

myqueue.push_front(14);
some_int = myqueue.pop_back();
Run Code Online (Sandbox Code Playgroud)

您可以根据自己使用的方法组合push_front(),push_back(),pop_front()pop_back(),你可以实现栈和FIFO和等.快速的互联网搜索应该为您提供方法和声明选项的完整列表.

我怀疑SystemVerilog队列是否可以合成.而且我不是百分之百确定如何在不首先检查索引的情况下从一个制作循环缓冲区...