aboutsummaryrefslogtreecommitdiffstats
path: root/src/VeriFuzz/Sim/Icarus.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/VeriFuzz/Sim/Icarus.hs')
-rw-r--r--src/VeriFuzz/Sim/Icarus.hs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/VeriFuzz/Sim/Icarus.hs b/src/VeriFuzz/Sim/Icarus.hs
index d9ec05c..8396ff6 100644
--- a/src/VeriFuzz/Sim/Icarus.hs
+++ b/src/VeriFuzz/Sim/Icarus.hs
@@ -34,6 +34,7 @@ import qualified Data.Text as T
import Numeric (readInt)
import Prelude hiding (FilePath)
import Shelly
+import Shelly.Lifted (liftSh)
import VeriFuzz.Sim.Internal
import VeriFuzz.Verilog.AST
import VeriFuzz.Verilog.BitVec
@@ -88,7 +89,7 @@ mask = T.replace "x" "0"
callback :: ByteString -> Text -> ByteString
callback b t = b <> convert (mask t)
-runSimIcarus :: Icarus -> SourceInfo -> [ByteString] -> Sh ByteString
+runSimIcarus :: Icarus -> SourceInfo -> [ByteString] -> ResultSh ByteString
runSimIcarus sim rinfo bss = do
let tb = ModDecl
"main"
@@ -101,12 +102,12 @@ runSimIcarus sim rinfo bss = do
[]
let newtb = instantiateMod m tb
let modWithTb = Verilog [newtb, m]
- writefile "main.v" $ genSource modWithTb
- runSimWithFile sim "main.v" bss
+ liftSh . writefile "main.v" $ genSource modWithTb
+ annotate SimFail $ runSimWithFile sim "main.v" bss
where m = rinfo ^. mainModule
-runSimIcarusWithFile :: Icarus -> FilePath -> [ByteString] -> Sh ByteString
-runSimIcarusWithFile sim f _ = do
+runSimIcarusWithFile :: Icarus -> FilePath -> [ByteString] -> ResultSh ByteString
+runSimIcarusWithFile sim f _ = annotate SimFail . liftSh $ do
dir <- pwd
echoP "Icarus: Compile"
logger_ dir "icarus" $ run (icarusPath sim) ["-o", "main", toTextIgnore f]