測試領域狀態機的編寫

2022-09-01 13:45:20 字數 1270 閱讀 2156

我一直把測試領域的狀態機器分成2兩主幹:人機互動 + 主狀態.

而主狀態一般嚴格分成: 取引數(相當於c語言中的形參), 採集, 分析&處理, 列印(報表,etc).

說起來簡單,其實做起來不簡單;

1.取引數,要想乙個pc做的能達到通用. 這點非常重要, 首先要分析需求->命令格式.

比如,就拿我們自動測試系統來講, 在此重點講乙個引數:時序. 時序分成: 1.底層和被側系統通訊時序,和採集系統通訊時序; 2.被測系統的系統特性(比如從poweron到系統響應外界的時間, 讀取外設usb loading時間, ....) 而這兩大類 被測物件不同就會表象不同的特性, 所以為了通用必須變數化,變數化的管控方式無非就是配置檔案或者人機介面上做default.

具體是那些引數呢?這需要按照協議去整理,命令歸類. 然後如選擇excel管理. 

可以考慮在主配置檔案中管理子配置檔案(時序配置檔案)。

2.測試子功能選擇和子功能順序管理.

不同機型間有不能的功能; 不用的特性導致不同的測試順序. 所以必須有子功能開啟關閉以及測試順序可調整.

子功能模組的op和cl 及順序調整 , 可以將所有子功能做成列舉, 然後在乙個列1d中下拉列表方式選擇;

而該子功能都有哪些?從哪兒來?---讀主配置檔案的sheet名稱, 同時該sheet名稱和主狀態機種的case完全一致; 順帶提一下,即使某個功能模組和其他類模組命令格式相同,但也不要合併,單獨占用一頁; 比如網路連通性檢查,如果歸併到其他類,在某些機型沒有網路,想關閉似乎可以,但是如果想調整測試順序對不起就做不到了.

至於介面, 左側,單列1d下拉列表方式, 右側頁柄翻頁方式, 但是有個難點 頁柄sheet名稱要和單列1d列舉一致,沒有被選中的則隱藏; 當然儲存時也只對被選中的處理.

還有每個頁柄中對應配置檔案中對應名稱的sheet表單. 對應那個表單,則又是通過該頁柄名稱去索引配置檔案的sheet名稱而得.

備註,測試序列即1d列也可以儲存在excel的配置檔案中,如sheet--"config.list"

---這樣,這些內容中所有變數都來自配置檔案中;

每個頁柄的表單和配置檔案的sheet單內容一致,即在此所有人機都用excel 2d模式去處理; 好處是僅僅有乙個變數2d. 否則滿地都是變數.

介面排布,可參考 typesensitivepopup_v1_0_1,resource 介面切換頁面 (本地電腦)

3.單步模式不可少,方便除錯,以及非常方便的獲取機型的一些資訊如版本等.

4.快速停止功能不可少,異常時提高處理效率. 既然是快速停止,就需要硬體給出單獨通道,就像高速公路上的緊急通道一樣.

FPGA Base 狀態機編寫

說來慚愧,再寫了不少hdl 以後,當被問到三段式狀態機的寫法是如何實現的,我卻不知道,平時基本都是用2個always語句實現。所以今天補一篇關於狀態機的文件,針對以前自己不規範的開發做乙個約束。狀態機的基本要素 分類 描述方式 三段式狀態機 rtl最佳實踐 第一段時序邏輯 狀態的跳轉 always ...

採用verilog編寫狀態機

如果使用的是system verilog,一定要使用列舉型來描述狀態機。使用引數 parameters 來對狀態機進行分配,因為引數會使得狀態機易讀以及減少編碼過程中的錯誤。儘管quartus ii能夠識別出整數,盡量不要直接使用整數來定義狀態值。在狀態轉換邏輯中,不要使用狀態暫存器進行算術運算,例...

狀態機 狀態機0

近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...