有時候,生活中的很多東西其實只需要一個就夠了,就像一個公司只需要一個CEO,一個王朝只需要一個皇帝。在UVM驗證環境中,也有很多這樣的需求——有些對象,我們希望它在整個仿真過程中只存在一個實例。這就是我們今天要聊的單例模式(Singleton patterns)。
在UVM的世界里,單例模式隨處可見。最典型的幾個例子:
uvm_factory?- 整個UVM環境只需要一個工廠實例,負責創建所有的對象。如果有多個工廠,就不知道該聽誰的了。
uvm_report_server?- 報告服務器收集整個驗證環境的消息,必須是唯一的。多個報告服務器會讓日志變得混亂不堪。
uvm_config_db?- 配置數據庫存儲全局配置信息,必須保證全局唯一性。想象一下如果有多個配置數據庫,同樣的配置項可能有不同的值,那就亂套了。
uvm_coreservice_t?- 核心服務提供者,管理著整個UVM基礎設施的核心服務,自然只能有一個。