2017-02-11 54 views
-1

我想通过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

你应该对所有的情况下分配一个值:'默认:win_n_st = IDLE;' – toolic

+1

的标准方法来验证任何逻辑是使用UVM和形式化方法。人们围绕核查建立职业生涯。 – toolic

回答

0

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

测试台很酷!

你可以阅读更多here