1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| # make both clock in same group
#create_clock -name nn_clk -period $nn_clk_period [get_ports pad_nn_clk]
create_clock -name nn_clk -period $nn_clk_period [get_ports clk]
create_clock -name v_nn_clk -period $nn_clk_period
set_clock_uncertainty -setup 0.2 nn_clk
set_clock_uncertainty -hold 0.1 nn_clk
create_clock -name okClk -period $ok_clk_period [get_ports pad_okClk]
create_clock -name v_okClk -period $ok_clk_period
set_clock_uncertainty -setup 0.2 okClk
set_clock_uncertainty -hold 0.1 okClk
create_clock -name spi_clk -period $spi_clk_period [get_ports pad_i_SPI_Clk]
create_clock -name v_spi_clk -period $spi_clk_period
set_clock_uncertainty -setup 0.2 spi_clk
set_clock_uncertainty -hold 0.1 spi_clk
create_clock -name dfi_1xclk -period $clk_period [get_ports pad_dfi_1xclk]
create_clock -name v_dfi_1xclk -period $clk_period
set_clock_uncertainty -setup 0.2 dfi_1xclk
set_clock_uncertainty -hold 0.1 dfi_1xclk
#input transition to all ports
#ouput load to all ports
# vcs smic sram delay_zero_mode relevence
#set all_clock [all_clocks]
# async with all other clocks
set_clock_groups -asynchronous -group {nn_clk v_nn_clk}
set_clock_groups -asynchronous -group {okClk v_okClk}
set_clock_groups -asynchronous -group {spi_clk v_spi_clk}
set_clock_groups -asynchronous -group {dfi_1xclk v_dfi_1xclk}
set_false_path -from [get_ports pad_nn_rst]
set_false_path -from [get_ports pad_axi_rst]
set_false_path -from [get_ports pad_rst_ok]
set_false_path -from [get_ports pad_dfi_rstn]
set_false_path -from [get_ports pad_dfi_clkdiv_rstn]
# clock group use virtual clock
#set_false_path -from [get_clocks nn_clk] -to [remove_from_collection [all_clocks] [get_clocks nn_clk]]
#set_false_path -from [get_clocks okClk] -to [remove_from_collection [all_clocks] [get_clocks okClk]]
#set_false_path -from [get_clocks spi_clk] -to [remove_from_collection [all_clocks] [get_clocks spi_clk]]
#set_false_path -from [get_clocks dfi_1xclk] -to [remove_from_collection [all_clocks] [get_clocks dfi_1xclk]]
#
#set_false_path -from [remove_from_collection [all_clocks] [get_clocks nn_clk]] -to [get_clocks nn_clk]
#set_false_path -from [remove_from_collection [all_clocks] [get_clocks okClk]] -to [get_clocks okClk]
#set_false_path -from [remove_from_collection [all_clocks] [get_clocks spi_clk]] -to [get_clocks spi_clk]
#set_false_path -from [remove_from_collection [all_clocks] [get_clocks dfi_1xclk]] -to [get_clocks dfi_1xclk]
# fpga margin < period * (1-0.6)
# virtual clock
set_input_delay [expr $ok_clk_period * 0.6] -clock v_okClk [get_ports pad_epPipeWrite]
set_input_delay [expr $ok_clk_period * 0.6] -clock v_okClk [get_ports pad_epPipeIn[*]]
set_input_delay [expr $ok_clk_period * 0.6] -clock v_okClk [get_ports pad_epPipeRead]
set_output_delay [expr $ok_clk_period * 0.6] -clock v_okClk [get_ports pad_epPipeOut[*]]
set_output_delay [expr $ok_clk_period * 0.6] -clock v_okClk [get_ports pad_ep60trig_0]
set_output_delay [expr $ok_clk_period * 0.6] -clock v_okClk [get_ports pad_ep60trig_2]
set_output_delay [expr $ok_clk_period * 0.6] -clock v_okClk [get_ports pad_ep60trig_3]
set_output_delay [expr $ok_clk_period * 0.6] -clock v_okClk [get_ports pad_ep60trig_4]
set_output_delay [expr $ok_clk_period * 0.6] -clock v_okClk [get_ports pad_ep60trig_5]
set_input_delay [expr $spi_clk_period * 0.6] -clock v_spi_clk [get_ports pad_i_SPI_CS_n]
set_input_delay [expr $spi_clk_period * 0.6] -clock v_spi_clk [get_ports pad_i_SPI_MOSI]
set_output_delay [expr $spi_clk_period * 0.6] -clock v_spi_clk [get_ports pad_o_SPI_MISO]
set_output_delay [expr $nn_clk_period * 0.6] -clock v_nn_clk [get_ports pad_error]
|