2017年6月21日 星期三

UVM驗證基本架構及參考觀念

UVM驗證基本架構


其中agent是很重要的基本單元,通常driver、monitor、sequencer會針對特定的interface protocol做設計,然後包裝成agent以便重複使用。例如針對AMBA AXI protocol設計一個agent,如果DUT(design under test)有很多個AXI port,只要重複instance agent就可以了。Environment包含需要的各個agent,加上負責比對的scoreboard,或是收集coverage的subscriber,成為驗證DUT的環境。有了驗證環境之後就可以設計各種Test,根據需求也可以覆寫environment的設定。最後用最上層的module把Test和DUT包起來,處理好interface接線,就成為如下圖的架構了。

  圖一:UVM驗證基本架構

UVM class hierarchy


在基本架構中,使用了UVM定義好的各種class,各個常用class的繼承關係可以參考圖二。重點是UVM的class可分為兩大類,uvm_sequence_item系列以及uvm_component系列。至於uvm_component系列中,TLM(Transaction-Level Modeling)相關的class,內容很多,可以再獨立出來討論。

關於uvm_sequence_item以及uvm_component兩大系列的不同,可以簡單舉出幾個例子。
  • uvm_component的new function,需要name string和parent component兩個參數,而uvm_sequence_item只需要name string一個。
  • 好用的`uvm_do macro系列,是針對uvm_sequence及uvm_sequence_item使用。
圖二:UVM class hierarchy

UVM component phases


就是圖二uvm_component中的*_phase(),上面提過UVM的驗證基本架構是由uvm_component組成。UVM把component的執行分成如下圖三,總共21個不同的phase。基本上執行流程是由上而下,當所有uvm_component都執行完同一個phase之後,才會進入下一個phase。關於phase的執行也有很多細節,這裡只是簡單介紹一下最基本的概念。


2017年6月9日 星期五

UVM正式成為IEEE標準


隨著IC設計領域的蓬勃發展,驗證的重要性也是與日遽增。從SystemVerilog取代了Verilog,開始,之後又陸續出現Synopsys主推的VMM,以及Cadence, Mentor主推的OVM,兩者角逐市場。

Accellera於2010年,整合了VMM及OVM各家的長處,提出了UVM。UVM得到了Synopsys, Cadence, Mentor的一致支持,統一了驗證規格的發展。

今年四月開始,UVM正式成為IEEE1800.2-2017標準,看起來確定會成為未來的趨勢了。 從UVM1.0, UVM1.1, UVM1.2到IEEE標準,有過不少更動是和之前版本不相容的,在使用上需要特別注意。