|  | // Copyright lowRISC contributors. | 
|  | // Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
|  | // SPDX-License-Identifier: Apache-2.0 | 
|  | // | 
|  | // Generic double-synchronizer flop | 
|  |  | 
|  | module prim_flop_2sync #( | 
|  | parameter Width = 16, | 
|  | parameter bit ResetValue = 0 | 
|  | ) ( | 
|  | input                    clk_i,    // receive clock | 
|  | input                    rst_ni, | 
|  | input        [Width-1:0] d, | 
|  | output logic [Width-1:0] q | 
|  | ); | 
|  |  | 
|  | logic [Width-1:0] intq; | 
|  |  | 
|  | always_ff @(posedge clk_i or negedge rst_ni) | 
|  | if (!rst_ni) begin | 
|  | intq <= {Width{ResetValue}}; | 
|  | q    <= {Width{ResetValue}}; | 
|  | end else begin | 
|  | intq <= d; | 
|  | q    <= intq; | 
|  | end | 
|  |  | 
|  | endmodule |