aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2019-02-01 19:34:44 +0000
committerYann Herklotz <ymherklotz@gmail.com>2019-02-01 19:34:44 +0000
commita38289ca9d96e97bc4e65b67c50f5805d56a3d86 (patch)
tree8bd1793ab02c3efe5cf668c045c82d77d61d8510 /app
parentafc9287534bc04ae139fa1d16c80ac0fc55e8767 (diff)
downloadverismith-a38289ca9d96e97bc4e65b67c50f5805d56a3d86.tar.gz
verismith-a38289ca9d96e97bc4e65b67c50f5805d56a3d86.zip
Structure changes
Diffstat (limited to 'app')
-rw-r--r--app/Main.hs28
1 files changed, 16 insertions, 12 deletions
diff --git a/app/Main.hs b/app/Main.hs
index 3bb9d9f..ba0e306 100644
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -11,6 +11,7 @@ import qualified Data.Text as T
import Numeric (showHex)
import Prelude hiding (FilePath)
import Shelly
+import Test.QuickCheck (Gen)
import qualified Test.QuickCheck as QC
import VeriFuzz
import qualified VeriFuzz.Graph.RandomAlt as V
@@ -56,24 +57,27 @@ 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 100 (randomDAG :: QC.Gen (G.Gr Gate ()))
- let circ =
- initMod
- . head
- $ (nestUpTo 5 . generateAST $ Circuit gr)
- ^.. getVerilogSrc
- . traverse
- . getDescription
+random :: [Identifier] -> (Expr -> ContAssign) -> Gen ModItem
+random ctx fun = do
+ expr <- QC.sized (exprWithContext ctx)
+ return . ModCA $ fun expr
+
+randomAssigns :: [Identifier] -> [Gen ModItem]
+randomAssigns ids = random ids . ContAssign <$> ids
+
+runEquivalence :: IO ModDecl -> Text -> Int -> IO ()
+runEquivalence gm t i = do
+ m <- gm
shellyFailDir $ do
mkdir_p (fromText "equiv" </> fromText n)
curr <- toTextIgnore <$> pwd
setenv "VERIFUZZ_ROOT" curr
cd (fromText "equiv" </> fromText n)
- catch_sh (runEquiv defaultYosys defaultYosys (Just defaultXst) circ >> echoP "OK") $ onFailure n
+ catch_sh (runEquiv defaultYosys defaultYosys
+ (Just defaultXst) m >> echoP "OK") $
+ onFailure n
cd ".."
- when (i < 5) (runEquivalence t $ i+1)
+ when (i < 5) (runEquivalence gm t $ i+1)
where
n = t <> "_" <> T.pack (show i)