検索
[Chisel] Queue.enq.valid vs deq.valid
- M.R

- 2024年6月29日
- 読了時間: 1分
概要
Queueを使ってデータのやり取りをする場合、以下のような操作が可能です。
Queue.io.enq.valid:falseにするとデータを入れない
Queue.io.deq.valid:falseにするとデータを取り出さない
これらの使い分けについてまとめてみます
Queue.io.enq.valid
これは「ある条件が満たされたらデータを入れない」という場合にfalseにします。そもそもデータがキューに入らないので、取り出されて処理されることもありません。
Queue.io.deq.valid
これは「今はデータを取り出さない」という場合にfalseにします。逆言えばいつかは取り出します。
enq.validと違ってキューは占有されるので、取り出さないと次のデータは取り出せません。
使い分け
そもそも処理対象としての条件を満たしていない場合はenq.validをfalse
処理対象ではあるが今は取り出さないという場合はdeq.readyをfalse
もちろん取り出し後に条件チェックして条件を満たしていなければ捨てる、ということもできますが、1サイクル無駄ですし、キューの領域も占有します。






コメント