如何在有限状态机中找到错误序列?

时间:2017-02-11 12:00:04

标签: verilog verification fsm

我想通过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然后转到下一个stat等待v_anchor信号变为1,然后进入下一状态,等到winapi_start为0。

但如果我们在FSM中遇到意外信号怎么办?那么FSM如何运作? 所以我想知道有没有有效的方法来验证FSM? 如果是的话,您能告诉我如何验证FSM吗?我们有哪种验证方法?

1 个答案:

答案 0 :(得分:0)

您可以通过提供不同的信号并检查FSM /模块响应来验证解决方案的正确性。

测试台很酷!

您可以阅读更多here