|
2 | 2 | ## Licensed under the Apache License, Version 2.0, see LICENSE for details. |
3 | 3 | ## SPDX-License-Identifier: Apache-2.0 |
4 | 4 |
|
| 5 | +# This file is for physical constraints. |
| 6 | + |
5 | 7 | # Using the names in the PCB design, they should match this file with a case-insensitive search: |
6 | 8 | # https://github.com/newaetech/sonata-pcb/tree/main |
7 | 9 |
|
8 | 10 | ## Clocks |
9 | | -create_clock -period 40.000 -name mainClk -waveform {0.000 20.000} [get_ports mainClk] |
10 | | -create_clock -period 100.000 -name tck_i -waveform {0.000 50.000} [get_ports tck_i] |
11 | | - |
12 | 11 | set_property -dict { PACKAGE_PIN P15 IOSTANDARD LVCMOS33 } [get_ports mainClk]; |
13 | 12 | set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets tck_i] |
14 | 13 |
|
15 | | -## Clock Domain Crossings |
16 | | -set clks_sys_unbuf [get_clocks -of_objects [get_pin u_clkgen/pll/CLKOUT0]] |
17 | | -set clks_usb_unbuf [get_clocks -of_objects [get_pin u_clkgen/pll/CLKOUT1]] |
18 | | - |
19 | | -## Set asynchronous clock groups |
20 | | -set_clock_groups -group ${clks_sys_unbuf} -group ${clks_usb_unbuf} -group mainClk -asynchronous |
21 | | - |
22 | 14 | ## Reset |
23 | 15 | ## PCB revision 0.3 and above |
24 | 16 | set_property -dict { PACKAGE_PIN T5 IOSTANDARD LVCMOS33 } [get_ports {nrst}]; |
@@ -291,49 +283,3 @@ set_property -dict { PACKAGE_PIN J2 IOSTANDARD LVCMOS18 } [get_ports { hype |
291 | 283 | set_property CFGBVS VCCO [current_design] |
292 | 284 | set_property CONFIG_VOLTAGE 3.3 [current_design] |
293 | 285 | set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] |
294 | | - |
295 | | -set_false_path -to [get_ports hyperram_ckp] |
296 | | -set_false_path -to [get_ports hyperram_ckn] |
297 | | -set_false_path -to [get_ports hyperram_rwds] |
298 | | -set_false_path -to [get_ports hyperram_dq[*]] |
299 | | - |
300 | | -# set input false path. dq[*] and rwds are supposed to |
301 | | -# be fully asynchronous for the data recovery logic |
302 | | -set_false_path -from [get_ports hyperram_rwds] |
303 | | -set_false_path -from [get_ports hyperram_dq[*]] |
304 | | - |
305 | | -# False path for 'hb_cs_n' and 'hb_reset_n' |
306 | | -set_false_path -to [get_ports hyperram_cs] |
307 | | -set_false_path -to [get_ports hyperram_nrst] |
308 | | - |
309 | | -set_false_path -from [get_pins -of [get_cells u_sonata_system/g_hyperram.u_hyperram/u_hbmc_tl_top/u_hbmc_cmd_fifo/*storage*/*]] |
310 | | -set_false_path -from [get_pins -of [get_cells u_sonata_system/g_hyperram.u_hyperram/u_hbmc_tl_top/hbmc_ufifo_inst/u_fifo/*storage*/*]] |
311 | | -set_false_path -from [get_pins -of [get_cells u_sonata_system/g_hyperram.u_hyperram/u_hbmc_tl_top/hbmc_dfifo_inst/u_fifo/*storage*/*]] |
312 | | - |
313 | | -# TODO: Want some general constraints that will setup appropriate false paths |
314 | | -# for all CDC prims. An attempt is below but it isn't working yet. |
315 | | -#set sync_cells [get_cells -hier -filter {ORIG_REF_NAME == prim_flop_2sync}] |
316 | | -# |
317 | | -#foreach sync_cell $sync_cells { |
318 | | -# set sync_pins [get_pins -of [get_cells -hier -regexp $sync_cell/.*u_sync_1.*]] |
319 | | -# if {[info exists endpoint_sync_pins_for_false_paths]} { |
320 | | -# set endpoint_sync_pins_for_false_paths $sync_pins |
321 | | -# } else { |
322 | | -# lappend endpoint_sync_pins_for_false_paths $sync_pins |
323 | | -# } |
324 | | -#} |
325 | | -# |
326 | | -#set_false_path -to $endpoint_sync_pins_for_false_paths |
327 | | -# |
328 | | -#set async_fifo_cells [get_cells -hier -filter {ORIG_REF_NAME == prim_fifo_async}] |
329 | | -# |
330 | | -#foreach async_fifo_cell $async_fifo_cells { |
331 | | -# set async_fifo_pins [get_pins -of [get_cells -hier -regexp $async_fifo_cell/.*storage.*]] |
332 | | -# if {[info exists startpoint_fifo_async_pins_for_false_paths]} { |
333 | | -# set startpoint_fifo_async_pins_for_false_paths $async_fifo_pins |
334 | | -# } else { |
335 | | -# lappend startpoint_fifo_async_pins_for_false_paths $async_fifo_pins |
336 | | -# } |
337 | | -#} |
338 | | -# |
339 | | -#set_false_path -from $startpoint_fifo_async_pins_for_false_paths |
0 commit comments