From 08f2731b97abb6d502422a701276d38e316021ab Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Tue, 7 May 2019 21:20:19 +0100 Subject: Add configuration options for all simulators --- src/VeriFuzz/Sim/Vivado.hs | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'src/VeriFuzz/Sim/Vivado.hs') diff --git a/src/VeriFuzz/Sim/Vivado.hs b/src/VeriFuzz/Sim/Vivado.hs index bff4d7c..c17334e 100644 --- a/src/VeriFuzz/Sim/Vivado.hs +++ b/src/VeriFuzz/Sim/Vivado.hs @@ -16,6 +16,7 @@ module VeriFuzz.Sim.Vivado ) where +import Data.Text (Text, unpack) import Prelude hiding (FilePath) import Shelly import Shelly.Lifted (liftSh) @@ -24,24 +25,25 @@ import VeriFuzz.Sim.Template import VeriFuzz.Verilog.AST import VeriFuzz.Verilog.CodeGen -data Vivado = Vivado { vivadoPath :: {-# UNPACK #-} !FilePath +data Vivado = Vivado { vivadoBin :: !(Maybe FilePath) + , vivadoDesc :: {-# UNPACK #-} !Text , vivadoOutput :: {-# UNPACK #-} !FilePath } deriving (Eq) -instance Show Vivado where - show _ = "vivado" - instance Tool Vivado where - toText _ = "vivado" + toText (Vivado _ t _) = t + +instance Show Vivado where + show t = unpack $ toText t instance Synthesiser Vivado where runSynth = runSynthVivado synthOutput = vivadoOutput - setSynthOutput (Vivado a _) = Vivado a + setSynthOutput (Vivado a b _) = Vivado a b defaultVivado :: Vivado -defaultVivado = Vivado "vivado" "syn_vivado.v" +defaultVivado = Vivado Nothing "vivado" "syn_vivado.v" runSynthVivado :: Vivado -> SourceInfo -> ResultSh () runSynthVivado sim (SourceInfo top src) = do @@ -52,10 +54,11 @@ runSynthVivado sim (SourceInfo top src) = do writefile "rtl.v" $ genSource src run_ "sed" ["s/^module/(* use_dsp=\"no\" *) module/;", "-i", "rtl.v"] logger "Vivado: run" - execute_ SynthFail - dir - "vivado" - (vivadoPath sim) - ["-mode", "batch", "-source", toTextIgnore vivadoTcl] + let exec_ n = execute_ + SynthFail + dir + "vivado" + (maybe (fromText n) ( fromText n) $ vivadoBin sim) + exec_ "vivado" ["-mode", "batch", "-source", toTextIgnore vivadoTcl] liftSh $ logger "Vivado: done" where vivadoTcl = fromText ("vivado_" <> top) <.> "tcl" -- cgit