mirror of https://github.com/zachjs/sv2v.git
added package enum item name resolution (resolves #16)
This commit is contained in:
parent
fabdc08493
commit
b48ca0bb8f
|
|
@ -64,7 +64,18 @@ convertFile packages ast =
|
||||||
|
|
||||||
globalPackageItems :: Identifier -> PackageItems -> [PackageItem]
|
globalPackageItems :: Identifier -> PackageItems -> [PackageItem]
|
||||||
globalPackageItems name items =
|
globalPackageItems name items =
|
||||||
map (prefixPackageItem name (Map.keysSet items)) (Map.elems items)
|
map (prefixPackageItem name (packageItemIdents items)) (Map.elems items)
|
||||||
|
|
||||||
|
packageItemIdents :: PackageItems -> Idents
|
||||||
|
packageItemIdents items =
|
||||||
|
Set.union
|
||||||
|
(Map.keysSet items)
|
||||||
|
(Set.unions $ map packageItemSubIdents $ Map.elems items)
|
||||||
|
where
|
||||||
|
packageItemSubIdents :: PackageItem -> Idents
|
||||||
|
packageItemSubIdents (Typedef (Enum _ enumItems _) _) =
|
||||||
|
Set.fromList $ map fst enumItems
|
||||||
|
packageItemSubIdents _ = Set.empty
|
||||||
|
|
||||||
prefixPackageItem :: Identifier -> Idents -> PackageItem -> PackageItem
|
prefixPackageItem :: Identifier -> Idents -> PackageItem -> PackageItem
|
||||||
prefixPackageItem packageName idents item =
|
prefixPackageItem packageName idents item =
|
||||||
|
|
@ -84,6 +95,10 @@ prefixPackageItem packageName idents item =
|
||||||
Decl (Localparam a x b) -> Decl (Localparam a (prefix x) b)
|
Decl (Localparam a x b) -> Decl (Localparam a (prefix x) b)
|
||||||
other -> other
|
other -> other
|
||||||
convertType (Alias Nothing x rs) = Alias Nothing (prefix x) rs
|
convertType (Alias Nothing x rs) = Alias Nothing (prefix x) rs
|
||||||
|
convertType (Enum mt items rs) = Enum mt items' rs
|
||||||
|
where
|
||||||
|
items' = map prefixItem items
|
||||||
|
prefixItem (x, me) = (prefix x, me)
|
||||||
convertType other = other
|
convertType other = other
|
||||||
convertExpr (Ident x) = Ident $ prefix x
|
convertExpr (Ident x) = Ident $ prefix x
|
||||||
convertExpr other = other
|
convertExpr other = other
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
package foo_pkg;
|
||||||
|
typedef enum logic [2:0] {
|
||||||
|
AccessAck = 3'd0,
|
||||||
|
AccessAckData = 3'd1
|
||||||
|
} inp_t;
|
||||||
|
endpackage
|
||||||
|
|
||||||
|
module top;
|
||||||
|
foo_pkg::inp_t test;
|
||||||
|
assign test = foo_pkg::AccessAck;
|
||||||
|
initial $display(test);
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
module top;
|
||||||
|
wire [2:0] test;
|
||||||
|
assign test = 3'd0;
|
||||||
|
initial $display(test);
|
||||||
|
endmodule
|
||||||
Loading…
Reference in New Issue