fpga前仿ok,后仿出问题,求解~
时间:10-02
整理:3721RD
点击:
rt~
前仿功能都能正确,后仿就出错了,代码执行到其中一行就不执行了。
而且在先前编译时,警告过没执行的那一行的中的寄存器没工作,但前仿还是没问题。
代码
begin
if(sign_bit)//fushu -32
begin
code_low=code_low;
code_high=code_mid;
temp1=(code_low+code_high);
code_mid=temp1[6:1];
end
else if(sign_bit==0)//32+
begin
code_low=code_mid;
code_high=code_high;
temp0=(code_low+code_high);
code_mid=temp0[6:1];end
end
红色的地方就是警告的没工作的寄存器,也是后仿没执行的那一行。
请教下,这问题的出现时为什么啊?
前仿功能都能正确,后仿就出错了,代码执行到其中一行就不执行了。
而且在先前编译时,警告过没执行的那一行的中的寄存器没工作,但前仿还是没问题。
代码
begin
if(sign_bit)//fushu -32
begin
code_low=code_low;
code_high=code_mid;
temp1=(code_low+code_high);
code_mid=temp1[6:1];
end
else if(sign_bit==0)//32+
begin
code_low=code_mid;
code_high=code_high;
temp0=(code_low+code_high);
code_mid=temp0[6:1];end
end
红色的地方就是警告的没工作的寄存器,也是后仿没执行的那一行。
请教下,这问题的出现时为什么啊?
位宽一致不?
有时序问题么?
后仿一般是针对时序问题的,仿真一下,看一下波形不就可以了。
就是后仿那个信号的波形没出来,分析来就是那语句可能出问题了~
和布局布线有关系,检查真正生成的结构。
以解决,我的赋值方式有问题~
改了就好了~
有时仿真并不一定完全能模拟实际的情况,比如仿真时间不够长等,,
这个明显语句有问题。 两个不一样。 一个 temp1, 一个temp0.
在同一个always 块里,每个信号在每个分支的都要赋值,不能遗漏。否则。好多问题。
你的begin 和end之间都是阻塞赋值语句,执行顺序从上到下,但感觉你的的变量顺序和变量执行顺序明显有冲突。
后仿真的时候编译成功了?
lz好,我自己也一直在用FPGA编程,做到现在还没有进行过后仿真,都进行的是前仿真。想问你:做后仿真是不是要添加时序约束之后才能进行,还有,如果我只是单纯的用逻辑编写一个算法,就是说整体模块中只使用了FPGA中的CLK,其他输入输出接口都是自己编的,那么我要做的约束文件中是不是只需要对CLK进行约束?
你这个如果是时序逻辑,要用非阻塞的
后仿的意义不大,在跑布线工程的时候看看时钟报告就可以了。
如果只有一个时钟,需要对这个时钟进行约束。不过有的时候需要忽略某些部分的时序关系,或者设置multicycle。
