Опитвам се да използвам Chisel в проект от "реалния свят" и пиша частта от тестовия код на C++. Това работи добре, мога да видя всичките си изхвърлени сигнали във файла dump.vcd с gtkwave.
Но имам проблем с времевата скала, по подразбиране функционалният модул->dump() записва сигнал с времева скала при 1ps:
$timescale 1ps $end
Знаете ли как да го промените?
Единственият начин, който намерих да го променя в C++ кода на testbench, е да отворя отново 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");
}