diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2018-12-29 01:56:39 +0100 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2018-12-29 01:56:39 +0100 |
commit | 5db743f5343e874dfeab2e4f81ee98550ce8ef49 (patch) | |
tree | 4b54ac492f1384bfd39b2346ce92d42f2c40f1cd /src/Test/VeriFuzz/Verilog/CodeGen.hs | |
parent | f0cc5bb8865b039b18bdc89e81df9bad72e0bdb5 (diff) | |
download | verismith-5db743f5343e874dfeab2e4f81ee98550ce8ef49.tar.gz verismith-5db743f5343e874dfeab2e4f81ee98550ce8ef49.zip |
Changes to the API
Diffstat (limited to 'src/Test/VeriFuzz/Verilog/CodeGen.hs')
-rw-r--r-- | src/Test/VeriFuzz/Verilog/CodeGen.hs | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/Test/VeriFuzz/Verilog/CodeGen.hs b/src/Test/VeriFuzz/Verilog/CodeGen.hs index ecc315f..e1114d2 100644 --- a/src/Test/VeriFuzz/Verilog/CodeGen.hs +++ b/src/Test/VeriFuzz/Verilog/CodeGen.hs @@ -14,7 +14,7 @@ This module generates the code from the Verilog AST defined in module Test.VeriFuzz.Verilog.CodeGen where import Control.Lens -import Data.Maybe (fromMaybe) +import Data.Maybe (fromMaybe, isNothing) import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.IO as T @@ -46,24 +46,29 @@ genModuleDecl mod = <> "endmodule\n" where ports - | null $ mod ^. modPorts = "" - | otherwise = "(\n" <> (sep ",\n" $ genPort <$> mod ^. modPorts) <> "\n)" + | noIn && noOut = "" + | otherwise = "(" <> out <> (sep ", " $ genModPort <$> mod ^. modInPorts) <> ")" modItems = fromList $ genModuleItem <$> mod ^. moduleItems + noOut = isNothing $ mod ^. modOutPort + noIn = null $ mod ^. modInPorts + out = fromMaybe "" . safe head $ mod ^.. modOutPort . _Just . portName . getIdentifier + +genModPort :: Port -> Text +genModPort port = port ^. portName . getIdentifier -- | Generate the 'Port' description. genPort :: Port -> Text genPort port = - dir <> t <> name + t <> name where - dir = fromMaybe "" $ (<>" ") . genPortDir <$> port ^. portDir - t = fromMaybe "wire " $ (<>" ") . genPortType <$> port ^. portType + t = (<>" ") . genPortType $ port ^. portType name = port ^. portName . getIdentifier -- | Convert the 'PortDir' type to 'Text'. genPortDir :: PortDir -> Text -genPortDir Input = "input" -genPortDir Output = "output" -genPortDir InOut = "inout" +genPortDir PortIn = "input" +genPortDir PortOut = "output" +genPortDir PortInOut = "inout" -- | Generate a 'ModItem'. genModuleItem :: ModItem -> Text |