aboutsummaryrefslogtreecommitdiffstats
path: root/src/VeriFuzz/Sim/Icarus.hs
diff options
context:
space:
mode:
authorYann Herklotz <git@ymhg.org>2019-04-17 11:01:43 +0100
committerYann Herklotz <git@ymhg.org>2019-04-17 11:01:43 +0100
commit1db2dbfd5ffa617e58e95d42fbc84c3cdae56b4a (patch)
tree87af85f8f0e2d1025c55cc30c9828812587d5068 /src/VeriFuzz/Sim/Icarus.hs
parent449caedc72a6ccc76934149205202d43052a214c (diff)
downloadverismith-1db2dbfd5ffa617e58e95d42fbc84c3cdae56b4a.tar.gz
verismith-1db2dbfd5ffa617e58e95d42fbc84c3cdae56b4a.zip
Update simulator with Result type
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]