在下列情况下,增量是否会从左到右或从右到左发生:
desc.src_addr = {rdata[i++],rdata[i++],rdata[i++],rdata[i++],rdata[i++],rdata[i++],rdata[i++],rdata[i++]};
假设在上述陈述开始时i = 0
,最终决议将是以下两个中的哪一个:
desc.src_addr = {rdata[0],rdata[1],rdata[2],rdata[3],rdata[4],rdata[5],rdata[6],rdata[7]};
desc.src_addr = {rdata[7],rdata[6],rdata[5],rdata[4],rdata[3],rdata[2],rdata[1],rdata[0]};
LRM中有什么可以谈论这个吗?
显然,我的目标是避免在上述声明中对索引进行硬编码,以避免拼写错误和监督问题。
答案 0 :(得分:0)
是的,在编写SystemVerilog代码时,了解SystemVerilog LRM所说的内容会很好。你有copy吗? 请参阅 11.4.2递增和递减运算符部分,并查找单词 undefined 。
编写此代码的更好方法是使用流操作符, 11.4.14流操作符(打包/解压缩)
desc.src_addr = {<<{rdata}}; //reverses bit order