struct - Specman - 如何将结构转换为字符串列表
问题描述
将 struct 转换为字符串列表(其所有字段的列表 - 名称和值)的有效方法是什么?
例如以下结构:
struct spot_top_s {
%D_LDO_SFS_EN : uint(bits:1);
%D_COMP3P3_ACC_EN : uint(bits:1);
%D_BGCOMP_TRIM : uint(bits:6);
%spot_top_jtagtest_out : bit;
%spot_top_jtagtest_in : bit;
}; // spot_top_s
解决方案
实际上,可以使用反射来实现接受任何结构的通用代码。这是此类代码的一个示例。例如,您可以修改它 - 仅将物理字段添加到列表中(通过调用“if it.is_physical()”)等。
extend sys {
get_fields(input_struct : any_struct) : list of string is {
var struct_rf : rf_struct;
struct_rf = rf_manager.get_struct_of_instance( input_struct);
var struct_fields : list of rf_field;
struct_fields = struct_rf.get_fields();
var field_type_rf : rf_type;
var field_value_unsafe : untyped;
for each in struct_fields {
result.add(it.get_name());
var f:= it.get_value_unsafe(input_struct);
field_type_rf = it.get_type();
field_value_unsafe = it.get_value_unsafe(input_struct);
result.add(field_type_rf.value_to_string(field_value_unsafe));
};
};
// usage example:
my_spot_top : spot_top_s;
post_generate() is also {
print get_field(my_spot_top);
};
};
推荐阅读
- woocommerce - WooCommerce 自定义结帐字段问题
- sql - 在雪花中创建一个数组
- c++ - C++ 从 std::string 数组创建 std::vector
- flutter - 如何根据单元格内容显示具有扩展宽度和高度的 Table / DataTable?(如 HTML 表格行为)
- django - Djoser 在电子邮件中使用不同的域
- sql - 使用有序子字符串连接表
- python - Python argparse - 长参数名称的帮助文本
- shopify - 如何将 Shopify 上的产品从一个变体拆分为两个变体
- c++ - 嵌套的 wxSizer;堆叠面板垂直包装内容
- java - 带有 Lombok 的 Java 对象不能在 Spring Boot 中的切点注释类中工作