You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Firstly, combinational groups are ones with "static"=0 or that assign 1 to their done hole constantly group[done] = 1'b1. This currently breaks an assumption the compiler makes about groups which is that go and done holes are disjoint. In other words go => !done and done => !go. For combinational groups go == done.
An example where it breaks is in par untimed compilation. Consider:
par { A, B }
For this we generate the following assignments to go for A:
If A is combinational, then A never runs because A[done] is always high.
This doesn't seem right, but it's not clear what the correct behavior should be. It's clear the we want such groups. For example, it would be nice for the frontend to be able to emit a bunch of combinational groups for an binary expression tree like: a + b + c + d + e and link them together with go/done holes. Then the Futil compiler could potentially insert registers to break up the expression across multiple cycles in order to meet timing. This frees the frontend from having to worry about things like meeting timing.
The text was updated successfully, but these errors were encountered:
Firstly, combinational groups are ones with
"static"=0
or that assign 1 to their done hole constantlygroup[done] = 1'b1
. This currently breaks an assumption the compiler makes about groups which is thatgo
anddone
holes are disjoint. In other wordsgo => !done
anddone => !go
. For combinational groupsgo == done
.An example where it breaks is in
par
untimed compilation. Consider:For this we generate the following assignments to go for A:
If
A
is combinational, then A never runs becauseA[done]
is always high.This doesn't seem right, but it's not clear what the correct behavior should be. It's clear the we want such groups. For example, it would be nice for the frontend to be able to emit a bunch of combinational groups for an binary expression tree like:
a + b + c + d + e
and link them together withgo/done
holes. Then the Futil compiler could potentially insert registers to break up the expression across multiple cycles in order to meet timing. This frees the frontend from having to worry about things like meeting timing.The text was updated successfully, but these errors were encountered: