aboutsummaryrefslogtreecommitdiffstats
path: root/src/VeriFuzz/Fuzz.hs
diff options
context:
space:
mode:
authorYann Herklotz <git@ymhg.org>2019-04-19 00:28:11 +0100
committerYann Herklotz <git@ymhg.org>2019-04-19 00:28:11 +0100
commit72ceee9cd751cfa0dc799677325ff2bfbc0f7550 (patch)
treefbbdfdf6cd24cdcd3de73219ff17b792bb7e6a37 /src/VeriFuzz/Fuzz.hs
parent72ca7b273a8adf421d481e0caa97caa8a565187a (diff)
downloadverismith-72ceee9cd751cfa0dc799677325ff2bfbc0f7550.tar.gz
verismith-72ceee9cd751cfa0dc799677325ff2bfbc0f7550.zip
Extend ResultT and Result with more instances
Diffstat (limited to 'src/VeriFuzz/Fuzz.hs')
-rw-r--r--src/VeriFuzz/Fuzz.hs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/VeriFuzz/Fuzz.hs b/src/VeriFuzz/Fuzz.hs
index 5372d94..31503cf 100644
--- a/src/VeriFuzz/Fuzz.hs
+++ b/src/VeriFuzz/Fuzz.hs
@@ -10,7 +10,8 @@ Portability : POSIX
Environment to run the simulator and synthesisers in a matrix.
-}
-{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE TemplateHaskell #-}
module VeriFuzz.Fuzz
( SynthTool(..)
@@ -27,9 +28,11 @@ module VeriFuzz.Fuzz
)
where
+import Control.Exception.Lifted (finally)
import Control.Lens
import Control.Monad.IO.Class
import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Control (MonadBaseControl)
import Control.Monad.Trans.Reader hiding (local)
import Control.Monad.Trans.State.Strict
import Data.ByteString (ByteString)
@@ -200,7 +203,7 @@ timeit a = do
end <- liftIO getCurrentTime
return (diffUTCTime end start, result)
-synthesis :: MonadSh m => SourceInfo -> Fuzz m ()
+synthesis :: (MonadBaseControl IO m, MonadSh m) => SourceInfo -> Fuzz m ()
synthesis src = do
synth <- synthesisers
results <- liftSh $ mapM exec synth
@@ -230,7 +233,7 @@ make f = liftSh $ do
mkdir_p f
cp_r "data" $ f </> fromText "data"
-pop :: MonadSh m => FilePath -> m a -> m a
+pop :: (MonadBaseControl IO m, MonadSh m) => FilePath -> m a -> m a
pop f a = do
dir <- liftSh pwd
liftSh $ cd f
@@ -238,7 +241,7 @@ pop f a = do
liftSh $ cd dir
return ret
-equivalence :: MonadSh m => SourceInfo -> Fuzz m ()
+equivalence :: (MonadBaseControl IO m, MonadSh m) => SourceInfo -> Fuzz m ()
equivalence src = do
yos <- lift $ asks yosysInstance
synth <- passedSynthesis
@@ -259,7 +262,7 @@ equivalence src = do
where
dir = fromText $ "equiv_" <> toText a <> "_" <> toText b
-fuzz :: (MonadIO m, MonadSh m) => Gen SourceInfo -> Fuzz m FuzzResult
+fuzz :: (MonadBaseControl IO m, MonadIO m, MonadSh m) => Gen SourceInfo -> Fuzz m FuzzResult
fuzz gen = do
make "output"
pop "output" $ do