diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c9062a..cda2b6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## Unreleased + +### Other Enhancements + +* `always_comb` blocks with sensitivities inherited from called functions or + tasks are no longer converted with duplicate expressions + ## v0.0.13 ### New Features diff --git a/src/Convert/AlwaysKW.hs b/src/Convert/AlwaysKW.hs index a88138e..e9b821b 100644 --- a/src/Convert/AlwaysKW.hs +++ b/src/Convert/AlwaysKW.hs @@ -15,6 +15,7 @@ module Convert.AlwaysKW (convert) where import Control.Monad (when, zipWithM, (>=>)) import Control.Monad.State.Strict import Control.Monad.Writer.Strict +import Data.List (nub) import Data.Maybe (fromMaybe, mapMaybe) import Data.Monoid (Any(Any), getAny) @@ -234,7 +235,7 @@ findNonLocals item = do _ <- scoper item (anys, exprs) <- lift get lift $ put prev - let nonLocals = mapMaybe (longestStaticPrefix scopes) exprs + let nonLocals = mapMaybe (longestStaticPrefix scopes) $ nub exprs return (getAny anys, nonLocals) triggerIdent :: Identifier diff --git a/test/core/always_comb.sv.pat b/test/core/always_comb.sv.pat new file mode 100644 index 0000000..40a964f --- /dev/null +++ b/test/core/always_comb.sv.pat @@ -0,0 +1,2 @@ +affirm always @(never or x1 or _sv2v_0) +affirm always @(never or x2 or _sv2v_0) diff --git a/test/core/always_comb.vh b/test/core/always_comb.vh index f425253..4e467cd 100644 --- a/test/core/always_comb.vh +++ b/test/core/always_comb.vh @@ -3,7 +3,7 @@ reg never; reg x``num, y``num, z``num; \ function automatic t``num; \ input inp; \ - t``num = x``num; \ + t``num = x``num + x``num; \ endfunction \ always``sense begin \ y``num = 0; \