VIP通过include文件来定义一些系统约束,可以通过覆盖这些常量来改写一些系统参数,例如,可以增加VIP限制的一些最大延迟值,或调整最大地址宽度、ID宽度等。
VIP中的系统常量在 $DESIGNWARE_HOME/vip/svt/amba_svt/latest/sverilog/include 目录下的以下文件中定义:
-
svt_axi_defines.svi
顶层include文件,它包含了common_define.svi和port_define.svi文件。此外,在定义了 `SVT_AXI_INCLUDE_USER_DEFINES 时,也会包含对用户自定义override文件的include。 -
svt_axi_common_defines.svi
该文件定义了VIP component使用的公共常量,只有通过ifndef语句声明的用户可定义变量是能够被重写的,例如:
`ifndef SVT_AXI_MAX_ADDR_VALID_DELAY
`define SVT_AXI_MAX_ADDR_VALID_DELAY 16
`endif
-
svt_axi_port_defines.svi
该文件包含了一些设置环境默认最大占用空间的常数。这些值决定了“wire frame”中的wire位宽(它们不一定定义了组件使用的实际位宽,这是由配置类决定的)。 -
svt_axi_user_defines.svi
该文件包含了用户自定义覆盖常数,可以放在仿真filelist包含的任意路径下。
以下举例说明如何在VIP中重写一些最大延迟值:
- 创建 svt_axi_user_defines.svi 文件,重定义最大延迟值,确保在仿真filelist中包含该文件,例如:
ifndef SVT_AXI_USER_DEFINES_SVI
`define SVT_AXI_USER_DEFINES_SVI
`define SVT_AXI_MAX_WREADY_DELAY 1024
`endif
以下是VIP中的延迟相关变量和相应的宏值,可以在 $DESIGNWARE_HOME/vip/svt/amba_svt/latest/sverilog/include/svt_axi_common_defines.svi 中参考这些值。
MACRO | Transaction Delay Attribute |
---|---|
SVT_AXI_MAX_ADDR_DELAY | addr_ready_delay |
SVT_AXI_MAX_ADDR_VALID_DELAY | addr_valid_delay |
SVT_AXI_MAX_WVALID_DELAY | wvalid_delay[] |
SVT_AXI_MAX_WREADY_DELAY | wready_delay[] |
SVT_AXI_MAX_RVALID_DELAY | rvalid_delay[] |
SVT_AXI_MAX_RREADY_DELAY | rready_delay[] |
SVT_AXI_MAX_WRITE_RESP_DELAY | bready_delay |
SVT_AXI_MAX_WRITE_RESP_DELAY | bvalid_delay |
SVT_AXI_MAX_ACREADY_DELAY | acready_delay |
SVT_AXI_MAX_CDVALID_DELAY | cdvalid_delay[] |
SVT_AXI_MAX_CRVALID_DELAY | crvalid_delay |
SVT_AXI_MAX_ACVALID_DELAY | acvalid_delay |
SVT_AXI_MAX_CRREADY_DELAY | crready_delay |
SVT_AXI_MAX_CDREADY_DELAY | cdready_delay[] |
SVT_AXI_MAX_RACK_DELAY | rack_delay |
SVT_AXI_MAX_WACK_DELAY | wack_delay |
SVT_AXI_MAX_DVM_COMPLETE_DELAY | dvm_complete_delay |
- 在编译时,添加编译选项 +define+SVT_AXI_INCLUDE_USER_DEFINES。
上述方法也适用于覆盖 AXI/AHB/APB SVT VIP 中的系统常数。