From 84b311d642186927db877c59a95fd36b93f59ec8 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Wed, 9 Jan 2019 18:46:12 +0000 Subject: Small improvements to Icarus --- src/Test/VeriFuzz/Simulator/Icarus.hs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src') 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"] -- cgit