From b5fddf170e4f4d798b0411f417735cec21e20b29 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Mon, 13 May 2019 14:57:37 +0100 Subject: Add Identity synthesiser --- src/VeriFuzz/Sim/Identity.hs | 44 ++++++++++++++++++++++++++++++++++++++++++++ verifuzz.cabal | 1 + 2 files changed, 45 insertions(+) create mode 100644 src/VeriFuzz/Sim/Identity.hs diff --git a/src/VeriFuzz/Sim/Identity.hs b/src/VeriFuzz/Sim/Identity.hs new file mode 100644 index 0000000..0160431 --- /dev/null +++ b/src/VeriFuzz/Sim/Identity.hs @@ -0,0 +1,44 @@ +{-| +Module : VeriFuzz.Sim.Identity +Description : The identity simulator and synthesiser. +Copyright : (c) 2019, Yann Herklotz Grave +License : GPL-3 +Maintainer : ymherklotz [at] gmail [dot] com +Stability : experimental +Portability : POSIX + +The identity simulator and synthesiser. +-} + +module VeriFuzz.Sim.Identity where + +import Control.DeepSeq (NFData, rnf, rwhnf) +import Data.Text (Text, unpack) +import Prelude hiding (FilePath) +import Shelly (FilePath) +import Shelly.Lifted (writefile) +import VeriFuzz.Sim.Internal +import VeriFuzz.Verilog.AST +import VeriFuzz.Verilog.CodeGen + +data Identity = Identity { identityDesc :: {-# UNPACK #-} !Text + , identityOutput :: {-# UNPACK #-} !FilePath + } + +instance Tool Identity where + toText (Identity d _) = d + +instance Show Identity where + show t = unpack $ toText t + +instance Synthesiser Identity where + runSynth = runSynthIdentity + synthOutput = identityOutput + setSynthOutput (Identity a _) = Identity a + +instance NFData Identity where + rnf = rwhnf + +runSynthIdentity :: Identity -> SourceInfo -> ResultSh () +runSynthIdentity (Identity _ out) src = + writefile out $ genSource src diff --git a/verifuzz.cabal b/verifuzz.cabal index 70b42c8..ac44a1e 100644 --- a/verifuzz.cabal +++ b/verifuzz.cabal @@ -41,6 +41,7 @@ library , VeriFuzz.Result , VeriFuzz.Sim , VeriFuzz.Sim.Icarus + , VeriFuzz.Sim.Identity , VeriFuzz.Sim.Internal , VeriFuzz.Sim.Quartus , VeriFuzz.Sim.Template -- cgit