Verilog代码仿真时一直运行下去不动了是怎么回事
我手动点完Break后停止run 但出现
# Break in Module iicslave at IIC_wr2/IICslave2.v line 238
一直停留在这行不能仿真运行下去 是为什么
没人知道你的.v的line 238写的什么东西,怎么帮你?
always @(cs or byte_done or addr_match or operation_dir)
这是238行,写的是一个状态机里面的组合逻辑块
估计是你的code出现问题了,能不能把这个always的全部贴出来看看
以前遇到过这样的情况,原因是代码里用了非常复杂的循环语句,算不过来了
always @(cs or byte_done or addr_match or operation_dir)
case(cs)
start:
ns <= slave_addr;
slave_addr:
if(byte_done && addr_match)
ns <= slave_addr_ack;
else
ns <= slave_addr;
slave_addr_ack:
ns <= data;
data:
begin
if(byte_done)
ns <= data_ack;
else
ns <=data;
end
data_ack:
begin
if(operation_dir)
if(master_nack)
ns<=start;
else
ns<=data;
else
ns<=data;
end
endcase
这是这个always块
你case分支不全的吧,组合逻辑为什么不加default分支?
另外,cs的复位值是哪个状态?
case分支我用的独热码编码,很全啊,cs的复位值是起始状态start,加上default后结果还是那样,可能还是我的代码有问题吧
状态机一直在某个状态下,检查你的激励,是否满足跳转条件吧。
不要使用 run -all
使用run -2us这样的,就能在时间结束后停止了
分析可能原因:状态机处于某个状态中出不来了,请检查(1)激励是否存在问题;(2)设计本身是否存在缺陷导致
