Как изменить временную шкалу сбрасываемого файла VCD?

Я пытаюсь использовать Chisel в «реальном» проекте, и я пишу часть кода тестовой среды на C ++. Это работает хорошо, я могу видеть все свои сброшенные сигналы в файле dump.vcd с помощью gtkwave.

Но у меня проблема с шкалой времени, по умолчанию сигнал записи функции module-> dump () с шкалой времени 1ps:

$timescale 1ps $end

Вы знаете, как это изменить?

Единственный способ, которым я нашел его для изменения в коде C ++ тестовой среды, - это повторно открыть виртуальный диск после его закрытия и изменить первую строку:

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

person FabienM    schedule 17.06.2015    source источник


Ответы (1)


Метод, который я дал, работает только для бэкэнда C ++, проблема остается той же, если мы используем класс chisel Test. Я изменил код Chisel, чтобы добавить период в объект implicitClock. Затем я изменил класс Vcd, чтобы выгрузить VCD с правильным значением периода. Вы можете увидеть патч здесь.

Затем, чтобы изменить шкалу времени, вам просто нужно добавить следующую строку в свой верхний модуль Chisel:

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

Этот патч сделан для версии 2.2.28 Chisel.

person FabienM    schedule 24.06.2015