diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2019-01-19 19:35:30 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2019-01-19 19:35:30 +0000 |
commit | 75e6abdcb78c70b7449e5fd7f48d8a3e6b3d164b (patch) | |
tree | f66bf170f9340c86797a623394e63d07ffe66ee8 /src/VeriFuzz/Verilog/CodeGen.hs | |
parent | 4ba440d842e9a0502b429fbc04e2be41c8037a4c (diff) | |
download | verismith-75e6abdcb78c70b7449e5fd7f48d8a3e6b3d164b.tar.gz verismith-75e6abdcb78c70b7449e5fd7f48d8a3e6b3d164b.zip |
Set column to 100
Diffstat (limited to 'src/VeriFuzz/Verilog/CodeGen.hs')
-rw-r--r-- | src/VeriFuzz/Verilog/CodeGen.hs | 48 |
1 files changed, 15 insertions, 33 deletions
diff --git a/src/VeriFuzz/Verilog/CodeGen.hs b/src/VeriFuzz/Verilog/CodeGen.hs index 338838f..34194a6 100644 --- a/src/VeriFuzz/Verilog/CodeGen.hs +++ b/src/VeriFuzz/Verilog/CodeGen.hs @@ -55,14 +55,7 @@ genDescription desc = genModuleDecl $ desc ^. getDescription -- | Generate the 'ModDecl' for a module and convert it to 'Text'. genModuleDecl :: ModDecl -> Text genModuleDecl m = - "module " - <> m - ^. moduleId - . getIdentifier - <> ports - <> ";\n" - <> modI - <> "endmodule\n" + "module " <> m ^. moduleId . getIdentifier <> ports <> ";\n" <> modI <> "endmodule\n" where ports | noIn && noOut = "" | otherwise = "(" <> comma (genModPort <$> outIn) <> ")" @@ -96,10 +89,9 @@ genModuleItem :: ModItem -> Text genModuleItem (ModCA ca) = genContAssign ca genModuleItem (ModInst (Identifier i) (Identifier name) conn) = i <> " " <> name <> "(" <> comma (genExpr . _modConn <$> conn) <> ")" <> ";\n" -genModuleItem (Initial stat) = "initial " <> genStmnt stat -genModuleItem (Always stat) = "always " <> genStmnt stat -genModuleItem (Decl dir port) = - (maybe "" makePort dir) <> genPort port <> ";\n" +genModuleItem (Initial stat ) = "initial " <> genStmnt stat +genModuleItem (Always stat ) = "always " <> genStmnt stat +genModuleItem (Decl dir port) = (maybe "" makePort dir) <> genPort port <> ";\n" where makePort = (<> " ") . genPortDir -- | Generate continuous assignment @@ -111,15 +103,13 @@ genContAssign (ContAssign val e) = "assign " <> name <> " = " <> expr <> ";\n" -- | Generate 'Expr' to 'Text'. genExpr :: Expr -> Text -genExpr (BinOp eRhs bin eLhs) = - "(" <> genExpr eRhs <> genBinaryOperator bin <> genExpr eLhs <> ")" -genExpr (Number s n) = showT s <> "'h" <> T.pack (showHex n "") -genExpr (Id i ) = i ^. getIdentifier -genExpr (Concat c ) = "{" <> comma (genExpr <$> c) <> "}" -genExpr (UnOp u e ) = "(" <> genUnaryOperator u <> genExpr e <> ")" -genExpr (Cond l t f) = - "(" <> genExpr l <> " ? " <> genExpr t <> " : " <> genExpr f <> ")" -genExpr (Str t) = "\"" <> t <> "\"" +genExpr (BinOp eRhs bin eLhs) = "(" <> genExpr eRhs <> genBinaryOperator bin <> genExpr eLhs <> ")" +genExpr (Number s n ) = showT s <> "'h" <> T.pack (showHex n "") +genExpr (Id i ) = i ^. getIdentifier +genExpr (Concat c ) = "{" <> comma (genExpr <$> c) <> "}" +genExpr (UnOp u e ) = "(" <> genUnaryOperator u <> genExpr e <> ")" +genExpr (Cond l t f ) = "(" <> genExpr l <> " ? " <> genExpr t <> " : " <> genExpr f <> ")" +genExpr (Str t ) = "\"" <> t <> "\"" -- | Convert 'BinaryOperator' to 'Text'. genBinaryOperator :: BinaryOperator -> Text @@ -177,13 +167,7 @@ genLVal :: LVal -> Text genLVal (RegId i ) = i ^. getIdentifier genLVal (RegExpr i expr) = i ^. getIdentifier <> " [" <> genExpr expr <> "]" genLVal (RegSize i msb lsb) = - i - ^. getIdentifier - <> " [" - <> genConstExpr msb - <> ":" - <> genConstExpr lsb - <> "]" + i ^. getIdentifier <> " [" <> genConstExpr msb <> ":" <> genConstExpr lsb <> "]" genLVal (RegConcat e) = "{" <> comma (genExpr <$> e) <> "}" genConstExpr :: ConstExpr -> Text @@ -195,8 +179,7 @@ genPortType (Reg signed) | signed = "reg signed" | otherwise = "reg" genAssign :: Text -> Assign -> Text -genAssign op (Assign r d e) = - genLVal r <> op <> maybe "" genDelay d <> genExpr e +genAssign op (Assign r d e) = genLVal r <> op <> maybe "" genDelay d <> genExpr e genStmnt :: Stmnt -> Text genStmnt (TimeCtrl d stat ) = genDelay d <> " " <> defMap stat @@ -209,9 +192,8 @@ genStmnt (TaskEnable task) = genTask task <> ";\n" genStmnt (SysTaskEnable task) = "$" <> genTask task <> ";\n" genTask :: Task -> Text -genTask (Task name expr) - | null expr = i - | otherwise = i <> "(" <> comma (genExpr <$> expr) <> ")" +genTask (Task name expr) | null expr = i + | otherwise = i <> "(" <> comma (genExpr <$> expr) <> ")" where i = name ^. getIdentifier -- | Render the 'Text' to 'IO'. This is equivalent to 'putStrLn'. |