forked from aws/aws-fpga
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcdc_sync.sv
72 lines (58 loc) · 1.79 KB
/
cdc_sync.sv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//=============================================================================
// Copyright 2022 Amazon.com, Inc. or its affiliates.
// All Rights Reserved Worldwide.
// Amazon Confidential information
// Restricted NDA Material
//=============================================================================
// Single- or Multi-bit Synchronizer based on Xilinx XPM
//=============================================================================
// Module
//=============================================================================
module cdc_sync
#(
parameter WIDTH = 1,
parameter DEST_SYNC_FF = 4,
parameter INIT_SYNC_FF = 0,
parameter SIM_ASSERT_CHK = 0,
parameter SRC_INPUT_REG = 0
)
(
input logic src_clk,
input logic [WIDTH-1:0] src_in,
input logic dest_clk,
output logic [WIDTH-1:0] dest_out
);
generate
if (WIDTH == 1)
xpm_cdc_single
#(
.DEST_SYNC_FF (DEST_SYNC_FF),
.INIT_SYNC_FF (INIT_SYNC_FF),
.SIM_ASSERT_CHK (SIM_ASSERT_CHK),
.SRC_INPUT_REG (SRC_INPUT_REG)
)
CDC_XPM_SINGLE
(
.src_clk (src_clk),
.src_in (src_in),
.dest_clk (dest_clk),
.dest_out (dest_out)
);
else // >1
xpm_cdc_array_single
#(
.DEST_SYNC_FF (DEST_SYNC_FF),
.INIT_SYNC_FF (INIT_SYNC_FF),
.SIM_ASSERT_CHK (SIM_ASSERT_CHK),
.SRC_INPUT_REG (SRC_INPUT_REG),
.WIDTH (WIDTH)
)
CDC_XPM_MULTI
(
.src_clk (src_clk),
.src_in (src_in),
.dest_clk (dest_clk),
.dest_out (dest_out)
);
endgenerate
endmodule //cdc_sync