58616 - Vivado - 调试 opt_design 裁剪

353 阅读1分钟

标题

58616 - Vivado - 调试 opt_design 裁剪

描述

如何对 opt_design 的 sweep 和 propconst 阶段内发生的优化进行追踪?

解决方案

步骤 1
 
从已打开、已综合并已启用所有消息传递的设计运行 opt_design。

  1. 使用 verbose 选项。

  • 运行 opt_design 前设置以下参数:
    set_param messaging.defaultLimit 100000
步骤 2

关闭优化后的设计并重新打开已综合的设计。

步骤 3

找到正在优化的相关单元(或者已连接到相关信号线的单元)

步骤 4

查看消息,了解发生优化的原因。

如果看到以下信息,请追踪到下一个单元格,再次查看信息:

INFO: [Opt 31-54] Cell has no loads and is removed:


如果看到以下信息,请找出是哪项输入使其成为常数。
如果 FF 的数据输入不是问题所在,则应确保控制集值不是常量,例如,R <= 1, CE <= 0 or C <= 0/1。

INFO: [Opt 31-54] Cell has no loads and is removed:



通过这两个步骤,您就可以找到优化的源头。



您还可以尝试使用 Tcl 命令为控制集查找常量值。

下面的示例会查找连接到 Vcc 的 FF 复位端口。

get_cells -filter {REF_NAME =~ FD*} -of_objects [get_pins -filter {REF_PIN_NAME == R} -of_objects [get_nets -hierarchical -filter {NAME =~ *const1*}\\]]