开云体育

ctrl + shift + ? for shortcuts
© 2025 开云体育

Re: Using mkRWireUnsafe for communicating between methods


 
Edited

I've completely refactored my TagEngine into what I hope is a much more elegant and correct design. Some things of concern that I would like to confirm:
?
1. When rules and methods conflict, do methods take priority over a rule in a given cycle?
2. With what granularity can bluespec resolve conflicts? For example, in my `requestTag` method, we have the , which unlike other case arms in that method, does not actually write to `inUseVec`. This means that presumably, the compiler should be able to schedule the "retireTags" rule when `resetTagCounter` register is `Nothing` even though the "retireTags" rule also writes to `inUseVec`.
?
In practice, I am having trouble determining if this is the case. For one, deciphering `resetTagCounter` in VCD is challenging since bluesim doesn't take advantage of ASCII string support in VCD. Furthermore, the dumped schedule for "retire_tags" doesn't seem too mention the `requestTag` method:
?
```
Rule: tagEngine_retire_tags
Predicate: tagEngine_retireTag.whas && tagEngine_freeQueue.i_notFull
Blocking rules: (none)
```
?

Join [email protected] to automatically receive all group messages.