aboutsummaryrefslogtreecommitdiffstats
path: root/src/VeriFuzz/Sim/Vivado.hs
diff options
context:
space:
mode:
authorYann Herklotz <git@ymhg.org>2019-05-07 21:20:19 +0100
committerYann Herklotz <git@ymhg.org>2019-05-07 21:20:19 +0100
commit08f2731b97abb6d502422a701276d38e316021ab (patch)
tree837406112c445fabb63e83e468698b3ef3065049 /src/VeriFuzz/Sim/Vivado.hs
parentdb5c1a788e86d52b75ac237270bf2cabcbd296e6 (diff)
downloadverismith-08f2731b97abb6d502422a701276d38e316021ab.tar.gz
verismith-08f2731b97abb6d502422a701276d38e316021ab.zip
Add configuration options for all simulators
Diffstat (limited to 'src/VeriFuzz/Sim/Vivado.hs')
-rw-r--r--src/VeriFuzz/Sim/Vivado.hs27
1 files changed, 15 insertions, 12 deletions
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"