aboutsummaryrefslogtreecommitdiffstats
path: root/src/Verismith/Fuzz.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Verismith/Fuzz.hs')
-rw-r--r--src/Verismith/Fuzz.hs46
1 files changed, 28 insertions, 18 deletions
diff --git a/src/Verismith/Fuzz.hs b/src/Verismith/Fuzz.hs
index 42c667e..c2c30a9 100644
--- a/src/Verismith/Fuzz.hs
+++ b/src/Verismith/Fuzz.hs
@@ -324,10 +324,6 @@ equivalence src = do
where
dir = fromText $ "equiv_" <> toText a <> "_" <> toText b
-equivalenceEMI :: (MonadBaseControl IO m, MonadSh m, Show ann) => (SourceInfo ann) -> Fuzz m ()
-equivalenceEMI src = do
- datadir <- fmap _fuzzDataDir askOpts
-
simulation :: (MonadIO m, MonadSh m, Show ann) => (SourceInfo ann) -> Fuzz m ()
simulation src = do
datadir <- fmap _fuzzDataDir askOpts
@@ -365,6 +361,31 @@ simulation src = do
where
dir = fromText $ "countereg_sim_" <> toText a
+simulationEMI :: (MonadIO m, MonadSh m, Show ann) => (SourceInfo ann) -> Fuzz m ()
+simulationEMI src = do
+ datadir <- fmap _fuzzDataDir askOpts
+ synth <- passedSynthesis
+ counterEgs <- failEquivWithIdentityCE
+ vals <- liftIO $ generateByteString Nothing 32 20
+ ident <- liftSh $ sim datadir vals Nothing defaultIdentitySynth
+ resTimes <- liftSh $ mapM (sim datadir vals (justPass $ snd ident)) synth
+ fuzzSimResults .= toSimResult defaultIcarusSim vals synth resTimes
+ liftSh
+ . inspect
+ $ (\(_, r) -> bimap show (T.unpack . T.take 10 . showBS) r)
+ <$> (ident : resTimes)
+ where
+ sim datadir b i a = toolRun ("simulation for " <> toText a) . runResultT $ do
+ make dir
+ pop dir $ do
+ liftSh $ do
+ cp (fromText ".." </> fromText (toText a) </> synthOutput a) $
+ synthOutput a
+ writefile "rtl.v" $ genSource src
+ runSimIc datadir defaultIcarus a src b i
+ where
+ dir = fromText $ "countereg_sim_" <> toText a
+
failEquivWithIdentity :: (MonadSh m) => Fuzz m [SynthResult]
failEquivWithIdentity = filter withIdentity . _fuzzSynthResults <$> get
where
@@ -610,24 +631,13 @@ fuzzEMI gen = do
. propSeed
?~ seed'
(tsynth, _) <- titleRun "Synthesis" $ synthesis src
- (tequiv, _) <-
- if (_fuzzOptsNoEquiv opts)
- then return (0, mempty)
- else titleRun "Equivalence Check" $ equivalenceEMI src
(_, _) <-
if (_fuzzOptsNoSim opts)
then return (0, mempty)
- else titleRun "Simulation" $ simulation src
+ else titleRun "Simulation" $ simulationEMI src
fails <- failEquivWithIdentity
failedSim <- failedSimulations
synthFails <- failedSynthesis
- redResult <-
- whenMaybe
- ( not (null failedSim && null fails && null synthFails)
- && not (_fuzzOptsNoReduction opts)
- )
- . titleRun "Reduction"
- $ reduction src
state_ <- get
currdir <- liftSh pwd
let vi = flip view state_
@@ -639,6 +649,6 @@ fuzzEMI gen = do
(vi fuzzSynthStatus)
size
tsynth
- tequiv
- (getTime redResult)
+ 0
+ 0
return report