我试图为Verilog写一个与DPI-C兼容的结构。
结构如下:
/* Microcontroller FW config */
struct ucode_image_config {
uintptr_t src_addr;
uint32_t size;
};
字符串
在DPI-C中,代码如下:
/* Microcontroller FW configuration */
typedef struct {
int unsigned src_addr;
int unsigned size;
} ucode_image_config_t;
型
由于uintptr_t
的大小是可变的,我假设这不是1-1等价,所以我想知道是否有更好的解决方案。
1条答案
按热度按时间tpgth1q71#
SystemVerilog没有指针,因此C和SystemVerilog之间没有兼容的指针数据类型。它有一个叫做
chandle
的不透明指针,它允许你把一个C指针从一个DPI-C例程传递到另一个DPI-C例程。但是,如果不导入另一个DPI-C访问例程,就无法从SystemVerilog端使用chandle引用任何内容。DPI具有开放阵列的概念(35.5.6.1IEEE 1800-2017 SystemVerilog LRM中的www.example.com部分)。你应该看看这个,然后问另一个问题,详细说明你想要完成的目标。