AN 917: Reset Design Techniques for Intel® Hyperflex™ Architecture FPGAs

ID 683539
Date 1/05/2021
Public
Document Table of Contents

1.4.1.1. Converting to Synchronous Resets

Complete the coding of your design before targeting an Intel® Hyperflex™ architecture device. If you are using asynchronous resets in your design, convert them to synchronous resets to benefit from Hyper-Retiming performance optimization. Hyper-Retiming helps to meet the timing requirements for fast running clocks. The design blocks that are running slow clocks, and are already passing timing requirements, can continue using asynchronous resets.

Switching your code to use synchronous resets is simple, as the following example shows:
//Asynchronous reset on control register
always @(posedge clk or negedge rstb)
	begin
		if (!rstb)
			control <= ‘d0;
		else
			control <= new_value;
	end
//Synchronous reset on control register
always @(posedge clk)
	begin
		if (!rstb)
			control <= ‘d0;
		else
			control <= new_value;
	end