如何找到有限状态机中的错误序列?
How do I find the error sequence in Finite State Machine?
我想通过verilog中的验证来验证FSM的正确性。
例如,让我们得到下面的 FSM。
always @(*) begin
win_n_st = win_c_st;
case(win_c_st)
IDLE : begin
if(winapi_start)
win_n_st = VHSYNC_WAIT;
else
win_n_st = IDLE;
end
VHSYNC_WAIT : begin
if(v_anchor)
win_n_st = FIFO_WR;
else
win_n_st = VHSYNC_WAIT;
end
FIFO_WR : begin
if(winapi_start==0)
win_n_st = IDLE;
else
win_n_st = FIFO_WR;
end
default :;
endcase
end
可以看到FSM有3个状态。
第一次等待 winapi_start 信号直到 1 然后进入下一个状态等待 v_anchor 信号变为 1,然后进入下一个状态,等到 winapi_start 为 0.
但是如果我们在 FSM 中收到意外信号怎么办。那么这个 FSM 是如何工作的呢?
所以我想知道有没有有效的方法来验证FSM?
如果是,你能告诉我如何验证 FSM 吗?我们有哪些验证方法?
您可以通过提供不同的信号并检查 FSM/模块响应来使用测试台验证解决方案的正确性。
测试台很酷!
你可以阅读更多here
我想通过verilog中的验证来验证FSM的正确性。 例如,让我们得到下面的 FSM。
always @(*) begin
win_n_st = win_c_st;
case(win_c_st)
IDLE : begin
if(winapi_start)
win_n_st = VHSYNC_WAIT;
else
win_n_st = IDLE;
end
VHSYNC_WAIT : begin
if(v_anchor)
win_n_st = FIFO_WR;
else
win_n_st = VHSYNC_WAIT;
end
FIFO_WR : begin
if(winapi_start==0)
win_n_st = IDLE;
else
win_n_st = FIFO_WR;
end
default :;
endcase
end
可以看到FSM有3个状态。 第一次等待 winapi_start 信号直到 1 然后进入下一个状态等待 v_anchor 信号变为 1,然后进入下一个状态,等到 winapi_start 为 0.
但是如果我们在 FSM 中收到意外信号怎么办。那么这个 FSM 是如何工作的呢? 所以我想知道有没有有效的方法来验证FSM? 如果是,你能告诉我如何验证 FSM 吗?我们有哪些验证方法?
您可以通过提供不同的信号并检查 FSM/模块响应来使用测试台验证解决方案的正确性。
测试台很酷!
你可以阅读更多here