文档目录

1.6.1.1. Sweep Hints Viewer(扫描提示查看器)

Sweep Hints Viewer(扫描提示查看器)允许您直观地查看并确定为何Synthesis删除了设计中的逻辑。该查看器是RTL Analyzer工具之一,您可以选择Tools > View Sweep Hints来从菜单访问该工具。
您还可以从被扫描实例的上下文相关菜单启动该查看器。

RTL Analyzer以橙色突出显示顶层模块端口和叶子节点以及相关的扫描提示。当您的鼠标悬停在已扫描端口或实例上时,工具提示会显示扫描端口的数量、扫描提示的类型和扫描提示原因。这些突出显示和工具提示在原理图视图和Netlist Navigator中都可用,如下图所示:

RTL Analyzer中的Sweep Hints View

在RTL Analyzer中,您可以从扫描实例的上下文菜单选择View Sweep Hints,或者在netlist navigator(网表浏览器)和schematic view(原理图视图)中的顶层模块端口启动Sweep Hints Viewer,如下图所示:

从上下文菜单选择View Sweep Hints后,Sweep Hints Viewer会自动填充所选实例或端口的扫描提示,如下图所示:

自动填充所选实力的扫描提示列表

Sweep Hints Viewer的Root Causes View

要确定设计中特定节点被清除的根本原因(root cause),您必须了解在扫描过程中被标记的每个节点的各种原因,如下所示:

  • 节点停留在常数0或1。例如,AND gate(与门)的输入端口停留在0而触发AND gate(与门)扫描,因为AND gate(与门)的输出也停留在0。
  • 节点充当导线,而被删除。例如,选择线被连接到常量的多路复用器充当导线。
  • 节点在扫描期间被修改,但并未将其删除。
  • 一个节点丢失了所有扇出并且被删除。
  • 端口或实例端口被断开连接,因为父级或子级无扇出。

Sweep Hints Viewer的Root Causes选项卡提供扫描记录列表及其被扫描的根本原因,如下实例所示:

图 13. Sweep Hints Viewer的Root Causes选项卡

Root Causes视图显示根源原因以及在Swept Objects Count栏显示的根对象中被清除对象的总个数,您可以在Root Record栏追溯扫描记录(例如,上图中的802137)。从上下文菜单选择Show Sweep Hints选项将界面切换到Sweep Hints视图以显示所有将根记录标识为根本原因的扫描记录,如下图所示:

图 14. 追踪根记录的扫描记录
注: 要了解关于Show Hint Trace的更多详细信息,请参阅Sweep Hints Viewer的Sweep Hints View部分。

Sweep Hints Viewer的Hierarchy View

回顾Analysis & Elaboration流程中作为Analysis & Elaboration阶段中的扫描优化(扫描检查点)如何发生。扫描优化阶段会留下一个数据库,其中包含被扫描掉的对象及其移除的原因。该数据库还会追踪被移除对象之间的关系。例如,如果门控的输出悬空,则会将其扫描掉。扇入锥(fan-in cone)中的少数单元也可以被扫描掉,因为它们的输出不会驱动任何有用的东西。Sweep Hints Viewer允许您查看扫描提示数据库,其中包含预扫描设计中稍后被移除的标记对象列表。

注: 对于大型和复杂的设计,扫描对象的总数可能非常大(以百万计)。因此,扫描对象按层次排列,以便您可以快速查询、过滤和查找您感兴趣的区域。
图 15. Sweep Hints Viewer中的Hierarchy选项卡

在Sweep Hints Viewer的Hierarchy选项卡中,您可以观察到各种层次结构级别及其扫描统计数据。这里的逻辑单元是叶子节点单元(即,逻辑原语),例如AND/OR gate(与门/或门)或寄存器。层次单元是叶子节点单元和其他层次单元的组合。

上图中的Leaf Cells Count by Hierarchy表格提供了有关在本地或给定层次路径的整个层次结构中扫描的逻辑百分比的信息。该表格的叶子节点单元数量栏中显示扫描前后以及层次路径的类型,可以是USER(您设计的 RTL), Intel® IP、或MEGAFUNCTION( Intel® -提供的库模块)。如果层次结构表很大,请使用过滤选项来细化设计的区域。

注: 默认隐藏 Intel® IP和MEGAFUNCTION类型,因为您无法对其进行修改。但是,在特定情形下您可以通过Hierarchy Type下拉列表选择需要的选项。在此视图中加密模块始终被隐藏。

Sweep Hints Viewer的Sweep Hints View

图 16. Sweep Hints Viewer中的扫描对象示例

请注意原理图视图中以水蓝色突出显示的扫描对象。如果您将鼠标悬停在此对象工具提示上或查看Sweep Hints Viewer中的扫描原因,就可以看到此实例已被扫除,因为该实例端口丢失了扇出。同样,您可以选择其他扫描对象来确定其根本原因,并在原理图查看器和层次结构视图中查看它们。当您继续编译流程时,所有这些对象最终都会从设计中清除。

Hierarchy选项卡可帮助您按实例的扫描统计信息进行过滤,与此同时,Sweep Hints选项卡允许您过滤和查询给定层次结构级别中清除的叶子节点对象。表格中的各个列描述了清除操作中所涉及的对象,并提供了查询数据的方法。例如,您可以查找特定的实例类型或将结果限制为特定的清除原因、类型等。

查看相关扫描对象

您还可以在Sweep Hints下对选择的对象右键单击来查看相关的扫描对象,并从上下文菜单中选择Show Hint TraceHint Trace for ID <number> 部分显示导致特定对象被扫除的扫除对象的层次列表,以及由于某个对象而被扫除的对象。突出显示和选择链中各种对象的能力使您可以缩小所需的扫除信息的范围。

在下图中,当您追踪对象ID为30的端口的扫描提示时,在Hint Trace for ID 30 下,您注意到对象ID为2的实例端口与扫描端口30相关。这两个对象的扫描原因都是断开扇出。

图 17. 相关扫描对象