2015-06-17 34 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版本。

相關問題