小编tho*_*990的帖子

在系统verilog中使用复制初始化结构队列

当非复制元素也存在时,我们如何初始化具有复制的结构队列?我尝试了以下方法但没有成功。有可能吗?

typedef struct {
 A a;
 B b;
 C c;
 D d;
} lp_s;    //A,B,C,D : integer enums

lp_s var_name[$] = '{    
     '{a: A_VAL0, b: B_VAL1, default:0}
'{15{'{a: A_VAL1, b: B_VAL1, default:0}}},
     '{a: A_VAL2, b: B_VAL2, default:0}
};
Run Code Online (Sandbox Code Playgroud)

这里的错误是:

分配模式非法,原因是:复制字段超出目标的大小

我从复制中删除了勾号。

lp_s var_name[$] = '{    
         '{a: A_VAL0, b: B_VAL1, default:0}
     {15{'{a: A_VAL1, b: B_VAL1, default:0}}},
         '{a: A_VAL2, b: B_VAL2, default:0}
    };
Run Code Online (Sandbox Code Playgroud)

然后错误变成:

类型“lp_s”的解包结构不能通过多个
串联运算符 {15 {'{a: A_VAL1, b: B_VAL1, default:0}}}进行赋值
,但是可以将赋值模式分配给解包结构。在串联运算符之前添加 ' 以将其转换为有效的赋值模式。

或者有没有办法使用解压数组串联来实现?

system-verilog

2
推荐指数
1
解决办法
3348
查看次数

标签 统计

system-verilog ×1