关于Vivado中set_input_delay和set_output_delay的一点理解

102 篇文章 12 订阅

以Vivado2019.2中的CPU(Synthesisd)示例工程为例
情况一:
        添加时钟约束以及所有的输入输出延时约束,对比只有时钟约束,两种情况实现后生成的sdf文件有区别:
(1)添加时钟约束以及所有的输入输出延时约束

create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt0_ROCKETIO_WRAPPER_TILE_i/GT0_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt0_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt2_ROCKETIO_WRAPPER_TILE_i/GT2_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt2_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt4_ROCKETIO_WRAPPER_TILE_i/GT4_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt4_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt6_ROCKETIO_WRAPPER_TILE_i/GT6_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt6_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 10.000 -name sysClk -waveform {0.000 5.000} [get_ports sysClk]
create_clock -period 20.000 -name VIRTUAL_cpuClk_5 -waveform {0.000 10.000}



set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {DataIn_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {DataIn_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {DataIn_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {DataIn_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {LineState_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {LineState_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {LineState_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {LineState_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {VStatus_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {VStatus_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {VStatus_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {VStatus_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxActive_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxActive_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxActive_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxActive_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxError_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxError_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxError_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxError_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxValid_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxValid_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxValid_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxValid_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports TxReady_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports TxReady_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports TxReady_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports TxReady_pad_1_i]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -min -add_delay 0.200 [get_ports or1200_clmode]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -max -add_delay 2.700 [get_ports or1200_clmode]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -min -add_delay 0.200 [get_ports or1200_pic_ints]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -max -add_delay 2.700 [get_ports or1200_pic_ints]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -min -add_delay 0.200 [get_ports reset]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -max -add_delay 2.700 [get_ports reset]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports usb_vbus_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports usb_vbus_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports usb_vbus_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports usb_vbus_pad_1_i]
create_clock -period 20.000 -name VIRTUAL_wbClk_4 -waveform {0.000 10.000}
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -min -add_delay -0.600 [get_ports {DataOut_pad_0_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -max -add_delay 2.200 [get_ports {DataOut_pad_0_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -min -add_delay -0.600 [get_ports {DataOut_pad_1_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -max -add_delay 2.200 [get_ports {DataOut_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {OpMode_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {OpMode_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {OpMode_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {OpMode_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {VControl_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {VControl_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {VControl_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {VControl_pad_1_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -min -add_delay -0.600 [get_ports {or1200_pm_out[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -max -add_delay 2.200 [get_ports {or1200_pm_out[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports SuspendM_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports SuspendM_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports SuspendM_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports SuspendM_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TermSel_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TermSel_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TermSel_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TermSel_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TxValid_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TxValid_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TxValid_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TxValid_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports VControl_Load_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports VControl_Load_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports VControl_Load_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports VControl_Load_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports XcvSelect_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports XcvSelect_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports XcvSelect_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports XcvSelect_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports phy_rst_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports phy_rst_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports phy_rst_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports phy_rst_pad_1_o]

实现后的sdf文件一部分为:

(CELL 
  (CELLTYPE "FDCE")
  (INSTANCE cpuEngine/cpu_dwb_dat_i/buffer_fifo/infer_fifo\.next_rd_addr_reg\[6\])
  (DELAY 
    (ABSOLUTE 
      (IOPATH (posedge CLR) Q (303.0:380.0:380.0))
      (IOPATH C Q (122.0:152.0:152.0) (122.0:152.0:152.0))
    )
  )
    (TIMINGCHECK
      (SETUPHOLD (posedge CE) (posedge C) (118.0:148.0:148.0) (34.0:34.0:34.0))
      (SETUPHOLD (negedge CE) (posedge C) (118.0:148.0:148.0) (34.0:34.0:34.0))
      (RECREM (negedge CLR) (posedge C) (160.0:201.0:201.0) (-148.0:-148.0:-148.0))
      (SETUPHOLD (posedge D) (posedge C) (-60.0:-50.0:-50.0) (133.0:133.0:133.0))
      (SETUPHOLD (negedge D) (posedge C) (-60.0:-50.0:-50.0) (133.0:133.0:133.0))
      (PERIOD (posedge C) (653.0:750.0:750.0))
      (WIDTH (posedge C) (305.0:350.0:350.0))
      (WIDTH (negedge C) (348.0:400.0:400.0))
    )
)
(CELL 
  (CELLTYPE "FDCE")
  (INSTANCE cpuEngine/cpu_dwb_dat_i/buffer_fifo/infer_fifo\.next_rd_addr_reg\[7\])
  (DELAY 
    (ABSOLUTE 
      (IOPATH (posedge CLR) Q (323.0:404.0:404.0))
      (IOPATH C Q (139.0:175.0:175.0) (139.0:175.0:175.0))
    )
  )
    (TIMINGCHECK
      (SETUPHOLD (posedge CE) (posedge C) (118.0:148.0:148.0) (34.0:34.0:34.0))
      (SETUPHOLD (negedge CE) (posedge C) (118.0:148.0:148.0) (34.0:34.0:34.0))
      (RECREM (negedge CLR) (posedge C) (134.0:168.0:168.0) (-148.0:-148.0:-148.0))
      (SETUPHOLD (posedge D) (posedge C) (-53.0:-47.0:-47.0) (143.0:143.0:143.0))
      (SETUPHOLD (negedge D) (posedge C) (-53.0:-47.0:-47.0) (143.0:143.0:143.0))
    )
)

(2)只有时钟约束且与上面一致,没有添加输入输出约束

create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt0_ROCKETIO_WRAPPER_TILE_i/GT0_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt0_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt2_ROCKETIO_WRAPPER_TILE_i/GT2_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt2_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt4_ROCKETIO_WRAPPER_TILE_i/GT4_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt4_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt6_ROCKETIO_WRAPPER_TILE_i/GT6_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt6_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 10.000 -name sysClk -waveform {0.000 5.000} [get_ports sysClk]
create_clock -period 20.000 -name VIRTUAL_cpuClk_5 -waveform {0.000 10.000}

实现后的sdf文件一部分为:

(CELL 
  (CELLTYPE "FDCE")
  (INSTANCE cpuEngine/cpu_dwb_dat_i/buffer_fifo/infer_fifo\.next_rd_addr_reg\[6\])
  (DELAY 
    (ABSOLUTE 
      (IOPATH (posedge CLR) Q (303.0:380.0:380.0))
      (IOPATH C Q (116.0:146.0:146.0) (116.0:146.0:146.0))
    )
  )
    (TIMINGCHECK
      (SETUPHOLD (posedge CE) (posedge C) (118.0:148.0:148.0) (49.0:49.0:49.0))
      (SETUPHOLD (negedge CE) (posedge C) (118.0:148.0:148.0) (49.0:49.0:49.0))
      (RECREM (negedge CLR) (posedge C) (165.0:207.0:207.0) (-157.0:-157.0:-157.0))
      (SETUPHOLD (posedge D) (posedge C) (-52.0:-42.0:-42.0) (126.0:126.0:126.0))
      (SETUPHOLD (negedge D) (posedge C) (-52.0:-42.0:-42.0) (126.0:126.0:126.0))
      (PERIOD (posedge C) (653.0:750.0:750.0))
      (WIDTH (posedge C) (305.0:350.0:350.0))
      (WIDTH (negedge C) (348.0:400.0:400.0))
    )
)
(CELL 
  (CELLTYPE "FDCE")
  (INSTANCE cpuEngine/cpu_dwb_dat_i/buffer_fifo/infer_fifo\.next_rd_addr_reg\[7\])
  (DELAY 
    (ABSOLUTE 
      (IOPATH (posedge CLR) Q (318.0:399.0:399.0))
      (IOPATH C Q (132.0:165.0:165.0) (132.0:165.0:165.0))
    )
  )
    (TIMINGCHECK
      (SETUPHOLD (posedge CE) (posedge C) (118.0:148.0:148.0) (49.0:49.0:49.0))
      (SETUPHOLD (negedge CE) (posedge C) (118.0:148.0:148.0) (49.0:49.0:49.0))
      (RECREM (negedge CLR) (posedge C) (165.0:207.0:207.0) (-157.0:-157.0:-157.0))
      (SETUPHOLD (posedge D) (posedge C) (-45.0:-40.0:-40.0) (136.0:136.0:136.0))
      (SETUPHOLD (negedge D) (posedge C) (-45.0:-40.0:-40.0) (136.0:136.0:136.0))
    )
)

        通过上面的分析,可以判断,是否添加set_input_delay和set_output_delay约束,会影响vivado的布局布线。具体怎么影响还不清楚,后续再研究。


情况二:都有时钟约束和输入输出延时约束,但是时钟约束的频率不一样,这也会导致实现后的sdf文件不一样
(1)时钟约束按照以下方式书写


###changed 
create_clock -period 10.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt0_ROCKETIO_WRAPPER_TILE_i/GT0_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt0_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 10.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt2_ROCKETIO_WRAPPER_TILE_i/GT2_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt2_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 10.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt4_ROCKETIO_WRAPPER_TILE_i/GT4_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt4_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 10.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt6_ROCKETIO_WRAPPER_TILE_i/GT6_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt6_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 10.000 -name sysClk -waveform {0.000 5.000} [get_ports sysClk]
create_clock -period 10.000 -name VIRTUAL_cpuClk_5 -waveform {0.000 10.000}


set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {DataIn_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {DataIn_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {DataIn_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {DataIn_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {LineState_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {LineState_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {LineState_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {LineState_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {VStatus_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {VStatus_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {VStatus_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {VStatus_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxActive_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxActive_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxActive_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxActive_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxError_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxError_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxError_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxError_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxValid_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxValid_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxValid_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxValid_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports TxReady_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports TxReady_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports TxReady_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports TxReady_pad_1_i]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -min -add_delay 0.200 [get_ports or1200_clmode]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -max -add_delay 2.700 [get_ports or1200_clmode]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -min -add_delay 0.200 [get_ports or1200_pic_ints]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -max -add_delay 2.700 [get_ports or1200_pic_ints]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -min -add_delay 0.200 [get_ports reset]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -max -add_delay 2.700 [get_ports reset]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports usb_vbus_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports usb_vbus_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports usb_vbus_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports usb_vbus_pad_1_i]
create_clock -period 20.000 -name VIRTUAL_wbClk_4 -waveform {0.000 10.000}
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -min -add_delay -0.600 [get_ports {DataOut_pad_0_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -max -add_delay 2.200 [get_ports {DataOut_pad_0_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -min -add_delay -0.600 [get_ports {DataOut_pad_1_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -max -add_delay 2.200 [get_ports {DataOut_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {OpMode_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {OpMode_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {OpMode_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {OpMode_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {VControl_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {VControl_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {VControl_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {VControl_pad_1_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -min -add_delay -0.600 [get_ports {or1200_pm_out[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -max -add_delay 2.200 [get_ports {or1200_pm_out[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports SuspendM_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports SuspendM_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports SuspendM_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports SuspendM_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TermSel_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TermSel_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TermSel_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TermSel_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TxValid_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TxValid_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TxValid_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TxValid_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports VControl_Load_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports VControl_Load_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports VControl_Load_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports VControl_Load_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports XcvSelect_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports XcvSelect_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports XcvSelect_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports XcvSelect_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports phy_rst_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports phy_rst_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports phy_rst_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports phy_rst_pad_1_o]


(2)时钟约束按照以下方式书写

create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt0_ROCKETIO_WRAPPER_TILE_i/GT0_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt0_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt2_ROCKETIO_WRAPPER_TILE_i/GT2_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt2_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt4_ROCKETIO_WRAPPER_TILE_i/GT4_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt4_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 12.800 -name mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt6_ROCKETIO_WRAPPER_TILE_i/GT6_TXOUTCLK_OUT -waveform {0.000 6.400} [get_pins mgtEngine/ROCKETIO_WRAPPER_TILE_i/gt6_ROCKETIO_WRAPPER_TILE_i/gtxe2_i/TXOUTCLK]
create_clock -period 10.000 -name sysClk -waveform {0.000 5.000} [get_ports sysClk]
create_clock -period 20.000 -name VIRTUAL_cpuClk_5 -waveform {0.000 10.000}




set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {DataIn_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {DataIn_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {DataIn_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {DataIn_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {LineState_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {LineState_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {LineState_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {LineState_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {VStatus_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {VStatus_pad_0_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports {VStatus_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports {VStatus_pad_1_i[*]}]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxActive_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxActive_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxActive_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxActive_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxError_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxError_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxError_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxError_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxValid_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxValid_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports RxValid_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports RxValid_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports TxReady_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports TxReady_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports TxReady_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports TxReady_pad_1_i]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -min -add_delay 0.200 [get_ports or1200_clmode]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -max -add_delay 2.700 [get_ports or1200_clmode]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -min -add_delay 0.200 [get_ports or1200_pic_ints]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -max -add_delay 2.700 [get_ports or1200_pic_ints]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -min -add_delay 0.200 [get_ports reset]
set_input_delay -clock [get_clocks VIRTUAL_cpuClk_5] -max -add_delay 2.700 [get_ports reset]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports usb_vbus_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports usb_vbus_pad_0_i]
set_input_delay -clock [get_clocks sysClk] -min -add_delay 2.000 [get_ports usb_vbus_pad_1_i]
set_input_delay -clock [get_clocks sysClk] -max -add_delay 3.000 [get_ports usb_vbus_pad_1_i]
create_clock -period 20.000 -name VIRTUAL_wbClk_4 -waveform {0.000 10.000}
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -min -add_delay -0.600 [get_ports {DataOut_pad_0_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -max -add_delay 2.200 [get_ports {DataOut_pad_0_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -min -add_delay -0.600 [get_ports {DataOut_pad_1_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -max -add_delay 2.200 [get_ports {DataOut_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {OpMode_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {OpMode_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {OpMode_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {OpMode_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {VControl_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {VControl_pad_0_o[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports {VControl_pad_1_o[*]}]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports {VControl_pad_1_o[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -min -add_delay -0.600 [get_ports {or1200_pm_out[*]}]
set_output_delay -clock [get_clocks VIRTUAL_wbClk_4] -max -add_delay 2.200 [get_ports {or1200_pm_out[*]}]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports SuspendM_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports SuspendM_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports SuspendM_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports SuspendM_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TermSel_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TermSel_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TermSel_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TermSel_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TxValid_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TxValid_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports TxValid_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports TxValid_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports VControl_Load_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports VControl_Load_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports VControl_Load_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports VControl_Load_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports XcvSelect_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports XcvSelect_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports XcvSelect_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports XcvSelect_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports phy_rst_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports phy_rst_pad_0_o]
set_output_delay -clock [get_clocks sysClk] -min -add_delay 0.000 [get_ports phy_rst_pad_1_o]
set_output_delay -clock [get_clocks sysClk] -max -add_delay 1.100 [get_ports phy_rst_pad_1_o]


通过上面的分析,约束的时钟频率不一致,对vivado布局布线也会有影响

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值