aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYann Herklotz <git@ymhg.org>2019-05-13 15:13:21 +0100
committerYann Herklotz <git@ymhg.org>2019-05-13 15:13:21 +0100
commitf984a79a85b4cc5a077fbf0f7ae6ac52a51822e8 (patch)
tree5493509069da254e757005d6e596d8246e6a514f /src
parent8cab5bfe71157c907ca51ac56fef45ccd6c3229b (diff)
downloadverismith-f984a79a85b4cc5a077fbf0f7ae6ac52a51822e8.tar.gz
verismith-f984a79a85b4cc5a077fbf0f7ae6ac52a51822e8.zip
Add Identity to Report
Diffstat (limited to 'src')
-rw-r--r--src/VeriFuzz/Report.hs61
-rw-r--r--src/VeriFuzz/Sim/Identity.hs10
2 files changed, 48 insertions, 23 deletions
diff --git a/src/VeriFuzz/Report.hs b/src/VeriFuzz/Report.hs
index 77a5942..8f7f4f3 100644
--- a/src/VeriFuzz/Report.hs
+++ b/src/VeriFuzz/Report.hs
@@ -25,13 +25,14 @@ module VeriFuzz.Report
, defaultYosysSynth
, defaultXSTSynth
, defaultQuartusSynth
+ , defaultIdentitySynth
, descriptionToSim
, descriptionToSynth
)
where
import Control.DeepSeq (NFData, rnf)
-import Control.Lens
+import Control.Lens hiding (Identity)
import Data.ByteString (ByteString)
import Data.Maybe (fromMaybe)
import Prelude hiding (FilePath)
@@ -39,6 +40,7 @@ import Shelly (fromText)
import VeriFuzz.Config
import VeriFuzz.Result
import VeriFuzz.Sim.Icarus
+import VeriFuzz.Sim.Identity
import VeriFuzz.Sim.Internal
import VeriFuzz.Sim.Quartus
import VeriFuzz.Sim.Vivado
@@ -55,41 +57,48 @@ data SynthTool = XSTSynth {-# UNPACK #-} !XST
| VivadoSynth {-# UNPACK #-} !Vivado
| YosysSynth {-# UNPACK #-} !Yosys
| QuartusSynth {-# UNPACK #-} !Quartus
+ | IdentitySynth {-# UNPACK #-} !Identity
deriving (Eq)
instance NFData SynthTool where
- rnf (XSTSynth a) = rnf a
- rnf (VivadoSynth a) = rnf a
- rnf (YosysSynth a) = rnf a
- rnf (QuartusSynth a) = rnf a
+ rnf (XSTSynth a) = rnf a
+ rnf (VivadoSynth a) = rnf a
+ rnf (YosysSynth a) = rnf a
+ rnf (QuartusSynth a) = rnf a
+ rnf (IdentitySynth a) = rnf a
instance Show SynthTool where
- show (XSTSynth xst) = show xst
- show (VivadoSynth vivado) = show vivado
- show (YosysSynth yosys) = show yosys
- show (QuartusSynth quartus) = show quartus
+ show (XSTSynth xst) = show xst
+ show (VivadoSynth vivado) = show vivado
+ show (YosysSynth yosys) = show yosys
+ show (QuartusSynth quartus) = show quartus
+ show (IdentitySynth identity) = show identity
instance Tool SynthTool where
- toText (XSTSynth xst) = toText xst
- toText (VivadoSynth vivado) = toText vivado
- toText (YosysSynth yosys) = toText yosys
- toText (QuartusSynth quartus) = toText quartus
+ toText (XSTSynth xst) = toText xst
+ toText (VivadoSynth vivado) = toText vivado
+ toText (YosysSynth yosys) = toText yosys
+ toText (QuartusSynth quartus) = toText quartus
+ toText (IdentitySynth identity) = toText identity
instance Synthesiser SynthTool where
- runSynth (XSTSynth xst) = runSynth xst
- runSynth (VivadoSynth vivado) = runSynth vivado
- runSynth (YosysSynth yosys) = runSynth yosys
- runSynth (QuartusSynth quartus) = runSynth quartus
-
- synthOutput (XSTSynth xst) = synthOutput xst
- synthOutput (VivadoSynth vivado) = synthOutput vivado
- synthOutput (YosysSynth yosys) = synthOutput yosys
- synthOutput (QuartusSynth quartus) = synthOutput quartus
+ runSynth (XSTSynth xst) = runSynth xst
+ runSynth (VivadoSynth vivado) = runSynth vivado
+ runSynth (YosysSynth yosys) = runSynth yosys
+ runSynth (QuartusSynth quartus) = runSynth quartus
+ runSynth (IdentitySynth identity) = runSynth identity
+
+ synthOutput (XSTSynth xst) = synthOutput xst
+ synthOutput (VivadoSynth vivado) = synthOutput vivado
+ synthOutput (YosysSynth yosys) = synthOutput yosys
+ synthOutput (QuartusSynth quartus) = synthOutput quartus
+ synthOutput (IdentitySynth identity) = synthOutput identity
setSynthOutput (YosysSynth yosys) = YosysSynth . setSynthOutput yosys
setSynthOutput (XSTSynth xst) = XSTSynth . setSynthOutput xst
setSynthOutput (VivadoSynth vivado) = VivadoSynth . setSynthOutput vivado
setSynthOutput (QuartusSynth quartus) = QuartusSynth . setSynthOutput quartus
+ setSynthOutput (IdentitySynth identity) = IdentitySynth . setSynthOutput identity
defaultYosysSynth :: SynthTool
defaultYosysSynth = YosysSynth defaultYosys
@@ -103,6 +112,9 @@ defaultVivadoSynth = VivadoSynth defaultVivado
defaultXSTSynth :: SynthTool
defaultXSTSynth = XSTSynth defaultXST
+defaultIdentitySynth :: SynthTool
+defaultIdentitySynth = IdentitySynth defaultIdentity
+
newtype SimTool = IcarusSim Icarus
deriving (Eq)
@@ -169,6 +181,7 @@ descriptionToSim (SimDescription "icarus") = defaultIcarusSim
descriptionToSim s =
error $ "Could not find implementation for simulator '" <> show s <> "'"
+-- | Convert a description to a synthesiser.
descriptionToSynth :: SynthDescription -> SynthTool
descriptionToSynth (SynthDescription "yosys" bin desc out) =
YosysSynth
@@ -186,5 +199,9 @@ descriptionToSynth (SynthDescription "quartus" bin desc out) =
QuartusSynth
. Quartus (fromText <$> bin) (fromMaybe (quartusDesc defaultQuartus) $ desc)
$ maybe (quartusOutput defaultQuartus) fromText out
+descriptionToSynth (SynthDescription "identity" _ desc out) =
+ IdentitySynth
+ . Identity (fromMaybe (identityDesc defaultIdentity) $ desc)
+ $ maybe (identityOutput defaultIdentity) fromText out
descriptionToSynth s =
error $ "Could not find implementation for synthesiser '" <> show s <> "'"
diff --git a/src/VeriFuzz/Sim/Identity.hs b/src/VeriFuzz/Sim/Identity.hs
index 0160431..1b88032 100644
--- a/src/VeriFuzz/Sim/Identity.hs
+++ b/src/VeriFuzz/Sim/Identity.hs
@@ -10,7 +10,11 @@ Portability : POSIX
The identity simulator and synthesiser.
-}
-module VeriFuzz.Sim.Identity where
+module VeriFuzz.Sim.Identity
+ ( Identity(..)
+ , defaultIdentity
+ )
+where
import Control.DeepSeq (NFData, rnf, rwhnf)
import Data.Text (Text, unpack)
@@ -24,6 +28,7 @@ import VeriFuzz.Verilog.CodeGen
data Identity = Identity { identityDesc :: {-# UNPACK #-} !Text
, identityOutput :: {-# UNPACK #-} !FilePath
}
+ deriving (Eq)
instance Tool Identity where
toText (Identity d _) = d
@@ -42,3 +47,6 @@ instance NFData Identity where
runSynthIdentity :: Identity -> SourceInfo -> ResultSh ()
runSynthIdentity (Identity _ out) src =
writefile out $ genSource src
+
+defaultIdentity :: Identity
+defaultIdentity = Identity "identity" "syn_identity.v"