aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2019-01-02 11:37:33 +0100
committerYann Herklotz <ymherklotz@gmail.com>2019-01-02 11:37:33 +0100
commitfed03f4cac43cb41e2e4fa756a43ccaf7e4ed22b (patch)
tree4c0612e98dc741c74b313529c74890ac95f96f7a /src
parente99ef10cf0905a77c59dbec050e4b3f4d553a3a9 (diff)
downloadverismith-fed03f4cac43cb41e2e4fa756a43ccaf7e4ed22b.tar.gz
verismith-fed03f4cac43cb41e2e4fa756a43ccaf7e4ed22b.zip
Finish the testbenck for Icarus
Diffstat (limited to 'src')
-rw-r--r--src/Test/VeriFuzz/Simulator/Icarus.hs20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/Test/VeriFuzz/Simulator/Icarus.hs b/src/Test/VeriFuzz/Simulator/Icarus.hs
index 156d1fc..2c51f59 100644
--- a/src/Test/VeriFuzz/Simulator/Icarus.hs
+++ b/src/Test/VeriFuzz/Simulator/Icarus.hs
@@ -12,9 +12,12 @@ Icarus verilog module.
module Test.VeriFuzz.Simulator.Icarus where
+import Control.Lens
import Data.ByteString (ByteString)
import qualified Data.ByteString as B
+import Data.Foldable (fold)
import Data.Hashable
+import Data.List (transpose)
import Data.Text (Text)
import qualified Data.Text as T
import Prelude hiding (FilePath)
@@ -31,11 +34,24 @@ instance Simulator Icarus where
instance Simulate Icarus where
runSim = runSimIcarus
+addDisplay :: [Stmnt] -> [Stmnt]
+addDisplay s =
+ concat $ transpose [s, replicate l $ TimeCtrl 1 Nothing
+ , replicate l . SysTaskEnable $ Task "display" ["%h", Id "y"]]
+ where
+ l = length s
+
+assignFunc :: [Port] -> ByteString -> Stmnt
+assignFunc inp bs =
+ NonBlockAssign . Assign conc Nothing . Number (B.length bs * 4) $ bsToI bs
+ where
+ conc = RegConcat (portToExpr <$> inp)
+
runSimIcarus :: Icarus -> ModDecl -> [ByteString] -> Sh Int
-runSimIcarus sim mod tst = do
+runSimIcarus sim mod bss = do
let tb = ModDecl "main" [] []
[ Initial $
- (SysTaskEnable $ Task "display" [ Str "21832" ])
+ fold (addDisplay $ assignFunc (mod ^. modInPorts) <$> bss)
<> (SysTaskEnable $ Task "finish" [])
]
let newtb = instantiateMod mod tb