Use less general names as labels some fields.
[matthijs/master-project/cλash.git] / Translator.hs
index bb5845b6febe4f5d90185249d9cfcb1ced265d5e..88f321eaf10e127f3cc20344f8363df96f7456b1 100644 (file)
@@ -69,9 +69,15 @@ main =
       -- Create entities and architectures for them
       mapM processBind binds
       modFuncs nameFlatFunction
+      modFuncs VHDL.createEntity
+      modFuncs VHDL.createArchitecture
+      -- Extract the library units generated from all the functions in the
+      -- session.
+      funcs <- getFuncs
+      let units = concat $ map VHDL.getLibraryUnits funcs
       return $ AST.DesignFile 
         []
-        []
+        units
 
 findBind :: [CoreBind] -> String -> Maybe CoreBind
 findBind binds lookfor =
@@ -110,7 +116,7 @@ flattenBind hsfunc bind@(NonRec var expr) = do
   let flatfunc = flattenFunction hsfunc bind
   addFunc hsfunc
   setFlatFunc hsfunc flatfunc
-  let used_hsfuncs = map appFunc (apps flatfunc)
+  let used_hsfuncs = map appFunc (flat_apps flatfunc)
   State.mapM resolvFunc used_hsfuncs
   return ()
 
@@ -180,9 +186,9 @@ nameFlatFunction hsfunc fdata =
     Nothing -> fdata
     -- Name the signals in all other functions
     Just flatfunc ->
-      let s = sigs flatfunc in
-      let s' = map (\(Signal id Nothing) -> Signal id (Just $ "sig_" ++ (show id))) s in
-      let flatfunc' = flatfunc { sigs = s' } in
+      let s = flat_sigs flatfunc in
+      let s' = map (\(id, (SignalInfo Nothing ty)) -> (id, SignalInfo (Just $ "sig_" ++ (show id)) ty)) s in
+      let flatfunc' = flatfunc { flat_sigs = s' } in
       fdata { flatFunc = Just flatfunc' }
 
 -- | Splits a tuple type into a list of element types, or Nothing if the type