Рассмотрим следующий фрагмент кода SV:
module clocks();
logic a ;
bit clk =0;
initial begin
forever #1ns clk = ~clk ;
end
clocking cb@(posedge clk);
default input #1step output negedge;
output a;
endclocking
initial begin
@(cb);
#100ps;
cb.a <= 1 ;
@(cb);
#100ps;
cb.a <= 0 ;
repeat(10) @(cb);
end
endmodule
С другой стороны, во втором имитаторе выходной сигнал блока синхронизации воздействует на ПЕРВЫЙ тактовый сигнал, и эффекты можно увидеть на первом спадающем фронте тактового сигнала. Вы можете увидеть изображение ниже. Второй симулятор
Если, с другой стороны, я изменяю задержку перекоса вывода, используя задержку меньше (примерно 10 пс), чем задержка 100 пс, второй симулятор ведет себя как первый (сигнал a изменяется после второго posedge с перекосом вывода 10ps).
Какой из двух симуляторов более соответствует стандарту IEEE 1800-2017 SV? На мой взгляд, по моему представлению о стандарте, первый тренажер более послушен.
Шкала времени установлена на 1 фс, чтобы избежать проблем, связанных с разрешением симулятора.