EPFL-LAP / dynamatic

DHLS (Dynamic High-Level Synthesis) compiler based on MLIR
Other
60 stars 18 forks source link

[Speculation] SaveCommit units don't handle NoCmp signal correctly #174

Open shundroid opened 6 hours ago

shundroid commented 6 hours ago

Background (from Haoran's thesis):

In Haoran's implementation, NoCmp signal seems to be handled incorrectly and causes a bug that SaveCommit units cannot accept any control signals after NoCmp signal is sent to them.

In detail as follows:

  1. NoCmpEn signal is sent to the save-commit unit. That is, pValidArray(1) = '1' and controlInArray(0) = "100".
  2. Then, NoCmpEn becomes 1 and other something-En signals are 0 (en_proc process in the save_commit_control arch)
  3. readyArray(1) becomes 0 because NoCmpEn is not handled in the ready_proc process
  4. It never accepts the NoCmpEn signal and stalls permanently
shundroid commented 6 hours ago

Apart from the thesis, NoCmpEn signal is defined separately from ResendEn signal and NoCmpEn signal is not handled correctly in the current implementation. I guess that this NoCmpEn signal is probably old and unnecessary. I removed NoCmpEn signal and replaced it with ResendEn signal and it worked.

Fixed in #172