aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2019-01-21 08:08:30 +0000
committerYann Herklotz <ymherklotz@gmail.com>2019-01-21 08:08:30 +0000
commita233f4eb2d5587096ec8f006c887ef04a5cc50d9 (patch)
treec815af4fa799ea54d4e66c1e64988ab3d165d548 /app
parent3e37e75f804cbf6b5ce04a427888fb0f0859660a (diff)
downloadverismith-a233f4eb2d5587096ec8f006c887ef04a5cc50d9.tar.gz
verismith-a233f4eb2d5587096ec8f006c887ef04a5cc50d9.zip
Make main infinitely recurse
Diffstat (limited to 'app')
-rw-r--r--app/Main.hs33
1 files changed, 23 insertions, 10 deletions
diff --git a/app/Main.hs b/app/Main.hs
index b651a68..76fe45c 100644
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,10 +1,12 @@
module Main where
+import Control.Concurrent
import Control.Lens
import qualified Crypto.Random.DRBG as C
import Data.ByteString (ByteString)
import qualified Data.Graph.Inductive as G
import Data.Text (Text)
+import qualified Data.Text as T
import Numeric (showHex)
import Prelude hiding (FilePath)
import Shelly
@@ -33,9 +35,14 @@ runSimulation = do
val <- shelly $ runSim defaultIcarus (initMod circ) rand
putStrLn $ showHex (abs val) ""
-runEquivalence :: Text -> IO ()
-runEquivalence t = do
- gr <- QC.generate $ rDups <$> QC.resize 100 (randomDAG :: QC.Gen (G.Gr Gate ()))
+onFailure :: Text -> RunFailed -> Sh ()
+onFailure t _ = do
+ cd ".."
+ cp_r (fromText t) $ fromText (t <> "_failed")
+
+runEquivalence :: Text -> Int -> IO ()
+runEquivalence t i = do
+ gr <- QC.generate $ rDups <$> QC.resize 1000 (randomDAG :: QC.Gen (G.Gr Gate ()))
let circ =
initMod
. head
@@ -43,15 +50,21 @@ runEquivalence t = do
^.. getVerilogSrc
. traverse
. getDescription
- shelly . verbosely $ do
- mkdir_p (fromText "equiv" </> fromText t)
+ shellyFailDir . verbosely $ do
+ mkdir_p (fromText "equiv" </> fromText n)
curr <- toTextIgnore <$> pwd
setenv "VERIFUZZ_ROOT" curr
- cd (fromText "equiv" </> fromText t)
- runEquiv defaultYosys defaultYosys (Just defaultXst) circ
+ cd (fromText "equiv" </> fromText n)
+ catch_sh (runEquiv defaultYosys defaultYosys (Just defaultXst) circ) $ onFailure n
+ cd ".."
+ runEquivalence t $ i+1
+ where
+ n = t <> "_" <> T.pack (show i)
main :: IO ()
--main = sample (arbitrary :: Gen (Circuit Input))
-main =
- -- runEquivalence
- runSimulation
+main = do
+ _ <- forkIO $ runEquivalence "test_1" 0
+ _ <- forkIO $ runEquivalence "test_2" 0
+ _ <- forkIO $ runEquivalence "test_3" 0
+ runEquivalence "test_4" 0