作用
`include:用于将一个文件插入另一个文件
import:用于在一个作用域引入一个package或其中内容
package:提供了保存和共享数据、参数和方法的机制
区别
`include:将目标文件的内容插入文件,是一个预处理语句
import:不复制文本内容,是将package中内容引入import语句所在的作用域
注意
include “uvm_macros.svh”
其中定义了大量的宏,需要包括进来。
import uvm_pkg::*
其中包括基础库,也需要导入。
源码(uvm_1.1d_RC7)
uvm_macros.svh
`ifndef UVM_MACROS_SVH
`define UVM_MACROS_SVH
//
// Any vendor specific defines go here.
//
`ifdef MODEL_TECH
`ifndef QUESTA
`define QUESTA
`endif
`endif
`ifndef QUESTA
`define uvm_typename(X) $typename(X)
`else
`define uvm_typename(X) $typename(X,39)
`endif
`ifdef VCS
`ifndef UVM_DISABLE_RESOURCE_CONVERTER
//UVM_USE_RESOURCE_CONVERTER enables UVM-1.1d to print resources output to match uvm-1.1c. VCS2012.09-SP1 or later does not need resource_converter object, disbale by using +define+UVM_DISABLE_RESOURCE_CONVERTER
`define UVM_USE_RESOURCE_CONVERTER
`endif
`endif
`ifdef INCA
`define UVM_USE_PROCESS_CONTAINER
`endif
//
// Deprecation Control Macros
//
`ifdef UVM_NO_DEPRECATED
`define UVM_OBJECT_MUST_HAVE_CONSTRUCTOR
`endif
`define uvm_delay(TIME) #(TIME);
`include "macros/uvm_version_defines.svh"
`include "macros/uvm_message_defines.svh"
`include "macros/uvm_phase_defines.svh"
`include "macros/uvm_object_defines.svh"
`include "macros/uvm_printer_defines.svh"
`include "macros/uvm_tlm_defines.svh"
`include "macros/uvm_sequence_defines.svh"
`include "macros/uvm_callback_defines.svh"
`include "macros/uvm_reg_defines.svh"
`include "macros/uvm_deprecated_defines.svh"
`endif
uvm_pkg.sv
`ifndef UVM_PKG_SV
`define UVM_PKG_SV
`include "uvm_macros.svh"
package uvm_pkg;
`include "dpi/uvm_dpi.svh"
`include "base/uvm_base.svh"
`include "tlm1/uvm_tlm.svh"
`include "comps/uvm_comps.svh"
`include "seq/uvm_seq.svh"
`include "tlm2/uvm_tlm2.svh"
`include "reg/uvm_reg_model.svh"
endpackage
`endif
参考链接:
https://zhuanlan.zhihu.com/p/520520709
https://zhuanlan.zhihu.com/p/106486751