Skip to content

Commit 149b6a7

Browse files
Update cl_synth_aws.xdc constraints to address async clocks in sh_ddr.sv (#674) (#522)
* Update cl_synth_aws.xdc constraints to address async clocks in sh_ddr.sv * cl_synth_aws.xdc: Apply constraints "quietly" so it doesnt throw warnings on CLs that dont have DDRs Co-authored-by: AWScsaralay <[email protected]>
1 parent 4156888 commit 149b6a7

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

hdk/common/shell_v04261818/build/constraints/cl_synth_aws.xdc

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,56 @@ set_max_delay -datapath_only \
3939
-to [get_clocks -of_objects [get_pins SH_DDR/ddr_cores.DDR4_*/inst/u_ddr4_infrastructure/gen_mmcme4.u_mmcme_adv_inst/CLKOUT0]] \
4040
[get_property PERIOD [get_clocks -of_objects [get_ports clk_main_a0]]]
4141

42-
set asyncFFs [get_cells -quiet -hier -filter {NAME =~ WRAPPER_INST/CL/SH_DDR/*sync_wr_rst/in_q_reg[0] || NAME =~ WRAPPER_INST/CL/SH_DDR/*sync_wr_rst/sync_out_reg[0]}]
42+
set asyncFFs [get_cells -quiet -hier -filter {\
43+
NAME =~ *SH_DDR/*sync_wr_rst/in_q_reg[0] || \
44+
NAME =~ *SH_DDR/*sync_wr_rst/sync_out_reg[0] ||\
45+
NAME =~ *SH_DDR/*sync_rd_rst/in_q_reg[0] || \
46+
NAME =~ *SH_DDR/*sync_rd_rst/sync_out_reg[0] \
47+
}]
4348
set asyncFFPins [get_pins -quiet -filter REF_PIN_NAME==CLR -of $asyncFFs]
4449
set_false_path -quiet -to $asyncFFPins
4550
set_property -quiet ASYNC_REG true $asyncFFs
51+
52+
#
53+
# False Paths for Synchronizers inside sh_ddr.sv
54+
#
55+
set syncCells [get_cells -quiet -hierarchical -filter {\
56+
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC0/in_q_reg* || \
57+
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC1/in_q_reg* || \
58+
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC2/in_q_reg* || \
59+
NAME =~ *SH_DDR/*SAVE_RST_TO_DDR_SYNC/in_q_reg* || \
60+
NAME =~ *SH_DDR/*SAVE_RST_FROM_DDR_SYNC/in_q_reg* || \
61+
NAME =~ *SH_DDR/*CCF_XSDB_*/CCF_CTL/sync_write_ptr_rd/in_q_reg* || \
62+
NAME =~ *SH_DDR/*CCF_XSDB_*/CCF_CTL/sync_read_ptr_wr/in_q_reg* || \
63+
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/CCF_CTL/sync_write_ptr_rd/in_q_reg* || \
64+
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/CCF_CTL/sync_read_ptr_wr/in_q_reg* \
65+
}]
66+
set syncPins [get_pins -quiet -filter {REF_PIN_NAME==D} -of_objects $syncCells]
67+
set_false_path -quiet -to $syncPins
68+
69+
# Set ASYNC_REG property on syncrhonizer flops.
70+
set syncOutCells [get_cells -quiet -hierarchical -filter {\
71+
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC0/sync_out_reg* || \
72+
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC1/sync_out_reg* || \
73+
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC2/sync_out_reg* || \
74+
NAME =~ *SH_DDR/*SAVE_RST_TO_DDR_SYNC/sync_out_reg* || \
75+
NAME =~ *SH_DDR/*SAVE_RST_FROM_DDR_SYNC/sync_out_reg* || \
76+
NAME =~ *SH_DDR/*CCF_XSDB_*/CCF_CTL/sync_write_ptr_rd/sync_out_reg* || \
77+
NAME =~ *SH_DDR/*CCF_XSDB_*/CCF_CTL/sync_read_ptr_wr/sync_out_reg* || \
78+
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/CCF_CTL/sync_write_ptr_rd/sync_out_reg* || \
79+
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/CCF_CTL/sync_read_ptr_wr/sync_out_reg* \
80+
}]
81+
set_property -quiet ASYNC_REG true $syncCells $syncOutCells
82+
83+
#
84+
# CDC False Paths in sh_ddr.sv
85+
#
86+
set fromPins [get_pins -quiet -filter {REF_PIN_NAME==CLK} -of_objects [get_cells -quiet -hierarchical -filter {\
87+
NAME =~ *SH_DDR/*CCF_XSDB_*/ram_reg* || \
88+
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/ram_reg* \
89+
}]]
90+
set toPins [get_pins -quiet -filter {REF_PIN_NAME==D} -of_objects [get_cells -hierarchical -quiet -filter {\
91+
NAME =~ *SH_DDR/*CCF_XSDB_*/rd_do_reg* || \
92+
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/rd_do_reg* \
93+
}]]
94+
set_false_path -quiet -from $fromPins -to $toPins

0 commit comments

Comments
 (0)