2015-06-17 32 views
0

我试图在“真实世界”项目上使用凿子,我正在用C++编写测试台代码部分。 这很好,我可以用gtkwave在dump.vcd文件中看到我所有的转储信号。如何更改VCD文件转储的时间刻度?

但我有时间尺度的问题,在默认情况下,该功能模块 - >转储()记录与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"); 
} 

回答

0

我只对C++后端给定的工作的方法,如果我们使用凿子类Test,问题仍然是一样的。 我修改凿代码添加在implicitClock对象的期间。然后我修改了Vcd类,以正确的周期值转储VCD。您可以看到修补程序here

然后改变时间表,你只需要添加以下行的顶部凿模块:

class myModule extends Module { 
[...] 
Driver.implicitClock.period = "10ns" 
[...] 
} 

该补丁已经COMMITED了凿子的2.2.28版本。

相关问题