Commit 275130e0 by Zachary Snow

move package param step to conversion

parent 821b8bc9
...@@ -45,11 +45,15 @@ convert files = ...@@ -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] } ...@@ -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 = ...@@ -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
} }
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
module Example;
localparam X = 1;
localparam Y = 2;
parameter Z = X * 7;
initial $display("%0d %0d %0d", X, Y, Z);
endmodule
module top;
Example e1();
Example #(8) e2();
Example #(9) e3();
endmodule
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment