Создание сбоя в работе часов в дизайне verilog
Вопрос
Я разрабатываю чип с использованием verilog.У меня есть 3-разрядный счетчик.Я хочу, чтобы это было, когда счетчик находится в своем 8-м цикле , там должен быть сбой в работе часов и после этого работать нормально.Каковы могут быть возможные способы создания сбоя часов в дизайне verilog?
Решение
Один из способов внести сбои в тактовый сигнал - это использовать force
и release
с вашего тестового стенда:
module tb;
reg clk;
reg [2:0] cnt;
reg reset;
always begin
#5 clk <= 0;
#5 clk <= 1;
end
always @(posedge clk or posedge reset) begin
if (reset) begin
cnt <= 0;
end else begin
cnt <= cnt + 1;
end
end
always begin: inject_clk_glitch
wait(cnt == 7);
#1 force clk = 1;
#1 force clk = 0;
#1 release clk;
end
initial begin
reset = 1;
#20 reset = 0;
#500 $finish;
end
endmodule
Другие советы
То есть вы, по сути, хотите получить дополнительное преимущество в тактовой частоте?Я не могу придумать, как сделать это в RTL.Возможно, вам удастся выполнить уродливый взлом, используя задержки затвора, но это нужно будет учитывать в зависимости от температуры и технологических изменений.
Я бы порекомендовал вам подумать о другом решении вашей проблемы.Зачем вам нужен этот дополнительный тактовый фронт?