受保護的型別

在 VHDL 1993 之前,兩個併發程序只能與訊號通訊。由於僅在模擬步驟之間更新訊號的語言的模擬語義,模擬的結果是確定性的:它不依賴於模擬排程器選擇的執行過程的順序。

[事實上,這不是 100%真實。程序還可以使用檔案輸入/輸出進行通訊。但是如果一個設計師通過使用檔案來破壞決定論,那真的不是一個錯誤。

因此語言是安全的。除了故意之外,設計非確定性 VHDL 模型幾乎是不可能的。

VHDL 1993 引入了共享變數,設計非確定性 VHDL 模型變得非常容易。

VHDL 2000 引入了受保護型別和共享變數必須是受保護型別的約束。

在 VHDL 中,受保護型別與物件導向(OO)語言中的物件概念類似。它們實現了資料結構及其方法的封裝。它們還保證對其資料成員的獨佔和原子訪問。這並不能完全阻止非確定性,但至少會為共享變數增加排他性和原子性。

在設計僅用於模擬的高階 VHDL 模型時,受保護的型別非常有用。它們具有幾種非常好的 OO 語言屬性。經常使用它們使程式碼更易讀,可維護和可重用。

筆記:

  • 預設情況下,某些模擬工具鏈僅在共享變數不屬於受保護型別時才發出警告。
  • 某些綜合工具不支援受保護的型別。
  • 一些綜合工具對共享變數的支援有限。
  • 可以認為共享變數不能用於建模硬體,並且應該保留用於沒有副作用的程式碼檢測。但是,幾個 EDA 供應商建議的 VHDL 模式用於建模多埠隨機存取儲存器(RAM)的儲存器平面使用共享變數。所以,是的,共享變數在某些情況下可以合成。