SystemVerilog имеет конструкцию очереди.Они объявлены немного как массивы, но используют символ $
:
int myqueue[$]; // $ indicates a queue
myqueue.push_front(14);
some_int = myqueue.pop_back();
В зависимости от того, как вы используете комбинации методов push_front()
, push_back()
, pop_front()
и pop_back()
, выможет реализовать стеки и FIFO и тому подобное.Быстрый поиск в Интернете должен дать вам полный список методов и опций объявления.
Я сомневаюсь, что очереди SystemVerilog являются синтезируемыми.И я не уверен на 100%, как бы вы сделали круговой буфер из одного без предварительной проверки индексов ...