drop explicit string type from parameters

This commit is contained in:
Zachary Snow 2023-01-07 18:26:23 -07:00
parent c840bcd623
commit 9bab0448e3
7 changed files with 53 additions and 0 deletions

View File

@ -7,6 +7,10 @@
some designs
* Fixed unneeded scoping of constant function calls used in type lookups
### New Features
* `string` data type is now dropped from parameters and localparams
### Other Enhancements
* Added elaboration for accesses to fields of struct constants, which can

View File

@ -47,6 +47,7 @@ import qualified Convert.ResolveBindings
import qualified Convert.Simplify
import qualified Convert.Stream
import qualified Convert.StringParam
import qualified Convert.StringType
import qualified Convert.Struct
import qualified Convert.StructConst
import qualified Convert.TFBlock
@ -71,6 +72,7 @@ finalPhases _ =
, Convert.EmptyArgs.convert
, Convert.FuncRet.convert
, Convert.TFBlock.convert
, Convert.StringType.convert
]
mainPhases :: Selector -> [Phase]

23
src/Convert/StringType.hs Normal file
View File

@ -0,0 +1,23 @@
{- sv2v
- Author: Zachary Snow <zach@zachjs.com>
-
- Drop explicit `string` data type from parameters and localparams
-}
module Convert.StringType (convert) where
import Convert.Traverse
import Language.SystemVerilog.AST
convert :: [AST] -> [AST]
convert = map $ traverseDescriptions $ traverseModuleItems convertModuleItem
convertModuleItem :: ModuleItem -> ModuleItem
convertModuleItem = traverseNodes id traverseDecl id id traverseStmt
traverseStmt :: Stmt -> Stmt
traverseStmt = traverseNestedStmts $ traverseStmtDecls traverseDecl
traverseDecl :: Decl -> Decl
traverseDecl (Param s (NonInteger TString) x e) = Param s UnknownType x e
traverseDecl other = other

View File

@ -100,6 +100,7 @@ executable sv2v
Convert.Simplify
Convert.Stream
Convert.StringParam
Convert.StringType
Convert.Struct
Convert.StructConst
Convert.TFBlock

2
test/core/string_type.sv Normal file
View File

@ -0,0 +1,2 @@
`define TYPE string
`include "string_type.vh"

2
test/core/string_type.v Normal file
View File

@ -0,0 +1,2 @@
`define TYPE
`include "string_type.vh"

19
test/core/string_type.vh Normal file
View File

@ -0,0 +1,19 @@
module mod;
parameter `TYPE P = "not";
localparam `TYPE L = "here";
initial begin
$display("mod.P = %s", P);
$display("mod.L = %s", L);
end
endmodule
module top;
parameter `TYPE P = "param";
localparam `TYPE L = "local";
initial begin
$display("top.P = %s", P);
$display("top.L = %s", L);
end
mod m1();
mod #("over") m2();
endmodule