drop attributes attached to nested generate regions

This commit is contained in:
Zachary Snow 2024-10-27 01:00:51 -04:00
parent 24ab7aee24
commit 7808819c48
3 changed files with 13 additions and 1 deletions

View File

@ -20,6 +20,8 @@
declarations after inlining
* Fixed inlining of interfaces and interface-bound modules containing port
declarations tagged with an attribute
* Fixed stray attributes producing invalid nested output when attached to
inlined interfaces and interface-bounds modules
* Fixed `` `resetall `` not resetting the `` `default_nettype ``
### Other Enhancements

View File

@ -139,6 +139,8 @@ collectDescriptionsM = mapM_
breakGenerate :: ModuleItem -> [ModuleItem] -> [ModuleItem]
breakGenerate (Generate genItems) items =
foldr breakGenerateStep items genItems
breakGenerate (MIAttr _ (Generate genItems)) items =
foldr breakGenerateStep items genItems
breakGenerate item items = item : items
breakGenerateStep :: GenItem -> [ModuleItem] -> [ModuleItem]
@ -1064,8 +1066,14 @@ traverseNestedGenItemsM mapper = fullMapper
traverseNestedGenItems :: Mapper GenItem -> Mapper GenItem
traverseNestedGenItems = unmonad traverseNestedGenItemsM
innerGenItems :: ModuleItem -> Maybe [GenItem]
innerGenItems (MIAttr _ item) = innerGenItems item
innerGenItems (Generate items) = Just items
innerGenItems _ = Nothing
flattenGenBlocks :: GenItem -> [GenItem]
flattenGenBlocks (GenModuleItem (Generate items)) = items
flattenGenBlocks (GenModuleItem item)
| Just items <- innerGenItems item = items
flattenGenBlocks (GenFor _ _ _ GenNull) = []
flattenGenBlocks GenNull = []
flattenGenBlocks other = [other]

View File

@ -76,6 +76,7 @@ module ModuleB(is);
bn.tick;
endtask
initial $display("Hello I'm ModuleB %0d!", WIDTH);
(* this_attribute_is_ignored *)
ModuleBNested #(WIDTH) bn(is);
endmodule
@ -96,6 +97,7 @@ endmodule
module top;
logic inp;
(* this_attribute_is_ignored *)
Interface intfX[2:0](inp);
ModuleA #(0) xa2(intfX[2]);