aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2019-01-09 18:46:12 +0000
committerYann Herklotz <ymherklotz@gmail.com>2019-01-09 18:46:12 +0000
commit84b311d642186927db877c59a95fd36b93f59ec8 (patch)
tree840b3aba50edf4e95bcd7ed96281980fdd8f9084 /src
parent67851ef84652800f2d6a0f2ce501d57c23d4c27a (diff)
downloadverismith-84b311d642186927db877c59a95fd36b93f59ec8.tar.gz
verismith-84b311d642186927db877c59a95fd36b93f59ec8.zip
Small improvements to Icarus
Diffstat (limited to 'src')
-rw-r--r--src/Test/VeriFuzz/Simulator/Icarus.hs19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/Test/VeriFuzz/Simulator/Icarus.hs b/src/Test/VeriFuzz/Simulator/Icarus.hs
index 2c51f59..f2da676 100644
--- a/src/Test/VeriFuzz/Simulator/Icarus.hs
+++ b/src/Test/VeriFuzz/Simulator/Icarus.hs
@@ -26,7 +26,9 @@ import Test.VeriFuzz.Simulator.General
import Test.VeriFuzz.Verilog
import Text.Shakespeare.Text (st)
-newtype Icarus = Icarus { icarusPath :: FilePath }
+data Icarus = Icarus { icarusPath :: FilePath
+ , vvpPath :: FilePath
+ }
instance Simulator Icarus where
toText _ = "iverilog"
@@ -34,6 +36,9 @@ instance Simulator Icarus where
instance Simulate Icarus where
runSim = runSimIcarus
+defaultIcarus :: Icarus
+defaultIcarus = Icarus "iverilog" "vvp"
+
addDisplay :: [Stmnt] -> [Stmnt]
addDisplay s =
concat $ transpose [s, replicate l $ TimeCtrl 1 Nothing
@@ -48,14 +53,14 @@ assignFunc inp bs =
conc = RegConcat (portToExpr <$> inp)
runSimIcarus :: Icarus -> ModDecl -> [ByteString] -> Sh Int
-runSimIcarus sim mod bss = do
+runSimIcarus sim m bss = do
let tb = ModDecl "main" [] []
[ Initial $
- fold (addDisplay $ assignFunc (mod ^. modInPorts) <$> bss)
+ fold (addDisplay $ assignFunc (m ^. modInPorts) <$> bss)
<> (SysTaskEnable $ Task "finish" [])
]
- let newtb = instantiateMod mod tb
- let modWithTb = VerilogSrc $ Description <$> [newtb, mod]
+ let newtb = instantiateMod m tb
+ let modWithTb = VerilogSrc $ Description <$> [newtb, m]
writefile "main.v" $ genSource modWithTb
- run_ "iverilog" ["-o", "main", "main.v"]
- hash <$> run "vvp" ["main"]
+ run_ (icarusPath sim) ["-o", "main", "main.v"]
+ hash <$> run (vvpPath sim) ["main"]