Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

OVM-VMM : 2つのInteroperability library

Verification Engineerの戯言

OVM/VMM Interoperability libraryは、1つに統一されていません。
CadenceとMentorがそれぞれ独自にライブラリを開発しています。
そのためかライブラリとして提供しているものがちょっと違います。

Cadenceは、VMM xactorをシーケンスで使えるようにするためすることをメインとしています。
そのためかライブラリには、VMM xactotrへのシーケンサであるovm_vmm_sequencerクラス(ovm_sequencerクラスを継承)、
VMM xactorに渡すデータ型ovm_vmm_dataクラス(ovm_sequence_itemクラスを継承)があります。
アナリシスポートをVMMに対応されたvmm_channel_to_tlm_apクラスです。
また、ovm_env内にvmm_subenvvmm_envを取り組むためのクラスとして、
ovm_vmm_subenvクラスovm_vmm_envクラスを用意しています。

CadenceのInteroperability libraryは、sv/ovm_vmm_include.svhファイルをincludeして使います。
sv/ovm_vmm_include.svhファイルは、次のようになっています。
`ifndef OVM_VMM_INCLUDE_SVH
`define OVM_VMM_INCLUDE_SVH

 `include "ovm.svh"
 `include "vmm.sv"
 `include "ovm_vmm_interop.svh"

`endif

OVMとVMMのヘッダファイルを読み込んだ後、Interoperability libraryのヘッダファイルを読み込んでいます。

一方、Mentorは、VMM環境+OVM/VMM Interoperability Libという形でライブラリをリリースしています。
そのため、リリースされたパッケージは、VMM-1.0.1-Dのソースコード(svディレクトリ)に
interop_libディレクトリを追加し、このディレクトリ内にライブラリを格納しています。
ライブラリは、VMM環境へのアダプタ群(vmm_adapters.sv)とVMM環境への拡張(vmm_extesions.sv)から構成されます。
MentorのInteroperability libraryは、アダプタ群と拡張をうまく使うことでOVM環境にVMMの要素を取り込むだけでなく、
VMM環境にOVMの要素を取り込むこともできます。

MentorのInteroperability libraryは、sv/interop_lib/ovm_vmm.svhファイルをincludeして使います。
sv/interop_lib/ovm_vmm.svhファイルは、次のようになっています。
`ifndef OVM_VMM_SVH
`define OVM_VMM_SVH

`include "ovm.svh"
`include "vmm.sv"
`include "vmm_adapters.sv"
`include "vmm_extensions.sv"

`endif // OVM_VMM_SVH

OVMとVMMのヘッダファイルを読み込んだ後、Interoperability libraryのヘッダファイルを読み込んでいます。
また、パッケージとしても使えるようにsv/interop_lib/ovm_vmm_pkg.svファイルも用意しています。
`ifndef OVM_VMM_PKG_SV
`define OVM_VMM_PKG_SV

`undef VMM_IN_PACKAGE

package ovm_vmm_pkg;
  `include "ovm_vmm.svh"
endpackage

`endif // OVM_VMM_PKG_SV

検証、Verification、SystemVerilog、VMM、OVM、Verification Methodology Manual、Open Verification Methodology