首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改转储VCD文件的时间刻度?

如何更改转储VCD文件的时间刻度?
EN

Stack Overflow用户
提问于 2015-06-17 08:34:21
回答 1查看 1.1K关注 0票数 2

我试图在一个“现实世界”项目中使用Chisel,我正在用C++编写testbench代码部分。这很好,我可以在gtkwave的dump.vcd文件中看到我所有的转储信号。

但是,对于时间刻度,我有一个问题,默认情况下,函数模块->dump()记录信号的时间刻度为1ps:

代码语言:javascript
复制
$timescale 1ps $end

你知道怎么改吗?

在testbench C++代码中更改vcd的唯一方法是在关闭vcd后重新打开它并修改第一行:

代码语言:javascript
复制
#define CYCLE_PERIOD_NS   10
FILE *f = fopen("./dump.vcd", "w");
module->set_dumpfile(f);
[...]
/*several module->dump() call */
[...]
if (f) {
    fclose(f);

    std::string line;
    std::ifstream input("./dump.vcd");
    std::ofstream output("./tmp.vcd");
    std::getline(input, line);
    output << "$timescale " << CYCLE_PERIOD_NS << "ns $end" << endl;
    while(std::getline(input, line)) {
        output << line << endl;
    }
    rename("./tmp.vcd", "./dump.vcd");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-24 08:04:04

我给出的方法只针对C++后端,如果我们使用凿子类测试,问题将保持不变。我修改了Chisel代码,以便在对象中添加周期。然后修改Vcd类以转储具有正确句点值的VCD。您可以看到补丁这里

然后,要更改时间刻度,只需在顶级Chisel模块中添加以下一行:

代码语言:javascript
复制
class myModule extends Module {
[...]
Driver.implicitClock.period = "10ns"
[...]
}

这个补丁已经被用于2.2.28版本的Chisel。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30886309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档