在verilator指令的末尾要加上--trace选项,会在obj文件夹里生成对应的xxx_vcd_c.d和.o文件。
在上一部分里,c语言代码里只写了逻辑部分,但是想要gtkwave查看波形,还需要在代码里增加vcd指针并记录波形。
新的代码如下:
#include <stdio.h> #include <stdlib.h> #include <assert.h> #include "Vverilog1.h" #include <verilated.h> #include "verilated_vcd_c.h" //用来生成.vcd文件 int main(int argc,char *argv[]) { VerilatedContext *context_p=new VerilatedContext; context_p->commandArgs(argc,argv); Vverilog1 *top=new Verilog1{context_p}; //实例化模块 VerilatedVcdC *tfp= new VerilatedVcdC; //初始化VCD对象指针 context_p->traceEverOn(true); //打开追踪 top->trace(tfp,0); tfp->open("wave.vcd"); //保存位置 while(!context_p->gotFinish()) { int a=rand() &1; int b=rand() &1; top->a=a; top->b=b; top->eval(); pritnf("a=%d, b=%d, f=%d\n",a,b,top->f); tfp->dump)context_p->time()); //dump wave context_p->timeInc(1);//仿真时间推进 assert(top->f ==a^b); } delete top; tfp->close(); delete context_p; return 0;
在此次编译后,进入obj文件夹,运行一次./Vverilog1 才会在文件夹里看到wave.vcd文件
使用 gtkwave wave.vcd,会弹出gtkwave的图形界面
标签:vcd,波形,top,gtkwave,context,include,yxyx,tfp From: https://www.cnblogs.com/namezhyp/p/17989846