aboutsummaryrefslogtreecommitdiffstats
path: root/src/VeriFuzz/Sim/Env.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/VeriFuzz/Sim/Env.hs')
-rw-r--r--src/VeriFuzz/Sim/Env.hs58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/VeriFuzz/Sim/Env.hs b/src/VeriFuzz/Sim/Env.hs
new file mode 100644
index 0000000..187afb3
--- /dev/null
+++ b/src/VeriFuzz/Sim/Env.hs
@@ -0,0 +1,58 @@
+{-|
+Module : VeriFuzz.Sim.Env
+Description : Environment to run the simulator and synthesisers in a matrix.
+Copyright : (c) 2019, Yann Herklotz
+License : GPL-3
+Maintainer : ymherklotz [at] gmail [dot] com
+Stability : experimental
+Portability : POSIX
+
+Environment to run the simulator and synthesisers in a matrix.
+-}
+
+module VeriFuzz.Sim.Env
+ ( SynthTool(..)
+ , SimTool(..)
+ , SimEnv(..)
+ , SynthEnv(..)
+ )
+where
+
+import Prelude hiding (FilePath)
+import Shelly
+import VeriFuzz.Sim.Icarus
+import VeriFuzz.Sim.Internal
+import VeriFuzz.Sim.XST
+import VeriFuzz.Sim.Yosys
+
+data SynthTool = XSTSynth {-# UNPACK #-} !XST
+ | YosysSynth {-# UNPACK #-} !Yosys
+ deriving (Eq, Show)
+
+instance Tool SynthTool where
+ toText (XSTSynth xst) = toText xst
+ toText (YosysSynth yosys) = toText yosys
+
+instance Synthesisor SynthTool where
+ runSynth (XSTSynth xst) = runSynth xst
+ runSynth (YosysSynth yosys) = runSynth yosys
+
+newtype SimTool = IcarusSim Icarus
+ deriving (Eq, Show)
+
+instance Tool SimTool where
+ toText (IcarusSim icarus) = toText icarus
+
+instance Simulator SimTool where
+ runSim (IcarusSim icarus) = runSim icarus
+ runSimWithFile (IcarusSim icarus) = runSimWithFile icarus
+
+data SimEnv = SimEnv { simTools :: [SimTool]
+ , simDir :: FilePath
+ }
+
+data SynthEnv = SynthEnv { synthTools :: [SynthTool]
+ , synthDir :: FilePath
+ }
+
+