diff options
author | Yann Herklotz <git@ymhg.org> | 2019-04-17 11:01:43 +0100 |
---|---|---|
committer | Yann Herklotz <git@ymhg.org> | 2019-04-17 11:01:43 +0100 |
commit | 1db2dbfd5ffa617e58e95d42fbc84c3cdae56b4a (patch) | |
tree | 87af85f8f0e2d1025c55cc30c9828812587d5068 /src/VeriFuzz/Sim/Icarus.hs | |
parent | 449caedc72a6ccc76934149205202d43052a214c (diff) | |
download | verismith-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.hs | 11 |
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] |