Use explicit logic type for user enum declarations. #91

This commit is contained in:
Alex Mykyta
2024-03-29 21:22:34 -07:00
parent 653d4efc73
commit 840b54c6e1

View File

@@ -288,11 +288,18 @@ class EnumGenerator:
prefix = self._get_prefix(user_enum)
lines = []
max_value = 1
for enum_member in user_enum:
lines.append(f" {prefix}__{enum_member.name} = {SVInt(enum_member.value)}")
max_value = max(max_value, enum_member.value)
if max_value.bit_length() == 1:
datatype = "logic"
else:
datatype = f"logic [{max_value.bit_length() - 1}:0]"
return (
"typedef enum {\n"
f"typedef enum {datatype} {{\n"
+ ",\n".join(lines)
+ f"\n}} {prefix}_e;"
)