1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # -*- tcl -*-
- # Clock constraints
- # Note: round up
- create_clock -name "clock_48" -period 20.834ns [get_ports {clock_48}]
- # rtc_32khz is technically a clock, but it is treated as an input signal
- # generating strobes - Quartus gets confused about a clock that slow
- # create_clock -name "rtc_32khz" -period 30517.579ns [get_ports {rtc_32khz}]
- # Automatically constrain PLL and other generated clocks
- derive_pll_clocks
- # Automatically calculate clock uncertainty to jitter and other effects.
- derive_clock_uncertainty
- # Reset isn't actually a clock, but Quartus thinks it is
- create_generated_clock -name rst_n \
- -source [get_nets pll|*clk\[1\]] \
- [get_registers rst_n]
- # Reset is asynchronous with everything as far as we are concerned.
- set main_clocks [get_clocks pll|*]
- set_clock_groups -asynchronous \
- -group $main_clocks \
- -group [get_clocks rst_n]
- set sdram_out_clk [get_clocks pll|*|clk\[0\]]
- set sdram_clk [get_clocks pll|*|clk\[4\]]
- set cpu_clk [get_clocks pll|*|clk\[1\]]
- set vid_clk [get_clocks pll|*|clk\[2\]]
- set flash_clk [get_clocks pll|*|clk\[3\]]
- # SDRAM I/O constraints
- set sr_data_out [remove_from_collection [get_ports sr_*] sr_clk]
- set sr_data_in [get_ports sr_dq\[*\]]
- set_max_skew -to $sr_data_out 0.100ns
- set_input_delay -clock $sdram_clk 0.500ns $sr_data_in
- # Anything that feeds into a synchronizer is by definition
- # asynchronous, but encode it as allowing multicycle of one
- # clock, to limit the possible skew (but it is of course not possible
- # to eliminate it...)
- set synchro_inputs [get_registers *|synchronizer:*|qreg0*]
- set_multicycle_path -from [all_clocks] -to $synchro_inputs \
- -start -setup 2
- set_multicycle_path -from [all_clocks] -to $synchro_inputs \
- -start -hold 1
- set_multicycle_path -from $sdram_clk -to $sdram_out_clk \
- -start -setup 2
- set_multicycle_path -from $sdram_clk -to $sdram_out_clk \
- -start -hold 0
- # Don't report signaltap clock problems...
- set_false_path -to [get_registers sld_signaltap:*]
|