如何在不创建虚拟变量的情况下获取 SystemVerilog 中结构字段的宽度?
How to get width of a field of a struct in SystemVerilog without create dummy variable?
如何获取结构中字段的宽度?我尝试使用
$bits(struct_type_name.field_name)
但无法编译。我必须创建一个虚拟变量并在其上应用 $bits()
。但是如果我需要很大的宽度,那会产生很多垃圾。
有什么更好的方法吗?
不幸的是,结构类型的 field_name 不是另一种类型或变量。两条建议
- 在声明 _field_name_ 时使用
typedef
并使用 $bits(field_name_t)
- 在您需要 $bits 的范围内声明一个本地自动变量。它可能会被优化掉,但不会在为 $bits 提取类型信息之前。
如何获取结构中字段的宽度?我尝试使用
$bits(struct_type_name.field_name)
但无法编译。我必须创建一个虚拟变量并在其上应用 $bits()
。但是如果我需要很大的宽度,那会产生很多垃圾。
有什么更好的方法吗?
不幸的是,结构类型的 field_name 不是另一种类型或变量。两条建议
- 在声明 _field_name_ 时使用
typedef
并使用$bits(field_name_t)
- 在您需要 $bits 的范围内声明一个本地自动变量。它可能会被优化掉,但不会在为 $bits 提取类型信息之前。