added conversion to make functions and tasks use only one statement

This commit is contained in:
Zachary Snow 2019-03-26 21:43:27 -04:00
parent 4b3966aa25
commit edaff3dcf6
3 changed files with 33 additions and 0 deletions

View File

@ -18,6 +18,7 @@ import qualified Convert.Logic
import qualified Convert.PackedArray import qualified Convert.PackedArray
import qualified Convert.Return import qualified Convert.Return
import qualified Convert.StarPort import qualified Convert.StarPort
import qualified Convert.StmtBlock
import qualified Convert.Struct import qualified Convert.Struct
import qualified Convert.Typedef import qualified Convert.Typedef
import qualified Convert.UnbasedUnsized import qualified Convert.UnbasedUnsized
@ -33,6 +34,7 @@ phases excludes =
, Convert.Enum.convert , Convert.Enum.convert
, Convert.PackedArray.convert , Convert.PackedArray.convert
, Convert.StarPort.convert , Convert.StarPort.convert
, Convert.StmtBlock.convert
, Convert.Struct.convert , Convert.Struct.convert
, Convert.Return.convert , Convert.Return.convert
, Convert.Typedef.convert , Convert.Typedef.convert

30
src/Convert/StmtBlock.hs Normal file
View File

@ -0,0 +1,30 @@
{- sv2v
- Author: Zachary Snow <zach@zachjs.com>
-
- Conversion for tasks and functions to use only one statement, as required in
- Verilog-2005.
-}
module Convert.StmtBlock (convert) where
import Convert.Traverse
import Language.SystemVerilog.AST
convert :: AST -> AST
convert = traverseDescriptions $ traverseModuleItems convertModuleItem
convertModuleItem :: ModuleItem -> ModuleItem
convertModuleItem (MIPackageItem packageItem) =
MIPackageItem $ convertPackageItem packageItem
convertModuleItem other = other
convertPackageItem :: PackageItem -> PackageItem
convertPackageItem (Function ml t f decls stmts) =
Function ml t f decls [stmtsToStmt stmts]
convertPackageItem (Task ml f decls stmts) =
Task ml f decls [stmtsToStmt stmts]
convertPackageItem other = other
stmtsToStmt :: [Stmt] -> Stmt
stmtsToStmt [stmt] = stmt
stmtsToStmt stmts = Block Nothing [] stmts

View File

@ -58,6 +58,7 @@ executable sv2v
Convert.PackedArray Convert.PackedArray
Convert.Return Convert.Return
Convert.StarPort Convert.StarPort
Convert.StmtBlock
Convert.Struct Convert.Struct
Convert.Typedef Convert.Typedef
Convert.Traverse Convert.Traverse