mirror of https://github.com/zachjs/sv2v.git
move package param step to conversion
This commit is contained in:
parent
821b8bc947
commit
275130e0b0
|
|
@ -45,11 +45,15 @@ convert files =
|
||||||
where
|
where
|
||||||
(files', packages') = convertPackages files
|
(files', packages') = convertPackages files
|
||||||
pis = Map.fromList $
|
pis = Map.fromList $
|
||||||
concatMap (concatMap toPackageItems . snd) $
|
concatMap (concatMap (toPackageItems . makeLocal) . snd) $
|
||||||
filter (not . Map.null . fst) $
|
filter (not . Map.null . fst) $
|
||||||
Map.elems packages'
|
Map.elems packages'
|
||||||
toPackageItems :: PackageItem -> [(Identifier, PackageItem)]
|
toPackageItems :: PackageItem -> [(Identifier, PackageItem)]
|
||||||
toPackageItems item = map (, item) (piNames item)
|
toPackageItems item = map (, item) (piNames item)
|
||||||
|
makeLocal :: PackageItem -> PackageItem
|
||||||
|
makeLocal (Decl (Param _ t x e)) = Decl $ Param Localparam t x e
|
||||||
|
makeLocal (Decl (ParamType _ x t)) = Decl $ ParamType Localparam x t
|
||||||
|
makeLocal other = other
|
||||||
|
|
||||||
-- utility for inserting package items into a set of module items as needed
|
-- utility for inserting package items into a set of module items as needed
|
||||||
inject :: [PackageItem] -> [ModuleItem] -> [ModuleItem]
|
inject :: [PackageItem] -> [ModuleItem] -> [ModuleItem]
|
||||||
|
|
|
||||||
|
|
@ -834,7 +834,7 @@ PackageItems :: { [PackageItem] }
|
||||||
| PITrace PackageItem PackageItems { $1 : $2 ++ $3 }
|
| PITrace PackageItem PackageItems { $1 : $2 ++ $3 }
|
||||||
PackageItem :: { [PackageItem] }
|
PackageItem :: { [PackageItem] }
|
||||||
: DeclTokens(";") { map Decl $ parseDTsAsDecls $1 }
|
: DeclTokens(";") { map Decl $ parseDTsAsDecls $1 }
|
||||||
| ParameterDecl(";") { map (Decl . makeLocalparam) $1 }
|
| ParameterDecl(";") { map Decl $1 }
|
||||||
| NonDeclPackageItem { $1 }
|
| NonDeclPackageItem { $1 }
|
||||||
NonDeclPackageItem :: { [PackageItem] }
|
NonDeclPackageItem :: { [PackageItem] }
|
||||||
: "typedef" Type Identifier ";" { [Decl $ ParamType Localparam $3 $2] }
|
: "typedef" Type Identifier ";" { [Decl $ ParamType Localparam $3 $2] }
|
||||||
|
|
@ -1474,9 +1474,4 @@ validateGenCases items =
|
||||||
where
|
where
|
||||||
(exprs, _) = unzip items
|
(exprs, _) = unzip items
|
||||||
|
|
||||||
makeLocalparam :: Decl -> Decl
|
|
||||||
makeLocalparam (Param _ t x e) = Param Localparam t x e
|
|
||||||
makeLocalparam (ParamType _ x t) = ParamType Localparam x t
|
|
||||||
makeLocalparam other = other
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
package P;
|
||||||
|
parameter X = 1;
|
||||||
|
localparam Y = 2;
|
||||||
|
endpackage
|
||||||
|
|
||||||
|
module Example;
|
||||||
|
import P::*;
|
||||||
|
parameter Z = X * 7;
|
||||||
|
initial $display("%0d %0d %0d", X, Y, Z);
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
module Example;
|
||||||
|
localparam X = 1;
|
||||||
|
localparam Y = 2;
|
||||||
|
parameter Z = X * 7;
|
||||||
|
initial $display("%0d %0d %0d", X, Y, Z);
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
module top;
|
||||||
|
Example e1();
|
||||||
|
Example #(8) e2();
|
||||||
|
Example #(9) e3();
|
||||||
|
endmodule
|
||||||
Loading…
Reference in New Issue