sylefeb / Silice

Silice is an easy-to-learn, powerful hardware description language, that simplifies designing hardware algorithms with parallelism and pipelines.
Other
1.3k stars 78 forks source link

Combinational loops may be wrongly detected when passing entire groups as parameters #237

Open sylefeb opened 2 years ago

sylefeb commented 2 years ago

Silice currently assumes all group members are read or written when passed as parameters to subroutine and algorithm calls. As a consequence, false positive could appear as combinational loops could be detected between two members when they are, in fact, not forming a cyclic dependency.

Fixing this requires a better check when resolving calls, using the internal dependency graph of the instantiated algorithm.