@@ -39,7 +39,56 @@ set_max_delay -datapath_only \
39
39
-to [get_clocks -of_objects [get_pins SH_DDR/ddr_cores.DDR4_*/inst/u_ddr4_infrastructure/gen_mmcme4.u_mmcme_adv_inst/CLKOUT0]] \
40
40
[get_property PERIOD [get_clocks -of_objects [get_ports clk_main_a0]]]
41
41
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
+ }]
43
48
set asyncFFPins [get_pins -quiet -filter REF_PIN_NAME==CLR -of $asyncFFs ]
44
49
set_false_path -quiet -to $asyncFFPins
45
50
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