Defining Constraints with ObjectProperties
步骤4:使用对象定义约束
 物业
 您可以创建时间和放置约束,如本教程所示。你也可以
 更改单元格的属性以控制Vivado实现如何处理它们。许多
 物理约束被定义为单元对象的属性。
 例如,如果您在设计中发现RAM存在时序问题,为了避免重新合成,您
 可以更改RAM单元的属性以添加流水线寄存器。与确认后
 设计师和验证团队认为这是一种可接受的方法,您可以更改设计。
设置单元格属性
 因为在合成后返回RTL可能太耗时且成本太高,所以您可以
 按如下方式更改网表。
 1.选择编辑→查找,打开查找对话框,如下图所示。
 a.从查找下拉列表中选择单元格。
 b.在“属性”下,将PRIMITIVE_TYPE设置为BMEM。布拉姆。
 c.确保选择了“搜索层次结构”,如下图所示。
 d.单击“确定”。

“查找结果”窗口打开。
 2.选择“查找结果”窗口工具栏菜单上的“显示搜索”按钮。
 3.搜索ingressLoop,然后选择以下单元格:fftEngine/fftInst/
 ingressLoop[7].ingressFifo/
 在“单元属性”窗口的“属性”选项卡中,您可以看到DOA_REG和
 DOB_REG设置为零,表示输出寄存器已禁用。
 4.直接从Tcl控制台从该单元格生成自定义计时报告。Tcl
 要输入的命令是:
 report_timing -from [get_cells fftEngine/fftInst/  
 
 ingressLoop[7].ingressFifo/  
 
 buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg]  
 
提示:您可以将单元格名称从“单元格属性”窗口的“常规”选项卡复制并粘贴到 
Tcl控制台。
5.在Tcl控制台的右上角,单击最大化按钮以最大化
窗口,更好地查看计时报告。
6.在报告的数据路径部分,此RAMB添加了1.800ns。
7.将Tcl控制台恢复到正常大小。
8.在“单元属性”窗口的“属性”选项卡中,选择DOA_REG和DOB_REG
此单元格的属性,并将其值从“0”更改为“1”
您可以在Tcl控制台中看到两个set_property命令正在运行。
 
Tcl控制台。
5.在Tcl控制台的右上角,单击最大化按钮以最大化
窗口,更好地查看计时报告。
6.在报告的数据路径部分,此RAMB添加了1.800ns。
7.将Tcl控制台恢复到正常大小。
8.在“单元属性”窗口的“属性”选项卡中,选择DOA_REG和DOB_REG
此单元格的属性,并将其值从“0”更改为“1”
您可以在Tcl控制台中看到两个set_property命令正在运行。
 set_property DOA_REG {1} [get_cells {fftEngine/fftInst/  
  ingressLoop[7].ingressFifo/  
  buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg}]  
  set_property DOB_REG {1} [get_cells {fftEngine/fftInst/  
  ingressLoop[7].ingressFifo  
  /buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg}]  
  9. Run the timing report from the selected cell. The Tcl command to enter is:  
  report_timing -from [get_cells fftEngine/fftInst/  
  ingressLoop[7].ingressFifo  
  /buffer_fifo/infer_fifo.block_ram_performance.fifo_ram_reg]  
  10. Notice that the  data path delay  for the RAM is now 0.622 ns.  
 
