Я получаю другой период синхронизации, когда я имитирую пример Cocotb в режиме VHDL и Verilog, используя QuestaSim. Часов генерируется таким же образом, для обоих режимов в provided example code:Как указать временное разрешение в Cocotb?
@cocotb.coroutine
def clock_gen(signal):
while True:
signal <= 0
yield Timer(5000)
signal <= 1
yield Timer(5000)
@cocotb.coroutine
def run_test(dut): # stripped un
cocotb.fork(clock_gen(dut.clk))
При работе в режиме Verilog с:
make SIM=questa GUI=1
тактового периода составляет 1000 нс (один тысячи наносекунд), и, таким образом, временное разрешение составляет 100 пс.
При работе в режиме с VHDL:
make SIM=questa GUI=1 TOPLEVEL_LANG=vhdl
тактового периода составляет 10000 нс (десять тысяч нано-секунд), и, таким образом, разрешение по времени составляет 1 нс.
Я использую то же поколение часов в двух других проектах VHDL. В одном я получаю тактовый период 10000 нс, (разрешение 1 нс). Но в другом случае период синхронизации составляет всего 10 нс, что дает разрешение 1 пс.
Почему отличается временным разрешением во всех этих режимах и проектах?
Как я могу указать временное разрешение последовательно?
Стоит отметить, что для удобства есть класс 'cocotb.clock.Clock', который сохраняет необходимость неоднократного определения coroutine' clock_gen'. – Chiggs