@@ -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+ }]
4348set asyncFFPins [get_pins -quiet -filter REF_PIN_NAME==CLR -of $asyncFFs ]
4449set_false_path -quiet -to $asyncFFPins
4550set_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