【发布时间】:2019-07-29 18:23:58
【问题描述】:
这是一段 sn-p 代码,希望你没有序言就没事:
always @ (posedge clk)
begin
if(rst)
begin
i<=0;
j<=0;
end
else
begin
for(j = 0 ; j < 16 ; j = j+1)
begin
if(i<8)
begin
var[j] <= var_2[i];
i <= i+1;
end
end
end
end
基本上,我想知道外部“for-loop”是否会错误地增加计数器变量i,而不是简单地并行计算 16 个vars。如果是这种情况,我是否应该缩短 for 循环以便变量在 for 循环之外递增?
谢谢!
【问题讨论】:
-
如果你不确定代码会做什么,正常的过程是模拟。我不知道您想要代码做什么。在这里,如果 i
-
嗨 Oldfart(好名字哈哈 :))我已经模拟了,它确实在模拟中工作。但是,综合给了我错误。这就是我问的原因!此外,我发现 StackOverflow 可以为我提供我什至不知道自己需要的额外信息
-
你的合成错误是什么?可能对 i 有多个分配的东西,因为 i 在这里没有初始化或以任何方式设置
-
你好,Oldfart。 i 在每个“rst”信号处初始化为 0。我只是没有写那部分。我会编辑它。我想这段代码有点混乱,因为我只是想传达这个想法。你是对的,这没有意义。不过,根据您的回答,我认为您是在说,对于第一次“for”迭代,var[15:0] = var_2[0],然后是下一次,var[15:0] = var_2[1]等等……对吗?谢谢!此外,综合误差显然是时序误差。我正在对大量位进行操作,但我认为这不是什么天文数字。
标签: for-loop verilog sequential