我正在开发一个 RISC-V 项目,对 DPI-C 机制还不熟悉。 我想用cpp实现
pmem_read
& pmem_write
功能并导出到verilog中
这是声明。
// paddr.cpp
extern "C" void pmem_read(unsigned char re, uint32_t raddr, uint32_t mask, uint32_t *rword){...}
// Dcache.sv
import "DPI-C" function void pmem_read(input bit re, input int addr, input int mask, output int rword);
// main.cpp
#include <Vtop.h>
#include <paddr.h>
...
但是,当使用 Verilator 编译它们时,我遇到一个错误,报告
Vtop.h
中的声明与 paddr.cpp
中的声明冲突。
但是使用DPI-C时,只是声明不同,实在不知道如何解决。
真蠢!
我发现我错误地在
Vtop.h
中添加了 paddr.cpp
,这是引发冲突错误的原因。