From 2fa0419fcd066137e0fc2fdc6c8f4128a4a1e663 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Mon, 13 May 2019 16:32:27 +0100 Subject: Add reducer function for two arbitrary Synthesiser --- src/VeriFuzz/Reduce.hs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/VeriFuzz/Reduce.hs b/src/VeriFuzz/Reduce.hs index 2bf5a78..f9a4ebf 100644 --- a/src/VeriFuzz/Reduce.hs +++ b/src/VeriFuzz/Reduce.hs @@ -41,6 +41,7 @@ import Shelly ((<.>)) import qualified Shelly import Shelly.Lifted (MonadSh, liftSh) import VeriFuzz.Internal +import VeriFuzz.Result import VeriFuzz.Sim import VeriFuzz.Sim.Internal import VeriFuzz.Verilog.AST @@ -382,9 +383,17 @@ reduceWithScript top script file = do -- | Reduce a 'SourceInfo' using two Synthesisers that are passed to it. reduceSynth :: (Synthesiser a, Synthesiser b, MonadSh m) - => Yosys - -> a - -> Maybe b + => a + -> b -> SourceInfo -> m SourceInfo -reduceSynth = undefined +reduceSynth a b = reduce synth + where + synth src' = liftSh $ do + r <- runResultT $ do + runSynth a src' + runSynth b src' + runEquiv a b src' + case r of + Fail _ -> return False + Pass _ -> return True -- cgit