projects
/
matthijs
/
master-project
/
cλash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Do the naming of a signal in named function instead of a lambda.
[matthijs/master-project/cλash.git]
/
Translator.hs
diff --git
a/Translator.hs
b/Translator.hs
index 53befc228e6ef947107b72141d9cb7c713fd5606..0431823f1dcc249c738aac1ddf0ab7a6eecdfc9a 100644
(file)
--- a/
Translator.hs
+++ b/
Translator.hs
@@
-1,5
+1,5
@@
module Translator where
module Translator where
-import GHC hiding (loadModule)
+import GHC hiding (loadModule
, sigName
)
import CoreSyn
import qualified CoreUtils
import qualified Var
import CoreSyn
import qualified CoreUtils
import qualified Var
@@
-42,10
+42,14
@@
import VHDLTypes
import qualified VHDL
main = do
import qualified VHDL
main = do
+ makeVHDL "Alu.hs" "register_bank"
+
+makeVHDL :: String -> String -> IO ()
+makeVHDL filename name = do
-- Load the module
-- Load the module
- core <- loadModule
"Adders.hs"
+ core <- loadModule
filename
-- Translate to VHDL
-- Translate to VHDL
- vhdl <- moduleToVHDL core [
"sfull_adder"
]
+ vhdl <- moduleToVHDL core [
name
]
-- Write VHDL to file
writeVHDL vhdl "../vhdl/vhdl/output.vhdl"
-- Write VHDL to file
writeVHDL vhdl "../vhdl/vhdl/output.vhdl"
@@
-56,6
+60,7
@@
listBind filename name = do
let binds = findBinds core [name]
putStr "\n"
putStr $ prettyShow binds
let binds = findBinds core [name]
putStr "\n"
putStr $ prettyShow binds
+ putStr $ showSDoc $ ppr binds
putStr "\n\n"
-- | Translate the binds with the given names from the given core module to
putStr "\n\n"
-- | Translate the binds with the given names from the given core module to
@@
-216,9
+221,14
@@
nameFlatFunction hsfunc fdata =
-- Name the signals in all other functions
Just flatfunc ->
let s = flat_sigs flatfunc in
-- Name the signals in all other functions
Just flatfunc ->
let s = flat_sigs flatfunc in
- let s' = map
(\(id, (SignalInfo Nothing use ty)) -> (id, SignalInfo (Just $ "sig_" ++ (show id)) use ty))
s in
+ let s' = map
nameSignal
s in
let flatfunc' = flatfunc { flat_sigs = s' } in
setFlatFunc hsfunc flatfunc'
let flatfunc' = flatfunc { flat_sigs = s' } in
setFlatFunc hsfunc flatfunc'
+ where
+ nameSignal :: (SignalId, SignalInfo) -> (SignalId, SignalInfo)
+ nameSignal (id, info) =
+ let name = "sig_" ++ (show id) in
+ (id, info {sigName = Just name})
-- | Splits a tuple type into a list of element types, or Nothing if the type
-- is not a tuple type.
-- | Splits a tuple type into a list of element types, or Nothing if the type
-- is not a tuple type.