在systemverilog和DPI-C之间使用定义

时间:2019-03-18 08:43:30

标签: system-verilog-dpi

在systemverilog sv_define.vh

`define A_MODULE_ENABLE
//`define B_MODULE_ENABLE

在C c_define.h

#define A_MODULE_ENABLE
//#define B_MODULE_ENABLE

由于systemverilog和C之间“ define”的语法不同。 如果要配置ENABLE,则必须修改这两个文件,有时会很麻烦。我如何才能在一个文件中定义它们并将其包括在内?非常感谢。

我的想象力:我的top.sv和top.c将包含相同的文件:c_sy_define.vh 内容为:

__SV__
    `define A_MODULE_ENABLE
    //`define B_MODULE_ENABLE
__C__
    #define A_MODULE_ENABLE
    //#define B_MODULE_ENABLE

1 个答案:

答案 0 :(得分:0)

是的。这可能会起作用。不过请不要尝试。

#ifndef COMPILE_IN_C
`define A_MODULE_ENABLE
#endif

`ifndef COMPILE_IN_SV
#define A_MODULE_ENABLE
`endif

在编译头文件时,请确保在ncvlog中添加“ -define COMPILE_IN_SV”(例如您使用Cadence),并在gcc中添加“ -DCOMPILE_IN_C”。