硬體描述語言與驗證

在上方的描述中,當sel為X(不定)時,Verilog的模擬會讓y選擇b。這個性質在驗證上成為問題的原因,下列何者正確?

always @(*)
    if (sel) y = a;
    else     y = b;
  1. A因為y一定會變成X,使模擬停止
  2. B因為sel為X時,在實際的晶片中也一定會選擇b
  3. C因為X被當作「假」處理而輸出b這個確定的值,使得sel不定這個錯誤在模擬中看不出來
查看答案與解析

正確答案:C. 因為X被當作「假」處理而輸出b這個確定的值,使得sel不定這個錯誤在模擬中看不出來

Verilog的if語句在條件為X時會將其視為假,執行else一側。因此y會輸出b這個確定的值,使得sel不定這個錯誤在模擬中被隱藏。在實際的電路中,sel是0或1其中之一,也可能選到a。這稱為X樂觀(X-optimism),對策有採用會傳遞X的寫法、加入偵測X的斷言等。

  • A. y不會變成X,而是變成b。
  • B. 在實際的晶片中,無法確定會是a還是b。
  • C. 正確。這是稱為X樂觀(X-optimism)的問題。
練習這個領域 前往領域頁面

硬體描述語言與驗證的其他題目

  1. 關於在HDL中輸出Z(高阻抗)的三態描述,一般而言下列何者正確?
  2. 關於HDL驗證中所使用的測試平台(testbench)的說明,下列何者正確?
  3. 測試平台上方的描述所產生的時脈週期是多少(時間單位為1 ns)?
  4. 在測試平台中,若在與時脈上升相同的時刻以阻塞賦值改變對電路的輸入,有時會發生問題。主要原因與對策的組合,下列何者正確?
  5. 自我檢查型測試平台的特徵,下列何者正確?

這個領域的比較