如何更改转储VCD文件的时间表?

时间:2015-06-17 08:34:22

标签: c++ fpga chisel

我正在尝试在“真实世界”项目中使用Chisel,而我正在用C ++编写测试平台代码部分。 这很好用,我可以用dumpkwave在dump.vcd文件中看到我所有的转储信号。

但是我的时间刻度问题,默认情况下,功能模块 - > dump()记录信号的时间刻度为1ps:

$timescale 1ps $end

你知道怎么改变吗?

我发现在测试平台C ++代码中更改它的唯一方法是在关闭它后重新打开vcd并修改第一行:

#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");
}

1 个答案:

答案 0 :(得分:1)

我给出的方法仅适用于C ++后端,如果我们使用凿类Test,问题仍然存在。 我修改了Chisel代码以在implicitClock对象中添加句点。然后我修改了Vcd类以使用正确的周期值转储VCD。你可以看到补丁here

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

position:fixed

此修补程序已被提交用于Chisel的2.2.28版本。