@@ -102,19 +102,22 @@ def _get_mubi_name(self) -> str:
102102 alignment = 4
103103 aligned_width = (self .inner .bits .width () + alignment - 1 ) & ~ (alignment - 1 )
104104 return f"MultiBitBool{ aligned_width } "
105-
106- def assign_swwe (self , field : systemrdl .component .Field , regwen : str ) -> None :
105+
106+ def assign_swwe (self , field : systemrdl .component .Component , regwen : str | None ) -> None :
107107 if swwe := bool (regwen ):
108+ property_name = "swwe"
108109 if reg_ref := self .root .get_child_by_name (str (regwen )):
110+ wen_field = reg_ref .children [0 ]
109111 # This is a workaround and shall be fixed when the Issue
110112 # https://github.com/SystemRDL/systemrdl-compiler/issues/183 is fixed.
111113 swwe = InstRef (
112114 self .importer .compiler .env ,
113115 self .root ,
114- [(str (regwen ), [], None ), (str (reg_ref . children [ 0 ] .inst_name ), [], None )],
116+ [(str (regwen ), [], None ), (str (wen_field .inst_name ), [], None )],
115117 ) # type: ignore
116- self .importer .assign_property (field , "swwe" , swwe )
117-
118+ if wen_field .width > 1 : # type: ignore
119+ property_name = "mubi_swwe"
120+ self .importer .assign_property (field , property_name , swwe )
118121
119122 def export (
120123 self , strip_suffix : bool = False , regwen : str | None = None
@@ -162,6 +165,7 @@ def post_process(self, regwen: str) -> None:
162165 if field := self .parent .get_child_by_name (self .inner .name .upper ()):
163166 self .assign_swwe (field , regwen )
164167
168+
165169@dataclass
166170class Window2Systemrdl :
167171 inner : Window
0 commit comments