• ModelSim® SE Command Reference Manual : find命令的用法


            该命令按类型和名称定位对象。命令的参数按对象类型分组。

    1、语法

    1. find nets | signals <object_name> … [-internal] [-nofilter] {[-in] [-inout] [-out] | [-ports]}
    2. [-recursive]
    3. find instances | blocks {<object_name> … | -bydu <design_unit> | -file <file_name>}
    4. [-arch] [-protected] [-recursive] [-nodu]
    5. find virtuals <object_name> … [-kind <kind>] [-unsaved] [-recursive]
    6. find classes [<class_name>]
    7. find objects [-class <class_name>] [-isa <class_name>] [<object_name>]

    2、描述

    find命令使用以下规则来定位对象:
            •如果名称不包括数据集名称,则使用当前数据集。
            •如果名称不是以路径分隔符开头,则使用当前上下文。
            •如果名称是路径分隔符,后跟不是顶级设计单元名称的名称,则使用设计中的第一个顶级设计单元。
            •对于包含层次化路径的相对名称,如果在当前上下文中找不到第一个对象名称,则向上搜索到设计层次结构的顶部,以查找匹配的对象名称。

            •如果在指定的上下文中找不到指定名称的对象,则执行向上搜索,以在任何可见的封闭范围内查找匹配的对象,直到实例边界。如果在给定上下文中找到至少一个匹配,则不执行(更多)向上搜索;因此,当使用通配符时,如果某些对象在较高的封闭范围内,则在给定上下文中可能可见的对象将不会被找到。
            •通配符“*”和“?”可以在名称的任何级别上使用,但数据集名称和切片规范内部除外。也可以使用方括号([])通配符。

            •通配符永远不会与路径分隔符匹配。例如,/dut/*将匹配/dut/siga和/dut/clk。然而,/dut*与这两个都不匹配。

            •由于方括号是find命令中的通配符,因此只有括号(())可以用于索引或切片数组

            •在执行搜索时,find命令使用WildcardFilter Tcl首选项变量来排除指定类型的对象。

            有关指定名称的详细信息,请参见Design Object Names 。

    3、参数

            命令的参数按对象类型分组。

    3.1、nets and signals的参数

            搜索网络和信号时,find命令返回与名称规范匹配的所有网络、信号、寄存器、变量和命名事件的完整路径名。

            (必需)指定要搜索的网络或信号。允许多个网络和信号以及通配符。通配符不能在切片规范内使用。空格、方括号和扩展标识符需要特殊的语法;有关更多详细信息,请参阅下面的示例。

    • -in
            (可选)指定搜索范围包括模式IN的端口。

    • -inout
            (可选)指定搜索范围包括模式INOUT的端口。

    • -internal
            (可选)指定搜索的范围是包括内部(非端口)对象。

    • -nofilter

            (可选)指定在查找信号或网络时忽略WildcardFilter-Tcl首选项变量。

    • -out
            (可选)指定搜索范围包括模式OUT的端口。

    • -ports
            (可选)指定搜索范围包括所有端口。具有与同时指定-in、-out和-inout相同的效果。

    -recursive(递归的)
            (可选)指定搜索的范围是递归下降到子区域。如果省略,则搜索仅限于所选区域。

    3.2、Arguments for instances and blocks(实例和块的参数)

    搜索实例时,find命令返回主设计单元名称。

    • -arch
            仅与“instances”一起使用:列出相应的架构(architecture)名称以及find命令返回的任何VHDL设计单元名称的实体名称。

    • -bydu
            搜索设计单元。与-file和互斥。
            ——要搜索的单个设计单元的名称。此参数仅与实例的主指定的模式匹配。不支持库和辅助名称。

    • -file
            将设计中实例的完整列表写入文件。与-bydu和互斥。
            -指定文件名的字符串。


            指定要搜索的实例或块的名称。允许多个实例和通配符。与-file和-bydu互斥。

    • -protected
            过滤并仅将输出减少为那些受保护的实例,因为该实例位于受保护的区域中,或者因为该实例在具有某些保护区域的设计单元中,或者由于这两个原因都适用。换句话说,find instances-protected命令仅返回位于受保护区域中的那些实例(由参数暗示),或者相应的设计单元在受保护区域内包含其部分代码的那些实例,或者两者都返回。

    • -recursive
            (可选)指定搜索的范围是递归下降到子区域。如果省略,则搜索仅限于所选区域。

    • -nodu
            (可选)从输出中的任何实例中删除设计单元名称

    3.3、Arguments for virtuals

            搜索虚拟值时,必须在任何对象名称之前指定所有可选参数


            (必需)指定要搜索的虚拟对象。允许多个虚拟字符和通配符。

    • -kind
            (可选)指定要搜索的虚拟对象的类型。
    —-以下类型之一的虚拟对象:
            • designs
            • explicits
            • functions
            • implicits
            • signals

    • -unsaved
            指定ModelSim仅查找尚未保存到格式文件的虚拟体。

    3.4、Arguments for classes


            (可选)指定要搜索的incrTcl类。允许使用通配符。class_name的选项包括nets, objects, signals和 virtuals。如果不指定类名,该命令将返回当前命名空间上下文中的所有类。有关详细信息,请参阅Tcl Man Pages (Help > Tcl Man Pages)中的incrTcl命令。

    3.5、Arguments for objects

    • -class
            (可选)将搜索限制为最特定的类为class_name的对象。

    • -isa 
            (可选)将搜索限制为在其传统中任何位置具有class_name的对象。


            (可选)指定要搜索的incrTcl对象。允许使用通配符。如果未指定对象名称,则该命令将返回当前命名空间上下文中的所有对象。请参阅Tcl Man Pages (Help > Tcl Man Pages)
    了解更多信息。

    4、示例

    •在整个设计中查找所有信号。

    find signals -r /*

    •查找整个设计中的所有实例,并将列表保存在文件instancelist.txt中。

    find instances -file instancelist.txt -r /*

    •在区域/top查找以字母“xy”开头的所有输入信号。

    find nets -in /top/xy*

    •查找设计层次结构中名称以“cl”开头的区域/u1/u2处或下方的所有信号。

    find signals -r u1/u2/cl*

    •查找名为s1的信号。请注意,由于方括号通配符,必须将对象括在大括号中。

    find signals {s[1]}

    •查找信号s1、s2或s3

    find signals {s[123]}

    •找到由值1索引的信号s的元素。请注意,find命令使用括号(()),而不是方括号([])来指定子元素索引

    find signals s(1)

    •查找名为data的4位数组。注意,由于数组切片规范中的空格,必须使用大括号({})

    find signals {/top/data(3 downto 0)}
    

    •请注意,当指定包含扩展标识符的对象作为名称的最后一部分时,在结束“\”之后和结束“}”之前必须有空格。

    find signals {/top/\My extended id\ }

    •如果/dut/core/pclk存在,则在transcript中打印消息“pclk does exist”。这通常在Tcl脚本中运行。

    1. if {[find signals /dut/core/pclk] != ""} {
    2. echo "pclk does exist"

    •使用通配符根据实例的名称查找实例。将搜索结果发送到文本文件,该文件在单独的行上列出实例名称,包括层次结构路径。

    1. # Search for all instances with u1 in path
    2. set pattern_match "*u1*" ;
    3. # Get the list of instance paths
    4. set inst_list [find instances -r *] ;
    5. # Initialize an empty list to strip off the architecture names
    6. set ilist [list] ;
    7. foreach inst $inst_list {
    8. set ipath [lindex $inst 0]
    9. if {[string match $pattern_match $ipath]} {
    10. lappend ilist $ipath
    11. }
    12. }
    13. # At this point, ilist contains the list of instances only--
    14. # no architecture names
    15. #
    16. # Begin sorting list
    17. set ilist [lsort -dictionary $ilist]
    18. # Open a file to write out the list
    19. set fhandle [open "instancelist.txt" w]
    20. foreach inst $ilist {
    21. # Print instance path, one per line
    22. puts $fhandle $inst
    23. }
    24. # Close the file, done.
    25. close $fhandle ;

    5、Additional search options

    要在特定显示窗口中搜索HDL对象,请使用搜索命令或选择Edit > Find。


     

  • 相关阅读:
    【uniapp+vue3+u-picker】获取中国省市区数据结构,省市区数据三级联动json文件完整版,已实现三级联动效果
    CleanMyMac X免费电脑清理加速软件-清理内存磁盘缓存注册表
    【iOS】—— 循环引用问题
    弘辽科技:淘宝店铺被管控还能开吗?原因是什么?
    mybatis基本构成&mybatis与hibernate的区别&添加mybatis支持
    文件上传骚姿势合集
    django regroup对象是外键时无法正常使用
    Android Jetpack Compose 使用 ViewModel
    集群搭建(1)
    C++ 模板进阶
  • 原文地址:https://blog.csdn.net/qq_33300585/article/details/139946382