fix duplicate param type modules

This commit is contained in:
Zachary Snow 2020-05-31 21:29:37 -04:00
parent 790312d25d
commit ea81d55cdc
2 changed files with 7 additions and 14 deletions

View File

@ -91,7 +91,7 @@ convert files =
else if all isNothing maybeTypeMap then
[]
else
filter (not . flip elem existing) $
filter (not . alreadyExists) $
(:) (removeDefaultTypeParams part) $
if isNothing typeMap
then []
@ -99,6 +99,11 @@ convert files =
where
maybeTypeMap = snd $ info Map.! name
typeMap = defaultInstance maybeTypeMap
existingNames = map maybeModuleName existing
alreadyExists = (flip elem existingNames) . maybeModuleName
maybeModuleName :: Description -> Maybe Identifier
maybeModuleName (Part _ _ _ _ x _ _) = Just x
maybeModuleName _ = Nothing
replaceDefault _ other = [other]
removeDefaultTypeParams :: Description -> Description
@ -235,7 +240,7 @@ convertModuleItemM info (orig @ (Instance m bindings x r p)) =
else if any (not . isSimpleType) resolvedTypes then do
let defaults = Map.map Left resolvedTypes
let bindingsDefaulted = Map.toList $ Map.union bindingsMap defaults
if isDefaultName m || bindingsDefaulted /= Map.toList bindingsMap
if isDefaultName m || bindingsDefaulted == Map.toList bindingsMap
then return $ Instance m bindingsNamed x r p
else return $ Instance (moduleDefaultName m) bindingsDefaulted x r p
else do

View File

@ -1,15 +1,3 @@
module foo_default #(
parameter size = 0
);
initial $display("foo %d %d", 1, size);
endmodule
module bar_default #(
parameter size = 0
);
initial $display("bar %d %d", 1, size);
endmodule
module foo_byte #(
parameter size = 0
);