以下是邏輯設計筆記中,介紹如何從無到有、設計出邏輯圖的步驟。雖然內容沒頭沒尾、解釋不清,但我想記錄下來,也許會啟發未來的自己。
如何設計?
- 描述規格或問題
- 確定輸入與輸出
- 將輸出、輸入符號化
- 推導輸入與輸出的真值表(truth table)
- 推導每一個輸出的布林函數(boolean function)
- 畫出邏輯圖(logic diagram)
- 驗證它
除錯的思考順序
另外,這一段則是之前在寫產線測試程式時,前輩建議在有人反映程式有問題時,可以考慮的方向。
硬體設備
- 測試電腦
- 環境
- 64 還是 32 位元組處理器?
- 輸入設備是否正常運作?開啟其他程式是否也不能打字,或者滑鼠一樣點擊無回應?
- 開啟時間
- 如果使用筆電測試,開啟時間過長容易導致程式反應緩慢。
- 確認記憶體使用狀況。
- 函式庫
- 相依函式庫是否存在?是否在更新時被覆蓋?
- 版本是否正確?新版是否向下相容舊版?
- 外部程式
- 若有連結外部程式就要確認外部程式狀態,呼叫 Excel 時常發生異常。
- 某些外部程式引用自己的函式庫,需要確認是否有一併下載、安裝。
- 某些外部程式有語系限制,如果與電腦設定不同,會導致無法測試。
- 網路
- 如果有連結資料庫的需求,確認內部網路連接狀態正常。
- 環境
- 測試板
- 硬體間接線是否正確?線材是否正常?
- 這片測試板已使用多久?或者多久未使用?該測試板是否正常?
- 光源或電源
- 輸入正常嗎?畢竟沒有輸入就不會有輸出。
- 輸入量級正確嗎?是否太小或太大?
- 待測物
- 若更換待測物,程式即正常運作,可合理懷疑是前一待測物功能異常導致。
- 當待測物屬於 RMA(Return Merchandise Authorization,常在製造業代稱客退品),更高的機率是待測物導致異常。可要求更換 golden sample(在該公司指涉已驗證功能完全正常、留置產線使用的產品)驗證。
程式
- 編譯目標是 ANY CPU 還是 x86?
- 編譯給 64 還是 32 位元組處理器?
- 確認程式內部邏輯是否符合預期。
- 確認顯示的警告訊息是否有隨著程式碼更新。
- 族繁不及備載……
為何從硬體開始除錯
由於該公司的生產工程師常常未確認硬體設備,就直接說是軟體導致無法正常生產。多次來回後,得到以上的經驗談。
當時並無環境對程式進行壓力測試,大部分的測試程式投入產線使用前,可能都只有一、兩個小時的測試時間。甚至有些基於時程壓力,只測試了兩、三件待測物,便立即通過。
老實說,也有測試程式在使用一、兩天後,才浮現問題。但當年被找進去產線除錯,有八成以上的問題都出自硬體設備,根本不需要修改測試程式。
現在回想起來,真是段混亂的日子啊!