|
| 1 | +############### Preliminaries ############### |
| 2 | + |
| 3 | +current_design aes_cipher_top |
| 4 | + |
| 5 | +set clk_period [expr 1 * 4.5] |
| 6 | +set clk_io_pct 0.2 |
| 7 | +set duty_cycle 0.4 |
| 8 | + |
| 9 | +set clk_1_rise 0.0 |
| 10 | +set clk_1_fall [expr {$clk_period * $duty_cycle}] |
| 11 | +set clk_2_rise [expr {$clk_period / 2}] |
| 12 | +set clk_2_fall [expr ($clk_period / 2) + ($clk_period * $duty_cycle)] |
| 13 | + |
| 14 | +set clk_1_waveform_list {} |
| 15 | +lappend clk_1_waveform_list $clk_1_rise |
| 16 | +lappend clk_1_waveform_list $clk_1_fall |
| 17 | + |
| 18 | +set clk_2_waveform_list {} |
| 19 | +lappend clk_2_waveform_list $clk_2_rise |
| 20 | +lappend clk_2_waveform_list $clk_2_fall |
| 21 | + |
| 22 | + |
| 23 | +############### Set up default clock ############### |
| 24 | + |
| 25 | +set default_clk_name default_clk |
| 26 | + |
| 27 | +create_clock -name $default_clk_name -period $clk_period |
| 28 | + |
| 29 | + |
| 30 | +############### Set up clock 1 ############### |
| 31 | + |
| 32 | +set clk_1_name clk_1 |
| 33 | +set clk_1_port_name clk_1 |
| 34 | + |
| 35 | +set clk_1_port [get_ports $clk_1_port_name] |
| 36 | + |
| 37 | +create_clock -name $clk_1_name -period $clk_period $clk_1_port -waveform $clk_1_waveform_list |
| 38 | + |
| 39 | + |
| 40 | +############### Set up clock 2 ############### |
| 41 | + |
| 42 | +set clk_2_name clk_2 |
| 43 | +set clk_2_port_name clk_2 |
| 44 | + |
| 45 | +set clk_2_port [get_ports $clk_2_port_name] |
| 46 | + |
| 47 | +create_clock -name $clk_2_name -period $clk_period $clk_2_port -waveform $clk_2_waveform_list |
| 48 | + |
| 49 | + |
| 50 | +############### Create non-clock inputs ############### |
| 51 | + |
| 52 | +set non_clock_inputs [all_inputs -no_clocks] |
| 53 | + |
| 54 | + |
| 55 | +############### Set input and output delays ############### |
| 56 | + |
| 57 | +set_input_delay [expr $clk_period * $clk_io_pct] -clock $default_clk_name $non_clock_inputs |
| 58 | +set_output_delay [expr $clk_period * $clk_io_pct] -clock $default_clk_name [all_outputs] |
| 59 | + |
| 60 | + |
| 61 | +############### Set up constraints for setup and hold checks ############### |
| 62 | + |
| 63 | +set_multicycle_path 2 -setup -from [get_clocks $default_clk_name] -to [get_clocks $clk_1_name] |
| 64 | +set_multicycle_path 2 -setup -from [get_clocks $clk_2_name] -to [get_clocks $default_clk_name] |
| 65 | + |
| 66 | +set_multicycle_path 1 -hold -from [get_clocks $default_clk_name] -to [get_clocks $clk_1_name] |
| 67 | +set_multicycle_path 1 -hold -from [get_clocks $clk_2_name] -to [get_clocks $default_clk_name] |
0 commit comments