aboutsummaryrefslogtreecommitdiffstats
path: root/src/Verismith/Tool/Vivado.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Verismith/Tool/Vivado.hs')
-rw-r--r--src/Verismith/Tool/Vivado.hs109
1 files changed, 56 insertions, 53 deletions
diff --git a/src/Verismith/Tool/Vivado.hs b/src/Verismith/Tool/Vivado.hs
index ef8b1b7..f0f8a23 100644
--- a/src/Verismith/Tool/Vivado.hs
+++ b/src/Verismith/Tool/Vivado.hs
@@ -1,71 +1,74 @@
-{-|
-Module : Verismith.Tool.Vivado
-Description : Vivado Synthesiser implementation.
-Copyright : (c) 2019, Yann Herklotz Grave
-License : GPL-3
-Maintainer : yann [at] yannherklotz [dot] com
-Stability : experimental
-Portability : POSIX
-
-Vivado Synthesiser implementation.
--}
-
+-- |
+-- Module : Verismith.Tool.Vivado
+-- Description : Vivado Synthesiser implementation.
+-- Copyright : (c) 2019, Yann Herklotz Grave
+-- License : GPL-3
+-- Maintainer : yann [at] yannherklotz [dot] com
+-- Stability : experimental
+-- Portability : POSIX
+--
+-- Vivado Synthesiser implementation.
module Verismith.Tool.Vivado
- ( Vivado(..)
- , defaultVivado
- )
+ ( Vivado (..),
+ defaultVivado,
+ )
where
-import Control.DeepSeq (NFData, rnf, rwhnf)
-import Data.Text (Text, unpack)
-import Prelude hiding (FilePath)
-import Shelly
-import Shelly.Lifted (liftSh)
-import Verismith.Tool.Internal
-import Verismith.Tool.Template
-import Verismith.Verilog.AST
-import Verismith.Verilog.CodeGen
+import Control.DeepSeq (NFData, rnf, rwhnf)
+import Data.Text (Text, unpack)
+import Shelly
+import Shelly.Lifted (liftSh)
+import Verismith.Tool.Internal
+import Verismith.Tool.Template
+import Verismith.Verilog.AST
+import Verismith.Verilog.CodeGen
+import Prelude hiding (FilePath)
-data Vivado = Vivado { vivadoBin :: !(Maybe FilePath)
- , vivadoDesc :: !Text
- , vivadoOutput :: !FilePath
- }
- deriving (Eq)
+data Vivado
+ = Vivado
+ { vivadoBin :: !(Maybe FilePath),
+ vivadoDesc :: !Text,
+ vivadoOutput :: !FilePath
+ }
+ deriving (Eq)
instance Tool Vivado where
- toText (Vivado _ t _) = t
+ toText (Vivado _ t _) = t
instance Show Vivado where
- show t = unpack $ toText t
+ show t = unpack $ toText t
instance Synthesiser Vivado where
- runSynth = runSynthVivado
- synthOutput = vivadoOutput
- setSynthOutput (Vivado a b _) = Vivado a b
+ runSynth = runSynthVivado
+ synthOutput = vivadoOutput
+ setSynthOutput (Vivado a b _) = Vivado a b
instance NFData Vivado where
- rnf = rwhnf
+ rnf = rwhnf
defaultVivado :: Vivado
defaultVivado = Vivado Nothing "vivado" "syn_vivado.v"
runSynthVivado :: Show ann => Vivado -> (SourceInfo ann) -> ResultSh ()
runSynthVivado sim (SourceInfo top src) = do
- dir <- liftSh pwd
- liftSh $ do
- writefile vivadoTcl . vivadoSynthConfig top . toTextIgnore $ synthOutput
- sim
- writefile "rtl.v" $ genSource src
- run_
- "sed"
- [ "s/^module/(* use_dsp48=\"no\" *) (* use_dsp=\"no\" *) module/;"
- , "-i"
- , "rtl.v"
- ]
- let exec_ n = execute_
- SynthFail
- dir
- "vivado"
- (maybe (fromText n) (</> fromText n) $ vivadoBin sim)
- exec_ "vivado" ["-mode", "batch", "-source", toTextIgnore vivadoTcl]
- where vivadoTcl = fromText ("vivado_" <> top) <.> "tcl"
+ dir <- liftSh pwd
+ liftSh $ do
+ writefile vivadoTcl . vivadoSynthConfig top . toTextIgnore $
+ synthOutput
+ sim
+ writefile "rtl.v" $ genSource src
+ run_
+ "sed"
+ [ "s/^module/(* use_dsp48=\"no\" *) (* use_dsp=\"no\" *) module/;",
+ "-i",
+ "rtl.v"
+ ]
+ let exec_ n =
+ execute_
+ SynthFail
+ dir
+ "vivado"
+ (maybe (fromText n) (</> fromText n) $ vivadoBin sim)
+ exec_ "vivado" ["-mode", "batch", "-source", toTextIgnore vivadoTcl]
+ where
+ vivadoTcl = fromText ("vivado_" <> top) <.> "tcl"