微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请问在c++程序中如何调用NCVerilog程序

请问在c++程序中如何调用NCVerilog程序

时间:10-02 整理:3721RD 点击:
现在手上正在做一个硬件加速的项目,其实就是利用 controller 和 datapath 翻译一段 C++ 程序。 希望在PC 上验证该硬件模块能不能正常工作,所以希望软件运行一部分,然后到了断点 调用硬件verilog文件,执行该硬件文件程序,得到结果然后交还给c++程序,然后c++继续执行。
请问论坛上各位大虾具体应该怎么实现?或者能否指点一下应该从哪个方向入手? 谢谢!

可能是我没有描述清楚,我所希望的是c++ 运行一段程序后,存储一些数据到文本文件中,该文件中的数据作为verilog程序的input,然后verilog程序执行运算,得到结果后存储于另一文本,返回给 c++,然后c++继续后面的处理。
现在的一个难办的地方我觉得就是 当verilog程序执行的时候,怎么让c++停止,实现 a->b->c  成为 a->B(verilog)->c 这种效果。
望高人能给予指点,谢谢!

试试在C++里面使用系统调用,调用Verilog,Verilog程序运行完后返回。理论上是可行的。
要是不行的话:如果前后两段C++程序没有必然联系(比如说共用变量之类的),一个简单的方法可以把一个C++程序拆成两个。然后写个perl脚本先后运行C++1,Verilog,C++2

好像有点眉目,但是,在verilog程序中能否象 c 一样的 fprintf() 出某些寄存器的结果?  还有一个问题就是怎么让c++ 暂停然后让 verilog 程序 运算,然后 再让 c++ 执行后面的程序? c 程序_1 -->verilog_2--->c程序_3   ?
请指点,我是新手。

Verilog中有$display调用,可以输出你想看到的东西
一般来说C++是执行完一条语句再执行下一条的,所以:
... //C++ 语句
system("...") //Verilog调用
... //C++ 语句
会顺序执行,就相当于在调用Verilog时C++暂停了
如果用perl写脚本的话:
... //执行C++程序1
... //执行Verilog程序
... //执行C++程序2

多谢 多谢 ,越来越清晰自己应该往哪方面想了!

大牛!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top