Skip to content

Commit

Permalink
Update cl_synth_aws.xdc constraints to address async clocks in sh_ddr…
Browse files Browse the repository at this point in the history
….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]>
  • Loading branch information
kyyalama2 and AWScsaralay authored Jun 11, 2021
1 parent 4156888 commit 149b6a7
Showing 1 changed file with 50 additions and 1 deletion.
51 changes: 50 additions & 1 deletion hdk/common/shell_v04261818/build/constraints/cl_synth_aws.xdc
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,56 @@ set_max_delay -datapath_only \
-to [get_clocks -of_objects [get_pins SH_DDR/ddr_cores.DDR4_*/inst/u_ddr4_infrastructure/gen_mmcme4.u_mmcme_adv_inst/CLKOUT0]] \
[get_property PERIOD [get_clocks -of_objects [get_ports clk_main_a0]]]

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]}]
set asyncFFs [get_cells -quiet -hier -filter {\
NAME =~ *SH_DDR/*sync_wr_rst/in_q_reg[0] || \
NAME =~ *SH_DDR/*sync_wr_rst/sync_out_reg[0] ||\
NAME =~ *SH_DDR/*sync_rd_rst/in_q_reg[0] || \
NAME =~ *SH_DDR/*sync_rd_rst/sync_out_reg[0] \
}]
set asyncFFPins [get_pins -quiet -filter REF_PIN_NAME==CLR -of $asyncFFs]
set_false_path -quiet -to $asyncFFPins
set_property -quiet ASYNC_REG true $asyncFFs

#
# False Paths for Synchronizers inside sh_ddr.sv
#
set syncCells [get_cells -quiet -hierarchical -filter {\
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC0/in_q_reg* || \
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC1/in_q_reg* || \
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC2/in_q_reg* || \
NAME =~ *SH_DDR/*SAVE_RST_TO_DDR_SYNC/in_q_reg* || \
NAME =~ *SH_DDR/*SAVE_RST_FROM_DDR_SYNC/in_q_reg* || \
NAME =~ *SH_DDR/*CCF_XSDB_*/CCF_CTL/sync_write_ptr_rd/in_q_reg* || \
NAME =~ *SH_DDR/*CCF_XSDB_*/CCF_CTL/sync_read_ptr_wr/in_q_reg* || \
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/CCF_CTL/sync_write_ptr_rd/in_q_reg* || \
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/CCF_CTL/sync_read_ptr_wr/in_q_reg* \
}]
set syncPins [get_pins -quiet -filter {REF_PIN_NAME==D} -of_objects $syncCells]
set_false_path -quiet -to $syncPins

# Set ASYNC_REG property on syncrhonizer flops.
set syncOutCells [get_cells -quiet -hierarchical -filter {\
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC0/sync_out_reg* || \
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC1/sync_out_reg* || \
NAME =~ *SH_DDR/*DDR_STAT_INC_SYNC2/sync_out_reg* || \
NAME =~ *SH_DDR/*SAVE_RST_TO_DDR_SYNC/sync_out_reg* || \
NAME =~ *SH_DDR/*SAVE_RST_FROM_DDR_SYNC/sync_out_reg* || \
NAME =~ *SH_DDR/*CCF_XSDB_*/CCF_CTL/sync_write_ptr_rd/sync_out_reg* || \
NAME =~ *SH_DDR/*CCF_XSDB_*/CCF_CTL/sync_read_ptr_wr/sync_out_reg* || \
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/CCF_CTL/sync_write_ptr_rd/sync_out_reg* || \
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/CCF_CTL/sync_read_ptr_wr/sync_out_reg* \
}]
set_property -quiet ASYNC_REG true $syncCells $syncOutCells

#
# CDC False Paths in sh_ddr.sv
#
set fromPins [get_pins -quiet -filter {REF_PIN_NAME==CLK} -of_objects [get_cells -quiet -hierarchical -filter {\
NAME =~ *SH_DDR/*CCF_XSDB_*/ram_reg* || \
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/ram_reg* \
}]]
set toPins [get_pins -quiet -filter {REF_PIN_NAME==D} -of_objects [get_cells -hierarchical -quiet -filter {\
NAME =~ *SH_DDR/*CCF_XSDB_*/rd_do_reg* || \
NAME =~ *SH_DDR/*CCF_DDR_STAT_*/rd_do_reg* \
}]]
set_false_path -quiet -from $fromPins -to $toPins

0 comments on commit 149b6a7

Please sign in to comment.