Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Struct Specman-如何将结构转换为字符串列表_Struct_Verification_Specman - Fatal编程技术网

Struct Specman-如何将结构转换为字符串列表

Struct Specman-如何将结构转换为字符串列表,struct,verification,specman,Struct,Verification,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_to

将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()”),等等


你想用任何结构都能做到这一点吗?然后您需要使用反射接口。如果只对这个结构来说,它是微不足道的。是否有任何选项来添加每个字段的位数?对于标量字段,您可以得到它们的大小。“如果field_type_rf是一个rf_标量(trs){field_size=trs.get_size_in_bits();”。在specman e reference中搜索rf_标量。如果该字段是一个列表,则必须求和(通过每个字段的大小获得列表的长度和*),等等。
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);
    };
};